@wormhole-foundation/wormhole-connect 2.3.0-beta.1-development → 2.3.0

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 (77) hide show
  1. package/dist/main.js +1 -1
  2. package/lib/{aptos-Cd2RxmTX.mjs → aptos-BxqLqZNX.mjs} +5 -5
  3. package/lib/{aptos-CVrk2e8x.js → aptos-C0fgCR3U.js} +2 -2
  4. package/lib/{aptos-DqQeHeWd.mjs → aptos-Dfr8g3l2.mjs} +2 -2
  5. package/lib/{aptos-D9RWCwaG.js → aptos-b5iDxSTg.js} +1 -1
  6. package/lib/{base64-DOdqKfyo.mjs → base64--OafHktr.mjs} +1 -1
  7. package/lib/{base64-D7N0XEtt.js → base64-ftXBMu_Y.js} +1 -1
  8. package/lib/{ccip-B1d8Cfcc.mjs → ccip-Nyheo-pf.mjs} +1 -1
  9. package/lib/{ccip-C4FhwB7R.js → ccip-bB3Hb3p1.js} +1 -1
  10. package/lib/{chunk-IMTC3J2M-B2ra0Z4c.mjs → chunk-IMTC3J2M-B3JXHl8c.mjs} +3 -3
  11. package/lib/{chunk-IMTC3J2M-DtuxbHq9.js → chunk-IMTC3J2M-CxyrTIXy.js} +1 -1
  12. package/lib/{events-BC1Svub2.js → events-B0EN-_lw.js} +1 -1
  13. package/lib/{events-BrouOFcp.mjs → events-CMAqq7WG.mjs} +1 -1
  14. package/lib/{evm-BXku4GNW.js → evm-2eC8tBb8.js} +3 -3
  15. package/lib/{evm-CfS9xq5t.mjs → evm-BOjE2d7W.mjs} +5 -5
  16. package/lib/{evm-DT_W87u-.js → evm-CKGFrxPp.js} +1 -1
  17. package/lib/{evm-Ccy4JfF6.mjs → evm-mcCNFzAo.mjs} +5 -5
  18. package/lib/{index-CgISt_Up.js → index-B2taYdgD.js} +1 -1
  19. package/lib/{index-vEkD7kom.mjs → index-BFxsrgmC.mjs} +5 -5
  20. package/lib/{index-CdB9Qj-M.js → index-BUPpsD6y.js} +1 -1
  21. package/lib/{index-BuGFh8C7.mjs → index-BYbcUh5K.mjs} +2 -2
  22. package/lib/{index-B58a-RHd.js → index-B_UCj8xo.js} +1 -1
  23. package/lib/{index-DxslawxO.mjs → index-Ba6qW0G9.mjs} +2 -2
  24. package/lib/{index-xeYB5lOA.js → index-BdWdyObb.js} +1 -1
  25. package/lib/{index-B4hbI0dp.mjs → index-BeNF4-bP.mjs} +2 -2
  26. package/lib/{index-Bdopcy73.mjs → index-BfEF0Tek.mjs} +4 -4
  27. package/lib/{index-CnkeKt9s.mjs → index-BgPLmEjh.mjs} +3 -3
  28. package/lib/{index-DihlIPlD.js → index-Bh68ln_H.js} +1 -1
  29. package/lib/{index-C-nWxaLg.js → index-BjZpM_ll.js} +1 -1
  30. package/lib/{index-CUm6qdjR.js → index-BlZ-gXWP.js} +1 -1
  31. package/lib/{index-Y5ArJjKr.mjs → index-BpdpC7bc.mjs} +1 -1
  32. package/lib/{index-RFgTGgbk.js → index-C5v_43HR.js} +2 -2
  33. package/lib/{index-BdodDbVS.mjs → index-CGkpUmfc.mjs} +1 -1
  34. package/lib/{index-DyqHtpmj.js → index-CMgf8btt.js} +1 -1
  35. package/lib/{index-DB5xCELT.js → index-Ckn2JAfC.js} +1 -1
  36. package/lib/{index-CCWEM47k.js → index-ClGDuGAH.js} +1 -1
  37. package/lib/{index-s7S0StCX.mjs → index-CqLCyep2.mjs} +1 -1
  38. package/lib/{index-C0IvEwkt.mjs → index-CqW6CJJD.mjs} +1 -1
  39. package/lib/{index-Dsd09IV6.js → index-D-TPMx4M.js} +1 -1
  40. package/lib/{index-Camctzsh.js → index-D0km6dEP.js} +1 -1
  41. package/lib/{index-BODYDhXF.mjs → index-D1YLa5Y6.mjs} +2 -2
  42. package/lib/{index-CpQ7f1YB.mjs → index-D8L0gOjE.mjs} +1 -1
  43. package/lib/{index-BcJBEeFA.mjs → index-DCXltTRQ.mjs} +1 -1
  44. package/lib/{index-DqO3qLPG.js → index-DGyhcRhy.js} +1 -1
  45. package/lib/{index-s53oBunM.mjs → index-DHYCPrLZ.mjs} +2 -2
  46. package/lib/{index-D5qBrm4q.js → index-DHhwn6Cc.js} +1 -1
  47. package/lib/{index-DSTC1VGB.js → index-DMT1CxRy.js} +1 -1
  48. package/lib/{index-CSKbEqQP.js → index-DPwdAd1Z.js} +1 -1
  49. package/lib/{index-DX-wGKTH.mjs → index-DVX7DsmX.mjs} +2 -2
  50. package/lib/{index-D3Mg9Eh4.js → index-DZWcS0lz.js} +1 -1
  51. package/lib/{index-BFFNnNKW.js → index-DdAYyX9y.js} +1 -1
  52. package/lib/{index-1LP1mA3c.mjs → index-DfJOWZgf.mjs} +1 -1
  53. package/lib/{index-Br4Igv20.js → index-E2SOg6Ah.js} +1 -1
  54. package/lib/{index-Dk29guyA.mjs → index-U0I19HyB.mjs} +3 -3
  55. package/lib/{index-Cmmxyf4Y.mjs → index-ZjG8y1YT.mjs} +2 -2
  56. package/lib/{index-BCjWPjhx.mjs → index-dAUnLH4Z.mjs} +2 -2
  57. package/lib/{index-1EgmRX-a.js → index-eLxBNCA2.js} +1 -1
  58. package/lib/{index--0DQj_F2.mjs → index-m31ry_Y2.mjs} +2 -2
  59. package/lib/{index-CU9KzHgH.mjs → index-r7xhXupc.mjs} +12 -12
  60. package/lib/{index.es-PJjmKf_k.js → index.es-BgHsoUXw.js} +2 -2
  61. package/lib/{index.es-DD7lO_GM.mjs → index.es-C_kwfz5b.mjs} +6 -6
  62. package/lib/index.js +1 -1
  63. package/lib/index.mjs +1 -1
  64. package/lib/{signer-Bs70WVKc.js → signer-BXnEcajC.js} +1 -1
  65. package/lib/{signer-dwfhV60M.mjs → signer-g3raRETb.mjs} +1 -1
  66. package/lib/solana-BzGuWSEw.js +1 -0
  67. package/lib/{solana-DK3yyz37.js → solana-C4lFmDk6.js} +1 -1
  68. package/lib/{solana-BDUnTuLS.mjs → solana-CJTWTUey.mjs} +5 -5
  69. package/lib/{solana-D8IW8eXX.mjs → solana-HjIwzEIV.mjs} +4 -4
  70. package/lib/{solanaEmbed.esm-DlyRzA6N.mjs → solanaEmbed.esm-BSo4Y-GM.mjs} +2 -2
  71. package/lib/{solanaEmbed.esm-DjNz5swk.js → solanaEmbed.esm-BY9140pH.js} +1 -1
  72. package/lib/{sui-CIYeuWco.mjs → sui-BYAvPQcW.mjs} +5 -5
  73. package/lib/{sui-BSr1lx4J.js → sui-D0YPksGW.js} +2 -2
  74. package/lib/{sui-BRZ30Let.js → sui-DSbuDbhr.js} +1 -1
  75. package/lib/{sui-BN9_xkve.mjs → sui-DolA6Isa.mjs} +1 -1
  76. package/package.json +1 -1
  77. package/lib/solana-B1Wsl1Pg.js +0 -1
@@ -100,7 +100,7 @@ ${JSON.stringify(d.slice(-10),null,2)}. `:"",p="\nCatch the `SendTransactionErro
100
100
  ${l}. `+u+p;break;case"simulate":m=`Simulation failed.
101
101
  Message: ${l}.
102
102
  `+u+p;break;default:m=`Unknown action '${(y=>y)(e)}'`}super(m),this.signature=void 0,this.transactionMessage=void 0,this.transactionLogs=void 0,this.signature=s,this.transactionMessage=l,this.transactionLogs=d||void 0}get transactionError(){return{message:this.transactionMessage,logs:Array.isArray(this.transactionLogs)?this.transactionLogs:void 0}}get logs(){const e=this.transactionLogs;if(!(e!=null&&typeof e=="object"&&"then"in e))return e}async getLogs(e){return Array.isArray(this.transactionLogs)||(this.transactionLogs=new Promise((s,l)=>{e.getTransaction(this.signature).then(d=>{if(d&&d.meta&&d.meta.logMessages){const u=d.meta.logMessages;this.transactionLogs=u,s(u)}else l(new Error("Log messages not found"))}).catch(l)})),await this.transactionLogs}}const SolanaJSONRPCErrorCode={JSON_RPC_SERVER_ERROR_BLOCK_CLEANED_UP:-32001,JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE:-32002,JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE:-32003,JSON_RPC_SERVER_ERROR_BLOCK_NOT_AVAILABLE:-32004,JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY:-32005,JSON_RPC_SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE:-32006,JSON_RPC_SERVER_ERROR_SLOT_SKIPPED:-32007,JSON_RPC_SERVER_ERROR_NO_SNAPSHOT:-32008,JSON_RPC_SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED:-32009,JSON_RPC_SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX:-32010,JSON_RPC_SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE:-32011,JSON_RPC_SCAN_ERROR:-32012,JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH:-32013,JSON_RPC_SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET:-32014,JSON_RPC_SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION:-32015,JSON_RPC_SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED:-32016};class SolanaJSONRPCError extends Error{constructor({code:e,message:s,data:l},d){super(d!=null?`${d}: ${s}`:s),this.code=void 0,this.data=void 0,this.code=e,this.data=l,this.name="SolanaJSONRPCError"}}async function sendAndConfirmTransaction(t,e,s,l){const d=l&&{skipPreflight:l.skipPreflight,preflightCommitment:l.preflightCommitment||l.commitment,maxRetries:l.maxRetries,minContextSlot:l.minContextSlot},u=await t.sendTransaction(e,s,d);let p;if(e.recentBlockhash!=null&&e.lastValidBlockHeight!=null)p=(await t.confirmTransaction({abortSignal:l==null?void 0:l.abortSignal,signature:u,blockhash:e.recentBlockhash,lastValidBlockHeight:e.lastValidBlockHeight},l&&l.commitment)).value;else if(e.minNonceContextSlot!=null&&e.nonceInfo!=null){const{nonceInstruction:m}=e.nonceInfo,y=m.keys[0].pubkey;p=(await t.confirmTransaction({abortSignal:l==null?void 0:l.abortSignal,minContextSlot:e.minNonceContextSlot,nonceAccountPubkey:y,nonceValue:e.nonceInfo.nonce,signature:u},l&&l.commitment)).value}else(l==null?void 0:l.abortSignal)!=null&&console.warn("sendAndConfirmTransaction(): A transaction with a deprecated confirmation strategy was supplied along with an `abortSignal`. Only transactions having `lastValidBlockHeight` or a combination of `nonceInfo` and `minNonceContextSlot` are abortable."),p=(await t.confirmTransaction(u,l&&l.commitment)).value;if(p.err)throw u!=null?new SendTransactionError({action:"send",signature:u,transactionMessage:`Status: (${JSON.stringify(p)})`}):new Error(`Transaction ${u} failed (${JSON.stringify(p)})`);return u}function sleep$1(t){return new Promise(e=>setTimeout(e,t))}function encodeData(t,e){const s=t.layout.span>=0?t.layout.span:getAlloc(t,e),l=bufferPolyfill.Buffer.alloc(s),d=Object.assign({instruction:t.index},e);return t.layout.encode(d,l),l}function decodeData$1(t,e){let s;try{s=t.layout.decode(e)}catch(l){throw new Error("invalid instruction; "+l)}if(s.instruction!==t.index)throw new Error(`invalid instruction; instruction index mismatch ${s.instruction} != ${t.index}`);return s}const FeeCalculatorLayout=nu64$1("lamportsPerSignature"),NonceAccountLayout=exports.struct([exports.u32("version"),exports.u32("state"),publicKey$6("authorizedPubkey"),publicKey$6("nonce"),exports.struct([FeeCalculatorLayout],"feeCalculator")]),NONCE_ACCOUNT_LENGTH=NonceAccountLayout.span;class NonceAccount{constructor(e){this.authorizedPubkey=void 0,this.nonce=void 0,this.feeCalculator=void 0,this.authorizedPubkey=e.authorizedPubkey,this.nonce=e.nonce,this.feeCalculator=e.feeCalculator}static fromAccountData(e){const s=NonceAccountLayout.decode(toBuffer(e),0);return new NonceAccount({authorizedPubkey:new PublicKey(s.authorizedPubkey),nonce:new PublicKey(s.nonce).toString(),feeCalculator:s.feeCalculator})}}const encodeDecode$1=t=>{const e=t.decode.bind(t),s=t.encode.bind(t);return{decode:e,encode:s}},bigInt$1=t=>e=>{const s=exports.blob(t,e),{encode:l,decode:d}=encodeDecode$1(s),u=s;return u.decode=(p,m)=>{const y=d(p,m);return toBigIntLE_1(bufferPolyfill.Buffer.from(y))},u.encode=(p,m,y)=>{const h=toBufferLE_1(p,t);return l(h,m,y)},u},u64$3=bigInt$1(8);class SystemInstruction{constructor(){}static decodeInstructionType(e){this.checkProgramId(e.programId);const l=exports.u32("instruction").decode(e.data);let d;for(const[u,p]of Object.entries(SYSTEM_INSTRUCTION_LAYOUTS))if(p.index==l){d=u;break}if(!d)throw new Error("Instruction type incorrect; not a SystemInstruction");return d}static decodeCreateAccount(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,2);const{lamports:s,space:l,programId:d}=decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.Create,e.data);return{fromPubkey:e.keys[0].pubkey,newAccountPubkey:e.keys[1].pubkey,lamports:s,space:l,programId:new PublicKey(d)}}static decodeTransfer(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,2);const{lamports:s}=decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.Transfer,e.data);return{fromPubkey:e.keys[0].pubkey,toPubkey:e.keys[1].pubkey,lamports:s}}static decodeTransferWithSeed(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{lamports:s,seed:l,programId:d}=decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed,e.data);return{fromPubkey:e.keys[0].pubkey,basePubkey:e.keys[1].pubkey,toPubkey:e.keys[2].pubkey,lamports:s,seed:l,programId:new PublicKey(d)}}static decodeAllocate(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,1);const{space:s}=decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.Allocate,e.data);return{accountPubkey:e.keys[0].pubkey,space:s}}static decodeAllocateWithSeed(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,1);const{base:s,seed:l,space:d,programId:u}=decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed,e.data);return{accountPubkey:e.keys[0].pubkey,basePubkey:new PublicKey(s),seed:l,space:d,programId:new PublicKey(u)}}static decodeAssign(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,1);const{programId:s}=decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.Assign,e.data);return{accountPubkey:e.keys[0].pubkey,programId:new PublicKey(s)}}static decodeAssignWithSeed(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,1);const{base:s,seed:l,programId:d}=decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed,e.data);return{accountPubkey:e.keys[0].pubkey,basePubkey:new PublicKey(s),seed:l,programId:new PublicKey(d)}}static decodeCreateWithSeed(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,2);const{base:s,seed:l,lamports:d,space:u,programId:p}=decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed,e.data);return{fromPubkey:e.keys[0].pubkey,newAccountPubkey:e.keys[1].pubkey,basePubkey:new PublicKey(s),seed:l,lamports:d,space:u,programId:new PublicKey(p)}}static decodeNonceInitialize(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{authorized:s}=decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount,e.data);return{noncePubkey:e.keys[0].pubkey,authorizedPubkey:new PublicKey(s)}}static decodeNonceAdvance(e){return this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3),decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount,e.data),{noncePubkey:e.keys[0].pubkey,authorizedPubkey:e.keys[2].pubkey}}static decodeNonceWithdraw(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,5);const{lamports:s}=decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount,e.data);return{noncePubkey:e.keys[0].pubkey,toPubkey:e.keys[1].pubkey,authorizedPubkey:e.keys[4].pubkey,lamports:s}}static decodeNonceAuthorize(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,2);const{authorized:s}=decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount,e.data);return{noncePubkey:e.keys[0].pubkey,authorizedPubkey:e.keys[1].pubkey,newAuthorizedPubkey:new PublicKey(s)}}static checkProgramId(e){if(!e.equals(SystemProgram.programId))throw new Error("invalid instruction; programId is not SystemProgram")}static checkKeyLength(e,s){if(e.length<s)throw new Error(`invalid instruction; found ${e.length} keys, expected at least ${s}`)}}const SYSTEM_INSTRUCTION_LAYOUTS=Object.freeze({Create:{index:0,layout:exports.struct([exports.u32("instruction"),exports.ns64("lamports"),exports.ns64("space"),publicKey$6("programId")])},Assign:{index:1,layout:exports.struct([exports.u32("instruction"),publicKey$6("programId")])},Transfer:{index:2,layout:exports.struct([exports.u32("instruction"),u64$3("lamports")])},CreateWithSeed:{index:3,layout:exports.struct([exports.u32("instruction"),publicKey$6("base"),rustString("seed"),exports.ns64("lamports"),exports.ns64("space"),publicKey$6("programId")])},AdvanceNonceAccount:{index:4,layout:exports.struct([exports.u32("instruction")])},WithdrawNonceAccount:{index:5,layout:exports.struct([exports.u32("instruction"),exports.ns64("lamports")])},InitializeNonceAccount:{index:6,layout:exports.struct([exports.u32("instruction"),publicKey$6("authorized")])},AuthorizeNonceAccount:{index:7,layout:exports.struct([exports.u32("instruction"),publicKey$6("authorized")])},Allocate:{index:8,layout:exports.struct([exports.u32("instruction"),exports.ns64("space")])},AllocateWithSeed:{index:9,layout:exports.struct([exports.u32("instruction"),publicKey$6("base"),rustString("seed"),exports.ns64("space"),publicKey$6("programId")])},AssignWithSeed:{index:10,layout:exports.struct([exports.u32("instruction"),publicKey$6("base"),rustString("seed"),publicKey$6("programId")])},TransferWithSeed:{index:11,layout:exports.struct([exports.u32("instruction"),u64$3("lamports"),rustString("seed"),publicKey$6("programId")])},UpgradeNonceAccount:{index:12,layout:exports.struct([exports.u32("instruction")])}});class SystemProgram{constructor(){}static createAccount(e){const s=SYSTEM_INSTRUCTION_LAYOUTS.Create,l=encodeData(s,{lamports:e.lamports,space:e.space,programId:toBuffer(e.programId.toBuffer())});return new TransactionInstruction({keys:[{pubkey:e.fromPubkey,isSigner:!0,isWritable:!0},{pubkey:e.newAccountPubkey,isSigner:!0,isWritable:!0}],programId:this.programId,data:l})}static transfer(e){let s,l;if("basePubkey"in e){const d=SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed;s=encodeData(d,{lamports:BigInt(e.lamports),seed:e.seed,programId:toBuffer(e.programId.toBuffer())}),l=[{pubkey:e.fromPubkey,isSigner:!1,isWritable:!0},{pubkey:e.basePubkey,isSigner:!0,isWritable:!1},{pubkey:e.toPubkey,isSigner:!1,isWritable:!0}]}else{const d=SYSTEM_INSTRUCTION_LAYOUTS.Transfer;s=encodeData(d,{lamports:BigInt(e.lamports)}),l=[{pubkey:e.fromPubkey,isSigner:!0,isWritable:!0},{pubkey:e.toPubkey,isSigner:!1,isWritable:!0}]}return new TransactionInstruction({keys:l,programId:this.programId,data:s})}static assign(e){let s,l;if("basePubkey"in e){const d=SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed;s=encodeData(d,{base:toBuffer(e.basePubkey.toBuffer()),seed:e.seed,programId:toBuffer(e.programId.toBuffer())}),l=[{pubkey:e.accountPubkey,isSigner:!1,isWritable:!0},{pubkey:e.basePubkey,isSigner:!0,isWritable:!1}]}else{const d=SYSTEM_INSTRUCTION_LAYOUTS.Assign;s=encodeData(d,{programId:toBuffer(e.programId.toBuffer())}),l=[{pubkey:e.accountPubkey,isSigner:!0,isWritable:!0}]}return new TransactionInstruction({keys:l,programId:this.programId,data:s})}static createAccountWithSeed(e){const s=SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed,l=encodeData(s,{base:toBuffer(e.basePubkey.toBuffer()),seed:e.seed,lamports:e.lamports,space:e.space,programId:toBuffer(e.programId.toBuffer())});let d=[{pubkey:e.fromPubkey,isSigner:!0,isWritable:!0},{pubkey:e.newAccountPubkey,isSigner:!1,isWritable:!0}];return e.basePubkey.equals(e.fromPubkey)||d.push({pubkey:e.basePubkey,isSigner:!0,isWritable:!1}),new TransactionInstruction({keys:d,programId:this.programId,data:l})}static createNonceAccount(e){const s=new Transaction;"basePubkey"in e&&"seed"in e?s.add(SystemProgram.createAccountWithSeed({fromPubkey:e.fromPubkey,newAccountPubkey:e.noncePubkey,basePubkey:e.basePubkey,seed:e.seed,lamports:e.lamports,space:NONCE_ACCOUNT_LENGTH,programId:this.programId})):s.add(SystemProgram.createAccount({fromPubkey:e.fromPubkey,newAccountPubkey:e.noncePubkey,lamports:e.lamports,space:NONCE_ACCOUNT_LENGTH,programId:this.programId}));const l={noncePubkey:e.noncePubkey,authorizedPubkey:e.authorizedPubkey};return s.add(this.nonceInitialize(l)),s}static nonceInitialize(e){const s=SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount,l=encodeData(s,{authorized:toBuffer(e.authorizedPubkey.toBuffer())}),d={keys:[{pubkey:e.noncePubkey,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_RECENT_BLOCKHASHES_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}],programId:this.programId,data:l};return new TransactionInstruction(d)}static nonceAdvance(e){const s=SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount,l=encodeData(s),d={keys:[{pubkey:e.noncePubkey,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_RECENT_BLOCKHASHES_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:e.authorizedPubkey,isSigner:!0,isWritable:!1}],programId:this.programId,data:l};return new TransactionInstruction(d)}static nonceWithdraw(e){const s=SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount,l=encodeData(s,{lamports:e.lamports});return new TransactionInstruction({keys:[{pubkey:e.noncePubkey,isSigner:!1,isWritable:!0},{pubkey:e.toPubkey,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_RECENT_BLOCKHASHES_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:e.authorizedPubkey,isSigner:!0,isWritable:!1}],programId:this.programId,data:l})}static nonceAuthorize(e){const s=SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount,l=encodeData(s,{authorized:toBuffer(e.newAuthorizedPubkey.toBuffer())});return new TransactionInstruction({keys:[{pubkey:e.noncePubkey,isSigner:!1,isWritable:!0},{pubkey:e.authorizedPubkey,isSigner:!0,isWritable:!1}],programId:this.programId,data:l})}static allocate(e){let s,l;if("basePubkey"in e){const d=SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed;s=encodeData(d,{base:toBuffer(e.basePubkey.toBuffer()),seed:e.seed,space:e.space,programId:toBuffer(e.programId.toBuffer())}),l=[{pubkey:e.accountPubkey,isSigner:!1,isWritable:!0},{pubkey:e.basePubkey,isSigner:!0,isWritable:!1}]}else{const d=SYSTEM_INSTRUCTION_LAYOUTS.Allocate;s=encodeData(d,{space:e.space}),l=[{pubkey:e.accountPubkey,isSigner:!0,isWritable:!0}]}return new TransactionInstruction({keys:l,programId:this.programId,data:s})}}SystemProgram.programId=new PublicKey("11111111111111111111111111111111");const CHUNK_SIZE=PACKET_DATA_SIZE-300;class Loader{constructor(){}static getMinNumSignatures(e){return 2*(Math.ceil(e/Loader.chunkSize)+1+1)}static async load(e,s,l,d,u){{const A=await e.getMinimumBalanceForRentExemption(u.length),w=await e.getAccountInfo(l.publicKey,"confirmed");let I=null;if(w!==null){if(w.executable)return console.error("Program load failed, account is already executable"),!1;w.data.length!==u.length&&(I=I||new Transaction,I.add(SystemProgram.allocate({accountPubkey:l.publicKey,space:u.length}))),w.owner.equals(d)||(I=I||new Transaction,I.add(SystemProgram.assign({accountPubkey:l.publicKey,programId:d}))),w.lamports<A&&(I=I||new Transaction,I.add(SystemProgram.transfer({fromPubkey:s.publicKey,toPubkey:l.publicKey,lamports:A-w.lamports})))}else I=new Transaction().add(SystemProgram.createAccount({fromPubkey:s.publicKey,newAccountPubkey:l.publicKey,lamports:A>0?A:1,space:u.length,programId:d}));I!==null&&await sendAndConfirmTransaction(e,I,[s,l],{commitment:"confirmed"})}const p=exports.struct([exports.u32("instruction"),exports.u32("offset"),exports.u32("bytesLength"),exports.u32("bytesLengthPadding"),exports.seq(exports.u8("byte"),offset$3(exports.u32(),-8),"bytes")]),m=Loader.chunkSize;let y=0,h=u,v=[];for(;h.length>0;){const A=h.slice(0,m),w=bufferPolyfill.Buffer.alloc(m+16);p.encode({instruction:0,offset:y,bytes:A,bytesLength:0,bytesLengthPadding:0},w);const I=new Transaction().add({keys:[{pubkey:l.publicKey,isSigner:!0,isWritable:!0}],programId:d,data:w});v.push(sendAndConfirmTransaction(e,I,[s,l],{commitment:"confirmed"})),e._rpcEndpoint.includes("solana.com")&&await sleep$1(1e3/4),y+=m,h=h.slice(m)}await Promise.all(v);{const A=exports.struct([exports.u32("instruction")]),w=bufferPolyfill.Buffer.alloc(A.span);A.encode({instruction:1},w);const I=new Transaction().add({keys:[{pubkey:l.publicKey,isSigner:!0,isWritable:!0},{pubkey:SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}],programId:d,data:w}),k="processed",$=await e.sendTransaction(I,[s,l],{preflightCommitment:k}),{context:P,value:z}=await e.confirmTransaction({signature:$,lastValidBlockHeight:I.lastValidBlockHeight,blockhash:I.recentBlockhash},k);if(z.err)throw new Error(`Transaction ${$} failed (${JSON.stringify(z)})`);for(;;){try{if(await e.getSlot({commitment:k})>P.slot)break}catch{}await new Promise(U=>setTimeout(U,Math.round(MS_PER_SLOT/2)))}}return!0}}Loader.chunkSize=CHUNK_SIZE;const BPF_LOADER_PROGRAM_ID=new PublicKey("BPFLoader2111111111111111111111111111111111");class BpfLoader{static getMinNumSignatures(e){return Loader.getMinNumSignatures(e)}static load(e,s,l,d,u){return Loader.load(e,s,l,u,d)}}function getDefaultExportFromCjs$1(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var fastStableStringify$1,hasRequiredFastStableStringify;function requireFastStableStringify(){if(hasRequiredFastStableStringify)return fastStableStringify$1;hasRequiredFastStableStringify=1;var t=Object.prototype.toString,e=Object.keys||function(l){var d=[];for(var u in l)d.push(u);return d};function s(l,d){var u,p,m,y,h,v,A;if(l===!0)return"true";if(l===!1)return"false";switch(typeof l){case"object":if(l===null)return null;if(l.toJSON&&typeof l.toJSON=="function")return s(l.toJSON(),d);if(A=t.call(l),A==="[object Array]"){for(m="[",p=l.length-1,u=0;u<p;u++)m+=s(l[u],!0)+",";return p>-1&&(m+=s(l[u],!0)),m+"]"}else if(A==="[object Object]"){for(y=e(l).sort(),p=y.length,m="",u=0;u<p;)h=y[u],v=s(l[h],!1),v!==void 0&&(m&&(m+=","),m+=JSON.stringify(h)+":"+v),u++;return"{"+m+"}"}else return JSON.stringify(l);case"function":case"undefined":return d?null:void 0;case"string":return JSON.stringify(l);default:return isFinite(l)?l:null}}return fastStableStringify$1=function(l){var d=s(l,!1);if(d!==void 0)return""+d},fastStableStringify$1}var fastStableStringifyExports=requireFastStableStringify(),fastStableStringify=getDefaultExportFromCjs$1(fastStableStringifyExports);const MINIMUM_SLOT_PER_EPOCH=32;function trailingZeros(t){let e=0;for(;t>1;)t/=2,e++;return e}function nextPowerOfTwo(t){return t===0?1:(t--,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,t|=t>>32,t+1)}class EpochSchedule{constructor(e,s,l,d,u){this.slotsPerEpoch=void 0,this.leaderScheduleSlotOffset=void 0,this.warmup=void 0,this.firstNormalEpoch=void 0,this.firstNormalSlot=void 0,this.slotsPerEpoch=e,this.leaderScheduleSlotOffset=s,this.warmup=l,this.firstNormalEpoch=d,this.firstNormalSlot=u}getEpoch(e){return this.getEpochAndSlotIndex(e)[0]}getEpochAndSlotIndex(e){if(e<this.firstNormalSlot){const s=trailingZeros(nextPowerOfTwo(e+MINIMUM_SLOT_PER_EPOCH+1))-trailingZeros(MINIMUM_SLOT_PER_EPOCH)-1,l=this.getSlotsInEpoch(s),d=e-(l-MINIMUM_SLOT_PER_EPOCH);return[s,d]}else{const s=e-this.firstNormalSlot,l=Math.floor(s/this.slotsPerEpoch),d=this.firstNormalEpoch+l,u=s%this.slotsPerEpoch;return[d,u]}}getFirstSlotInEpoch(e){return e<=this.firstNormalEpoch?(Math.pow(2,e)-1)*MINIMUM_SLOT_PER_EPOCH:(e-this.firstNormalEpoch)*this.slotsPerEpoch+this.firstNormalSlot}getLastSlotInEpoch(e){return this.getFirstSlotInEpoch(e)+this.getSlotsInEpoch(e)-1}getSlotsInEpoch(e){return e<this.firstNormalEpoch?Math.pow(2,e+trailingZeros(MINIMUM_SLOT_PER_EPOCH)):this.slotsPerEpoch}}var fetchImpl=globalThis.fetch;class RpcWebSocketClient extends CommonClient$1{constructor(e,s,l){const d=u=>{const p=WebSocket(u,{autoconnect:!0,max_reconnects:5,reconnect:!0,reconnect_interval:1e3,...s});return"socket"in p?this.underlyingSocket=p.socket:this.underlyingSocket=p,p};super(d,e,s,l),this.underlyingSocket=void 0}call(...e){var l;const s=(l=this.underlyingSocket)==null?void 0:l.readyState;return s===1?super.call(...e):Promise.reject(new Error("Tried to call a JSON-RPC method `"+e[0]+"` but the socket was not `CONNECTING` or `OPEN` (`readyState` was "+s+")"))}notify(...e){var l;const s=(l=this.underlyingSocket)==null?void 0:l.readyState;return s===1?super.notify(...e):Promise.reject(new Error("Tried to send a JSON-RPC notification `"+e[0]+"` but the socket was not `CONNECTING` or `OPEN` (`readyState` was "+s+")"))}}function decodeData(t,e){let s;try{s=t.layout.decode(e)}catch(l){throw new Error("invalid instruction; "+l)}if(s.typeIndex!==t.index)throw new Error(`invalid account data; account type mismatch ${s.typeIndex} != ${t.index}`);return s}const LOOKUP_TABLE_META_SIZE=56;class AddressLookupTableAccount{constructor(e){this.key=void 0,this.state=void 0,this.key=e.key,this.state=e.state}isActive(){const e=BigInt("0xffffffffffffffff");return this.state.deactivationSlot===e}static deserialize(e){const s=decodeData(LookupTableMetaLayout,e),l=e.length-LOOKUP_TABLE_META_SIZE;assert$4(l>=0,"lookup table is invalid"),assert$4(l%32===0,"lookup table is invalid");const d=l/32,{addresses:u}=exports.struct([exports.seq(publicKey$6(),d,"addresses")]).decode(e.slice(LOOKUP_TABLE_META_SIZE));return{deactivationSlot:s.deactivationSlot,lastExtendedSlot:s.lastExtendedSlot,lastExtendedSlotStartIndex:s.lastExtendedStartIndex,authority:s.authority.length!==0?new PublicKey(s.authority[0]):void 0,addresses:u.map(p=>new PublicKey(p))}}}const LookupTableMetaLayout={index:1,layout:exports.struct([exports.u32("typeIndex"),u64$3("deactivationSlot"),nu64$1("lastExtendedSlot"),exports.u8("lastExtendedStartIndex"),exports.u8(),exports.seq(publicKey$6(),offset$3(exports.u8(),-1),"authority")])},URL_RE=/^[^:]+:\/\/([^:[]+|\[[^\]]+\])(:\d+)?(.*)/i;function makeWebsocketUrl(t){const e=t.match(URL_RE);if(e==null)throw TypeError(`Failed to validate endpoint URL \`${t}\``);const[s,l,d,u]=e,p=t.startsWith("https:")?"wss:":"ws:",m=d==null?null:parseInt(d.slice(1),10),y=m==null?"":`:${m+1}`;return`${p}//${l}${y}${u}`}const PublicKeyFromString=coerce$1(instance(PublicKey),string$3(),t=>new PublicKey(t)),RawAccountDataResult=tuple$2([string$3(),literal$2("base64")]),BufferFromRawAccountData=coerce$1(instance(bufferPolyfill.Buffer),RawAccountDataResult,t=>bufferPolyfill.Buffer.from(t[0],"base64")),BLOCKHASH_CACHE_TIMEOUT_MS=30*1e3;function assertEndpointUrl(t){if(/^https?:/.test(t)===!1)throw new TypeError("Endpoint URL must start with `http:` or `https:`.");return t}function extractCommitmentFromConfig(t){let e,s;if(typeof t=="string")e=t;else if(t){const{commitment:l,...d}=t;e=l,s=d}return{commitment:e,config:s}}function applyDefaultMemcmpEncodingToFilters(t){return t.map(e=>"memcmp"in e?{...e,memcmp:{...e.memcmp,encoding:e.memcmp.encoding??"base58"}}:e)}function createRpcResult$1(t){return union$3([type$3({jsonrpc:literal$2("2.0"),id:string$3(),result:t}),type$3({jsonrpc:literal$2("2.0"),id:string$3(),error:type$3({code:unknown$1(),message:string$3(),data:optional$2(any$2())})})])}const UnknownRpcResult$1=createRpcResult$1(unknown$1());function jsonRpcResult$1(t){return coerce$1(createRpcResult$1(t),UnknownRpcResult$1,e=>"error"in e?e:{...e,result:create$3(e.result,t)})}function jsonRpcResultAndContext$1(t){return jsonRpcResult$1(type$3({context:type$3({slot:number$2()}),value:t}))}function notificationResultAndContext(t){return type$3({context:type$3({slot:number$2()}),value:t})}function versionedMessageFromResponse(t,e){return t===0?new MessageV0({header:e.header,staticAccountKeys:e.accountKeys.map(s=>new PublicKey(s)),recentBlockhash:e.recentBlockhash,compiledInstructions:e.instructions.map(s=>({programIdIndex:s.programIdIndex,accountKeyIndexes:s.accounts,data:bs58$6.decode(s.data)})),addressTableLookups:e.addressTableLookups}):new Message(e)}const GetInflationGovernorResult=type$3({foundation:number$2(),foundationTerm:number$2(),initial:number$2(),taper:number$2(),terminal:number$2()}),GetInflationRewardResult=jsonRpcResult$1(array$3(nullable$3(type$3({epoch:number$2(),effectiveSlot:number$2(),amount:number$2(),postBalance:number$2(),commission:optional$2(nullable$3(number$2()))})))),GetRecentPrioritizationFeesResult=array$3(type$3({slot:number$2(),prioritizationFee:number$2()})),GetInflationRateResult=type$3({total:number$2(),validator:number$2(),foundation:number$2(),epoch:number$2()}),GetEpochInfoResult=type$3({epoch:number$2(),slotIndex:number$2(),slotsInEpoch:number$2(),absoluteSlot:number$2(),blockHeight:optional$2(number$2()),transactionCount:optional$2(number$2())}),GetEpochScheduleResult=type$3({slotsPerEpoch:number$2(),leaderScheduleSlotOffset:number$2(),warmup:boolean$2(),firstNormalEpoch:number$2(),firstNormalSlot:number$2()}),GetLeaderScheduleResult=record$1(string$3(),array$3(number$2())),TransactionErrorResult=nullable$3(union$3([type$3({}),string$3()])),SignatureStatusResult=type$3({err:TransactionErrorResult}),SignatureReceivedResult=literal$2("receivedSignature"),VersionResult=type$3({"solana-core":string$3(),"feature-set":optional$2(number$2())}),ParsedInstructionStruct=type$3({program:string$3(),programId:PublicKeyFromString,parsed:unknown$1()}),PartiallyDecodedInstructionStruct=type$3({programId:PublicKeyFromString,accounts:array$3(PublicKeyFromString),data:string$3()}),SimulatedTransactionResponseStruct$1=jsonRpcResultAndContext$1(type$3({err:nullable$3(union$3([type$3({}),string$3()])),logs:nullable$3(array$3(string$3())),accounts:optional$2(nullable$3(array$3(nullable$3(type$3({executable:boolean$2(),owner:string$3(),lamports:number$2(),data:array$3(string$3()),rentEpoch:optional$2(number$2())}))))),unitsConsumed:optional$2(number$2()),returnData:optional$2(nullable$3(type$3({programId:string$3(),data:tuple$2([string$3(),literal$2("base64")])}))),innerInstructions:optional$2(nullable$3(array$3(type$3({index:number$2(),instructions:array$3(union$3([ParsedInstructionStruct,PartiallyDecodedInstructionStruct]))}))))})),BlockProductionResponseStruct=jsonRpcResultAndContext$1(type$3({byIdentity:record$1(string$3(),array$3(number$2())),range:type$3({firstSlot:number$2(),lastSlot:number$2()})}));function createRpcClient(t,e,s,l,d,u){const p=s||fetchImpl;let m;u!=null&&console.warn("You have supplied an `httpAgent` when creating a `Connection` in a browser environment.It has been ignored; `httpAgent` is only used in Node environments.");let y;return l&&(y=async(v,A)=>{const w=await new Promise((I,k)=>{try{l(v,A,($,P)=>I([$,P]))}catch($){k($)}});return await p(...w)}),new RpcClient(async(v,A)=>{const w={method:"POST",body:v,agent:m,headers:Object.assign({"Content-Type":"application/json"},e||{},COMMON_HTTP_HEADERS)};try{let I=5,k,$=500;for(;y?k=await y(t,w):k=await p(t,w),!(k.status!==429||d===!0||(I-=1,I===0));)console.error(`Server responded with ${k.status} ${k.statusText}. Retrying after ${$}ms delay...`),await sleep$1($),$*=2;const P=await k.text();k.ok?A(null,P):A(new Error(`${k.status} ${k.statusText}: ${P}`))}catch(I){I instanceof Error&&A(I)}},{})}function createRpcRequest(t){return(e,s)=>new Promise((l,d)=>{t.request(e,s,(u,p)=>{if(u){d(u);return}l(p)})})}function createRpcBatchRequest(t){return e=>new Promise((s,l)=>{e.length===0&&s([]);const d=e.map(u=>t.request(u.methodName,u.args));t.request(d,(u,p)=>{if(u){l(u);return}s(p)})})}const GetInflationGovernorRpcResult=jsonRpcResult$1(GetInflationGovernorResult),GetInflationRateRpcResult=jsonRpcResult$1(GetInflationRateResult),GetRecentPrioritizationFeesRpcResult=jsonRpcResult$1(GetRecentPrioritizationFeesResult),GetEpochInfoRpcResult=jsonRpcResult$1(GetEpochInfoResult),GetEpochScheduleRpcResult=jsonRpcResult$1(GetEpochScheduleResult),GetLeaderScheduleRpcResult=jsonRpcResult$1(GetLeaderScheduleResult),SlotRpcResult=jsonRpcResult$1(number$2()),GetSupplyRpcResult=jsonRpcResultAndContext$1(type$3({total:number$2(),circulating:number$2(),nonCirculating:number$2(),nonCirculatingAccounts:array$3(PublicKeyFromString)})),TokenAmountResult=type$3({amount:string$3(),uiAmount:nullable$3(number$2()),decimals:number$2(),uiAmountString:optional$2(string$3())}),GetTokenLargestAccountsResult=jsonRpcResultAndContext$1(array$3(type$3({address:PublicKeyFromString,amount:string$3(),uiAmount:nullable$3(number$2()),decimals:number$2(),uiAmountString:optional$2(string$3())}))),GetTokenAccountsByOwner=jsonRpcResultAndContext$1(array$3(type$3({pubkey:PublicKeyFromString,account:type$3({executable:boolean$2(),owner:PublicKeyFromString,lamports:number$2(),data:BufferFromRawAccountData,rentEpoch:number$2()})}))),ParsedAccountDataResult=type$3({program:string$3(),parsed:unknown$1(),space:number$2()}),GetParsedTokenAccountsByOwner=jsonRpcResultAndContext$1(array$3(type$3({pubkey:PublicKeyFromString,account:type$3({executable:boolean$2(),owner:PublicKeyFromString,lamports:number$2(),data:ParsedAccountDataResult,rentEpoch:number$2()})}))),GetLargestAccountsRpcResult=jsonRpcResultAndContext$1(array$3(type$3({lamports:number$2(),address:PublicKeyFromString}))),AccountInfoResult=type$3({executable:boolean$2(),owner:PublicKeyFromString,lamports:number$2(),data:BufferFromRawAccountData,rentEpoch:number$2()}),KeyedAccountInfoResult=type$3({pubkey:PublicKeyFromString,account:AccountInfoResult}),ParsedOrRawAccountData=coerce$1(union$3([instance(bufferPolyfill.Buffer),ParsedAccountDataResult]),union$3([RawAccountDataResult,ParsedAccountDataResult]),t=>Array.isArray(t)?create$3(t,BufferFromRawAccountData):t),ParsedAccountInfoResult=type$3({executable:boolean$2(),owner:PublicKeyFromString,lamports:number$2(),data:ParsedOrRawAccountData,rentEpoch:number$2()}),KeyedParsedAccountInfoResult=type$3({pubkey:PublicKeyFromString,account:ParsedAccountInfoResult}),StakeActivationResult=type$3({state:union$3([literal$2("active"),literal$2("inactive"),literal$2("activating"),literal$2("deactivating")]),active:number$2(),inactive:number$2()}),GetConfirmedSignaturesForAddress2RpcResult=jsonRpcResult$1(array$3(type$3({signature:string$3(),slot:number$2(),err:TransactionErrorResult,memo:nullable$3(string$3()),blockTime:optional$2(nullable$3(number$2()))}))),GetSignaturesForAddressRpcResult=jsonRpcResult$1(array$3(type$3({signature:string$3(),slot:number$2(),err:TransactionErrorResult,memo:nullable$3(string$3()),blockTime:optional$2(nullable$3(number$2()))}))),AccountNotificationResult=type$3({subscription:number$2(),result:notificationResultAndContext(AccountInfoResult)}),ProgramAccountInfoResult=type$3({pubkey:PublicKeyFromString,account:AccountInfoResult}),ProgramAccountNotificationResult=type$3({subscription:number$2(),result:notificationResultAndContext(ProgramAccountInfoResult)}),SlotInfoResult=type$3({parent:number$2(),slot:number$2(),root:number$2()}),SlotNotificationResult=type$3({subscription:number$2(),result:SlotInfoResult}),SlotUpdateResult=union$3([type$3({type:union$3([literal$2("firstShredReceived"),literal$2("completed"),literal$2("optimisticConfirmation"),literal$2("root")]),slot:number$2(),timestamp:number$2()}),type$3({type:literal$2("createdBank"),parent:number$2(),slot:number$2(),timestamp:number$2()}),type$3({type:literal$2("frozen"),slot:number$2(),timestamp:number$2(),stats:type$3({numTransactionEntries:number$2(),numSuccessfulTransactions:number$2(),numFailedTransactions:number$2(),maxTransactionsPerEntry:number$2()})}),type$3({type:literal$2("dead"),slot:number$2(),timestamp:number$2(),err:string$3()})]),SlotUpdateNotificationResult=type$3({subscription:number$2(),result:SlotUpdateResult}),SignatureNotificationResult=type$3({subscription:number$2(),result:notificationResultAndContext(union$3([SignatureStatusResult,SignatureReceivedResult]))}),RootNotificationResult=type$3({subscription:number$2(),result:number$2()}),ContactInfoResult=type$3({pubkey:string$3(),gossip:nullable$3(string$3()),tpu:nullable$3(string$3()),rpc:nullable$3(string$3()),version:nullable$3(string$3())}),VoteAccountInfoResult=type$3({votePubkey:string$3(),nodePubkey:string$3(),activatedStake:number$2(),epochVoteAccount:boolean$2(),epochCredits:array$3(tuple$2([number$2(),number$2(),number$2()])),commission:number$2(),lastVote:number$2(),rootSlot:nullable$3(number$2())}),GetVoteAccounts=jsonRpcResult$1(type$3({current:array$3(VoteAccountInfoResult),delinquent:array$3(VoteAccountInfoResult)})),ConfirmationStatus=union$3([literal$2("processed"),literal$2("confirmed"),literal$2("finalized")]),SignatureStatusResponse=type$3({slot:number$2(),confirmations:nullable$3(number$2()),err:TransactionErrorResult,confirmationStatus:optional$2(ConfirmationStatus)}),GetSignatureStatusesRpcResult=jsonRpcResultAndContext$1(array$3(nullable$3(SignatureStatusResponse))),GetMinimumBalanceForRentExemptionRpcResult=jsonRpcResult$1(number$2()),AddressTableLookupStruct=type$3({accountKey:PublicKeyFromString,writableIndexes:array$3(number$2()),readonlyIndexes:array$3(number$2())}),ConfirmedTransactionResult=type$3({signatures:array$3(string$3()),message:type$3({accountKeys:array$3(string$3()),header:type$3({numRequiredSignatures:number$2(),numReadonlySignedAccounts:number$2(),numReadonlyUnsignedAccounts:number$2()}),instructions:array$3(type$3({accounts:array$3(number$2()),data:string$3(),programIdIndex:number$2()})),recentBlockhash:string$3(),addressTableLookups:optional$2(array$3(AddressTableLookupStruct))})}),AnnotatedAccountKey=type$3({pubkey:PublicKeyFromString,signer:boolean$2(),writable:boolean$2(),source:optional$2(union$3([literal$2("transaction"),literal$2("lookupTable")]))}),ConfirmedTransactionAccountsModeResult=type$3({accountKeys:array$3(AnnotatedAccountKey),signatures:array$3(string$3())}),ParsedInstructionResult=type$3({parsed:unknown$1(),program:string$3(),programId:PublicKeyFromString}),RawInstructionResult=type$3({accounts:array$3(PublicKeyFromString),data:string$3(),programId:PublicKeyFromString}),InstructionResult=union$3([RawInstructionResult,ParsedInstructionResult]),UnknownInstructionResult=union$3([type$3({parsed:unknown$1(),program:string$3(),programId:string$3()}),type$3({accounts:array$3(string$3()),data:string$3(),programId:string$3()})]),ParsedOrRawInstruction=coerce$1(InstructionResult,UnknownInstructionResult,t=>"accounts"in t?create$3(t,RawInstructionResult):create$3(t,ParsedInstructionResult)),ParsedConfirmedTransactionResult=type$3({signatures:array$3(string$3()),message:type$3({accountKeys:array$3(AnnotatedAccountKey),instructions:array$3(ParsedOrRawInstruction),recentBlockhash:string$3(),addressTableLookups:optional$2(nullable$3(array$3(AddressTableLookupStruct)))})}),TokenBalanceResult=type$3({accountIndex:number$2(),mint:string$3(),owner:optional$2(string$3()),programId:optional$2(string$3()),uiTokenAmount:TokenAmountResult}),LoadedAddressesResult=type$3({writable:array$3(PublicKeyFromString),readonly:array$3(PublicKeyFromString)}),ConfirmedTransactionMetaResult=type$3({err:TransactionErrorResult,fee:number$2(),innerInstructions:optional$2(nullable$3(array$3(type$3({index:number$2(),instructions:array$3(type$3({accounts:array$3(number$2()),data:string$3(),programIdIndex:number$2()}))})))),preBalances:array$3(number$2()),postBalances:array$3(number$2()),logMessages:optional$2(nullable$3(array$3(string$3()))),preTokenBalances:optional$2(nullable$3(array$3(TokenBalanceResult))),postTokenBalances:optional$2(nullable$3(array$3(TokenBalanceResult))),loadedAddresses:optional$2(LoadedAddressesResult),computeUnitsConsumed:optional$2(number$2())}),ParsedConfirmedTransactionMetaResult=type$3({err:TransactionErrorResult,fee:number$2(),innerInstructions:optional$2(nullable$3(array$3(type$3({index:number$2(),instructions:array$3(ParsedOrRawInstruction)})))),preBalances:array$3(number$2()),postBalances:array$3(number$2()),logMessages:optional$2(nullable$3(array$3(string$3()))),preTokenBalances:optional$2(nullable$3(array$3(TokenBalanceResult))),postTokenBalances:optional$2(nullable$3(array$3(TokenBalanceResult))),loadedAddresses:optional$2(LoadedAddressesResult),computeUnitsConsumed:optional$2(number$2())}),TransactionVersionStruct=union$3([literal$2(0),literal$2("legacy")]),RewardsResult=type$3({pubkey:string$3(),lamports:number$2(),postBalance:nullable$3(number$2()),rewardType:nullable$3(string$3()),commission:optional$2(nullable$3(number$2()))}),GetBlockRpcResult=jsonRpcResult$1(nullable$3(type$3({blockhash:string$3(),previousBlockhash:string$3(),parentSlot:number$2(),transactions:array$3(type$3({transaction:ConfirmedTransactionResult,meta:nullable$3(ConfirmedTransactionMetaResult),version:optional$2(TransactionVersionStruct)})),rewards:optional$2(array$3(RewardsResult)),blockTime:nullable$3(number$2()),blockHeight:nullable$3(number$2())}))),GetNoneModeBlockRpcResult=jsonRpcResult$1(nullable$3(type$3({blockhash:string$3(),previousBlockhash:string$3(),parentSlot:number$2(),rewards:optional$2(array$3(RewardsResult)),blockTime:nullable$3(number$2()),blockHeight:nullable$3(number$2())}))),GetAccountsModeBlockRpcResult=jsonRpcResult$1(nullable$3(type$3({blockhash:string$3(),previousBlockhash:string$3(),parentSlot:number$2(),transactions:array$3(type$3({transaction:ConfirmedTransactionAccountsModeResult,meta:nullable$3(ConfirmedTransactionMetaResult),version:optional$2(TransactionVersionStruct)})),rewards:optional$2(array$3(RewardsResult)),blockTime:nullable$3(number$2()),blockHeight:nullable$3(number$2())}))),GetParsedBlockRpcResult=jsonRpcResult$1(nullable$3(type$3({blockhash:string$3(),previousBlockhash:string$3(),parentSlot:number$2(),transactions:array$3(type$3({transaction:ParsedConfirmedTransactionResult,meta:nullable$3(ParsedConfirmedTransactionMetaResult),version:optional$2(TransactionVersionStruct)})),rewards:optional$2(array$3(RewardsResult)),blockTime:nullable$3(number$2()),blockHeight:nullable$3(number$2())}))),GetParsedAccountsModeBlockRpcResult=jsonRpcResult$1(nullable$3(type$3({blockhash:string$3(),previousBlockhash:string$3(),parentSlot:number$2(),transactions:array$3(type$3({transaction:ConfirmedTransactionAccountsModeResult,meta:nullable$3(ParsedConfirmedTransactionMetaResult),version:optional$2(TransactionVersionStruct)})),rewards:optional$2(array$3(RewardsResult)),blockTime:nullable$3(number$2()),blockHeight:nullable$3(number$2())}))),GetParsedNoneModeBlockRpcResult=jsonRpcResult$1(nullable$3(type$3({blockhash:string$3(),previousBlockhash:string$3(),parentSlot:number$2(),rewards:optional$2(array$3(RewardsResult)),blockTime:nullable$3(number$2()),blockHeight:nullable$3(number$2())}))),GetConfirmedBlockRpcResult=jsonRpcResult$1(nullable$3(type$3({blockhash:string$3(),previousBlockhash:string$3(),parentSlot:number$2(),transactions:array$3(type$3({transaction:ConfirmedTransactionResult,meta:nullable$3(ConfirmedTransactionMetaResult)})),rewards:optional$2(array$3(RewardsResult)),blockTime:nullable$3(number$2())}))),GetBlockSignaturesRpcResult=jsonRpcResult$1(nullable$3(type$3({blockhash:string$3(),previousBlockhash:string$3(),parentSlot:number$2(),signatures:array$3(string$3()),blockTime:nullable$3(number$2())}))),GetTransactionRpcResult=jsonRpcResult$1(nullable$3(type$3({slot:number$2(),meta:nullable$3(ConfirmedTransactionMetaResult),blockTime:optional$2(nullable$3(number$2())),transaction:ConfirmedTransactionResult,version:optional$2(TransactionVersionStruct)}))),GetParsedTransactionRpcResult=jsonRpcResult$1(nullable$3(type$3({slot:number$2(),transaction:ParsedConfirmedTransactionResult,meta:nullable$3(ParsedConfirmedTransactionMetaResult),blockTime:optional$2(nullable$3(number$2())),version:optional$2(TransactionVersionStruct)}))),GetLatestBlockhashRpcResult=jsonRpcResultAndContext$1(type$3({blockhash:string$3(),lastValidBlockHeight:number$2()})),IsBlockhashValidRpcResult=jsonRpcResultAndContext$1(boolean$2()),PerfSampleResult=type$3({slot:number$2(),numTransactions:number$2(),numSlots:number$2(),samplePeriodSecs:number$2()}),GetRecentPerformanceSamplesRpcResult=jsonRpcResult$1(array$3(PerfSampleResult)),GetFeeCalculatorRpcResult=jsonRpcResultAndContext$1(nullable$3(type$3({feeCalculator:type$3({lamportsPerSignature:number$2()})}))),RequestAirdropRpcResult=jsonRpcResult$1(string$3()),SendTransactionRpcResult=jsonRpcResult$1(string$3()),LogsResult=type$3({err:TransactionErrorResult,logs:array$3(string$3()),signature:string$3()}),LogsNotificationResult=type$3({result:notificationResultAndContext(LogsResult),subscription:number$2()}),COMMON_HTTP_HEADERS={"solana-client":"js/1.0.0-maintenance"};let Connection$1=class{constructor(e,s){this._commitment=void 0,this._confirmTransactionInitialTimeout=void 0,this._rpcEndpoint=void 0,this._rpcWsEndpoint=void 0,this._rpcClient=void 0,this._rpcRequest=void 0,this._rpcBatchRequest=void 0,this._rpcWebSocket=void 0,this._rpcWebSocketConnected=!1,this._rpcWebSocketHeartbeat=null,this._rpcWebSocketIdleTimeout=null,this._rpcWebSocketGeneration=0,this._disableBlockhashCaching=!1,this._pollingBlockhash=!1,this._blockhashInfo={latestBlockhash:null,lastFetch:0,transactionSignatures:[],simulatedSignatures:[]},this._nextClientSubscriptionId=0,this._subscriptionDisposeFunctionsByClientSubscriptionId={},this._subscriptionHashByClientSubscriptionId={},this._subscriptionStateChangeCallbacksByHash={},this._subscriptionCallbacksByServerSubscriptionId={},this._subscriptionsByHash={},this._subscriptionsAutoDisposedByRpc=new Set,this.getBlockHeight=(()=>{const h={};return async v=>{const{commitment:A,config:w}=extractCommitmentFromConfig(v),I=this._buildArgs([],A,void 0,w),k=fastStableStringify(I);return h[k]=h[k]??(async()=>{try{const $=await this._rpcRequest("getBlockHeight",I),P=create$3($,jsonRpcResult$1(number$2()));if("error"in P)throw new SolanaJSONRPCError(P.error,"failed to get block height information");return P.result}finally{delete h[k]}})(),await h[k]}})();let l,d,u,p,m,y;s&&typeof s=="string"?this._commitment=s:s&&(this._commitment=s.commitment,this._confirmTransactionInitialTimeout=s.confirmTransactionInitialTimeout,l=s.wsEndpoint,d=s.httpHeaders,u=s.fetch,p=s.fetchMiddleware,m=s.disableRetryOnRateLimit,y=s.httpAgent),this._rpcEndpoint=assertEndpointUrl(e),this._rpcWsEndpoint=l||makeWebsocketUrl(e),this._rpcClient=createRpcClient(e,d,u,p,m,y),this._rpcRequest=createRpcRequest(this._rpcClient),this._rpcBatchRequest=createRpcBatchRequest(this._rpcClient),this._rpcWebSocket=new RpcWebSocketClient(this._rpcWsEndpoint,{autoconnect:!1,max_reconnects:1/0}),this._rpcWebSocket.on("open",this._wsOnOpen.bind(this)),this._rpcWebSocket.on("error",this._wsOnError.bind(this)),this._rpcWebSocket.on("close",this._wsOnClose.bind(this)),this._rpcWebSocket.on("accountNotification",this._wsOnAccountNotification.bind(this)),this._rpcWebSocket.on("programNotification",this._wsOnProgramAccountNotification.bind(this)),this._rpcWebSocket.on("slotNotification",this._wsOnSlotNotification.bind(this)),this._rpcWebSocket.on("slotsUpdatesNotification",this._wsOnSlotUpdatesNotification.bind(this)),this._rpcWebSocket.on("signatureNotification",this._wsOnSignatureNotification.bind(this)),this._rpcWebSocket.on("rootNotification",this._wsOnRootNotification.bind(this)),this._rpcWebSocket.on("logsNotification",this._wsOnLogsNotification.bind(this))}get commitment(){return this._commitment}get rpcEndpoint(){return this._rpcEndpoint}async getBalanceAndContext(e,s){const{commitment:l,config:d}=extractCommitmentFromConfig(s),u=this._buildArgs([e.toBase58()],l,void 0,d),p=await this._rpcRequest("getBalance",u),m=create$3(p,jsonRpcResultAndContext$1(number$2()));if("error"in m)throw new SolanaJSONRPCError(m.error,`failed to get balance for ${e.toBase58()}`);return m.result}async getBalance(e,s){return await this.getBalanceAndContext(e,s).then(l=>l.value).catch(l=>{throw new Error("failed to get balance of account "+e.toBase58()+": "+l)})}async getBlockTime(e){const s=await this._rpcRequest("getBlockTime",[e]),l=create$3(s,jsonRpcResult$1(nullable$3(number$2())));if("error"in l)throw new SolanaJSONRPCError(l.error,`failed to get block time for slot ${e}`);return l.result}async getMinimumLedgerSlot(){const e=await this._rpcRequest("minimumLedgerSlot",[]),s=create$3(e,jsonRpcResult$1(number$2()));if("error"in s)throw new SolanaJSONRPCError(s.error,"failed to get minimum ledger slot");return s.result}async getFirstAvailableBlock(){const e=await this._rpcRequest("getFirstAvailableBlock",[]),s=create$3(e,SlotRpcResult);if("error"in s)throw new SolanaJSONRPCError(s.error,"failed to get first available block");return s.result}async getSupply(e){let s={};typeof e=="string"?s={commitment:e}:e?s={...e,commitment:e&&e.commitment||this.commitment}:s={commitment:this.commitment};const l=await this._rpcRequest("getSupply",[s]),d=create$3(l,GetSupplyRpcResult);if("error"in d)throw new SolanaJSONRPCError(d.error,"failed to get supply");return d.result}async getTokenSupply(e,s){const l=this._buildArgs([e.toBase58()],s),d=await this._rpcRequest("getTokenSupply",l),u=create$3(d,jsonRpcResultAndContext$1(TokenAmountResult));if("error"in u)throw new SolanaJSONRPCError(u.error,"failed to get token supply");return u.result}async getTokenAccountBalance(e,s){const l=this._buildArgs([e.toBase58()],s),d=await this._rpcRequest("getTokenAccountBalance",l),u=create$3(d,jsonRpcResultAndContext$1(TokenAmountResult));if("error"in u)throw new SolanaJSONRPCError(u.error,"failed to get token account balance");return u.result}async getTokenAccountsByOwner(e,s,l){const{commitment:d,config:u}=extractCommitmentFromConfig(l);let p=[e.toBase58()];"mint"in s?p.push({mint:s.mint.toBase58()}):p.push({programId:s.programId.toBase58()});const m=this._buildArgs(p,d,"base64",u),y=await this._rpcRequest("getTokenAccountsByOwner",m),h=create$3(y,GetTokenAccountsByOwner);if("error"in h)throw new SolanaJSONRPCError(h.error,`failed to get token accounts owned by account ${e.toBase58()}`);return h.result}async getParsedTokenAccountsByOwner(e,s,l){let d=[e.toBase58()];"mint"in s?d.push({mint:s.mint.toBase58()}):d.push({programId:s.programId.toBase58()});const u=this._buildArgs(d,l,"jsonParsed"),p=await this._rpcRequest("getTokenAccountsByOwner",u),m=create$3(p,GetParsedTokenAccountsByOwner);if("error"in m)throw new SolanaJSONRPCError(m.error,`failed to get token accounts owned by account ${e.toBase58()}`);return m.result}async getLargestAccounts(e){const s={...e,commitment:e&&e.commitment||this.commitment},l=s.filter||s.commitment?[s]:[],d=await this._rpcRequest("getLargestAccounts",l),u=create$3(d,GetLargestAccountsRpcResult);if("error"in u)throw new SolanaJSONRPCError(u.error,"failed to get largest accounts");return u.result}async getTokenLargestAccounts(e,s){const l=this._buildArgs([e.toBase58()],s),d=await this._rpcRequest("getTokenLargestAccounts",l),u=create$3(d,GetTokenLargestAccountsResult);if("error"in u)throw new SolanaJSONRPCError(u.error,"failed to get token largest accounts");return u.result}async getAccountInfoAndContext(e,s){const{commitment:l,config:d}=extractCommitmentFromConfig(s),u=this._buildArgs([e.toBase58()],l,"base64",d),p=await this._rpcRequest("getAccountInfo",u),m=create$3(p,jsonRpcResultAndContext$1(nullable$3(AccountInfoResult)));if("error"in m)throw new SolanaJSONRPCError(m.error,`failed to get info about account ${e.toBase58()}`);return m.result}async getParsedAccountInfo(e,s){const{commitment:l,config:d}=extractCommitmentFromConfig(s),u=this._buildArgs([e.toBase58()],l,"jsonParsed",d),p=await this._rpcRequest("getAccountInfo",u),m=create$3(p,jsonRpcResultAndContext$1(nullable$3(ParsedAccountInfoResult)));if("error"in m)throw new SolanaJSONRPCError(m.error,`failed to get info about account ${e.toBase58()}`);return m.result}async getAccountInfo(e,s){try{return(await this.getAccountInfoAndContext(e,s)).value}catch(l){throw new Error("failed to get info about account "+e.toBase58()+": "+l)}}async getMultipleParsedAccounts(e,s){const{commitment:l,config:d}=extractCommitmentFromConfig(s),u=e.map(h=>h.toBase58()),p=this._buildArgs([u],l,"jsonParsed",d),m=await this._rpcRequest("getMultipleAccounts",p),y=create$3(m,jsonRpcResultAndContext$1(array$3(nullable$3(ParsedAccountInfoResult))));if("error"in y)throw new SolanaJSONRPCError(y.error,`failed to get info for accounts ${u}`);return y.result}async getMultipleAccountsInfoAndContext(e,s){const{commitment:l,config:d}=extractCommitmentFromConfig(s),u=e.map(h=>h.toBase58()),p=this._buildArgs([u],l,"base64",d),m=await this._rpcRequest("getMultipleAccounts",p),y=create$3(m,jsonRpcResultAndContext$1(array$3(nullable$3(AccountInfoResult))));if("error"in y)throw new SolanaJSONRPCError(y.error,`failed to get info for accounts ${u}`);return y.result}async getMultipleAccountsInfo(e,s){return(await this.getMultipleAccountsInfoAndContext(e,s)).value}async getStakeActivation(e,s,l){const{commitment:d,config:u}=extractCommitmentFromConfig(s),p=this._buildArgs([e.toBase58()],d,void 0,{...u,epoch:l??(u==null?void 0:u.epoch)}),m=await this._rpcRequest("getStakeActivation",p),y=create$3(m,jsonRpcResult$1(StakeActivationResult));if("error"in y)throw new SolanaJSONRPCError(y.error,`failed to get Stake Activation ${e.toBase58()}`);return y.result}async getProgramAccounts(e,s){const{commitment:l,config:d}=extractCommitmentFromConfig(s),{encoding:u,...p}=d||{},m=this._buildArgs([e.toBase58()],l,u||"base64",{...p,...p.filters?{filters:applyDefaultMemcmpEncodingToFilters(p.filters)}:null}),y=await this._rpcRequest("getProgramAccounts",m),h=array$3(KeyedAccountInfoResult),v=p.withContext===!0?create$3(y,jsonRpcResultAndContext$1(h)):create$3(y,jsonRpcResult$1(h));if("error"in v)throw new SolanaJSONRPCError(v.error,`failed to get accounts owned by program ${e.toBase58()}`);return v.result}async getParsedProgramAccounts(e,s){const{commitment:l,config:d}=extractCommitmentFromConfig(s),u=this._buildArgs([e.toBase58()],l,"jsonParsed",d),p=await this._rpcRequest("getProgramAccounts",u),m=create$3(p,jsonRpcResult$1(array$3(KeyedParsedAccountInfoResult)));if("error"in m)throw new SolanaJSONRPCError(m.error,`failed to get accounts owned by program ${e.toBase58()}`);return m.result}async confirmTransaction(e,s){var u;let l;if(typeof e=="string")l=e;else{const p=e;if((u=p.abortSignal)!=null&&u.aborted)return Promise.reject(p.abortSignal.reason);l=p.signature}let d;try{d=bs58$6.decode(l)}catch{throw new Error("signature must be base58 encoded: "+l)}return assert$4(d.length===64,"signature has invalid length"),typeof e=="string"?await this.confirmTransactionUsingLegacyTimeoutStrategy({commitment:s||this.commitment,signature:l}):"lastValidBlockHeight"in e?await this.confirmTransactionUsingBlockHeightExceedanceStrategy({commitment:s||this.commitment,strategy:e}):await this.confirmTransactionUsingDurableNonceStrategy({commitment:s||this.commitment,strategy:e})}getCancellationPromise(e){return new Promise((s,l)=>{e!=null&&(e.aborted?l(e.reason):e.addEventListener("abort",()=>{l(e.reason)}))})}getTransactionConfirmationPromise({commitment:e,signature:s}){let l,d,u=!1;const p=new Promise((y,h)=>{try{l=this.onSignature(s,(A,w)=>{l=void 0;const I={context:w,value:A};y({__type:TransactionStatus.PROCESSED,response:I})},e);const v=new Promise(A=>{l==null?A():d=this._onSubscriptionStateChange(l,w=>{w==="subscribed"&&A()})});(async()=>{if(await v,u)return;const A=await this.getSignatureStatus(s);if(u||A==null)return;const{context:w,value:I}=A;if(I!=null)if(I!=null&&I.err)h(I.err);else{switch(e){case"confirmed":case"single":case"singleGossip":{if(I.confirmationStatus==="processed")return;break}case"finalized":case"max":case"root":{if(I.confirmationStatus==="processed"||I.confirmationStatus==="confirmed")return;break}case"processed":case"recent":}u=!0,y({__type:TransactionStatus.PROCESSED,response:{context:w,value:I}})}})()}catch(v){h(v)}});return{abortConfirmation:()=>{d&&(d(),d=void 0),l!=null&&(this.removeSignatureListener(l),l=void 0)},confirmationPromise:p}}async confirmTransactionUsingBlockHeightExceedanceStrategy({commitment:e,strategy:{abortSignal:s,lastValidBlockHeight:l,signature:d}}){let u=!1;const p=new Promise(A=>{const w=async()=>{try{return await this.getBlockHeight(e)}catch{return-1}};(async()=>{let I=await w();if(!u){for(;I<=l;)if(await sleep$1(1e3),u||(I=await w(),u))return;A({__type:TransactionStatus.BLOCKHEIGHT_EXCEEDED})}})()}),{abortConfirmation:m,confirmationPromise:y}=this.getTransactionConfirmationPromise({commitment:e,signature:d}),h=this.getCancellationPromise(s);let v;try{const A=await Promise.race([h,y,p]);if(A.__type===TransactionStatus.PROCESSED)v=A.response;else throw new TransactionExpiredBlockheightExceededError(d)}finally{u=!0,m()}return v}async confirmTransactionUsingDurableNonceStrategy({commitment:e,strategy:{abortSignal:s,minContextSlot:l,nonceAccountPubkey:d,nonceValue:u,signature:p}}){let m=!1;const y=new Promise(I=>{let k=u,$=null;const P=async()=>{try{const{context:z,value:U}=await this.getNonceAndContext(d,{commitment:e,minContextSlot:l});return $=z.slot,U==null?void 0:U.nonce}catch{return k}};(async()=>{if(k=await P(),!m)for(;;){if(u!==k){I({__type:TransactionStatus.NONCE_INVALID,slotInWhichNonceDidAdvance:$});return}if(await sleep$1(2e3),m||(k=await P(),m))return}})()}),{abortConfirmation:h,confirmationPromise:v}=this.getTransactionConfirmationPromise({commitment:e,signature:p}),A=this.getCancellationPromise(s);let w;try{const I=await Promise.race([A,v,y]);if(I.__type===TransactionStatus.PROCESSED)w=I.response;else{let k;for(;;){const $=await this.getSignatureStatus(p);if($==null)break;if($.context.slot<(I.slotInWhichNonceDidAdvance??l)){await sleep$1(400);continue}k=$;break}if(k!=null&&k.value){const $=e||"finalized",{confirmationStatus:P}=k.value;switch($){case"processed":case"recent":if(P!=="processed"&&P!=="confirmed"&&P!=="finalized")throw new TransactionExpiredNonceInvalidError(p);break;case"confirmed":case"single":case"singleGossip":if(P!=="confirmed"&&P!=="finalized")throw new TransactionExpiredNonceInvalidError(p);break;case"finalized":case"max":case"root":if(P!=="finalized")throw new TransactionExpiredNonceInvalidError(p);break;default:}w={context:k.context,value:{err:k.value.err}}}else throw new TransactionExpiredNonceInvalidError(p)}}finally{m=!0,h()}return w}async confirmTransactionUsingLegacyTimeoutStrategy({commitment:e,signature:s}){let l;const d=new Promise(y=>{let h=this._confirmTransactionInitialTimeout||6e4;switch(e){case"processed":case"recent":case"single":case"confirmed":case"singleGossip":{h=this._confirmTransactionInitialTimeout||3e4;break}}l=setTimeout(()=>y({__type:TransactionStatus.TIMED_OUT,timeoutMs:h}),h)}),{abortConfirmation:u,confirmationPromise:p}=this.getTransactionConfirmationPromise({commitment:e,signature:s});let m;try{const y=await Promise.race([p,d]);if(y.__type===TransactionStatus.PROCESSED)m=y.response;else throw new TransactionExpiredTimeoutError(s,y.timeoutMs/1e3)}finally{clearTimeout(l),u()}return m}async getClusterNodes(){const e=await this._rpcRequest("getClusterNodes",[]),s=create$3(e,jsonRpcResult$1(array$3(ContactInfoResult)));if("error"in s)throw new SolanaJSONRPCError(s.error,"failed to get cluster nodes");return s.result}async getVoteAccounts(e){const s=this._buildArgs([],e),l=await this._rpcRequest("getVoteAccounts",s),d=create$3(l,GetVoteAccounts);if("error"in d)throw new SolanaJSONRPCError(d.error,"failed to get vote accounts");return d.result}async getSlot(e){const{commitment:s,config:l}=extractCommitmentFromConfig(e),d=this._buildArgs([],s,void 0,l),u=await this._rpcRequest("getSlot",d),p=create$3(u,jsonRpcResult$1(number$2()));if("error"in p)throw new SolanaJSONRPCError(p.error,"failed to get slot");return p.result}async getSlotLeader(e){const{commitment:s,config:l}=extractCommitmentFromConfig(e),d=this._buildArgs([],s,void 0,l),u=await this._rpcRequest("getSlotLeader",d),p=create$3(u,jsonRpcResult$1(string$3()));if("error"in p)throw new SolanaJSONRPCError(p.error,"failed to get slot leader");return p.result}async getSlotLeaders(e,s){const l=[e,s],d=await this._rpcRequest("getSlotLeaders",l),u=create$3(d,jsonRpcResult$1(array$3(PublicKeyFromString)));if("error"in u)throw new SolanaJSONRPCError(u.error,"failed to get slot leaders");return u.result}async getSignatureStatus(e,s){const{context:l,value:d}=await this.getSignatureStatuses([e],s);assert$4(d.length===1);const u=d[0];return{context:l,value:u}}async getSignatureStatuses(e,s){const l=[e];s&&l.push(s);const d=await this._rpcRequest("getSignatureStatuses",l),u=create$3(d,GetSignatureStatusesRpcResult);if("error"in u)throw new SolanaJSONRPCError(u.error,"failed to get signature status");return u.result}async getTransactionCount(e){const{commitment:s,config:l}=extractCommitmentFromConfig(e),d=this._buildArgs([],s,void 0,l),u=await this._rpcRequest("getTransactionCount",d),p=create$3(u,jsonRpcResult$1(number$2()));if("error"in p)throw new SolanaJSONRPCError(p.error,"failed to get transaction count");return p.result}async getTotalSupply(e){return(await this.getSupply({commitment:e,excludeNonCirculatingAccountsList:!0})).value.total}async getInflationGovernor(e){const s=this._buildArgs([],e),l=await this._rpcRequest("getInflationGovernor",s),d=create$3(l,GetInflationGovernorRpcResult);if("error"in d)throw new SolanaJSONRPCError(d.error,"failed to get inflation");return d.result}async getInflationReward(e,s,l){const{commitment:d,config:u}=extractCommitmentFromConfig(l),p=this._buildArgs([e.map(h=>h.toBase58())],d,void 0,{...u,epoch:s??(u==null?void 0:u.epoch)}),m=await this._rpcRequest("getInflationReward",p),y=create$3(m,GetInflationRewardResult);if("error"in y)throw new SolanaJSONRPCError(y.error,"failed to get inflation reward");return y.result}async getInflationRate(){const e=await this._rpcRequest("getInflationRate",[]),s=create$3(e,GetInflationRateRpcResult);if("error"in s)throw new SolanaJSONRPCError(s.error,"failed to get inflation rate");return s.result}async getEpochInfo(e){const{commitment:s,config:l}=extractCommitmentFromConfig(e),d=this._buildArgs([],s,void 0,l),u=await this._rpcRequest("getEpochInfo",d),p=create$3(u,GetEpochInfoRpcResult);if("error"in p)throw new SolanaJSONRPCError(p.error,"failed to get epoch info");return p.result}async getEpochSchedule(){const e=await this._rpcRequest("getEpochSchedule",[]),s=create$3(e,GetEpochScheduleRpcResult);if("error"in s)throw new SolanaJSONRPCError(s.error,"failed to get epoch schedule");const l=s.result;return new EpochSchedule(l.slotsPerEpoch,l.leaderScheduleSlotOffset,l.warmup,l.firstNormalEpoch,l.firstNormalSlot)}async getLeaderSchedule(){const e=await this._rpcRequest("getLeaderSchedule",[]),s=create$3(e,GetLeaderScheduleRpcResult);if("error"in s)throw new SolanaJSONRPCError(s.error,"failed to get leader schedule");return s.result}async getMinimumBalanceForRentExemption(e,s){const l=this._buildArgs([e],s),d=await this._rpcRequest("getMinimumBalanceForRentExemption",l),u=create$3(d,GetMinimumBalanceForRentExemptionRpcResult);return"error"in u?(console.warn("Unable to fetch minimum balance for rent exemption"),0):u.result}async getRecentBlockhashAndContext(e){const{context:s,value:{blockhash:l}}=await this.getLatestBlockhashAndContext(e);return{context:s,value:{blockhash:l,feeCalculator:{get lamportsPerSignature(){throw new Error("The capability to fetch `lamportsPerSignature` using the `getRecentBlockhash` API is no longer offered by the network. Use the `getFeeForMessage` API to obtain the fee for a given message.")},toJSON(){return{}}}}}}async getRecentPerformanceSamples(e){const s=await this._rpcRequest("getRecentPerformanceSamples",e?[e]:[]),l=create$3(s,GetRecentPerformanceSamplesRpcResult);if("error"in l)throw new SolanaJSONRPCError(l.error,"failed to get recent performance samples");return l.result}async getFeeCalculatorForBlockhash(e,s){const l=this._buildArgs([e],s),d=await this._rpcRequest("getFeeCalculatorForBlockhash",l),u=create$3(d,GetFeeCalculatorRpcResult);if("error"in u)throw new SolanaJSONRPCError(u.error,"failed to get fee calculator");const{context:p,value:m}=u.result;return{context:p,value:m!==null?m.feeCalculator:null}}async getFeeForMessage(e,s){const l=toBuffer(e.serialize()).toString("base64"),d=this._buildArgs([l],s),u=await this._rpcRequest("getFeeForMessage",d),p=create$3(u,jsonRpcResultAndContext$1(nullable$3(number$2())));if("error"in p)throw new SolanaJSONRPCError(p.error,"failed to get fee for message");if(p.result===null)throw new Error("invalid blockhash");return p.result}async getRecentPrioritizationFees(e){var p;const s=(p=e==null?void 0:e.lockedWritableAccounts)==null?void 0:p.map(m=>m.toBase58()),l=s!=null&&s.length?[s]:[],d=await this._rpcRequest("getRecentPrioritizationFees",l),u=create$3(d,GetRecentPrioritizationFeesRpcResult);if("error"in u)throw new SolanaJSONRPCError(u.error,"failed to get recent prioritization fees");return u.result}async getRecentBlockhash(e){try{return(await this.getRecentBlockhashAndContext(e)).value}catch(s){throw new Error("failed to get recent blockhash: "+s)}}async getLatestBlockhash(e){try{return(await this.getLatestBlockhashAndContext(e)).value}catch(s){throw new Error("failed to get recent blockhash: "+s)}}async getLatestBlockhashAndContext(e){const{commitment:s,config:l}=extractCommitmentFromConfig(e),d=this._buildArgs([],s,void 0,l),u=await this._rpcRequest("getLatestBlockhash",d),p=create$3(u,GetLatestBlockhashRpcResult);if("error"in p)throw new SolanaJSONRPCError(p.error,"failed to get latest blockhash");return p.result}async isBlockhashValid(e,s){const{commitment:l,config:d}=extractCommitmentFromConfig(s),u=this._buildArgs([e],l,void 0,d),p=await this._rpcRequest("isBlockhashValid",u),m=create$3(p,IsBlockhashValidRpcResult);if("error"in m)throw new SolanaJSONRPCError(m.error,"failed to determine if the blockhash `"+e+"`is valid");return m.result}async getVersion(){const e=await this._rpcRequest("getVersion",[]),s=create$3(e,jsonRpcResult$1(VersionResult));if("error"in s)throw new SolanaJSONRPCError(s.error,"failed to get version");return s.result}async getGenesisHash(){const e=await this._rpcRequest("getGenesisHash",[]),s=create$3(e,jsonRpcResult$1(string$3()));if("error"in s)throw new SolanaJSONRPCError(s.error,"failed to get genesis hash");return s.result}async getBlock(e,s){const{commitment:l,config:d}=extractCommitmentFromConfig(s),u=this._buildArgsAtLeastConfirmed([e],l,void 0,d),p=await this._rpcRequest("getBlock",u);try{switch(d==null?void 0:d.transactionDetails){case"accounts":{const m=create$3(p,GetAccountsModeBlockRpcResult);if("error"in m)throw m.error;return m.result}case"none":{const m=create$3(p,GetNoneModeBlockRpcResult);if("error"in m)throw m.error;return m.result}default:{const m=create$3(p,GetBlockRpcResult);if("error"in m)throw m.error;const{result:y}=m;return y?{...y,transactions:y.transactions.map(({transaction:h,meta:v,version:A})=>({meta:v,transaction:{...h,message:versionedMessageFromResponse(A,h.message)},version:A}))}:null}}}catch(m){throw new SolanaJSONRPCError(m,"failed to get confirmed block")}}async getParsedBlock(e,s){const{commitment:l,config:d}=extractCommitmentFromConfig(s),u=this._buildArgsAtLeastConfirmed([e],l,"jsonParsed",d),p=await this._rpcRequest("getBlock",u);try{switch(d==null?void 0:d.transactionDetails){case"accounts":{const m=create$3(p,GetParsedAccountsModeBlockRpcResult);if("error"in m)throw m.error;return m.result}case"none":{const m=create$3(p,GetParsedNoneModeBlockRpcResult);if("error"in m)throw m.error;return m.result}default:{const m=create$3(p,GetParsedBlockRpcResult);if("error"in m)throw m.error;return m.result}}}catch(m){throw new SolanaJSONRPCError(m,"failed to get block")}}async getBlockProduction(e){let s,l;if(typeof e=="string")l=e;else if(e){const{commitment:m,...y}=e;l=m,s=y}const d=this._buildArgs([],l,"base64",s),u=await this._rpcRequest("getBlockProduction",d),p=create$3(u,BlockProductionResponseStruct);if("error"in p)throw new SolanaJSONRPCError(p.error,"failed to get block production information");return p.result}async getTransaction(e,s){const{commitment:l,config:d}=extractCommitmentFromConfig(s),u=this._buildArgsAtLeastConfirmed([e],l,void 0,d),p=await this._rpcRequest("getTransaction",u),m=create$3(p,GetTransactionRpcResult);if("error"in m)throw new SolanaJSONRPCError(m.error,"failed to get transaction");const y=m.result;return y&&{...y,transaction:{...y.transaction,message:versionedMessageFromResponse(y.version,y.transaction.message)}}}async getParsedTransaction(e,s){const{commitment:l,config:d}=extractCommitmentFromConfig(s),u=this._buildArgsAtLeastConfirmed([e],l,"jsonParsed",d),p=await this._rpcRequest("getTransaction",u),m=create$3(p,GetParsedTransactionRpcResult);if("error"in m)throw new SolanaJSONRPCError(m.error,"failed to get transaction");return m.result}async getParsedTransactions(e,s){const{commitment:l,config:d}=extractCommitmentFromConfig(s),u=e.map(y=>({methodName:"getTransaction",args:this._buildArgsAtLeastConfirmed([y],l,"jsonParsed",d)}));return(await this._rpcBatchRequest(u)).map(y=>{const h=create$3(y,GetParsedTransactionRpcResult);if("error"in h)throw new SolanaJSONRPCError(h.error,"failed to get transactions");return h.result})}async getTransactions(e,s){const{commitment:l,config:d}=extractCommitmentFromConfig(s),u=e.map(y=>({methodName:"getTransaction",args:this._buildArgsAtLeastConfirmed([y],l,void 0,d)}));return(await this._rpcBatchRequest(u)).map(y=>{const h=create$3(y,GetTransactionRpcResult);if("error"in h)throw new SolanaJSONRPCError(h.error,"failed to get transactions");const v=h.result;return v&&{...v,transaction:{...v.transaction,message:versionedMessageFromResponse(v.version,v.transaction.message)}}})}async getConfirmedBlock(e,s){const l=this._buildArgsAtLeastConfirmed([e],s),d=await this._rpcRequest("getBlock",l),u=create$3(d,GetConfirmedBlockRpcResult);if("error"in u)throw new SolanaJSONRPCError(u.error,"failed to get confirmed block");const p=u.result;if(!p)throw new Error("Confirmed block "+e+" not found");const m={...p,transactions:p.transactions.map(({transaction:y,meta:h})=>{const v=new Message(y.message);return{meta:h,transaction:{...y,message:v}}})};return{...m,transactions:m.transactions.map(({transaction:y,meta:h})=>({meta:h,transaction:Transaction.populate(y.message,y.signatures)}))}}async getBlocks(e,s,l){const d=this._buildArgsAtLeastConfirmed(s!==void 0?[e,s]:[e],l),u=await this._rpcRequest("getBlocks",d),p=create$3(u,jsonRpcResult$1(array$3(number$2())));if("error"in p)throw new SolanaJSONRPCError(p.error,"failed to get blocks");return p.result}async getBlockSignatures(e,s){const l=this._buildArgsAtLeastConfirmed([e],s,void 0,{transactionDetails:"signatures",rewards:!1}),d=await this._rpcRequest("getBlock",l),u=create$3(d,GetBlockSignaturesRpcResult);if("error"in u)throw new SolanaJSONRPCError(u.error,"failed to get block");const p=u.result;if(!p)throw new Error("Block "+e+" not found");return p}async getConfirmedBlockSignatures(e,s){const l=this._buildArgsAtLeastConfirmed([e],s,void 0,{transactionDetails:"signatures",rewards:!1}),d=await this._rpcRequest("getBlock",l),u=create$3(d,GetBlockSignaturesRpcResult);if("error"in u)throw new SolanaJSONRPCError(u.error,"failed to get confirmed block");const p=u.result;if(!p)throw new Error("Confirmed block "+e+" not found");return p}async getConfirmedTransaction(e,s){const l=this._buildArgsAtLeastConfirmed([e],s),d=await this._rpcRequest("getTransaction",l),u=create$3(d,GetTransactionRpcResult);if("error"in u)throw new SolanaJSONRPCError(u.error,"failed to get transaction");const p=u.result;if(!p)return p;const m=new Message(p.transaction.message),y=p.transaction.signatures;return{...p,transaction:Transaction.populate(m,y)}}async getParsedConfirmedTransaction(e,s){const l=this._buildArgsAtLeastConfirmed([e],s,"jsonParsed"),d=await this._rpcRequest("getTransaction",l),u=create$3(d,GetParsedTransactionRpcResult);if("error"in u)throw new SolanaJSONRPCError(u.error,"failed to get confirmed transaction");return u.result}async getParsedConfirmedTransactions(e,s){const l=e.map(p=>({methodName:"getTransaction",args:this._buildArgsAtLeastConfirmed([p],s,"jsonParsed")}));return(await this._rpcBatchRequest(l)).map(p=>{const m=create$3(p,GetParsedTransactionRpcResult);if("error"in m)throw new SolanaJSONRPCError(m.error,"failed to get confirmed transactions");return m.result})}async getConfirmedSignaturesForAddress(e,s,l){let d={},u=await this.getFirstAvailableBlock();for(;!("until"in d)&&(s--,!(s<=0||s<u));)try{const y=await this.getConfirmedBlockSignatures(s,"finalized");y.signatures.length>0&&(d.until=y.signatures[y.signatures.length-1].toString())}catch(y){if(y instanceof Error&&y.message.includes("skipped"))continue;throw y}let p=await this.getSlot("finalized");for(;!("before"in d)&&(l++,!(l>p));)try{const y=await this.getConfirmedBlockSignatures(l);y.signatures.length>0&&(d.before=y.signatures[y.signatures.length-1].toString())}catch(y){if(y instanceof Error&&y.message.includes("skipped"))continue;throw y}return(await this.getConfirmedSignaturesForAddress2(e,d)).map(y=>y.signature)}async getConfirmedSignaturesForAddress2(e,s,l){const d=this._buildArgsAtLeastConfirmed([e.toBase58()],l,void 0,s),u=await this._rpcRequest("getConfirmedSignaturesForAddress2",d),p=create$3(u,GetConfirmedSignaturesForAddress2RpcResult);if("error"in p)throw new SolanaJSONRPCError(p.error,"failed to get confirmed signatures for address");return p.result}async getSignaturesForAddress(e,s,l){const d=this._buildArgsAtLeastConfirmed([e.toBase58()],l,void 0,s),u=await this._rpcRequest("getSignaturesForAddress",d),p=create$3(u,GetSignaturesForAddressRpcResult);if("error"in p)throw new SolanaJSONRPCError(p.error,"failed to get signatures for address");return p.result}async getAddressLookupTable(e,s){const{context:l,value:d}=await this.getAccountInfoAndContext(e,s);let u=null;return d!==null&&(u=new AddressLookupTableAccount({key:e,state:AddressLookupTableAccount.deserialize(d.data)})),{context:l,value:u}}async getNonceAndContext(e,s){const{context:l,value:d}=await this.getAccountInfoAndContext(e,s);let u=null;return d!==null&&(u=NonceAccount.fromAccountData(d.data)),{context:l,value:u}}async getNonce(e,s){return await this.getNonceAndContext(e,s).then(l=>l.value).catch(l=>{throw new Error("failed to get nonce for account "+e.toBase58()+": "+l)})}async requestAirdrop(e,s){const l=await this._rpcRequest("requestAirdrop",[e.toBase58(),s]),d=create$3(l,RequestAirdropRpcResult);if("error"in d)throw new SolanaJSONRPCError(d.error,`airdrop to ${e.toBase58()} failed`);return d.result}async _blockhashWithExpiryBlockHeight(e){if(!e){for(;this._pollingBlockhash;)await sleep$1(100);const l=Date.now()-this._blockhashInfo.lastFetch>=BLOCKHASH_CACHE_TIMEOUT_MS;if(this._blockhashInfo.latestBlockhash!==null&&!l)return this._blockhashInfo.latestBlockhash}return await this._pollNewBlockhash()}async _pollNewBlockhash(){this._pollingBlockhash=!0;try{const e=Date.now(),s=this._blockhashInfo.latestBlockhash,l=s?s.blockhash:null;for(let d=0;d<50;d++){const u=await this.getLatestBlockhash("finalized");if(l!==u.blockhash)return this._blockhashInfo={latestBlockhash:u,lastFetch:Date.now(),transactionSignatures:[],simulatedSignatures:[]},u;await sleep$1(MS_PER_SLOT/2)}throw new Error(`Unable to obtain a new blockhash after ${Date.now()-e}ms`)}finally{this._pollingBlockhash=!1}}async getStakeMinimumDelegation(e){const{commitment:s,config:l}=extractCommitmentFromConfig(e),d=this._buildArgs([],s,"base64",l),u=await this._rpcRequest("getStakeMinimumDelegation",d),p=create$3(u,jsonRpcResultAndContext$1(number$2()));if("error"in p)throw new SolanaJSONRPCError(p.error,"failed to get stake minimum delegation");return p.result}async simulateTransaction(e,s,l){if("message"in e){const $=e.serialize(),P=bufferPolyfill.Buffer.from($).toString("base64");if(Array.isArray(s)||l!==void 0)throw new Error("Invalid arguments");const z=s||{};z.encoding="base64","commitment"in z||(z.commitment=this.commitment),s&&typeof s=="object"&&"innerInstructions"in s&&(z.innerInstructions=s.innerInstructions);const U=[P,z],F=await this._rpcRequest("simulateTransaction",U),q=create$3(F,SimulatedTransactionResponseStruct$1);if("error"in q)throw new Error("failed to simulate transaction: "+q.error.message);return q.result}let d;if(e instanceof Transaction){let k=e;d=new Transaction,d.feePayer=k.feePayer,d.instructions=e.instructions,d.nonceInfo=k.nonceInfo,d.signatures=k.signatures}else d=Transaction.populate(e),d._message=d._json=void 0;if(s!==void 0&&!Array.isArray(s))throw new Error("Invalid arguments");const u=s;if(d.nonceInfo&&u)d.sign(...u);else{let k=this._disableBlockhashCaching;for(;;){const $=await this._blockhashWithExpiryBlockHeight(k);if(d.lastValidBlockHeight=$.lastValidBlockHeight,d.recentBlockhash=$.blockhash,!u)break;if(d.sign(...u),!d.signature)throw new Error("!signature");const P=d.signature.toString("base64");if(!this._blockhashInfo.simulatedSignatures.includes(P)&&!this._blockhashInfo.transactionSignatures.includes(P)){this._blockhashInfo.simulatedSignatures.push(P);break}else k=!0}}const p=d._compile(),m=p.serialize(),h=d._serialize(m).toString("base64"),v={encoding:"base64",commitment:this.commitment};if(l){const k=(Array.isArray(l)?l:p.nonProgramIds()).map($=>$.toBase58());v.accounts={encoding:"base64",addresses:k}}u&&(v.sigVerify=!0),s&&typeof s=="object"&&"innerInstructions"in s&&(v.innerInstructions=s.innerInstructions);const A=[h,v],w=await this._rpcRequest("simulateTransaction",A),I=create$3(w,SimulatedTransactionResponseStruct$1);if("error"in I){let k;if("data"in I.error&&(k=I.error.data.logs,k&&Array.isArray(k))){const $=`
103
- `,P=$+k.join($);console.error(I.error.message,P)}throw new SendTransactionError({action:"simulate",signature:"",transactionMessage:I.error.message,logs:k})}return I.result}async sendTransaction(e,s,l){if("version"in e){if(s&&Array.isArray(s))throw new Error("Invalid arguments");const p=e.serialize();return await this.sendRawTransaction(p,s)}if(s===void 0||!Array.isArray(s))throw new Error("Invalid arguments");const d=s;if(e.nonceInfo)e.sign(...d);else{let p=this._disableBlockhashCaching;for(;;){const m=await this._blockhashWithExpiryBlockHeight(p);if(e.lastValidBlockHeight=m.lastValidBlockHeight,e.recentBlockhash=m.blockhash,e.sign(...d),!e.signature)throw new Error("!signature");const y=e.signature.toString("base64");if(this._blockhashInfo.transactionSignatures.includes(y))p=!0;else{this._blockhashInfo.transactionSignatures.push(y);break}}}const u=e.serialize();return await this.sendRawTransaction(u,l)}async sendRawTransaction(e,s){const l=toBuffer(e).toString("base64");return await this.sendEncodedTransaction(l,s)}async sendEncodedTransaction(e,s){const l={encoding:"base64"},d=s&&s.skipPreflight,u=d===!0?"processed":s&&s.preflightCommitment||this.commitment;s&&s.maxRetries!=null&&(l.maxRetries=s.maxRetries),s&&s.minContextSlot!=null&&(l.minContextSlot=s.minContextSlot),d&&(l.skipPreflight=d),u&&(l.preflightCommitment=u);const p=[e,l],m=await this._rpcRequest("sendTransaction",p),y=create$3(m,SendTransactionRpcResult);if("error"in y){let h;throw"data"in y.error&&(h=y.error.data.logs),new SendTransactionError({action:d?"send":"simulate",signature:"",transactionMessage:y.error.message,logs:h})}return y.result}_wsOnOpen(){this._rpcWebSocketConnected=!0,this._rpcWebSocketHeartbeat=setInterval(()=>{(async()=>{try{await this._rpcWebSocket.notify("ping")}catch{}})()},5e3),this._updateSubscriptions()}_wsOnError(e){this._rpcWebSocketConnected=!1,console.error("ws error:",e.message)}_wsOnClose(e){if(this._rpcWebSocketConnected=!1,this._rpcWebSocketGeneration=(this._rpcWebSocketGeneration+1)%Number.MAX_SAFE_INTEGER,this._rpcWebSocketIdleTimeout&&(clearTimeout(this._rpcWebSocketIdleTimeout),this._rpcWebSocketIdleTimeout=null),this._rpcWebSocketHeartbeat&&(clearInterval(this._rpcWebSocketHeartbeat),this._rpcWebSocketHeartbeat=null),e===1e3){this._updateSubscriptions();return}this._subscriptionCallbacksByServerSubscriptionId={},Object.entries(this._subscriptionsByHash).forEach(([s,l])=>{this._setSubscription(s,{...l,state:"pending"})})}_setSubscription(e,s){var d;const l=(d=this._subscriptionsByHash[e])==null?void 0:d.state;if(this._subscriptionsByHash[e]=s,l!==s.state){const u=this._subscriptionStateChangeCallbacksByHash[e];u&&u.forEach(p=>{try{p(s.state)}catch{}})}}_onSubscriptionStateChange(e,s){var u;const l=this._subscriptionHashByClientSubscriptionId[e];if(l==null)return()=>{};const d=(u=this._subscriptionStateChangeCallbacksByHash)[l]||(u[l]=new Set);return d.add(s),()=>{d.delete(s),d.size===0&&delete this._subscriptionStateChangeCallbacksByHash[l]}}async _updateSubscriptions(){if(Object.keys(this._subscriptionsByHash).length===0){this._rpcWebSocketConnected&&(this._rpcWebSocketConnected=!1,this._rpcWebSocketIdleTimeout=setTimeout(()=>{this._rpcWebSocketIdleTimeout=null;try{this._rpcWebSocket.close()}catch(l){l instanceof Error&&console.log(`Error when closing socket connection: ${l.message}`)}},500));return}if(this._rpcWebSocketIdleTimeout!==null&&(clearTimeout(this._rpcWebSocketIdleTimeout),this._rpcWebSocketIdleTimeout=null,this._rpcWebSocketConnected=!0),!this._rpcWebSocketConnected){this._rpcWebSocket.connect();return}const e=this._rpcWebSocketGeneration,s=()=>e===this._rpcWebSocketGeneration;await Promise.all(Object.keys(this._subscriptionsByHash).map(async l=>{const d=this._subscriptionsByHash[l];if(d!==void 0)switch(d.state){case"pending":case"unsubscribed":if(d.callbacks.size===0){delete this._subscriptionsByHash[l],d.state==="unsubscribed"&&delete this._subscriptionCallbacksByServerSubscriptionId[d.serverSubscriptionId],await this._updateSubscriptions();return}await(async()=>{const{args:u,method:p}=d;try{this._setSubscription(l,{...d,state:"subscribing"});const m=await this._rpcWebSocket.call(p,u);this._setSubscription(l,{...d,serverSubscriptionId:m,state:"subscribed"}),this._subscriptionCallbacksByServerSubscriptionId[m]=d.callbacks,await this._updateSubscriptions()}catch(m){if(console.error(`Received ${m instanceof Error?"":"JSON-RPC "}error calling \`${p}\``,{args:u,error:m}),!s())return;this._setSubscription(l,{...d,state:"pending"}),await this._updateSubscriptions()}})();break;case"subscribed":d.callbacks.size===0&&await(async()=>{const{serverSubscriptionId:u,unsubscribeMethod:p}=d;if(this._subscriptionsAutoDisposedByRpc.has(u))this._subscriptionsAutoDisposedByRpc.delete(u);else{this._setSubscription(l,{...d,state:"unsubscribing"}),this._setSubscription(l,{...d,state:"unsubscribing"});try{await this._rpcWebSocket.call(p,[u])}catch(m){if(m instanceof Error&&console.error(`${p} error:`,m.message),!s())return;this._setSubscription(l,{...d,state:"subscribed"}),await this._updateSubscriptions();return}}this._setSubscription(l,{...d,state:"unsubscribed"}),await this._updateSubscriptions()})();break}}))}_handleServerNotification(e,s){const l=this._subscriptionCallbacksByServerSubscriptionId[e];l!==void 0&&l.forEach(d=>{try{d(...s)}catch(u){console.error(u)}})}_wsOnAccountNotification(e){const{result:s,subscription:l}=create$3(e,AccountNotificationResult);this._handleServerNotification(l,[s.value,s.context])}_makeSubscription(e,s){const l=this._nextClientSubscriptionId++,d=fastStableStringify([e.method,s]),u=this._subscriptionsByHash[d];return u===void 0?this._subscriptionsByHash[d]={...e,args:s,callbacks:new Set([e.callback]),state:"pending"}:u.callbacks.add(e.callback),this._subscriptionHashByClientSubscriptionId[l]=d,this._subscriptionDisposeFunctionsByClientSubscriptionId[l]=async()=>{delete this._subscriptionDisposeFunctionsByClientSubscriptionId[l],delete this._subscriptionHashByClientSubscriptionId[l];const p=this._subscriptionsByHash[d];assert$4(p!==void 0,`Could not find a \`Subscription\` when tearing down client subscription #${l}`),p.callbacks.delete(e.callback),await this._updateSubscriptions()},this._updateSubscriptions(),l}onAccountChange(e,s,l){const{commitment:d,config:u}=extractCommitmentFromConfig(l),p=this._buildArgs([e.toBase58()],d||this._commitment||"finalized","base64",u);return this._makeSubscription({callback:s,method:"accountSubscribe",unsubscribeMethod:"accountUnsubscribe"},p)}async removeAccountChangeListener(e){await this._unsubscribeClientSubscription(e,"account change")}_wsOnProgramAccountNotification(e){const{result:s,subscription:l}=create$3(e,ProgramAccountNotificationResult);this._handleServerNotification(l,[{accountId:s.value.pubkey,accountInfo:s.value.account},s.context])}onProgramAccountChange(e,s,l,d){const{commitment:u,config:p}=extractCommitmentFromConfig(l),m=this._buildArgs([e.toBase58()],u||this._commitment||"finalized","base64",p||(d?{filters:applyDefaultMemcmpEncodingToFilters(d)}:void 0));return this._makeSubscription({callback:s,method:"programSubscribe",unsubscribeMethod:"programUnsubscribe"},m)}async removeProgramAccountChangeListener(e){await this._unsubscribeClientSubscription(e,"program account change")}onLogs(e,s,l){const d=this._buildArgs([typeof e=="object"?{mentions:[e.toString()]}:e],l||this._commitment||"finalized");return this._makeSubscription({callback:s,method:"logsSubscribe",unsubscribeMethod:"logsUnsubscribe"},d)}async removeOnLogsListener(e){await this._unsubscribeClientSubscription(e,"logs")}_wsOnLogsNotification(e){const{result:s,subscription:l}=create$3(e,LogsNotificationResult);this._handleServerNotification(l,[s.value,s.context])}_wsOnSlotNotification(e){const{result:s,subscription:l}=create$3(e,SlotNotificationResult);this._handleServerNotification(l,[s])}onSlotChange(e){return this._makeSubscription({callback:e,method:"slotSubscribe",unsubscribeMethod:"slotUnsubscribe"},[])}async removeSlotChangeListener(e){await this._unsubscribeClientSubscription(e,"slot change")}_wsOnSlotUpdatesNotification(e){const{result:s,subscription:l}=create$3(e,SlotUpdateNotificationResult);this._handleServerNotification(l,[s])}onSlotUpdate(e){return this._makeSubscription({callback:e,method:"slotsUpdatesSubscribe",unsubscribeMethod:"slotsUpdatesUnsubscribe"},[])}async removeSlotUpdateListener(e){await this._unsubscribeClientSubscription(e,"slot update")}async _unsubscribeClientSubscription(e,s){const l=this._subscriptionDisposeFunctionsByClientSubscriptionId[e];l?await l():console.warn(`Ignored unsubscribe request because an active subscription with id \`${e}\` for '${s}' events could not be found.`)}_buildArgs(e,s,l,d){const u=s||this._commitment;if(u||l||d){let p={};l&&(p.encoding=l),u&&(p.commitment=u),d&&(p=Object.assign(p,d)),e.push(p)}return e}_buildArgsAtLeastConfirmed(e,s,l,d){const u=s||this._commitment;if(u&&!["confirmed","finalized"].includes(u))throw new Error("Using Connection with default commitment: `"+this._commitment+"`, but method requires at least `confirmed`");return this._buildArgs(e,s,l,d)}_wsOnSignatureNotification(e){const{result:s,subscription:l}=create$3(e,SignatureNotificationResult);s.value!=="receivedSignature"&&this._subscriptionsAutoDisposedByRpc.add(l),this._handleServerNotification(l,s.value==="receivedSignature"?[{type:"received"},s.context]:[{type:"status",result:s.value},s.context])}onSignature(e,s,l){const d=this._buildArgs([e],l||this._commitment||"finalized"),u=this._makeSubscription({callback:(p,m)=>{if(p.type==="status"){s(p.result,m);try{this.removeSignatureListener(u)}catch{}}},method:"signatureSubscribe",unsubscribeMethod:"signatureUnsubscribe"},d);return u}onSignatureWithOptions(e,s,l){const{commitment:d,...u}={...l,commitment:l&&l.commitment||this._commitment||"finalized"},p=this._buildArgs([e],d,void 0,u),m=this._makeSubscription({callback:(y,h)=>{s(y,h);try{this.removeSignatureListener(m)}catch{}},method:"signatureSubscribe",unsubscribeMethod:"signatureUnsubscribe"},p);return m}async removeSignatureListener(e){await this._unsubscribeClientSubscription(e,"signature result")}_wsOnRootNotification(e){const{result:s,subscription:l}=create$3(e,RootNotificationResult);this._handleServerNotification(l,[s])}onRootChange(e){return this._makeSubscription({callback:e,method:"rootSubscribe",unsubscribeMethod:"rootUnsubscribe"},[])}async removeRootChangeListener(e){await this._unsubscribeClientSubscription(e,"root change")}};class Keypair{constructor(e){this._keypair=void 0,this._keypair=e??generateKeypair()}static generate(){return new Keypair(generateKeypair())}static fromSecretKey(e,s){if(e.byteLength!==64)throw new Error("bad secret key size");const l=e.slice(32,64);if(!s||!s.skipValidation){const d=e.slice(0,32),u=getPublicKey(d);for(let p=0;p<32;p++)if(l[p]!==u[p])throw new Error("provided secretKey is invalid")}return new Keypair({publicKey:l,secretKey:e})}static fromSeed(e){const s=getPublicKey(e),l=new Uint8Array(64);return l.set(e),l.set(s,32),new Keypair({publicKey:s,secretKey:l})}get publicKey(){return new PublicKey(this._keypair.publicKey)}get secretKey(){return new Uint8Array(this._keypair.secretKey)}}const LOOKUP_TABLE_INSTRUCTION_LAYOUTS=Object.freeze({CreateLookupTable:{index:0,layout:exports.struct([exports.u32("instruction"),u64$3("recentSlot"),exports.u8("bumpSeed")])},FreezeLookupTable:{index:1,layout:exports.struct([exports.u32("instruction")])},ExtendLookupTable:{index:2,layout:exports.struct([exports.u32("instruction"),u64$3(),exports.seq(publicKey$6(),offset$3(exports.u32(),-8),"addresses")])},DeactivateLookupTable:{index:3,layout:exports.struct([exports.u32("instruction")])},CloseLookupTable:{index:4,layout:exports.struct([exports.u32("instruction")])}});class AddressLookupTableInstruction{constructor(){}static decodeInstructionType(e){this.checkProgramId(e.programId);const l=exports.u32("instruction").decode(e.data);let d;for(const[u,p]of Object.entries(LOOKUP_TABLE_INSTRUCTION_LAYOUTS))if(p.index==l){d=u;break}if(!d)throw new Error("Invalid Instruction. Should be a LookupTable Instruction");return d}static decodeCreateLookupTable(e){this.checkProgramId(e.programId),this.checkKeysLength(e.keys,4);const{recentSlot:s}=decodeData$1(LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable,e.data);return{authority:e.keys[1].pubkey,payer:e.keys[2].pubkey,recentSlot:Number(s)}}static decodeExtendLookupTable(e){if(this.checkProgramId(e.programId),e.keys.length<2)throw new Error(`invalid instruction; found ${e.keys.length} keys, expected at least 2`);const{addresses:s}=decodeData$1(LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable,e.data);return{lookupTable:e.keys[0].pubkey,authority:e.keys[1].pubkey,payer:e.keys.length>2?e.keys[2].pubkey:void 0,addresses:s.map(l=>new PublicKey(l))}}static decodeCloseLookupTable(e){return this.checkProgramId(e.programId),this.checkKeysLength(e.keys,3),{lookupTable:e.keys[0].pubkey,authority:e.keys[1].pubkey,recipient:e.keys[2].pubkey}}static decodeFreezeLookupTable(e){return this.checkProgramId(e.programId),this.checkKeysLength(e.keys,2),{lookupTable:e.keys[0].pubkey,authority:e.keys[1].pubkey}}static decodeDeactivateLookupTable(e){return this.checkProgramId(e.programId),this.checkKeysLength(e.keys,2),{lookupTable:e.keys[0].pubkey,authority:e.keys[1].pubkey}}static checkProgramId(e){if(!e.equals(AddressLookupTableProgram.programId))throw new Error("invalid instruction; programId is not AddressLookupTable Program")}static checkKeysLength(e,s){if(e.length<s)throw new Error(`invalid instruction; found ${e.length} keys, expected at least ${s}`)}}class AddressLookupTableProgram{constructor(){}static createLookupTable(e){const[s,l]=PublicKey.findProgramAddressSync([e.authority.toBuffer(),toBufferLE_1(BigInt(e.recentSlot),8)],this.programId),d=LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable,u=encodeData(d,{recentSlot:BigInt(e.recentSlot),bumpSeed:l}),p=[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1},{pubkey:e.payer,isSigner:!0,isWritable:!0},{pubkey:SystemProgram.programId,isSigner:!1,isWritable:!1}];return[new TransactionInstruction({programId:this.programId,keys:p,data:u}),s]}static freezeLookupTable(e){const s=LOOKUP_TABLE_INSTRUCTION_LAYOUTS.FreezeLookupTable,l=encodeData(s),d=[{pubkey:e.lookupTable,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1}];return new TransactionInstruction({programId:this.programId,keys:d,data:l})}static extendLookupTable(e){const s=LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable,l=encodeData(s,{addresses:e.addresses.map(u=>u.toBytes())}),d=[{pubkey:e.lookupTable,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1}];return e.payer&&d.push({pubkey:e.payer,isSigner:!0,isWritable:!0},{pubkey:SystemProgram.programId,isSigner:!1,isWritable:!1}),new TransactionInstruction({programId:this.programId,keys:d,data:l})}static deactivateLookupTable(e){const s=LOOKUP_TABLE_INSTRUCTION_LAYOUTS.DeactivateLookupTable,l=encodeData(s),d=[{pubkey:e.lookupTable,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1}];return new TransactionInstruction({programId:this.programId,keys:d,data:l})}static closeLookupTable(e){const s=LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CloseLookupTable,l=encodeData(s),d=[{pubkey:e.lookupTable,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1},{pubkey:e.recipient,isSigner:!1,isWritable:!0}];return new TransactionInstruction({programId:this.programId,keys:d,data:l})}}AddressLookupTableProgram.programId=new PublicKey("AddressLookupTab1e1111111111111111111111111");class ComputeBudgetInstruction{constructor(){}static decodeInstructionType(e){this.checkProgramId(e.programId);const l=exports.u8("instruction").decode(e.data);let d;for(const[u,p]of Object.entries(COMPUTE_BUDGET_INSTRUCTION_LAYOUTS))if(p.index==l){d=u;break}if(!d)throw new Error("Instruction type incorrect; not a ComputeBudgetInstruction");return d}static decodeRequestUnits(e){this.checkProgramId(e.programId);const{units:s,additionalFee:l}=decodeData$1(COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits,e.data);return{units:s,additionalFee:l}}static decodeRequestHeapFrame(e){this.checkProgramId(e.programId);const{bytes:s}=decodeData$1(COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame,e.data);return{bytes:s}}static decodeSetComputeUnitLimit(e){this.checkProgramId(e.programId);const{units:s}=decodeData$1(COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit,e.data);return{units:s}}static decodeSetComputeUnitPrice(e){this.checkProgramId(e.programId);const{microLamports:s}=decodeData$1(COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice,e.data);return{microLamports:s}}static checkProgramId(e){if(!e.equals(ComputeBudgetProgram.programId))throw new Error("invalid instruction; programId is not ComputeBudgetProgram")}}const COMPUTE_BUDGET_INSTRUCTION_LAYOUTS=Object.freeze({RequestUnits:{index:0,layout:exports.struct([exports.u8("instruction"),exports.u32("units"),exports.u32("additionalFee")])},RequestHeapFrame:{index:1,layout:exports.struct([exports.u8("instruction"),exports.u32("bytes")])},SetComputeUnitLimit:{index:2,layout:exports.struct([exports.u8("instruction"),exports.u32("units")])},SetComputeUnitPrice:{index:3,layout:exports.struct([exports.u8("instruction"),u64$3("microLamports")])}});class ComputeBudgetProgram{constructor(){}static requestUnits(e){const s=COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits,l=encodeData(s,e);return new TransactionInstruction({keys:[],programId:this.programId,data:l})}static requestHeapFrame(e){const s=COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame,l=encodeData(s,e);return new TransactionInstruction({keys:[],programId:this.programId,data:l})}static setComputeUnitLimit(e){const s=COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit,l=encodeData(s,e);return new TransactionInstruction({keys:[],programId:this.programId,data:l})}static setComputeUnitPrice(e){const s=COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice,l=encodeData(s,{microLamports:BigInt(e.microLamports)});return new TransactionInstruction({keys:[],programId:this.programId,data:l})}}ComputeBudgetProgram.programId=new PublicKey("ComputeBudget111111111111111111111111111111");const PRIVATE_KEY_BYTES$1=64,PUBLIC_KEY_BYTES$1=32,SIGNATURE_BYTES=64,ED25519_INSTRUCTION_LAYOUT=exports.struct([exports.u8("numSignatures"),exports.u8("padding"),exports.u16("signatureOffset"),exports.u16("signatureInstructionIndex"),exports.u16("publicKeyOffset"),exports.u16("publicKeyInstructionIndex"),exports.u16("messageDataOffset"),exports.u16("messageDataSize"),exports.u16("messageInstructionIndex")]);class Ed25519Program{constructor(){}static createInstructionWithPublicKey(e){const{publicKey:s,message:l,signature:d,instructionIndex:u}=e;assert$4(s.length===PUBLIC_KEY_BYTES$1,`Public Key must be ${PUBLIC_KEY_BYTES$1} bytes but received ${s.length} bytes`),assert$4(d.length===SIGNATURE_BYTES,`Signature must be ${SIGNATURE_BYTES} bytes but received ${d.length} bytes`);const p=ED25519_INSTRUCTION_LAYOUT.span,m=p+s.length,y=m+d.length,h=1,v=bufferPolyfill.Buffer.alloc(y+l.length),A=u??65535;return ED25519_INSTRUCTION_LAYOUT.encode({numSignatures:h,padding:0,signatureOffset:m,signatureInstructionIndex:A,publicKeyOffset:p,publicKeyInstructionIndex:A,messageDataOffset:y,messageDataSize:l.length,messageInstructionIndex:A},v),v.fill(s,p),v.fill(d,m),v.fill(l,y),new TransactionInstruction({keys:[],programId:Ed25519Program.programId,data:v})}static createInstructionWithPrivateKey(e){const{privateKey:s,message:l,instructionIndex:d}=e;assert$4(s.length===PRIVATE_KEY_BYTES$1,`Private key must be ${PRIVATE_KEY_BYTES$1} bytes but received ${s.length} bytes`);try{const u=Keypair.fromSecretKey(s),p=u.publicKey.toBytes(),m=sign$3(l,u.secretKey);return this.createInstructionWithPublicKey({publicKey:p,message:l,signature:m,instructionIndex:d})}catch(u){throw new Error(`Error creating instruction; ${u}`)}}}Ed25519Program.programId=new PublicKey("Ed25519SigVerify111111111111111111111111111");const ecdsaSign=(t,e)=>{const s=secp256k1$1.sign(t,e);return[s.toCompactRawBytes(),s.recovery]};secp256k1$1.utils.isValidPrivateKey;const publicKeyCreate=secp256k1$1.getPublicKey,PRIVATE_KEY_BYTES=32,ETHEREUM_ADDRESS_BYTES=20,PUBLIC_KEY_BYTES=64,SIGNATURE_OFFSETS_SERIALIZED_SIZE=11,SECP256K1_INSTRUCTION_LAYOUT=exports.struct([exports.u8("numSignatures"),exports.u16("signatureOffset"),exports.u8("signatureInstructionIndex"),exports.u16("ethAddressOffset"),exports.u8("ethAddressInstructionIndex"),exports.u16("messageDataOffset"),exports.u16("messageDataSize"),exports.u8("messageInstructionIndex"),exports.blob(20,"ethAddress"),exports.blob(64,"signature"),exports.u8("recoveryId")]);class Secp256k1Program{constructor(){}static publicKeyToEthAddress(e){assert$4(e.length===PUBLIC_KEY_BYTES,`Public key must be ${PUBLIC_KEY_BYTES} bytes but received ${e.length} bytes`);try{return bufferPolyfill.Buffer.from(keccak_256(toBuffer(e))).slice(-ETHEREUM_ADDRESS_BYTES)}catch(s){throw new Error(`Error constructing Ethereum address: ${s}`)}}static createInstructionWithPublicKey(e){const{publicKey:s,message:l,signature:d,recoveryId:u,instructionIndex:p}=e;return Secp256k1Program.createInstructionWithEthAddress({ethAddress:Secp256k1Program.publicKeyToEthAddress(s),message:l,signature:d,recoveryId:u,instructionIndex:p})}static createInstructionWithEthAddress(e){const{ethAddress:s,message:l,signature:d,recoveryId:u,instructionIndex:p=0}=e;let m;typeof s=="string"?s.startsWith("0x")?m=bufferPolyfill.Buffer.from(s.substr(2),"hex"):m=bufferPolyfill.Buffer.from(s,"hex"):m=s,assert$4(m.length===ETHEREUM_ADDRESS_BYTES,`Address must be ${ETHEREUM_ADDRESS_BYTES} bytes but received ${m.length} bytes`);const y=1+SIGNATURE_OFFSETS_SERIALIZED_SIZE,h=y,v=y+m.length,A=v+d.length+1,w=1,I=bufferPolyfill.Buffer.alloc(SECP256K1_INSTRUCTION_LAYOUT.span+l.length);return SECP256K1_INSTRUCTION_LAYOUT.encode({numSignatures:w,signatureOffset:v,signatureInstructionIndex:p,ethAddressOffset:h,ethAddressInstructionIndex:p,messageDataOffset:A,messageDataSize:l.length,messageInstructionIndex:p,signature:toBuffer(d),ethAddress:toBuffer(m),recoveryId:u},I),I.fill(toBuffer(l),SECP256K1_INSTRUCTION_LAYOUT.span),new TransactionInstruction({keys:[],programId:Secp256k1Program.programId,data:I})}static createInstructionWithPrivateKey(e){const{privateKey:s,message:l,instructionIndex:d}=e;assert$4(s.length===PRIVATE_KEY_BYTES,`Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${s.length} bytes`);try{const u=toBuffer(s),p=publicKeyCreate(u,!1).slice(1),m=bufferPolyfill.Buffer.from(keccak_256(toBuffer(l))),[y,h]=ecdsaSign(m,u);return this.createInstructionWithPublicKey({publicKey:p,message:l,signature:y,recoveryId:h,instructionIndex:d})}catch(u){throw new Error(`Error creating instruction; ${u}`)}}}Secp256k1Program.programId=new PublicKey("KeccakSecp256k11111111111111111111111111111");var _Lockup;const STAKE_CONFIG_ID=new PublicKey("StakeConfig11111111111111111111111111111111");class Authorized{constructor(e,s){this.staker=void 0,this.withdrawer=void 0,this.staker=e,this.withdrawer=s}}class Lockup{constructor(e,s,l){this.unixTimestamp=void 0,this.epoch=void 0,this.custodian=void 0,this.unixTimestamp=e,this.epoch=s,this.custodian=l}}_Lockup=Lockup;Lockup.default=new _Lockup(0,0,PublicKey.default);class StakeInstruction{constructor(){}static decodeInstructionType(e){this.checkProgramId(e.programId);const l=exports.u32("instruction").decode(e.data);let d;for(const[u,p]of Object.entries(STAKE_INSTRUCTION_LAYOUTS))if(p.index==l){d=u;break}if(!d)throw new Error("Instruction type incorrect; not a StakeInstruction");return d}static decodeInitialize(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,2);const{authorized:s,lockup:l}=decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Initialize,e.data);return{stakePubkey:e.keys[0].pubkey,authorized:new Authorized(new PublicKey(s.staker),new PublicKey(s.withdrawer)),lockup:new Lockup(l.unixTimestamp,l.epoch,new PublicKey(l.custodian))}}static decodeDelegate(e){return this.checkProgramId(e.programId),this.checkKeyLength(e.keys,6),decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Delegate,e.data),{stakePubkey:e.keys[0].pubkey,votePubkey:e.keys[1].pubkey,authorizedPubkey:e.keys[5].pubkey}}static decodeAuthorize(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{newAuthorized:s,stakeAuthorizationType:l}=decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Authorize,e.data),d={stakePubkey:e.keys[0].pubkey,authorizedPubkey:e.keys[2].pubkey,newAuthorizedPubkey:new PublicKey(s),stakeAuthorizationType:{index:l}};return e.keys.length>3&&(d.custodianPubkey=e.keys[3].pubkey),d}static decodeAuthorizeWithSeed(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,2);const{newAuthorized:s,stakeAuthorizationType:l,authoritySeed:d,authorityOwner:u}=decodeData$1(STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,e.data),p={stakePubkey:e.keys[0].pubkey,authorityBase:e.keys[1].pubkey,authoritySeed:d,authorityOwner:new PublicKey(u),newAuthorizedPubkey:new PublicKey(s),stakeAuthorizationType:{index:l}};return e.keys.length>3&&(p.custodianPubkey=e.keys[3].pubkey),p}static decodeSplit(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{lamports:s}=decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Split,e.data);return{stakePubkey:e.keys[0].pubkey,splitStakePubkey:e.keys[1].pubkey,authorizedPubkey:e.keys[2].pubkey,lamports:s}}static decodeMerge(e){return this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3),decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Merge,e.data),{stakePubkey:e.keys[0].pubkey,sourceStakePubKey:e.keys[1].pubkey,authorizedPubkey:e.keys[4].pubkey}}static decodeWithdraw(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,5);const{lamports:s}=decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Withdraw,e.data),l={stakePubkey:e.keys[0].pubkey,toPubkey:e.keys[1].pubkey,authorizedPubkey:e.keys[4].pubkey,lamports:s};return e.keys.length>5&&(l.custodianPubkey=e.keys[5].pubkey),l}static decodeDeactivate(e){return this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3),decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Deactivate,e.data),{stakePubkey:e.keys[0].pubkey,authorizedPubkey:e.keys[2].pubkey}}static checkProgramId(e){if(!e.equals(StakeProgram.programId))throw new Error("invalid instruction; programId is not StakeProgram")}static checkKeyLength(e,s){if(e.length<s)throw new Error(`invalid instruction; found ${e.length} keys, expected at least ${s}`)}}const STAKE_INSTRUCTION_LAYOUTS=Object.freeze({Initialize:{index:0,layout:exports.struct([exports.u32("instruction"),authorized(),lockup()])},Authorize:{index:1,layout:exports.struct([exports.u32("instruction"),publicKey$6("newAuthorized"),exports.u32("stakeAuthorizationType")])},Delegate:{index:2,layout:exports.struct([exports.u32("instruction")])},Split:{index:3,layout:exports.struct([exports.u32("instruction"),exports.ns64("lamports")])},Withdraw:{index:4,layout:exports.struct([exports.u32("instruction"),exports.ns64("lamports")])},Deactivate:{index:5,layout:exports.struct([exports.u32("instruction")])},Merge:{index:7,layout:exports.struct([exports.u32("instruction")])},AuthorizeWithSeed:{index:8,layout:exports.struct([exports.u32("instruction"),publicKey$6("newAuthorized"),exports.u32("stakeAuthorizationType"),rustString("authoritySeed"),publicKey$6("authorityOwner")])}}),StakeAuthorizationLayout=Object.freeze({Staker:{index:0},Withdrawer:{index:1}});class StakeProgram{constructor(){}static initialize(e){const{stakePubkey:s,authorized:l,lockup:d}=e,u=d||Lockup.default,p=STAKE_INSTRUCTION_LAYOUTS.Initialize,m=encodeData(p,{authorized:{staker:toBuffer(l.staker.toBuffer()),withdrawer:toBuffer(l.withdrawer.toBuffer())},lockup:{unixTimestamp:u.unixTimestamp,epoch:u.epoch,custodian:toBuffer(u.custodian.toBuffer())}}),y={keys:[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}],programId:this.programId,data:m};return new TransactionInstruction(y)}static createAccountWithSeed(e){const s=new Transaction;s.add(SystemProgram.createAccountWithSeed({fromPubkey:e.fromPubkey,newAccountPubkey:e.stakePubkey,basePubkey:e.basePubkey,seed:e.seed,lamports:e.lamports,space:this.space,programId:this.programId}));const{stakePubkey:l,authorized:d,lockup:u}=e;return s.add(this.initialize({stakePubkey:l,authorized:d,lockup:u}))}static createAccount(e){const s=new Transaction;s.add(SystemProgram.createAccount({fromPubkey:e.fromPubkey,newAccountPubkey:e.stakePubkey,lamports:e.lamports,space:this.space,programId:this.programId}));const{stakePubkey:l,authorized:d,lockup:u}=e;return s.add(this.initialize({stakePubkey:l,authorized:d,lockup:u}))}static delegate(e){const{stakePubkey:s,authorizedPubkey:l,votePubkey:d}=e,u=STAKE_INSTRUCTION_LAYOUTS.Delegate,p=encodeData(u);return new Transaction().add({keys:[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:STAKE_CONFIG_ID,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!0,isWritable:!1}],programId:this.programId,data:p})}static authorize(e){const{stakePubkey:s,authorizedPubkey:l,newAuthorizedPubkey:d,stakeAuthorizationType:u,custodianPubkey:p}=e,m=STAKE_INSTRUCTION_LAYOUTS.Authorize,y=encodeData(m,{newAuthorized:toBuffer(d.toBuffer()),stakeAuthorizationType:u.index}),h=[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!0,isWritable:!1}];return p&&h.push({pubkey:p,isSigner:!0,isWritable:!1}),new Transaction().add({keys:h,programId:this.programId,data:y})}static authorizeWithSeed(e){const{stakePubkey:s,authorityBase:l,authoritySeed:d,authorityOwner:u,newAuthorizedPubkey:p,stakeAuthorizationType:m,custodianPubkey:y}=e,h=STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,v=encodeData(h,{newAuthorized:toBuffer(p.toBuffer()),stakeAuthorizationType:m.index,authoritySeed:d,authorityOwner:toBuffer(u.toBuffer())}),A=[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!0,isWritable:!1},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1}];return y&&A.push({pubkey:y,isSigner:!0,isWritable:!1}),new Transaction().add({keys:A,programId:this.programId,data:v})}static splitInstruction(e){const{stakePubkey:s,authorizedPubkey:l,splitStakePubkey:d,lamports:u}=e,p=STAKE_INSTRUCTION_LAYOUTS.Split,m=encodeData(p,{lamports:u});return new TransactionInstruction({keys:[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!0,isWritable:!1}],programId:this.programId,data:m})}static split(e,s){const l=new Transaction;return l.add(SystemProgram.createAccount({fromPubkey:e.authorizedPubkey,newAccountPubkey:e.splitStakePubkey,lamports:s,space:this.space,programId:this.programId})),l.add(this.splitInstruction(e))}static splitWithSeed(e,s){const{stakePubkey:l,authorizedPubkey:d,splitStakePubkey:u,basePubkey:p,seed:m,lamports:y}=e,h=new Transaction;return h.add(SystemProgram.allocate({accountPubkey:u,basePubkey:p,seed:m,space:this.space,programId:this.programId})),s&&s>0&&h.add(SystemProgram.transfer({fromPubkey:e.authorizedPubkey,toPubkey:u,lamports:s})),h.add(this.splitInstruction({stakePubkey:l,authorizedPubkey:d,splitStakePubkey:u,lamports:y}))}static merge(e){const{stakePubkey:s,sourceStakePubKey:l,authorizedPubkey:d}=e,u=STAKE_INSTRUCTION_LAYOUTS.Merge,p=encodeData(u);return new Transaction().add({keys:[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!0,isWritable:!1}],programId:this.programId,data:p})}static withdraw(e){const{stakePubkey:s,authorizedPubkey:l,toPubkey:d,lamports:u,custodianPubkey:p}=e,m=STAKE_INSTRUCTION_LAYOUTS.Withdraw,y=encodeData(m,{lamports:u}),h=[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!0,isWritable:!1}];return p&&h.push({pubkey:p,isSigner:!0,isWritable:!1}),new Transaction().add({keys:h,programId:this.programId,data:y})}static deactivate(e){const{stakePubkey:s,authorizedPubkey:l}=e,d=STAKE_INSTRUCTION_LAYOUTS.Deactivate,u=encodeData(d);return new Transaction().add({keys:[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!0,isWritable:!1}],programId:this.programId,data:u})}}StakeProgram.programId=new PublicKey("Stake11111111111111111111111111111111111111");StakeProgram.space=200;class VoteInit{constructor(e,s,l,d){this.nodePubkey=void 0,this.authorizedVoter=void 0,this.authorizedWithdrawer=void 0,this.commission=void 0,this.nodePubkey=e,this.authorizedVoter=s,this.authorizedWithdrawer=l,this.commission=d}}class VoteInstruction{constructor(){}static decodeInstructionType(e){this.checkProgramId(e.programId);const l=exports.u32("instruction").decode(e.data);let d;for(const[u,p]of Object.entries(VOTE_INSTRUCTION_LAYOUTS))if(p.index==l){d=u;break}if(!d)throw new Error("Instruction type incorrect; not a VoteInstruction");return d}static decodeInitializeAccount(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,4);const{voteInit:s}=decodeData$1(VOTE_INSTRUCTION_LAYOUTS.InitializeAccount,e.data);return{votePubkey:e.keys[0].pubkey,nodePubkey:e.keys[3].pubkey,voteInit:new VoteInit(new PublicKey(s.nodePubkey),new PublicKey(s.authorizedVoter),new PublicKey(s.authorizedWithdrawer),s.commission)}}static decodeAuthorize(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{newAuthorized:s,voteAuthorizationType:l}=decodeData$1(VOTE_INSTRUCTION_LAYOUTS.Authorize,e.data);return{votePubkey:e.keys[0].pubkey,authorizedPubkey:e.keys[2].pubkey,newAuthorizedPubkey:new PublicKey(s),voteAuthorizationType:{index:l}}}static decodeAuthorizeWithSeed(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{voteAuthorizeWithSeedArgs:{currentAuthorityDerivedKeyOwnerPubkey:s,currentAuthorityDerivedKeySeed:l,newAuthorized:d,voteAuthorizationType:u}}=decodeData$1(VOTE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,e.data);return{currentAuthorityDerivedKeyBasePubkey:e.keys[2].pubkey,currentAuthorityDerivedKeyOwnerPubkey:new PublicKey(s),currentAuthorityDerivedKeySeed:l,newAuthorizedPubkey:new PublicKey(d),voteAuthorizationType:{index:u},votePubkey:e.keys[0].pubkey}}static decodeWithdraw(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{lamports:s}=decodeData$1(VOTE_INSTRUCTION_LAYOUTS.Withdraw,e.data);return{votePubkey:e.keys[0].pubkey,authorizedWithdrawerPubkey:e.keys[2].pubkey,lamports:s,toPubkey:e.keys[1].pubkey}}static checkProgramId(e){if(!e.equals(VoteProgram.programId))throw new Error("invalid instruction; programId is not VoteProgram")}static checkKeyLength(e,s){if(e.length<s)throw new Error(`invalid instruction; found ${e.length} keys, expected at least ${s}`)}}const VOTE_INSTRUCTION_LAYOUTS=Object.freeze({InitializeAccount:{index:0,layout:exports.struct([exports.u32("instruction"),voteInit()])},Authorize:{index:1,layout:exports.struct([exports.u32("instruction"),publicKey$6("newAuthorized"),exports.u32("voteAuthorizationType")])},Withdraw:{index:3,layout:exports.struct([exports.u32("instruction"),exports.ns64("lamports")])},UpdateValidatorIdentity:{index:4,layout:exports.struct([exports.u32("instruction")])},AuthorizeWithSeed:{index:10,layout:exports.struct([exports.u32("instruction"),voteAuthorizeWithSeedArgs()])}}),VoteAuthorizationLayout=Object.freeze({Voter:{index:0},Withdrawer:{index:1}});class VoteProgram{constructor(){}static initializeAccount(e){const{votePubkey:s,nodePubkey:l,voteInit:d}=e,u=VOTE_INSTRUCTION_LAYOUTS.InitializeAccount,p=encodeData(u,{voteInit:{nodePubkey:toBuffer(d.nodePubkey.toBuffer()),authorizedVoter:toBuffer(d.authorizedVoter.toBuffer()),authorizedWithdrawer:toBuffer(d.authorizedWithdrawer.toBuffer()),commission:d.commission}}),m={keys:[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!0,isWritable:!1}],programId:this.programId,data:p};return new TransactionInstruction(m)}static createAccount(e){const s=new Transaction;return s.add(SystemProgram.createAccount({fromPubkey:e.fromPubkey,newAccountPubkey:e.votePubkey,lamports:e.lamports,space:this.space,programId:this.programId})),s.add(this.initializeAccount({votePubkey:e.votePubkey,nodePubkey:e.voteInit.nodePubkey,voteInit:e.voteInit}))}static authorize(e){const{votePubkey:s,authorizedPubkey:l,newAuthorizedPubkey:d,voteAuthorizationType:u}=e,p=VOTE_INSTRUCTION_LAYOUTS.Authorize,m=encodeData(p,{newAuthorized:toBuffer(d.toBuffer()),voteAuthorizationType:u.index}),y=[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!0,isWritable:!1}];return new Transaction().add({keys:y,programId:this.programId,data:m})}static authorizeWithSeed(e){const{currentAuthorityDerivedKeyBasePubkey:s,currentAuthorityDerivedKeyOwnerPubkey:l,currentAuthorityDerivedKeySeed:d,newAuthorizedPubkey:u,voteAuthorizationType:p,votePubkey:m}=e,y=VOTE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,h=encodeData(y,{voteAuthorizeWithSeedArgs:{currentAuthorityDerivedKeyOwnerPubkey:toBuffer(l.toBuffer()),currentAuthorityDerivedKeySeed:d,newAuthorized:toBuffer(u.toBuffer()),voteAuthorizationType:p.index}}),v=[{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!1}];return new Transaction().add({keys:v,programId:this.programId,data:h})}static withdraw(e){const{votePubkey:s,authorizedWithdrawerPubkey:l,lamports:d,toPubkey:u}=e,p=VOTE_INSTRUCTION_LAYOUTS.Withdraw,m=encodeData(p,{lamports:d}),y=[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!0,isWritable:!1}];return new Transaction().add({keys:y,programId:this.programId,data:m})}static safeWithdraw(e,s,l){if(e.lamports>s-l)throw new Error("Withdraw will leave vote account with insufficient funds.");return VoteProgram.withdraw(e)}static updateValidatorIdentity(e){const{votePubkey:s,authorizedWithdrawerPubkey:l,nodePubkey:d}=e,u=VOTE_INSTRUCTION_LAYOUTS.UpdateValidatorIdentity,p=encodeData(u),m=[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!0,isWritable:!1},{pubkey:l,isSigner:!0,isWritable:!1}];return new Transaction().add({keys:m,programId:this.programId,data:p})}}VoteProgram.programId=new PublicKey("Vote111111111111111111111111111111111111111");VoteProgram.space=3762;const VALIDATOR_INFO_KEY=new PublicKey("Va1idator1nfo111111111111111111111111111111"),InfoString=type$3({name:string$3(),website:optional$2(string$3()),details:optional$2(string$3()),iconUrl:optional$2(string$3()),keybaseUsername:optional$2(string$3())});class ValidatorInfo{constructor(e,s){this.key=void 0,this.info=void 0,this.key=e,this.info=s}static fromConfigData(e){let s=[...e];if(decodeLength(s)!==2)return null;const d=[];for(let u=0;u<2;u++){const p=new PublicKey(guardedSplice(s,0,PUBLIC_KEY_LENGTH$1)),m=guardedShift(s)===1;d.push({publicKey:p,isSigner:m})}if(d[0].publicKey.equals(VALIDATOR_INFO_KEY)&&d[1].isSigner){const u=rustString().decode(bufferPolyfill.Buffer.from(s)),p=JSON.parse(u);return assert$5(p,InfoString),new ValidatorInfo(d[1].publicKey,p)}return null}}const VOTE_PROGRAM_ID=new PublicKey("Vote111111111111111111111111111111111111111"),VoteAccountLayout=exports.struct([publicKey$6("nodePubkey"),publicKey$6("authorizedWithdrawer"),exports.u8("commission"),nu64$1(),exports.seq(exports.struct([nu64$1("slot"),exports.u32("confirmationCount")]),offset$3(exports.u32(),-8),"votes"),exports.u8("rootSlotValid"),nu64$1("rootSlot"),nu64$1(),exports.seq(exports.struct([nu64$1("epoch"),publicKey$6("authorizedVoter")]),offset$3(exports.u32(),-8),"authorizedVoters"),exports.struct([exports.seq(exports.struct([publicKey$6("authorizedPubkey"),nu64$1("epochOfLastAuthorizedSwitch"),nu64$1("targetEpoch")]),32,"buf"),nu64$1("idx"),exports.u8("isEmpty")],"priorVoters"),nu64$1(),exports.seq(exports.struct([nu64$1("epoch"),nu64$1("credits"),nu64$1("prevCredits")]),offset$3(exports.u32(),-8),"epochCredits"),exports.struct([nu64$1("slot"),nu64$1("timestamp")],"lastTimestamp")]);class VoteAccount{constructor(e){this.nodePubkey=void 0,this.authorizedWithdrawer=void 0,this.commission=void 0,this.rootSlot=void 0,this.votes=void 0,this.authorizedVoters=void 0,this.priorVoters=void 0,this.epochCredits=void 0,this.lastTimestamp=void 0,this.nodePubkey=e.nodePubkey,this.authorizedWithdrawer=e.authorizedWithdrawer,this.commission=e.commission,this.rootSlot=e.rootSlot,this.votes=e.votes,this.authorizedVoters=e.authorizedVoters,this.priorVoters=e.priorVoters,this.epochCredits=e.epochCredits,this.lastTimestamp=e.lastTimestamp}static fromAccountData(e){const l=VoteAccountLayout.decode(toBuffer(e),4);let d=l.rootSlot;return l.rootSlotValid||(d=null),new VoteAccount({nodePubkey:new PublicKey(l.nodePubkey),authorizedWithdrawer:new PublicKey(l.authorizedWithdrawer),commission:l.commission,votes:l.votes,rootSlot:d,authorizedVoters:l.authorizedVoters.map(parseAuthorizedVoter),priorVoters:getPriorVoters(l.priorVoters),epochCredits:l.epochCredits,lastTimestamp:l.lastTimestamp})}}function parseAuthorizedVoter({authorizedVoter:t,epoch:e}){return{epoch:e,authorizedVoter:new PublicKey(t)}}function parsePriorVoters({authorizedPubkey:t,epochOfLastAuthorizedSwitch:e,targetEpoch:s}){return{authorizedPubkey:new PublicKey(t),epochOfLastAuthorizedSwitch:e,targetEpoch:s}}function getPriorVoters({buf:t,idx:e,isEmpty:s}){return s?[]:[...t.slice(e+1).map(parsePriorVoters),...t.slice(0,e).map(parsePriorVoters)]}const endpoint={http:{devnet:"http://api.devnet.solana.com",testnet:"http://api.testnet.solana.com","mainnet-beta":"http://api.mainnet-beta.solana.com/"},https:{devnet:"https://api.devnet.solana.com",testnet:"https://api.testnet.solana.com","mainnet-beta":"https://api.mainnet-beta.solana.com/"}};function clusterApiUrl(t,e){const s=e===!1?"http":"https";if(!t)return endpoint[s].devnet;const l=endpoint[s][t];if(!l)throw new Error(`Unknown ${s} cluster: ${t}`);return l}async function sendAndConfirmRawTransaction$1(t,e,s,l){let d,u;s&&Object.prototype.hasOwnProperty.call(s,"lastValidBlockHeight")||s&&Object.prototype.hasOwnProperty.call(s,"nonceValue")?(d=s,u=l):u=s;const p=u&&{skipPreflight:u.skipPreflight,preflightCommitment:u.preflightCommitment||u.commitment,minContextSlot:u.minContextSlot},m=await t.sendRawTransaction(e,p),y=u&&u.commitment,v=(await(d?t.confirmTransaction(d,y):t.confirmTransaction(m,y))).value;if(v.err)throw m!=null?new SendTransactionError({action:p!=null&&p.skipPreflight?"send":"simulate",signature:m,transactionMessage:`Status: (${JSON.stringify(v)})`}):new Error(`Raw transaction ${m} failed (${JSON.stringify(v)})`);return m}const LAMPORTS_PER_SOL=1e9,index_browser_esm=Object.freeze(Object.defineProperty({__proto__:null,Account,AddressLookupTableAccount,AddressLookupTableInstruction,AddressLookupTableProgram,Authorized,BLOCKHASH_CACHE_TIMEOUT_MS,BPF_LOADER_DEPRECATED_PROGRAM_ID,BPF_LOADER_PROGRAM_ID,BpfLoader,COMPUTE_BUDGET_INSTRUCTION_LAYOUTS,ComputeBudgetInstruction,ComputeBudgetProgram,Connection:Connection$1,Ed25519Program,Enum,EpochSchedule,FeeCalculatorLayout,Keypair,LAMPORTS_PER_SOL,LOOKUP_TABLE_INSTRUCTION_LAYOUTS,Loader,Lockup,MAX_SEED_LENGTH,Message,MessageAccountKeys,MessageV0,NONCE_ACCOUNT_LENGTH,NonceAccount,PACKET_DATA_SIZE,PUBLIC_KEY_LENGTH:PUBLIC_KEY_LENGTH$1,PublicKey,SIGNATURE_LENGTH_IN_BYTES,SOLANA_SCHEMA,STAKE_CONFIG_ID,STAKE_INSTRUCTION_LAYOUTS,SYSTEM_INSTRUCTION_LAYOUTS,SYSVAR_CLOCK_PUBKEY,SYSVAR_EPOCH_SCHEDULE_PUBKEY,SYSVAR_INSTRUCTIONS_PUBKEY,SYSVAR_RECENT_BLOCKHASHES_PUBKEY,SYSVAR_RENT_PUBKEY,SYSVAR_REWARDS_PUBKEY,SYSVAR_SLOT_HASHES_PUBKEY,SYSVAR_SLOT_HISTORY_PUBKEY,SYSVAR_STAKE_HISTORY_PUBKEY,Secp256k1Program,SendTransactionError,SolanaJSONRPCError,SolanaJSONRPCErrorCode,StakeAuthorizationLayout,StakeInstruction,StakeProgram,Struct:Struct$2,SystemInstruction,SystemProgram,Transaction,TransactionExpiredBlockheightExceededError,TransactionExpiredNonceInvalidError,TransactionExpiredTimeoutError,TransactionInstruction,TransactionMessage,TransactionStatus,VALIDATOR_INFO_KEY,VERSION_PREFIX_MASK,VOTE_PROGRAM_ID,ValidatorInfo,VersionedMessage,VersionedTransaction,VoteAccount,VoteAuthorizationLayout,VoteInit,VoteInstruction,VoteProgram,clusterApiUrl,sendAndConfirmRawTransaction:sendAndConfirmRawTransaction$1,sendAndConfirmTransaction},Symbol.toStringTag,{value:"Module"})),_platform="Solana",SolanaZeroAddress="11111111111111111111111111111111",Yn=class Yn{constructor(e){Ae(this,"type","Native");Ae(this,"address");Yn.instanceof(e)?this.address=e.address:UniversalAddress.instanceof(e)?this.address=new PublicKey(e.toUint8Array()):typeof e=="string"&&hex$1.valid(e)?this.address=new PublicKey(hex$1.decode(e)):this.address=new PublicKey(e)}unwrap(){return this.address}toString(){return this.address.toBase58()}toUint8Array(){return new Uint8Array(this.address.toBytes())}toNative(){return this}toUniversalAddress(){return new UniversalAddress(this.toUint8Array())}static instanceof(e){return e.constructor.platform===Yn.platform}equals(e){return Yn.instanceof(e)?e.unwrap().equals(this.unwrap()):this.toUniversalAddress().equals(e)}};Ae(Yn,"byteSize",32),Ae(Yn,"platform",_platform);let SolanaAddress=Yn;registerNative(_platform,SolanaAddress);function base$3(t){if(t.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),s=0;s<e.length;s++)e[s]=255;for(var l=0;l<t.length;l++){var d=t.charAt(l),u=d.charCodeAt(0);if(e[u]!==255)throw new TypeError(d+" is ambiguous");e[u]=l}var p=t.length,m=t.charAt(0),y=Math.log(p)/Math.log(256),h=Math.log(256)/Math.log(p);function v(I){if(I instanceof Uint8Array||(ArrayBuffer.isView(I)?I=new Uint8Array(I.buffer,I.byteOffset,I.byteLength):Array.isArray(I)&&(I=Uint8Array.from(I))),!(I instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(I.length===0)return"";for(var k=0,$=0,P=0,z=I.length;P!==z&&I[P]===0;)P++,k++;for(var U=(z-P)*h+1>>>0,F=new Uint8Array(U);P!==z;){for(var q=I[P],V=0,H=U-1;(q!==0||V<$)&&H!==-1;H--,V++)q+=256*F[H]>>>0,F[H]=q%p>>>0,q=q/p>>>0;if(q!==0)throw new Error("Non-zero carry");$=V,P++}for(var Z=U-$;Z!==U&&F[Z]===0;)Z++;for(var ne=m.repeat(k);Z<U;++Z)ne+=t.charAt(F[Z]);return ne}function A(I){if(typeof I!="string")throw new TypeError("Expected String");if(I.length===0)return new Uint8Array;for(var k=0,$=0,P=0;I[k]===m;)$++,k++;for(var z=(I.length-k)*y+1>>>0,U=new Uint8Array(z);I[k];){var F=e[I.charCodeAt(k)];if(F===255)return;for(var q=0,V=z-1;(F!==0||q<P)&&V!==-1;V--,q++)F+=p*U[V]>>>0,U[V]=F%256>>>0,F=F/256>>>0;if(F!==0)throw new Error("Non-zero carry");P=q,k++}for(var H=z-P;H!==z&&U[H]===0;)H++;for(var Z=new Uint8Array($+(z-H)),ne=$;H!==z;)Z[ne++]=U[H++];return Z}function w(I){var k=A(I);if(k)return k;throw new Error("Non-base"+p+" character")}return{encode:v,decodeUnsafe:A,decode:w}}var src$3=base$3;const basex$1=src$3,ALPHABET$2="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";var bs58$3=basex$1(ALPHABET$2);const bs58$4=getDefaultExportFromCjs$2(bs58$3),toB58$1=t=>bs58$4.encode(t),fromB58$1=t=>bs58$4.decode(t),TX_DIGEST_LENGTH$1=32;function isValidTransactionDigest$1(t){try{return fromB58$1(t).length===TX_DIGEST_LENGTH$1}catch{return!1}}const SUI_ADDRESS_LENGTH$2=32;function isValidSuiAddress$1(t){return isHex$1(t)&&getHexByteLength$1(t)===SUI_ADDRESS_LENGTH$2}function isValidSuiObjectId$1(t){return isValidSuiAddress$1(t)}function normalizeSuiAddress$1(t,e=!1){let s=t.toLowerCase();return!e&&s.startsWith("0x")&&(s=s.slice(2)),`0x${s.padStart(SUI_ADDRESS_LENGTH$2*2,"0")}`}function normalizeSuiObjectId$1(t,e=!1){return normalizeSuiAddress$1(t,e)}function isHex$1(t){return/^(0x|0X)?[a-fA-F0-9]+$/.test(t)&&t.length%2===0}function getHexByteLength$1(t){return/^(0x|0X)/.test(t)?(t.length-2)/2:t.length/2}BigInt(1e9);const MOVE_STDLIB_ADDRESS$1="0x1",SUI_FRAMEWORK_ADDRESS$1="0x2";normalizeSuiObjectId$1("0x6");const SUI_TYPE_ARG$1=`${SUI_FRAMEWORK_ADDRESS$1}::sui::SUI`;normalizeSuiObjectId$1("0x5");const SUI_SEPARATOR="::",SUI_COIN="0x2::sui::SUI",isValidSuiType=t=>/^(0x)?[0-9a-fA-F]+::\w+::\w+$/.test(t),trimSuiType=t=>t.replace(/(0x)(0*)/g,"0x");function zpadSuiAddress(t){return t=t.startsWith("0x")?t.slice(2):t,t=t.length%2===0?t:"0"+t,`0x${t.length===64?t:hex$1.encode(bytes$1.zpad(hex$1.decode(t),32))}`}const normalizeSuiType=t=>{const e=t.split(SUI_SEPARATOR);if(e.length!==3)throw new Error(`Invalid Sui type: ${t}`);return[normalizeSuiAddress$1(e[0]),e[1],e[2]].join(SUI_SEPARATOR)},getCoinTypeFromPackageId=t=>new SuiAddress$1(t).getCoinType(),getPackageIdFromType=t=>new SuiAddress$1(t).getPackageId(),getTableKeyType=t=>{const e=trimSuiType(t).match(/0x2::table::Table<(.*)>/);if(!e)throw new Error(`Invalid table type: ${t}`);if(e.length<2)throw new Error(`Invalid table type: ${t}`);const[s]=e[1].split(",");if(!s||!isValidSuiType(s))throw new Error(`Invalid key type: ${s}`);return s};var Zr;let SuiAddress$1=(Zr=class{constructor(e){Ae(this,"address");Ae(this,"module");if(Zr.instanceof(e))this.address=e.address,this.module=e.module;else if(UniversalAddress.instanceof(e))this.address=e.toUint8Array();else if(typeof e=="string"){if(isValidSuiType(e)){const s=e.split(SUI_SEPARATOR);this.module=s.slice(1).join(SUI_SEPARATOR),e=s[0]}if(e=zpadSuiAddress(e),!hex$1.valid(e))throw new Error("Invalid Sui address: "+e);this.address=hex$1.decode(e)}else this.address=e}unwrap(){const e=this.getPackageId(),s=this.module?SUI_SEPARATOR+this.module:"";return`${e}${s}`}toString(){return this.unwrap()}toNative(){return this}toUint8Array(){return this.address}toUniversalAddress(){return new UniversalAddress(this.toUint8Array())}getPackageId(){return zpadSuiAddress(hex$1.encode(this.address))}getCoinType(){if(this.module==="sui::SUI")return SUI_COIN;if(!this.module)throw new Error("No module present in Sui token address");return this.unwrap()}static instanceof(e){return e.constructor.platform===Zr.platform}equals(e){return Zr.instanceof(e)?e.unwrap()===this.unwrap():this.toUniversalAddress().equals(e)}},Ae(Zr,"byteSize",32),Ae(Zr,"platform","Sui"),Zr);registerNative("Sui",SuiAddress$1);async function loadPlatforms(t){try{const e=await Promise.all(t.map(async s=>s()));return await Promise.all(e.map(async s=>await loadProtocols(s))),e}catch(e){throw console.error("Failed to load required packages",e),e}}async function loadProtocols(t,e){try{let s=Object.entries(t.protocols);await Promise.all(s.map(([,l])=>l()))}catch(s){throw console.error("Failed to load required packages",s),s}}async function wormhole(t,e,s){const l=(await loadPlatforms(e)).map(d=>d.Platform);return new Wormhole(t,l,s)}class WormholeContext extends MultiProvider{constructor(s,l){super();Ae(this,"conf");l?this.conf=l:this.conf=WormholeContext.getConfig(s),this.registerProviders()}get environment(){return this.conf.env}registerProviders(){var s;for(const l of Object.keys(this.conf.rpcs)){const d=toChainId(l);if(!d)throw new Error(`Unknown chain ${l}`);this.registerDomain({domain:d,name:l}),((s=this.conf.chains[l])==null?void 0:s.context)===Context.ETH&&this.registerRpcProvider(l,this.conf.rpcs[l])}}getContext(s){return this}static getConfig(s){return s==="Mainnet"?MAINNET_CONFIG:s==="Devnet"?DEVNET_CONFIG:TESTNET_CONFIG}}const wi=class wi extends Error{constructor(){super(wi.MESSAGE)}};Ae(wi,"MESSAGE","Insufficient funds for gas"),Ae(wi,"MESSAGE_REGEX",/insufficient funds|Insufficient funds for gas/gm);let InsufficientFundsForGasError=wi;const CONFIG={MAINNET:MAINNET_CONFIG,TESTNET:TESTNET_CONFIG,DEVNET:DEVNET_CONFIG},{chains:chains$3}=CONFIG.MAINNET,MAINNET_CHAINS={Ethereum:{...chains$3.Ethereum,displayName:"Ethereum",sdkName:"Ethereum",explorerUrl:"https://etherscan.io/",explorerName:"Etherscan",chainId:1,icon:"Ethereum",symbol:"ETH",wrappedGasToken:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},Bsc:{...chains$3.Bsc,displayName:"BSC",sdkName:"Bsc",explorerUrl:"https://bscscan.com/",explorerName:"BscScan",chainId:56,icon:"Bsc",symbol:"BSC",wrappedGasToken:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"},Polygon:{...chains$3.Polygon,displayName:"Polygon",sdkName:"Polygon",explorerUrl:"https://polygonscan.com/",explorerName:"PolygonScan",chainId:137,icon:"Polygon",symbol:"POL",wrappedGasToken:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"},Avalanche:{...chains$3.Avalanche,displayName:"Avalanche",sdkName:"Avalanche",explorerUrl:"https://avascan.info/blockchain/c/",explorerName:"Avascan",chainId:43114,icon:"Avalanche",symbol:"AVAX",wrappedGasToken:"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"},Fantom:{...chains$3.Fantom,displayName:"Fantom",sdkName:"Fantom",explorerUrl:"https://ftmscan.com/",explorerName:"FTMscan",chainId:250,icon:"Fantom",symbol:"FTM",wrappedGasToken:"0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83"},Celo:{...chains$3.Celo,displayName:"Celo",sdkName:"Celo",explorerUrl:"https://explorer.celo.org/mainnet/",explorerName:"Celo Explorer",chainId:42220,icon:"Celo",symbol:"CELO"},Moonbeam:{...chains$3.Moonbeam,displayName:"Moonbeam",sdkName:"Moonbeam",explorerUrl:"https://moonscan.io/",explorerName:"Moonscan",chainId:1284,icon:"Moonbeam",symbol:"GLMR",wrappedGasToken:"0xAcc15dC74880C9944775448304B263D191c6077F"},Solana:{...chains$3.Solana,displayName:"Solana",sdkName:"Solana",explorerUrl:"https://explorer.solana.com/",explorerName:"Solana Explorer",chainId:0,icon:"Solana",symbol:"SOL",wrappedGasToken:"So11111111111111111111111111111111111111112"},Sui:{...chains$3.Sui,displayName:"Sui",sdkName:"Sui",explorerUrl:"https://suiscan.xyz/",explorerName:"Suiscan",chainId:0,icon:"Sui",symbol:"SUI"},Aptos:{...chains$3.Aptos,displayName:"Aptos",sdkName:"Aptos",explorerUrl:"https://explorer.aptoslabs.com/",explorerName:"Aptos Explorer",chainId:0,icon:"Aptos",symbol:"APT"},Base:{...chains$3.Base,displayName:"Base",sdkName:"Base",explorerUrl:"https://basescan.org/",explorerName:"BaseScan",chainId:8453,icon:"Base",symbol:"BASE",wrappedGasToken:"0x4200000000000000000000000000000000000006"},Arbitrum:{...chains$3.Arbitrum,displayName:"Arbitrum",sdkName:"Arbitrum",explorerUrl:"https://arbiscan.io/",explorerName:"Arbitrum Explorer",chainId:42161,icon:"Arbitrum",symbol:"ARB",wrappedGasToken:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"},Optimism:{...chains$3.Optimism,displayName:"Optimism",sdkName:"Optimism",explorerUrl:"https://optimistic.etherscan.io/",explorerName:"Optimistic Etherscan",chainId:10,icon:"Optimism",symbol:"OP",wrappedGasToken:"0x4200000000000000000000000000000000000006"},Klaytn:{...chains$3.Klaytn,displayName:"Kaia",sdkName:"Klaytn",explorerUrl:"https://kaiascope.com/",explorerName:"Kaia Scope",chainId:8217,icon:"Klaytn",symbol:"KLAY",wrappedGasToken:"0xe4f05A66Ec68B54A58B17c22107b02e0232cC817"},Scroll:{...chains$3.Scroll,displayName:"Scroll",sdkName:"Scroll",explorerUrl:"https://scrollscan.com/",explorerName:"Scrollscan",chainId:534352,icon:"Scroll",symbol:"SCR",wrappedGasToken:"0x5300000000000000000000000000000000000004"},Blast:{...chains$3.Blast,displayName:"Blast",sdkName:"Blast",explorerUrl:"https://blastscan.io/",explorerName:"Blastscan",chainId:81457,icon:"Blast",symbol:"BLAST",wrappedGasToken:"0x9D020B1697035d9d54f115194c9e04a1e4Eb9aF7"},Xlayer:{...chains$3.Xlayer,displayName:"X Layer",sdkName:"Xlayer",explorerUrl:"https://www.okx.com/web3/explorer/xlayer/",explorerName:"OKX Explorer",chainId:196,icon:"Xlayer",symbol:"OKX",wrappedGasToken:"0xe538905cf8410324e03A5A23C1c177a474D59b2b"},Mantle:{...chains$3.Mantle,displayName:"Mantle",sdkName:"Mantle",explorerUrl:"https://explorer.mantle.xyz/",explorerName:"Mantle Explorer",chainId:5e3,icon:"Mantle",symbol:"MNT",wrappedGasToken:"0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8"},Worldchain:{...chains$3.Worldchain,displayName:"World Chain",sdkName:"Worldchain",explorerUrl:"https://worldscan.org/",explorerName:"World Scan",chainId:480,icon:"Worldchain",symbol:"WORLD"},Unichain:{...chains$3.Unichain,displayName:"Unichain",sdkName:"Unichain",explorerUrl:"https://uniscan.xyz/",explorerName:"Uniscan",chainId:130,icon:"Unichain",symbol:"UNI",wrappedGasToken:"0x4200000000000000000000000000000000000006"},Berachain:{...chains$3.Berachain,displayName:"Berachain",sdkName:"Berachain",explorerUrl:"https://berascan.com/",explorerName:"Berascan",chainId:80094,icon:"Berachain",symbol:"BERA",wrappedGasToken:"0x6969696969696969696969696969696969696969"}},error=t=>{console.error(`Wormhole Connect: ${t}`)},populateRpcField=(t,e)=>e?{[t]:e}:{},mergeCustomWrappedTokens=(t,e)=>{if(!e)return t;for(const s in e)for(const l in e[s])t[s]||(t[s]={}),t[s][l]={...e[s][l],...t[s][l]};return t},validateDefaults=(t,e,s)=>{if(t)return t.fromChain&&(e[t.fromChain]||(error(`Invalid chain name "${t.fromChain}" specified for defaultInputs.fromChain`),delete t.fromChain)),t.toChain&&(e[t.toChain]||(error(`Invalid chain name "${t.toChain}" specified for defaultInputs.toChain`),delete t.fromChain)),t.fromChain&&t.toChain&&t.fromChain===t.toChain&&error("Source and destination chain cannot be the same, check the defaultInputs configuration"),t.fromChain&&t.toChain&&t.requiredChain&&(e[t.requiredChain]||error(`Invalid network value "${t.requiredChain}" specified for defaultInputs.requiredChain`),t.toChain!==t.requiredChain&&t.fromChain!==t.requiredChain&&error("Source chain or destination chain must equal the required network")),t.fromChain&&t.fromToken&&(s.findByAddressOrSymbol(t.fromChain,t.fromToken)||(error(`Invalid token "${t.fromToken}" specified for defaultInputs.fromToken`),delete t.fromToken)),t.toChain&&t.toToken&&(s.findByAddressOrSymbol(t.toChain,t.toToken)||(error(`Invalid token "${t.toToken}" specified for defaultInputs.toToken`),delete t.toToken)),t},capitalize$1=t=>t[0].toUpperCase()+t.slice(1),__vite_import_meta_env__$2={},{REACT_APP_ETHEREUM_RPC,REACT_APP_SOLANA_RPC,REACT_APP_POLYGON_RPC,REACT_APP_BSC_RPC,REACT_APP_AVALANCHE_RPC,REACT_APP_FANTOM_RPC,REACT_APP_CELO_RPC,REACT_APP_MOONBEAM_RPC,REACT_APP_SUI_RPC,REACT_APP_APTOS_RPC,REACT_APP_BASE_RPC,REACT_APP_KLAYTN_RPC,REACT_APP_ARBITRUM_RPC,REACT_APP_OPTIMISM_RPC,REACT_APP_SCROLL_RPC,REACT_APP_BLAST_RPC,REACT_APP_XLAYER_RPC,REACT_APP_MANTLE_RPC,REACT_APP_WORLDCHAIN_RPC,REACT_APP_UNICHAIN_RPC,REACT_APP_BERACHAIN_RPC}=__vite_import_meta_env__$2,MAINNET_RPC_MAPPING={...populateRpcField("Ethereum",REACT_APP_ETHEREUM_RPC),...populateRpcField("Solana",REACT_APP_SOLANA_RPC),...populateRpcField("Polygon",REACT_APP_POLYGON_RPC),...populateRpcField("Bsc",REACT_APP_BSC_RPC),...populateRpcField("Avalanche",REACT_APP_AVALANCHE_RPC),...populateRpcField("Fantom",REACT_APP_FANTOM_RPC),...populateRpcField("Celo",REACT_APP_CELO_RPC),...populateRpcField("Moonbeam",REACT_APP_MOONBEAM_RPC),...populateRpcField("Sui",REACT_APP_SUI_RPC),...populateRpcField("Aptos",REACT_APP_APTOS_RPC),...populateRpcField("Base",REACT_APP_BASE_RPC),...populateRpcField("Arbitrum",REACT_APP_ARBITRUM_RPC),...populateRpcField("Optimism",REACT_APP_OPTIMISM_RPC),...populateRpcField("Klaytn",REACT_APP_KLAYTN_RPC),...populateRpcField("Scroll",REACT_APP_SCROLL_RPC),...populateRpcField("Blast",REACT_APP_BLAST_RPC),...populateRpcField("Xlayer",REACT_APP_XLAYER_RPC),...populateRpcField("Mantle",REACT_APP_MANTLE_RPC),...populateRpcField("Worldchain",REACT_APP_WORLDCHAIN_RPC),...populateRpcField("Unichain",REACT_APP_UNICHAIN_RPC),...populateRpcField("Berachain",REACT_APP_BERACHAIN_RPC)};var TokenIcon=(t=>(t[t.AVAX=1]="AVAX",t[t.BNB=2]="BNB",t[t.BSC=3]="BSC",t[t.CELO=4]="CELO",t[t.ETH=5]="ETH",t[t.FANTOM=6]="FANTOM",t[t.POLYGON=7]="POLYGON",t[t.SOLANA=8]="SOLANA",t[t.USDC=9]="USDC",t[t.GLMR=10]="GLMR",t[t.DAI=11]="DAI",t[t.USDT=12]="USDT",t[t.BUSD=13]="BUSD",t[t.WBTC=14]="WBTC",t[t.SUI=15]="SUI",t[t.APT=16]="APT",t[t.SEI=17]="SEI",t[t.BASE=18]="BASE",t[t.OSMO=19]="OSMO",t[t.TBTC=20]="TBTC",t[t.WSTETH=21]="WSTETH",t[t.ARBITRUM=22]="ARBITRUM",t[t.OPTIMISM=23]="OPTIMISM",t[t.ATOM=24]="ATOM",t[t.EVMOS=25]="EVMOS",t[t.KUJI=26]="KUJI",t[t.PYTH=27]="PYTH",t[t.INJ=28]="INJ",t[t.KLAY=29]="KLAY",t[t.NTT=30]="NTT",t[t.SCROLL=31]="SCROLL",t[t.BLAST=32]="BLAST",t[t.XLAYER=33]="XLAYER",t[t.MANTLE=34]="MANTLE",t[t.WORLDCHAIN=35]="WORLDCHAIN",t[t.BERA=36]="BERA",t))(TokenIcon||{});const MAINNET_TOKENS=[{symbol:"ETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Ethereum",address:"native"}},{symbol:"WETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Ethereum",address:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"}},{symbol:"USDC",decimals:6,icon:TokenIcon.USDC,tokenId:{chain:"Ethereum",address:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"}},{symbol:"WBTC",decimals:8,icon:TokenIcon.WBTC,tokenId:{chain:"Ethereum",address:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"}},{symbol:"USDT",decimals:6,icon:TokenIcon.USDT,tokenId:{chain:"Ethereum",address:"0xdAC17F958D2ee523a2206206994597C13D831ec7"}},{symbol:"DAI",decimals:18,icon:TokenIcon.DAI,tokenId:{chain:"Ethereum",address:"0x6B175474E89094C44Da98b954EedeAC495271d0F"}},{symbol:"BUSD",decimals:18,icon:TokenIcon.BUSD,tokenId:{chain:"Ethereum",address:"0x4Fabb145d64652a948d72533023f6E7A623C7C53"}},{symbol:"POL",decimals:18,icon:TokenIcon.POLYGON,tokenId:{chain:"Polygon",address:"native"}},{symbol:"WPOL",decimals:18,icon:TokenIcon.POLYGON,tokenId:{chain:"Polygon",address:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"}},{symbol:"WETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Polygon",address:"0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619"}},{symbol:"USDC",decimals:6,icon:TokenIcon.USDC,tokenId:{chain:"Polygon",address:"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"}},{symbol:"USDT",decimals:6,icon:TokenIcon.USDT,tokenId:{chain:"Polygon",address:"0xc2132D05D31c914a87C6611C10748AEb04B58e8F"}},{symbol:"BNB",decimals:18,icon:TokenIcon.BNB,tokenId:{chain:"Bsc",address:"native"}},{symbol:"WBNB",decimals:18,icon:TokenIcon.BNB,tokenId:{chain:"Bsc",address:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"}},{symbol:"USDC",decimals:18,icon:TokenIcon.USDC,tokenId:{chain:"Bsc",address:"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"}},{symbol:"AVAX",decimals:18,icon:TokenIcon.AVAX,tokenId:{chain:"Avalanche",address:"native"}},{symbol:"WAVAX",decimals:18,icon:TokenIcon.AVAX,tokenId:{chain:"Avalanche",address:"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"}},{symbol:"USDC",decimals:6,icon:TokenIcon.USDC,tokenId:{chain:"Avalanche",address:"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"}},{symbol:"USDT",decimals:6,icon:TokenIcon.USDT,tokenId:{chain:"Avalanche",address:"0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7"}},{symbol:"WETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Avalanche",address:"0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB"}},{symbol:"FTM",decimals:18,icon:TokenIcon.FANTOM,tokenId:{chain:"Fantom",address:"native"}},{symbol:"WFTM",name:"Wrapped Fantom",decimals:18,icon:TokenIcon.FANTOM,tokenId:{chain:"Fantom",address:"0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83"}},{symbol:"USDC.e",decimals:6,icon:TokenIcon.USDC,tokenId:{chain:"Fantom",address:"0x2F733095B80A04b38b0D10cC884524a3d09b836a"}},{symbol:"CELO",decimals:18,icon:TokenIcon.CELO,tokenId:{chain:"Celo",address:"0x471EcE3750Da237f93B8E339c536989b8978a438"}},{symbol:"USDT",decimals:6,icon:TokenIcon.USDT,tokenId:{chain:"Celo",address:"0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e"}},{symbol:"GLMR",decimals:18,icon:TokenIcon.GLMR,tokenId:{chain:"Moonbeam",address:"native"}},{symbol:"WGLMR",decimals:18,icon:TokenIcon.GLMR,tokenId:{chain:"Moonbeam",address:"0xAcc15dC74880C9944775448304B263D191c6077F"}},{symbol:"SOL",decimals:9,icon:TokenIcon.SOLANA,tokenId:{chain:"Solana",address:"native"}},{symbol:"WSOL",decimals:9,tokenId:{chain:"Solana",address:"So11111111111111111111111111111111111111112"},icon:TokenIcon.SOLANA},{symbol:"USDC",decimals:6,tokenId:{chain:"Solana",address:"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"},icon:TokenIcon.USDC},{symbol:"USDT",decimals:6,icon:TokenIcon.USDT,tokenId:{chain:"Solana",address:"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"}},{symbol:"SUI",decimals:9,tokenId:{chain:"Sui",address:"native"},icon:TokenIcon.SUI},{symbol:"USDC",decimals:6,tokenId:{chain:"Sui",address:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"},icon:TokenIcon.USDC},{symbol:"APT",decimals:8,tokenId:{chain:"Aptos",address:"native"},icon:TokenIcon.APT},{symbol:"USDC",decimals:6,tokenId:{chain:"Aptos",address:"0xbae207659db88bea0cbead6da0ed00aac12edcdda169e591cd41c94180b46f3b"},icon:TokenIcon.USDC},{symbol:"ETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Arbitrum",address:"native"}},{symbol:"WETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Arbitrum",address:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"}},{symbol:"USDC",decimals:6,icon:TokenIcon.USDC,tokenId:{chain:"Arbitrum",address:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831"}},{symbol:"USDT",decimals:6,icon:TokenIcon.USDT,tokenId:{chain:"Arbitrum",address:"0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9"}},{symbol:"ETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Optimism",address:"native"}},{symbol:"WETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Optimism",address:"0x4200000000000000000000000000000000000006"}},{symbol:"USDC",decimals:6,icon:TokenIcon.USDC,tokenId:{chain:"Optimism",address:"0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85"}},{symbol:"USDT",decimals:6,icon:TokenIcon.USDT,tokenId:{chain:"Optimism",address:"0x94b008aA00579c1307B0EF2c499aD98a8ce58e58"}},{symbol:"WETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Bsc",address:"0x2170Ed0880ac9A755fd29B2688956BD959F933F8"}},{symbol:"USDT",decimals:18,icon:TokenIcon.USDT,tokenId:{chain:"Bsc",address:"0x55d398326f99059fF775485246999027B3197955"}},{symbol:"ETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Base",address:"native"}},{symbol:"WETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Base",address:"0x4200000000000000000000000000000000000006"}},{symbol:"USDC",decimals:6,icon:TokenIcon.USDC,tokenId:{chain:"Base",address:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}},{symbol:"USDT",decimals:6,icon:TokenIcon.USDT,tokenId:{chain:"Base",address:"0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2"}},{symbol:"wstETH",decimals:18,tokenId:{chain:"Base",address:"0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452"},icon:TokenIcon.WSTETH},{symbol:"wstETH",decimals:18,tokenId:{chain:"Ethereum",address:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"},icon:TokenIcon.WSTETH},{symbol:"wstETH",decimals:18,tokenId:{chain:"Arbitrum",address:"0x5979D7b546E38E414F7E9822514be443A4800529"},icon:TokenIcon.WSTETH},{symbol:"wstETH",decimals:18,tokenId:{chain:"Optimism",address:"0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb"},icon:TokenIcon.WSTETH},{symbol:"wstETH",decimals:18,tokenId:{chain:"Polygon",address:"0x03b54A6e9a984069379fae1a4fC4dBAE93B3bCCD"},icon:TokenIcon.WSTETH},{symbol:"KLAY",decimals:18,icon:TokenIcon.KLAY,tokenId:{chain:"Klaytn",address:"native"}},{symbol:"WKLAY",decimals:18,name:"wKLAY",icon:TokenIcon.KLAY,tokenId:{chain:"Klaytn",address:"0xe4f05A66Ec68B54A58B17c22107b02e0232cC817"}},{symbol:"PYTH",decimals:6,tokenId:{chain:"Solana",address:"HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3"},icon:TokenIcon.PYTH},{symbol:"ETH",decimals:18,icon:TokenIcon.SCROLL,tokenId:{chain:"Scroll",address:"native"}},{symbol:"WETH",decimals:18,icon:TokenIcon.SCROLL,tokenId:{chain:"Scroll",address:"0x5300000000000000000000000000000000000004"}},{symbol:"ETH",decimals:18,icon:TokenIcon.BLAST,tokenId:{chain:"Blast",address:"native"}},{symbol:"WETH",decimals:18,icon:TokenIcon.BLAST,tokenId:{chain:"Blast",address:"0x9D020B1697035d9d54f115194c9e04a1e4Eb9aF7"}},{symbol:"OKB",decimals:18,icon:TokenIcon.XLAYER,tokenId:{chain:"Xlayer",address:"native"}},{symbol:"WOKB",decimals:18,icon:TokenIcon.XLAYER,tokenId:{chain:"Xlayer",address:"0xe538905cf8410324e03A5A23C1c177a474D59b2b"}},{symbol:"MNT",decimals:18,icon:TokenIcon.MANTLE,tokenId:{chain:"Mantle",address:"native"}},{symbol:"WMNT",decimals:18,icon:TokenIcon.MANTLE,tokenId:{chain:"Mantle",address:"0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8"}},{symbol:"tBTC",decimals:18,tokenId:{chain:"Ethereum",address:"0x18084fbA666a33d37592fA2633fD49a74DD93a88"},icon:TokenIcon.TBTC},{symbol:"tBTC",decimals:18,tokenId:{chain:"Polygon",address:"0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b"},icon:TokenIcon.TBTC},{symbol:"tBTC",decimals:18,tokenId:{chain:"Optimism",address:"0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40"},icon:TokenIcon.TBTC},{symbol:"tBTC",decimals:18,tokenId:{chain:"Arbitrum",address:"0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40"},icon:TokenIcon.TBTC},{symbol:"tBTC",decimals:18,tokenId:{chain:"Base",address:"0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b"},icon:TokenIcon.TBTC},{symbol:"tBTC",decimals:8,tokenId:{chain:"Solana",address:"6DNSN2BJsaPFdFFc1zP37kkeNe4Usc1Sqkzr9C9vPWcU"},icon:TokenIcon.TBTC},{symbol:"ETH",tokenId:{chain:"Worldchain",address:"native"},decimals:18,icon:TokenIcon.WORLDCHAIN},{symbol:"WETH",tokenId:{chain:"Worldchain",address:"0x4200000000000000000000000000000000000006"},decimals:18,icon:TokenIcon.WORLDCHAIN},{symbol:"ETH",tokenId:{chain:"Unichain",address:"native"},decimals:18,icon:TokenIcon.ETH},{symbol:"WETH",tokenId:{chain:"Unichain",address:"0x4200000000000000000000000000000000000006"},decimals:18,icon:TokenIcon.ETH},{symbol:"USDC",tokenId:{chain:"Unichain",address:"0x078D782b760474a361dDA0AF3839290b0EF57AD6"},decimals:6,icon:TokenIcon.USDC},{symbol:"BERA",tokenId:{chain:"Berachain",address:"native"},decimals:18,icon:TokenIcon.BERA},{symbol:"WBERA",tokenId:{chain:"Berachain",address:"0x6969696969696969696969696969696969696969"},decimals:18,icon:TokenIcon.BERA}],MAINNET_WRAPPED_TOKENS={Ethereum:{"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2":{Bsc:"0x4DB5a66E937A9F4473fA95b1cAF1d1E1D62E29EA",Polygon:"0x11CD37bb86F65419713f30673A480EA33c826872",Avalanche:"0x8b82A291F83ca07Af22120ABa21632088fC92931",Fantom:"0x2A126f043BDEBe5A0A9841c51915E562D9B07289",Celo:"0x66803FB87aBd4aaC3cbB3fAd7C3aa01f6F3FB207",Moonbeam:"0xab3f0245B83feB11d15AAffeFD7AD465a59817eD",Solana:"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs",Sui:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN",Aptos:"0xcc8a89c8dce9693d354449f1f73e60e14e347417854f029db5bc8e7454008abb::coin::T",Base:"0x71b35ECb35104773537f849FBC353F81303A5860",Arbitrum:"0xD8369C2EDA18dD6518eABb1F85BD60606dEb39Ec",Optimism:"0xb47bC3ed6D70F04fe759b2529c9bc7377889678f",Blast:"0xC09a79fCF76ab2917c685896E3693e04EEbab69C",Mantle:"0x115Fcc627AcE0457fbeb7Af3b8BcAcE7Ff6211A4",Klaytn:"0x98A8345bB9D3DDa9D808Ca1c9142a28F6b0430E1",Worldchain:"0x6938c3EfFEf84E5C69e3d7cc41eBC6Cff99EF8A7"},"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48":{Bsc:"0xB04906e95AB5D797aDA81508115611fee694c2b3",Polygon:"0x4318CB63A2b8edf2De971E2F17F77097e499459D",Avalanche:"0xB24CA28D4e2742907115fECda335b40dbda07a4C",Fantom:"0x2Ec752329c3EB419136ca5e4432Aa2CDb1eA23e6",Celo:"0x37f750B7cC259A2f741AF45294f6a16572CF5cAd",Moonbeam:"0x931715FEE2d06333043d11F658C8CE934aC61D0c",Solana:"A9mUU4qviSctJVPJdBJWkb28deg915LYJKrzQ19ji3FM",Sui:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",Aptos:"0x5e156f1207d0ebfa19a9eeff00d62a282278fb8719f4fab3a586a0a2c0fffbea::coin::T",Base:"0xec267C53f53807c2337C257f8AC3Fc3cC07cc0ed",Arbitrum:"0xC96F2715E2a242d50D1b0bC923dbe1740b8eCf18",Optimism:"0x711e53D031ea9B0bb0C24dD506df11b41AEA419e",Klaytn:"0x608792Deb376CCE1c9FA4D0E6B7b44f507CfFa6A",Worldchain:"0x2cbD3491d687A76bb9C53c30B212855520D47b52"},"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599":{Bsc:"0x43359676E1A3F9FbB5de095333f8e9c1B46dFA44",Polygon:"0x5D49c278340655B56609FdF8976eb0612aF3a0C3",Avalanche:"0x1C0e79C5292c59bbC13C9F9f209D204cf4d65aD6",Fantom:"0x87e9E225aD8a0755B9958fd95BE43DD6A91FF3A7",Celo:"0xd71Ffd0940c920786eC4DbB5A12306669b5b81EF",Moonbeam:"0xE57eBd2d67B462E9926e04a8e33f01cD0D64346D",Solana:"3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh",Sui:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881::coin::COIN",Aptos:"0xae478ff7d83ed072dbc5e264250e67ef58f57c99d89b447efd8a0a2e8b2be76e::coin::T",Base:"0xE6396f780b543dF16ee3b784D789c75B68319db0",Arbitrum:"0x397846a8078d4845c7f5c6Ca76aeBbcFDc044fAe",Optimism:"0xB214C19d81c99E75e84706a3aa0A757319023e26",Klaytn:"0x981846bE8d2d697f4dfeF6689a161A25FfbAb8F9",Worldchain:"0x06c9ec7E18A7900E79Ad5BeCc6Cc29E3eebD81EC"},"0xdAC17F958D2ee523a2206206994597C13D831ec7":{Bsc:"0x524bC91Dc82d6b90EF29F76A3ECAaBAffFD490Bc",Polygon:"0x9417669fBF23357D2774e9D421307bd5eA1006d2",Avalanche:"0x9d228444FC4B7E15A2C481b48E10247A03351FD8",Fantom:"0x14BCb86aEed6a74D3452550a25D37f1c30AA0A66",Celo:"0x617f3112bf5397D0467D315cC709EF968D9ba546",Moonbeam:"0xc30E9cA94CF52f3Bf5692aaCF81353a27052c46f",Solana:"Dn4noZ5jgGfkntzcQSUZ8czkreiZ1ForXYoV2H8Dm7S1",Sui:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN",Aptos:"0xa2eda21a58856fda86451436513b867c97eecb4ba099da5775520e0f7492e852::coin::T",Base:"0xFf0C62A4979400841eFaA6faADb07Ac7d5C98b27",Arbitrum:"0xE4728F3E48E94C6DA2B53610E677cc241DAFB134",Optimism:"0xf6B4185FCf8aF291c0E3927fbEab7046b4f6A8CA",Blast:"0x37C1dea9C51864cc6640FA9c09f4dac574b8285E",Klaytn:"0x5C13E303a62Fc5DEdf5B52D66873f2E59fEdADC2",Xlayer:"0x5866709f926f26C5870191F40333ac462B917bC0",Worldchain:"0x95dd0680Fd6B6c7546e75C1A4E6A3256072C0593"},"0x6B175474E89094C44Da98b954EedeAC495271d0F":{Bsc:"0x3413a030EF81a3dD5a302F4B4D11d911e12ed337",Polygon:"0x732EB1747ecCFC431fF19bc359ffc83755B1918c",Avalanche:"0xca319f81D147559e19A522A0a0310Dd43A96cA0F",Fantom:"0xEE786D3D73Ea645365c7248E4e40eDba08B1169F",Celo:"0x97926a82930bb7B33178E3c2f4ED1BFDc91A9FBF",Moonbeam:"0x06e605775296e851FF43b4dAa541Bb0984E9D6fD",Solana:"EjmyN6qEC1Tf1JxiG1ae7UTJhUxSwk1TCWNWqxWV4J6o",Aptos:"0x407a220699982ebb514568d007938d2447d33667e4418372ffec1ddb24491b6c::coin::T",Base:"0x617Edadb51BfB43A44Bb91C7402129C23bA52381",Arbitrum:"0x5c4f2FEFB97F7DF09E762d95C83f0Ccf8bCe8234",Optimism:"0x098EA47D630b46df1E08e389e5e4466119c7dd30",Blast:"0x286ebE2BacB0EBeF746DBDA24dED0fc001c6d0F6",Sui:"0xc01c54cd767a60835bf100b0a8f7aae66ac9f4e374f76746af60f02493b6f2cf::coin::COIN",Klaytn:"0xCB2C7998696Ef7a582dFD0aAFadCd008D03E791A",Worldchain:"0x69635e59E89000e08a13C3F7B9f7293160Dc83a2"},"0x4Fabb145d64652a948d72533023f6E7A623C7C53":{Bsc:"0x035de3679E692C471072d1A09bEb9298fBB2BD31",Polygon:"0x95ea750420da26bE1Ab0891e209e921bCd84763f",Celo:"0x1dd42c0785ca90B677adc2ABad01dfc5ECcD0b4d",Moonbeam:"0xa2284e1F98E4d0B7Eb6a6b4f3C57f1b209C755F3",Solana:"33fsBLA8djQm82RpHmE3SuVrPGtZBWNYExsEUeKX1HXX",Aptos:"0x77400d2f56a01bad2d7c8c6fa282f62647ce3c03f43f2a8742e47ea01a91e24a::coin::T",Worldchain:"0x276719Fc6a38E62B717c6FF6E39d1C336ee633AB"},"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0":{Polygon:"0xe082a7Fc696De18172Ad08D956569Ee80BC37f06",Solana:"ZScHuTtqZukUrtZS43teTKGs2VqkKL8k4QCouR2n6Uo",Arbitrum:"0xf2717122Dfdbe988ae811E7eFB157aAa07Ff9D0F",Optimism:"0x855CFcEEe998c8ca34F9c914F584AbF72dC88B87",Base:"0xEd4e2FD35161c3c0e33cA187fce64C70d44Ce32b",Bsc:"0xad80E1A9B5824234afA9dE1F3bbDb8a994796169",Avalanche:"0x11449fd2F05D93827972b40adE96F6ffBE42E35a",Fantom:"0x2a2Ec6Ad3e47C536F47934F63b95BD647F1C730E",Worldchain:"0xd977e0251db8d38155dC5d212944AB7B7a6777Ad"}},Polygon:{"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270":{Ethereum:"0x7c9f4C87d911613Fe9ca58b579f737911AAD2D43",Bsc:"0xc836d8dC361E44DbE64c4862D55BA041F88Ddd39",Avalanche:"0xf2f13f0B7008ab2FA4A2418F4ccC3684E49D20Eb",Fantom:"0xb88A6064B1F3FF5B9AE4A82fFD52560b0dF9FBD3",Celo:"0x9C234706292b1144133ED509ccc5B3CD193BF712",Moonbeam:"0x82DbDa803bb52434B1f4F41A6F0Acb1242A7dFa3",Solana:"Gz7VkD4MacbEB6yC5XD3HcumEiYx2EtDYYrfikGsvopG",Sui:"0xdbe380b13a6d0f5cdedd58de8f04625263f113b3f9db32b3e1983f49e2841676::coin::COIN",Aptos:"0x6781088e2a1629d38eda521467af4a8ca7bfa7e5516338017940389595c85c0f::coin::T",Base:"0xc863399E5c5C4011B1DC3fB602902C77BA72B709",Arbitrum:"0x3ab0E28C3F56616aD7061b4db38aE337E3809AEA",Optimism:"0x8f02B6a32cebcAe44D2Fd17d87966f5B5dD14c6d",Blast:"0xE00CB9206aCF0413aa9Dc12F01A22BB5Dd7A2866",Mantle:"0x1d15Dc3B3DB5A182eA8E3091F21EB0549d4a72E0",Klaytn:"0x9858e5A4f8202baD619D4BD39382CA67F4CA0E63",Scroll:"0x982D057feCD66c3af27b16EBC67C4db24810bcD8",Xlayer:"0xc97E2b2d7730C34adC389563721d9dF52EDA4A2a",Worldchain:"0xDcB507ECEA06724d8c4F2f03964f7EE4da504E8C"},"0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619":{Bsc:"0x1384284E16e3375522Be54F50909Bc52A69e90e4",Solana:"DQyeU3oFezEGia761GQ4iPcMCnxnH8fuLrmHZUvTYuby",Aptos:"0x2692323828f627a45a75a05eba8281dd46690c538b4f6ccb7a35ffe8199a28b7::coin::T",Sui:"0xa1ed6e76b06ff8f959cc479fbbd423820a3349dad8707b98ff4309c677fa20ad::coin::COIN",Arbitrum:"0xd2b299eD76d1369Ac8762CFEc85245fFD302FC17",Ethereum:"0x32d222E1f6386B3dF7065d639870bE0ef76D3599",Avalanche:"0x061FE51530768889dc20Ac7fCD29b5307b823395",Optimism:"0x2740220fFa4b206280907ce12b7cDC57445f3B92",Fantom:"0x1cAFd8d3301E4E54Fc1462E7117Eb678bF50C765",Base:"0x7A79923734eDA9c7f7ff69ad9ec1e234F67E7CD6",Moonbeam:"0xf1BB9A987B9edC360580b0c9F28069C808c2a7da",Celo:"0x8Ed68859f162970258992168293232e3Bdd987d0",Klaytn:"0x3eb25C7098AC38a852Cd2366161c5e216af50Df3"},"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359":{Aptos:"0xc5fd7820e9f053e6dd8e7dd8ca3ce8e9b10d200ba1692bdeb7a035217180ad4a::coin::T",Base:"0xFe1579BAc60363c8572CB30Bf4DD1Fd85811BBF8",Moonbeam:"0x4415BfBDee669446550d55c749007EF60B520FC8",Sui:"0x5c8c9082401982e8c2519a5c12883a5475295bf5cec4a0a13c26d35dd9a20d73::coin::COIN",Bsc:"0xe6d82Bbe75041E42E51d755e922cE1BA91af9c4d",Celo:"0x42c76808f3179A091Ee007A2955aF2522978ADE7",Fantom:"0xB4DcfD221048a1Dad989D39456BBd87762c26F06",Avalanche:"0xDb2d08f5A9C9ADBBA0DE5a69bbB1E9Ca03411692",Arbitrum:"0x599ADB10E6A012dF34935D47407450f6D7170e3C",Optimism:"0xbB1EaB9Eb8fDf65F0E291D013DA07B4b65a27a01",Solana:"C321jHPwWBzgfSGndosDTp5pBsiXPyMU1irxKLVcedRB",Ethereum:"0xFbcE0f9e92AD1003e893Ba647bC055D845aAa507",Klaytn:"0x59AEaD999e018a00B162D34de7a81AFFAB88bAbB"},"0x03b54A6e9a984069379fae1a4fC4dBAE93B3bCCD":{Base:"0xcB6D47199d60747152d7671D6497ce8D23cc1D75",Arbitrum:"0x23D3901A635fDd98D8d6509bc0720281f80a8E6D",Ethereum:"0x302F636d723c8Ed75C0d1E9D9C714009184C5624",Optimism:"0x4fad81d2268a7D9E1e0fE7dB38af07FFFA0aA56E",Celo:"0xA4c7302659eCF88a90e62e915Bd486E66B616A4C"}},Bsc:{"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c":{Ethereum:"0x418D75f65a02b3D53B2418FB8E1fe493759c7605",Polygon:"0xeCDCB5B88F8e3C15f95c720C51c71c9E2080525d",Avalanche:"0x442F7f22b1EE2c842bEAFf52880d4573E9201158",Fantom:"0xc033551e05907Ddd643AE14b6D4a9CA72BfF509B",Celo:"0xBf2554ce8A4D1351AFeB1aC3E5545AaF7591042d",Moonbeam:"0xE3b841C3f96e647E6dc01b468d6D0AD3562a9eeb",Solana:"9gP2kCy3wA1ctvYWQk75guqXuHfrEomqydHLtcTCqiLa",Sui:"0xb848cce11ef3a8f62eccea6eb5b35a12c4c2b1ee1af7755d02d7bd6218e8226f::coin::COIN",Aptos:"0x6312bc0a484bc4e37013befc9949df2d7c8a78e01c6fe14a34018449d136ba86::coin::T",Base:"0x7fdAa50d7399ac436943028edA6ed9a1BD89509f",Arbitrum:"0x7AF00405916D823eDb1121546EfA6F4972B51b84",Optimism:"0x6A09fE65ACa27C12573F04aAFa290bD75497E1BC",Blast:"0xdcd0Ec817d3ae2E82bCE8Cc9f92fFA7686A52160",Mantle:"0x9a7E85260d6F5d3c3d2a1FdDc3D980DBC78e508d",Klaytn:"0xaC9C1E4787139aF4c751B1C0fadfb513C44Ed833",Scroll:"0x5b0da0a36DC415714B53A4f24b56921332F42E7C",Xlayer:"0x8bC46166E06122603bA10D2bCA63b75091c25cAe",Worldchain:"0x59163d9c70E9b3852a504c5F1458e2daD33516Ff"},"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d":{Ethereum:"0x7cd167B101D2808Cfd2C45d17b2E7EA9F46b74B6",Polygon:"0x4B3a922c773BDCF3BA8f1A4FDAc2029E1D0E9868",Avalanche:"0x6145E8a910aE937913426BF32De2b26039728ACF",Fantom:"0x0FcbDAC44c67A43607D3E95886dB19871ADc985F",Celo:"0x9d9abAE97a9344e3854527b4efbB366a1564bfEb",Moonbeam:"0x7f433E22366E03a3758CE22cCf82887d828078f8",Solana:"FCqfQSujuPxy6V42UvafBhsysWtEq1vhjfMN1PUbgaxA",Sui:"0x909cba62ce96d54de25bec9502de5ca7b4f28901747bbf96b76c2e63ec5f1cba::coin::COIN",Aptos:"0x79a6ed7a0607fdad2d18d67d1a0e552d4b09ebce5951f1e5c851732c02437595::coin::T",Base:"0x68E2b07F92ed506f92935d7359ECA84D5342dbb4",Arbitrum:"0x1a0590F951bc9C3818Ce75ba5Bbe92831b2cf57e",Optimism:"0x1C15057d1F3794C934a6cBC1f7EceE934050F219",Klaytn:"0x01B342d26FEF5749E87CBe412e16163771b0277c"},"0x2170Ed0880ac9A755fd29B2688956BD959F933F8":{Aptos:"0xd9fc4259ec5def95477dba9f0861c2882d1f8bee9a4138b476dd0720a3444547::coin::T",Solana:"FzjTz2cD1DfqYvafrbHWZvf1dK9qjwXGLuaU7xYXQjxP",Sui:"0x5029d5a94429a73b8036cd67192d9c5e09bbc2c0fee942d50075a9edba66744f::coin::COIN",Base:"0xf50509Bb6aF76E20c6E1eD493699c5f70764BcCC",Arbitrum:"0x6478377A399bE8c92bD35254aA7bF287836de32e",Ethereum:"0x5DbBB101CDc29443d12055eCDDdD7ca037Dce721",Fantom:"0xc511E3aec79CABD605021C237c475Ec553B002d4",Celo:"0x09F236D3708894581b1Cf679e582ba9eA5BE16f0",Klaytn:"0x4C07075BB44076106f3389766946b79784Fb5C58",Avalanche:"0xf0e509144CfA602d0A5e8C75d76FF74077f52f2b",Optimism:"0x8088Bc767c392b5769b94c9ec1D07c62874c8d5f",Polygon:"0x2D291e940DbDdaa9E847Ba5cC49451575f086b27",Moonbeam:"0xBefd7902B682938b29B3FD3D4AdECD9A984D5930"}},Avalanche:{"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7":{Ethereum:"0x85f138bfEE4ef8e540890CFb48F620571d67Eda3",Bsc:"0x96412902aa9aFf61E13f085e70D3152C6ef2a817",Polygon:"0x7Bb11E7f8b10E9e571E5d8Eace04735fDFB2358a",Fantom:"0x358CE030DC6116Cc296E8B9F002728e65459C146",Celo:"0xFFdb274b4909fC2efE26C8e4Ddc9fe91963cAA4d",Moonbeam:"0xd4937A95BeC789CC1AE1640714C61c160279B22F",Solana:"KgV1GvrHQmRBY8sHQQeUKwTm2r2h8t4C8qt12Cw1HVE",Sui:"0x1e8b532cca6569cab9f9b9ebc73f8c13885012ade714729aa3b450e0339ac766::coin::COIN",Aptos:"0x5b1bbc25524d41b17a95dac402cf2f584f56400bf5cc06b53c36b331b1ec6e8f::coin::T",Base:"0xc449A60A31E1eebFE83c42E9465fd4Dc318aE9a7",Arbitrum:"0x565609fAF65B92F7be02468acF86f8979423e514",Optimism:"0x8418C1d909842f458c9394886b83F19d62bF1A0D",Blast:"0x7D86F00026c2cD8137D60ae85d53c5E5a15B2481",Mantle:"0x2cAb4233d42043AEBbbb1445af362Ef686f3C133",Klaytn:"0x45830b92443a8f750247da2A76C85c70d0f1EBF3",Scroll:"0xC043c8A3672f397e7b52bF0a04F47d6f1aA952Ed",Xlayer:"0x5208Fb676B2DBab7aFaFB56e8997237F0ceECF71",Worldchain:"0x5Bf2A0622aa1254D963A3074b593A379784C116a"},"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E":{Ethereum:"0x39EbF69137D98FB7659Ef8D4ea21ec26394389d7",Bsc:"0xc88Dc63bf0c8c8198C97Db0945E3eF25Ca89A8e4",Polygon:"0xAEA5CC14DefbC1b845FDE729E563B717Ee6825ae",Fantom:"0xEfE7701cb2B80664385Be226d0300912CA92f66A",Celo:"0x62FFf2D2D1692D52eAf043AeeC727F7918d269D3",Moonbeam:"0xd4918c40cA9f02d42Cb53d06587aF42017Bc345D",Solana:"FHfba3ov5P3RjaiLVgh8FTv4oirxQDoVXuoUUDvHuXax",Sui:"0xe596782fbaebef51ae99ffac8731aed98a80642b9dc193ed659c97fbc2cc0f84::coin::COIN",Aptos:"0x39d84c2af3b0c9895b45d4da098049e382c451ba63bec0ce0396ff7af4bb5dff::coin::T",Arbitrum:"0x93e0FcbEd43CD6fC30DF00CcBD4669718dc74e77",Optimism:"0x355f0a8a7ecAeD971b8Fbd50994558291ff2413a",Base:"0xD83385fE100E20c269a5975D4Bf92525BcE09F87",Blast:"0x3Db095413b5e1e5681c48028e31e8dc2505D8aD3",Klaytn:"0x9C97D4c09679Dfd00A39681f6d3b61A285312B13",Scroll:"0xbEFc3d0457fB88f82364Dd982F7BA195FEE96b74"},"0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB":{Aptos:"0x25ff8e0c07552c392c9e5dd4c9c07cf0382765c1bca560e80b6296a702034219::coin::T",Solana:"F9B9qLwUN3TAWGV9EGsuzFzS2PxWvKAmLhvfeqYNaS7J",Bsc:"0xBDfe278268524de38Da89B3023C1F49deBDFdA8A",Sui:"0xc1ea686a329e35808c61484d95904d50522f1d1616cab4b416d9cfa9b274bc6c::coin::COIN",Base:"0xEfe64b52bc0bDfa109790736F25cefb79724adF0",Arbitrum:"0xdF64fB41b7f45304a786695E0D5daD8d033C01eF",Polygon:"0x2912b3a9586Fc2AB177dC869e878c688DAA7d06E",Ethereum:"0xD85a87Edbe9fB3Baf6a1Bbd1E46f1C04B291331d",Optimism:"0xBe6EA3e70e2bbB0dbD093B657fbbc0DFF0BA67eC",Moonbeam:"0x9C673c6b651D6FDEF57441125A6AC16b08bba939",Celo:"0xDac2C97b5E64d7C79d040cd2906EBe02341F1Ab5",Klaytn:"0x9971F9d9170D787C4e4E01c56E1BDB308291CacF",Fantom:"0x86a09597fc91b116511B990D29CB46ddedC0fCb0"}},Fantom:{"0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83":{Ethereum:"0x4cD2690d86284e044cb63E60F1EB218a825a7e92",Bsc:"0xbF8413EE8612E0E4f66Aa63B5ebE27f3C5883d47",Polygon:"0x3726831304D77f585f1Aca9d9841cc3Ef80dAa62",Avalanche:"0xd19abc09B7b36F7558929b97a866f499a26c2f83",Celo:"0xd1A342eE2210238233a347FEd61EE7Faf9f251ce",Moonbeam:"0x609AedD990bf45926bca9E4eE988b4Fb98587D3A",Solana:"DRQBDBEWmwWGK13fRTLhSPzjbvMSUavhV6nW4RUH8W6T",Sui:"0x6081300950a4f1e2081580e919c210436a1bed49080502834950d31ee55a2396::coin::COIN",Aptos:"0xd1aa2ff36a0e93e1b4e4fecdecf8bb95bc5de399061c5e84b515281f48718842::coin::T",Base:"0x936Fa2DE8380Dc5BF34C80F1BaD53a9f3630263B",Arbitrum:"0x7f7dcDb91930033a4Eb269196EBb6fd5f0644E4B",Optimism:"0x0b0ecbe5C3995541876d27633B63296570FB34Af",Blast:"0xf1D0eEeB6B6B35dc7289E1AD5e523F68b82bd09A",Mantle:"0x6BFDc59ECBC5503aE16F71851064597D0a75dA76",Klaytn:"0xF3AebeA789F30C22F3657F70f4CaA0f8b49ed676",Scroll:"0x16f077e2e9bF99Adfb1FEEc8360ee002842C44A2",Xlayer:"0x956b5E88c311b976C76CB415C7E030A5Af87373b"},"0x2F733095B80A04b38b0D10cC884524a3d09b836a":{Bsc:"0x521af8b1c43B503BE91F542d82EEFEabc0C93340",Arbitrum:"0xF68734163731ad6A6108f76A8e09862C1d412B42",Ethereum:"0xfcC349c14013EdeFAAcAE09Ba30F4ef2571b8D2c"}},Celo:{"0x471EcE3750Da237f93B8E339c536989b8978a438":{Ethereum:"0x3294395e62F4eB6aF3f1Fcf89f5602D90Fb3Ef69",Bsc:"0x2A335e327a55b177f5B40132fEC5D7298aa0D7e6",Polygon:"0x922F49a9911effc034eE756196E59BE7b90D43b3",Avalanche:"0x494317B8521c5a5287a06DEE467dd6fe285dA4a8",Fantom:"0xF432490C6c96C9d3bF523a499a1CEaFd8208A373",Moonbeam:"0xc1a792041985F65c17Eb65E66E254DC879CF380b",Solana:"9kvAcwQbqejuJMd59mKuw2bfSsLRaQ7zuvaTVHEeBBec",Sui:"0xa198f3be41cda8c07b3bf3fee02263526e535d682499806979a111e88a5a8d0f::coin::COIN",Aptos:"0xac0c3c35d50f6ef00e3b4db6998732fe9ed6331384925fe8ec95fcd7745a9112::coin::T",Base:"0x74df3823aA29D278cAD0A3632fCB56C896a38eD4",Arbitrum:"0x4E51aC49bC5e2d87e0EF713E9e5AB2D71EF4F336",Optimism:"0x9b88D293b7a791E40d36A39765FFd5A1B9b5c349",Blast:"0x75345Cc6a3333cca03aCE2a28C7de328122Db3b1",Klaytn:"0xB2b5bC9bc872c7107CBC8E8e0E2805Db0ac4FBc2",Worldchain:"0x2250A0E2532A745b585B69dd2CdC75207384917c"}},Moonbeam:{"0xAcc15dC74880C9944775448304B263D191c6077F":{Ethereum:"0x93d3696A9F879b331f40CB5059e37015423A3Bd0",Bsc:"0x1C063db3c621BF901FC6C1D03328b08b2F9bbfba",Polygon:"0xcC48d6CF842083fEc0E01d913fB964b585975F05",Avalanche:"0x375aA6C67BF499fBf01804A9f92C03c0776F372d",Fantom:"0xBF227E92D6754EB4BFE26C40cb299ff2809Da45f",Celo:"0x383A5513AbE4Fe36e0E00d484F710148E348Aa9D",Solana:"7ixSaXGsHAFy34wogPk2YXiUX3BMmQMFdercdaHLnBby",Sui:"0x66f87084e49c38f76502d17f87d17f943f183bb94117561eb573e075fdc5ff75::coin::COIN",Aptos:"0x7ab1283a7b13c4254d4e1f803d7ce6578442c1d7a40d0faee41cd48ba4884c8a::coin::T",Base:"0xfdB7311BeC3b2CcCF8407d0585f81B97b3b5eff1",Arbitrum:"0x944C5b67a03e6Cb93Ae1E4B70081f13b04CDB6Bd",Optimism:"0xbffD46DFDb8d3a02b8D2E0F864a2cD712090a4D3",Blast:"0x43E43580A34c8FdD4694e1F9B5F9b1121a7044a5",Klaytn:"0x52a4558f98dDc7cb40cd9114C005f0B9571258Fc",Scroll:"0x2Aba1Ed24EaFC17F801b1A7dF1c3a06737F8aB72",Xlayer:"0xE2a44Dad57004517738FbD84cdf09Bd1451b4e43",Worldchain:"0xaAe2Bd4EB640f02dD3a53bd994ad19110b4191b0"}},Solana:{So11111111111111111111111111111111111111112:{Ethereum:"0xD31a59c85aE9D8edEFeC411D448f90841571b89c",Bsc:"0xfA54fF1a158B5189Ebba6ae130CEd6bbd3aEA76e",Polygon:"0xd93f7E271cB87c23AaA73edC008A79646d1F9912",Avalanche:"0xFE6B19286885a4F7F55AdAD09C3Cd1f906D2478F",Fantom:"0xd99021C2A33e4Cf243010539c9e9b7c52E0236c1",Celo:"0x4581E64115d46CcdeE65Be2336bEc86c9BA54C01",Moonbeam:"0x99Fec54a5Ad36D50A4Bba3a41CAB983a5BB86A7d",Sui:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8::coin::COIN",Aptos:"0xdd89c0e695df0692205912fb69fc290418bed0dbe6e4573d744a6d5e6bab6c13::coin::T",Base:"0x1C61629598e4a901136a81BC138E5828dc150d67",Arbitrum:"0x2bcC6D6CdBbDC0a4071e48bb3B969b06B3330c07",Optimism:"0xba1Cf949c382A32a09A17B2AdF3587fc7fA664f1",Blast:"0xA5370b8e2413b23eA16F3B78D1d1ba3969678227",Mantle:"0xDA03239f428c76A527e1ceCa0ecA6cC367A2D945",Klaytn:"0xfAA03A2AC2d1B8481Ec3fF44A0152eA818340e6d",Xlayer:"0x3a859D92da2E16Ad32C5C6F3ADAddFBa4dE3A47e",Scroll:"0xCDf95E1F720caade4b1DC83ABfE15400D2a458AD",Worldchain:"0xEfae32D1c15EDBaEA3ebdDe1e2C51003AED04d30"},EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:{Ethereum:"0x41f7B8b9b897276b7AAE926a9016935280b44E97",Bsc:"0x91Ca579B0D47E5cfD5D0862c21D5659d39C8eCf0",Polygon:"0x576Cf361711cd940CD9C397BB98C4C896cBd38De",Avalanche:"0x0950Fc1AD509358dAeaD5eB8020a3c7d8b43b9DA",Fantom:"0xb8398DA4FB3BC4306B9D9d9d13d9573e7d0E299f",Celo:"0x8B6eef6C449D3Ac723a9C06a9eaE2dCd7d308BA9",Moonbeam:"0x098d6eE48341D6a0a0A72dE5baaF80A10E0F6082",Sui:"0xb231fcda8bbddb31f2ef02e6161444aec64a514e2c89279584ac9806ce9cf037::coin::COIN",Aptos:"0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T",Arbitrum:"0x3870546cfd600ba87e4180686d29dC993A45d3B7",Optimism:"0x6F974A6dfD5B166731704Be226795901c45Bb815",Base:"0xe8CE40EBBB844142400D21558a2F1c9683d69139",Klaytn:"0xa1a7feeD29EbFa38079D943486c23f401939Ce80",Scroll:"0x883Ccb5aEfD0084f1e4D04b133675acd6D5F123F"},HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3:{Aptos:"0x770211b47954e15bec1a4271bf33bacebc2d2adb43b7dc1ca45efa787615dd4c::coin::T",Bsc:"0xb0188B0bb2cD4a6D2744637fC83C94a284B247Da",Base:"0x4c5d8A75F3762c1561D96f177694f67378705E98",Celo:"0x985aa4814419ba338379A634785216301e51113D",Avalanche:"0x8A0691e602B7a5FCc51a27E4a08376dE50889B42",Polygon:"0xFa4B761A1e07909Ba31331a5dfa12390E3ff5583",Fantom:"0x77ad3B2dA29FBd208F12c3C701E969F4422aAD79",Optimism:"0x99C59ACeBFEF3BBFB7129DC90D1a11DB0E91187f",Ethereum:"0xeFc0CED4B3D536103e76a1c4c74F0385C8F4Bdd3",Arbitrum:"0xE4D5c6aE46ADFAF04313081e8C0052A30b6Dd724",Sui:"0x9c6d76eb273e6b5ba2ec8d708b7fa336a5531f6be59f326b5be8d4d8b12348a4::coin::COIN",Moonbeam:"0x27cc3FDbDD1F415b09a41232D0fD71345DAB8030",Xlayer:"0x057b766b3fB76527cf815c3b5C38Dfa8144335CF",Worldchain:"0x838f3045F3B2dcDFF8cB4e5CaB0c0092A69B790a"}},Sui:{native:{Ethereum:"0x84074EA631dEc7a4edcD5303d164D5dEa4c653D6",Bsc:"0x8314f6Bf1B4dd8604A0fC33C84F9AF2fc07AABC8",Polygon:"0x34bE049fEbfc6C64Ffd82Da08a8931A9a45f2cc8",Avalanche:"0x1703CB0F762D2a435199B64Ea47E5349B7C17480",Fantom:"0xC277423a21F6e32D886BF85Ef6cCB945d5D28347",Celo:"0x1Cb9859B1A16A67ef83A0c7b9A21eeC17d9a97Dc",Moonbeam:"0x484eCCE6775143D3335Ed2C7bCB22151C53B9F49",Solana:"G1vJEgzepqhnVu35BN4jrkv3wVwkujYWFFCxhbEZ1CZr",Aptos:"0xa72a97e872be9ee3d2f14d56fd511eb7e4a53f4055be3a267d8602e7685b41c0::coin::T",Base:"0x36c6FBF7B49bF65f5F82b674af219C05b2a4aDD1",Arbitrum:"0xCF79d86B8a830030aF6D835737d6eac3bE823fD7",Optimism:"0x27A533e438892DA192725b4C9AcA51447F457212",Mantle:"0x9ef1BB6072d7d6B9C935d9c040133036aD532119",Blast:"0x62c95Ffd6d2f893Ea2EF072d1EbBcb242a974b1A",Klaytn:"0xB0B40516293e0204fB376A18aA230A210cbE0305",Xlayer:"0xEa76dBFE6e449420f294e74E057518F750E99A16",Worldchain:"0xf69005c35B5d9AcC22E4DbCf52f892cAE21F83B0"}},Aptos:{native:{Ethereum:"0x8CDf7AF57E4c8B930e1B23c477c22f076530585e",Bsc:"0x2Ba98cf7Edd2c5C794e21bc3Dc6973D3C2585eE3",Polygon:"0xa4ef199d3ad524E9C3C51Ac46B303B103A307Cef",Avalanche:"0x43c588459b3243fA541B98CC4B2E995b3de553A2",Fantom:"0x3Cd9162Ca5256b8E26A0e3Ad14CCfF7C0Da0F174",Celo:"0x89F2b718Ca518db39d377F0ABBa6B42582b549F7",Moonbeam:"0x25331575641d35D9765e1934acC8F0991c58e904",Solana:"6LNeTYMqtNm1pBFN8PfhQaoLyegAH8GD32WmHU9erXKN",Sui:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37::coin::COIN",Base:"0x1d36126289Be1658297A35CC3EB2BB80A7D7A04b",Arbitrum:"0x4EdeF400eDe5309240814b5FC403F224504604e9",Optimism:"0xC5B3AC2DF8D8D7AC851F763a5b3Ff23B4A696d59",Blast:"0x2a3DdE20159FbDbC86f1da0e7a462711b610c815",Klaytn:"0x68d5254007BE3a6d3d2A37e2C1ad3921D049F46D",Xlayer:"0xEdF2AEaCE382A3c0722f110c4927d34b78bce34F",Worldchain:"0xfC5011f2037f2Dad9c9aC05CbB6749B383C3099c"}},Arbitrum:{"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1":{Ethereum:"0xb945E3F853B5f8033C8513Cf3cE9F8AD9beBB1c9",Bsc:"0xaA1eEdABC48D078350ccBdD620bD088848e299E5",Polygon:"0x6a5c59AB16268d2c872916054C50440B999e417C",Avalanche:"0xDfDA518A1612030536bD77Fd67eAcbe90dDC52Ab",Fantom:"0xE8367853A0823515D37b1538331B4704089becb4",Celo:"0xc6F962fCcb140ece554AfD0E589f971532A57f14",Solana:"CSD6JQMvLi46psjHdpfFdr826mF336pEVMJgjwcoS1m4",Sui:"0x33744e7df340a4d01c23f6b18c13563f767545ea95f976f8045f056358419da3::coin::COIN",Aptos:"0xe977796d7bfb3263609b90dffd264c7bd078ce35dac42b55302858d9fa3452b::coin::T",Base:"0x9D36e0edb8BBaBeec5edE8a218dc2B9a6Fce494F",Optimism:"0x825206E1D29456337769e6f1384101E997C6A732",Moonbeam:"0x18872b45c603eD2EbC508b9C5514a85c2e2791FB",Klaytn:"0x3CF1751E32c4225CB12ba953786C260C2cE89008"},"0xaf88d065e77c8cC2239327C5EDb3A432268e5831":{Ethereum:"0xCFc006a32a98031C2338BF9d5ff8ED2c0Cae4a9e",Bsc:"0x5caa170b465122D15a6D20FD9A804a9613CE7882",Polygon:"0x7800FE8951cdc1cDea748d878fAce63018D97960",Avalanche:"0x4b5fE357Eb11c735078e47526D6e853DBff18541",Celo:"0xA41a62567d9eb960D84b72663FdaeBE0BCdE2683",Solana:"CR4xnGrhsu1fWNPoX4KbTUUtqGMF3mzRLfj4S6YEs1Yo",Sui:"0xc3f8927de33d3deb52c282a836082a413bc73c6ee0bd4d7ec7e3b6b4c28e9abf::coin::COIN",Aptos:"0xca3a2c28bc8c6c762f752dd2a4ebbfd00356ca99977ce6636e3af5897124a87a::coin::T",Optimism:"0xa6252F56cc6eEA21165d56744C795F91c8a3Cf68",Base:"0xb96B82Cd6D45d98Fb6897D16A5E4EE888329C513",Fantom:"0x2228703672906fEe5eD681Ec28e42B4506b8c336",Moonbeam:"0xbd2B6D665439514EEaA8519f4fE87CC8C46e9167",Klaytn:"0x3d5973fF7288f47857dAa5a32C53976A9A968928",Xlayer:"0xd53bD30985B4125fc561774e388d9f679BB84117"},"0x5979D7b546E38E414F7E9822514be443A4800529":{Bsc:"0x159167e842C586a81f02E55bc043AC8EdB033E0b",Aptos:"0xd2ca17516bc4ca57c1c69577e0c9cc0129153286695b46b97f438ecc138c225e::coin::T",Solana:"8wJakbZuv7WApfHmRo2sdkeQfu6hXqfEqjb7BYXDKpKe",Sui:"0xb607aed1c09e676384d14ae638dbcb08523fc691d309e71c856c7fdcb60d4430::coin::COIN",Base:"0xbE3981b37CcE5eCb6925d2ad9D9E28dE7b165793",Optimism:"0xEae5ccc3c36beF59f6794b467e7e228CB3720415",Fantom:"0xf65BF40A3299Df500D440520dF7e6ce1BEa53E73",Ethereum:"0x906310cE867C22c5016248Bd791FA5dd162c9D6d",Polygon:"0xcf0aa97c2fD78Ee0f0C3090B9EB65d2bd6C1D81a"}},Optimism:{"0x4200000000000000000000000000000000000006":{Fantom:"0xe8E8f941377A955bFA72880ec0dc2319dbC827a8",Celo:"0x8d53771b1Ec7461f8e45Bca2609c45bC0bbd0677",Solana:"8M6d63oL7dvMZ1gNbgGe3h8afMSWJEKEhtPTFM2u8h3c",Sui:"0x0aab14ec22908de73d1b0619f5e03842398f8e68262981bd35ef44b42d22b23a::coin::COIN",Aptos:"0x6a7a7f36ef5e2d0e65fcf72669c20d514d68298b0f76c7554517208f73260aaf::coin::T",Arbitrum:"0xB1fC645a86fB5085e12D8BDDb77702F728D2A26F",Avalanche:"0xDf11535274c0FD2Fe41A88bd1bBF802D72296037",Bsc:"0x94AEc09B5e2CE591e39DC6aa58A3A6E85Ed45265",Ethereum:"0x8B5653Ae095529155462eDa8CF664eD96773F557",Polygon:"0x8182De59485Bb646542Db8C7E5958148Dc699319",Base:"0xCb725aC8d9985D3bE306Dd9e1517d3702929176c",Moonbeam:"0xd4870F7F5AD8Ae5139E1a5D8AD4ac55204aE4490",Klaytn:"0x4ab77AF7059435b71dBC3B7c5255983C8628eFdf"},"0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85":{Fantom:"0x385b219f0C4fa2e84EfE5aaf9692a821C57B8248",Celo:"0xEe48963C003e21EaCEdFA8a0A19BB3cbF7E776Fe",Moonbeam:"0x7143e8EA96e158381057a58AfdDF44601c7e532C",Base:"0xc6bfBeb3002aD563D2d1f72614C61C83Bf147Acd",Arbitrum:"0x3A5C2Da9E30741cb59a5e9446A23A86886fC9DC2",Aptos:"0x4f6ecb05a797902d472abc2f5804bde93a53d8b75f14f767824cdb1623a4ee83::coin::T",Bsc:"0xa41ae127D04F7ee73B5058E2C60Fb7c7A2D21F79",Avalanche:"0xBe04f76A0ba2100c3F2d6Aa1FD8484F415469573",Polygon:"0x31F12aCb60C3c32EE884F3894a873347C097D925",Sui:"0x6037801f060f0f54b3817bca05e3c8b9b9ffaa2da8e93fd5b80fa662aa3c9e55::coin::COIN",Solana:"J8kcD4Wnd1ehne1dpL8WNtgZQR6Jpui2cTZcrmg5ybAa",Klaytn:"0x7Ee2AB1443fDB59AECEa3aDD8F81296d68c2D1e3",Ethereum:"0xe77C99b64414e0fd9aeEA48AFFBBD2E97A895020"},"0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb":{Bsc:"0x1f29fAD000255BF49D72803b2A8FaC8e31947eF8",Base:"0xBb0BeaB819dEAf091C193bE4bBEeA9D5b0F5227C",Arbitrum:"0xf99C5EEd186601955a9a1027536D1b46b1f909F8",Polygon:"0x9065e1D25E65F7A1D60bb6197154386B52faA469",Ethereum:"0xB3ceE6DCa1dD528CB7CC258e32D8B50ce9Ee46f5"}},Base:{"0x4200000000000000000000000000000000000006":{Ethereum:"0x1D4241F7370253C0f12EFC536B7e16E462Fb3526",Bsc:"0x9dc152F4941cE1A138326e70c3600385bf0C22dD",Polygon:"0x5BCf8d8c097FbB35C371F921E3FF3e6F6Eb54B41",Avalanche:"0xFA83178c66fE51ee99109b5cC912f8098Ff812eF",Fantom:"0xd3365E7355230c78098b44B172eE27DAB95B041A",Celo:"0x905CADB645684140E285e2D09D39dF5a2082BC87",Moonbeam:"0x6C6f83366A42fcA4D30a2D3f1914284de995Ac3a",Solana:"DWXe1hxpnb8LAH21iyXcjvMbiAGzoYyuCVQtRLvZdLYd",Sui:"0xaecbc804fa7ca7cffc74c9a05eb6ae86fda0c68375b5c1724204a1065bcb239a::coin::COIN",Aptos:"0x5b5f14781164cf77185a7b6acd8e4f3cbb7e7cfb1cd5760d2b8af81075fc153d::coin::T",Arbitrum:"0xBAfbCB010D920e0Dab9DFdcF634De1B777028a85",Optimism:"0x3F369a664fa665e01e8EB9f20bFcE03A0CAb8971",Mantle:"0x4a2176DE2Fb36485704965bd1Cc471854f21303B",Klaytn:"0x7Bf9ad1D104dEAE4B59Ef1be6a273Cb46BA16362"},"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913":{Solana:"EfqRM8ZGWhDTKJ7BHmFvNagKVu3AxQRDQs8WMMaoBCu6",Moonbeam:"0xE6d02a875CcC153c076fe418f33De3A5C420f505",Celo:"0x2e2acb1782Aad0490f8446b6fD4626C467987bD6",Bsc:"0x55CaD531c8E303Cab8B3BE4bB4744Db4f896ac81",Optimism:"0xb931c7BbD87A6e249EaA7355B13927F9c99Bce87",Arbitrum:"0x8619F97D4d08382548F536E5CE1D3e0D9bA40326",Polygon:"0x1eeCaB0F75fE93abbFa0cDFfb4fB13d1dC8706c8",Avalanche:"0xab933e939a9236BD439F7d29b87CE712f42bAC06",Fantom:"0xd9E4C283d8A49Dc3767A6F5a4dFdc1d0cEf21604",Sui:"0x7e3e74afcc1913aa9491c8cee89b02131a6e5519b090f16b54321835c1241cfb::coin::COIN",Aptos:"0xfcc4fcd734d5b8578fb629d238d15264a49eca6165c7444c21feec3b4962eb88::coin::T",Blast:"0x35a926D55A726cdF70Ac498972F22426363F3C77",Mantle:"0x5D628a3285a10fdd93AEa704007957F294e05F91",Ethereum:"0xc38261846c42C1E1D59E04dA675Eb1974E9cE7b1",Klaytn:"0x0a2330c1C46E9A74e8651F7117a1264410eA3C88",Scroll:"0x22C9bde4Ad49C4b6CCFB8D394B5ED42A57853d58"},"0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452":{Arbitrum:"0x09E79693E44c8813A8CA25EeD7A40e5E24cD9c01",Ethereum:"0x187175c7a526f48c905202Bd2Bf8D25A457F479F",Polygon:"0x95d4C8e851D9E8c6B92aa518474E991c373E9Fb2",Optimism:"0x6ee40855c0BaB20585d17D2b9dd8d2Cd1cd41801",Avalanche:"0x5e513CA12DbD8424bDFc5B50711dF4AE999a8C58"}},Klaytn:{"0xe4f05A66Ec68B54A58B17c22107b02e0232cC817":{Aptos:"0x539b652f8230a0e42adaeda4706b5639893d22362eda6ea897493c210cb48219::coin::T",Ethereum:"0x9AEA32B459e96C8eF5010f69130bf95fd129ac05",Celo:"0xe304254de5c2048F9bFb042dDFB54f84d1d77730",Polygon:"0x415ce980fde17F1FF102e1c6e4ce860Acc615D74",Base:"0x41c433c146c47Dc53FC48cDc69e406e365e298E1",Arbitrum:"0xFA95f6c796E54F9C4a99392CAE84410a25794BB3",Moonbeam:"0xf0a9476E4712123A807859f9Fd25fe98213379BD",Fantom:"0x787e2F3509583C0F03A339Be0826463C839CBE5E",Sui:"0xa5ec915864d7f37b25ca9144b2db6ebcf29e73603c2ccf9d0e765adcd9049a98::coin::COIN",Avalanche:"0x126C03982Ad6D7ef7E6aF020bF219e87185a6BC3",Bsc:"0xEA970e7b7D131Ea36c3051C9Ca11e785462fE00c",Optimism:"0xbbeF8233a0d10EEAb84E913FaDB337ab9b62F683",Solana:"2b8fZGLBZjpxFugCdnJbbLLBYxvx23rsrsvLYYueiHb7",Blast:"0x5F6fE613528df9AE4Bf6f667fbCB923263098617",Scroll:"0xA55FB7A046454998b2f6d8D99Df5F0E108b38229",Worldchain:"0xC080f0082029fC6e8A4Bb33a9B0655B8d4f2BAB0"}},Scroll:{"0x5300000000000000000000000000000000000004":{Arbitrum:"0xAe81a542e20270b48Bd5297E3e0f280f79E46C42"}},Mantle:{"0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8":{Optimism:"0xf704F6a3241609Cfb3E44Db1237E68EB6CaC7C04"}}},MAINNET={chains:MAINNET_CHAINS,tokens:MAINNET_TOKENS,wrappedTokens:MAINNET_WRAPPED_TOKENS,rpcs:MAINNET_RPC_MAPPING,guardianSet:{index:4,keys:["0x5893b5a76c3f739645648885bdccc06cd70a3cd3","0xff6cb952589bde862c25ef4392132fb9d4a42157","0x114de8460193bdf3a2fcf81f86a09765f4762fd1","0x107a0086b32d7a0977926a205131d8731d39cbeb","0x8c82b2fd82faed2711d59af0f2499d16e726f6b2","0x11b39756c042441be6d8650b69b54ebe715e2343","0x54ce5b4d348fb74b958e8966e2ec3dbd4958a7cd","0x15e7caf07c4e3dc8e7c469f92c8cd88fb8005a20","0x74a3bf913953d695260d88bc1aa25a4eee363ef0","0x000ac0076727b35fbea2dac28fee5ccb0fea768e","0xaf45ced136b9d9e24903464ae889f5c8a723fc14","0xf93124b7c738843cbb89e864c862c38cddcccf95","0xd2cc37a4dc036a8d232b48f62cdd4731412f4890","0xda798f6896a3331f64b48c12d1d57fd9cbe70811","0x71aa1be1d36cafe3867910f99c09e347899c19c3","0x8192b6e7387ccd768277c17dab1b7a5027c0b3cf","0x178e21ad2e77ae06711549cfbb1f9c7a9d8096e8","0x5e1487f35515d02a92753504a8d75471b9f49edb","0x6fbebc898f403e4773e95feb15e80c9a99c8348d"]}},{chains:chains$2}=CONFIG.TESTNET,TESTNET_CHAINS={Bsc:{...chains$2.Bsc,displayName:"BSC",explorerUrl:"https://testnet.bscscan.com/",explorerName:"BscScan",chainId:97,icon:"Bsc",symbol:"BSC",sdkName:"Bsc",wrappedGasToken:"0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd"},Avalanche:{...chains$2.Avalanche,displayName:"Fuji",explorerUrl:"https://testnet.avascan.info/blockchain/c/",explorerName:"Avascan",chainId:43113,icon:"Avalanche",symbol:"AVAX",sdkName:"Avalanche",wrappedGasToken:"0xd00ae08403B9bbb9124bB305C09058E32C39A48c"},Fantom:{...chains$2.Fantom,displayName:"Fantom",explorerUrl:"https://testnet.ftmscan.com/",explorerName:"FtmScan",chainId:4002,icon:"Fantom",symbol:"FTM",sdkName:"Fantom",wrappedGasToken:"0xf1277d1Ed8AD466beddF92ef448A132661956621"},Celo:{...chains$2.Celo,displayName:"Alfajores",explorerUrl:"https://explorer.celo.org/alfajores/",explorerName:"Celo Explorer",chainId:44787,icon:"Celo",symbol:"CELO",sdkName:"Celo"},Moonbeam:{...chains$2.Moonbeam,displayName:"Moonbase",explorerUrl:"https://moonbase.moonscan.io/",explorerName:"Moonscan",chainId:1287,icon:"Moonbeam",symbol:"GLMR",sdkName:"Moonbeam",wrappedGasToken:"0xD909178CC99d318e4D46e7E66a972955859670E1"},Solana:{...chains$2.Solana,displayName:"Solana",explorerUrl:"https://explorer.solana.com/",explorerName:"Solana Explorer",chainId:0,icon:"Solana",symbol:"SOL",sdkName:"Solana",wrappedGasToken:"So11111111111111111111111111111111111111112"},Sui:{...chains$2.Sui,displayName:"Sui",explorerUrl:"https://suiscan.xyz/testnet/",explorerName:"Suiscan",chainId:0,icon:"Sui",symbol:"SUI",sdkName:"Sui"},Aptos:{...chains$2.Aptos,displayName:"Aptos",explorerUrl:"https://explorer.aptoslabs.com/",explorerName:"Aptos Explorer",chainId:0,icon:"Aptos",symbol:"APT",sdkName:"Aptos"},Klaytn:{...chains$2.Klaytn,displayName:"Kaia",explorerUrl:"https://kairos.kaiascope.com/",explorerName:"Kaia Scope",chainId:1001,icon:"Klaytn",symbol:"KLAY",sdkName:"Klaytn",wrappedGasToken:"0x0339d5Eb6D195Ba90B13ed1BCeAa97EbD198b106"},Sepolia:{...chains$2.Sepolia,displayName:"Sepolia",explorerUrl:"https://sepolia.etherscan.io/",explorerName:"Etherscan",chainId:11155111,icon:"Ethereum",symbol:"ETH",sdkName:"Sepolia",wrappedGasToken:"0xeef12A83EE5b7161D3873317c8E0E7B76e0B5D9c"},ArbitrumSepolia:{...chains$2.ArbitrumSepolia,displayName:"Arbitrum Sepolia",explorerUrl:"https://sepolia.arbiscan.io/",explorerName:"Etherscan",chainId:421614,icon:"Arbitrum",symbol:"ARB",sdkName:"ArbitrumSepolia",wrappedGasToken:"0x980B62Da83eFf3D4576C647993b0c1D7faf17c73"},BaseSepolia:{...chains$2.BaseSepolia,displayName:"Base Sepolia",explorerUrl:"https://base-sepolia.blockscout.com/",explorerName:"Etherscan",chainId:84532,icon:"Base",symbol:"BASE",sdkName:"BaseSepolia",wrappedGasToken:"0x4200000000000000000000000000000000000006"},OptimismSepolia:{...chains$2.OptimismSepolia,displayName:"Optimism Sepolia",explorerUrl:"https://sepolia-optimistic.etherscan.io/",explorerName:"Etherscan",chainId:11155420,icon:"Optimism",symbol:"OP",sdkName:"OptimismSepolia",wrappedGasToken:"0x4200000000000000000000000000000000000006"},Scroll:{...chains$2.Scroll,displayName:"Scroll",explorerUrl:"https://sepolia.scrollscan.dev/",explorerName:"Scrollscan",chainId:534351,icon:"Scroll",symbol:"SCR",sdkName:"Scroll",wrappedGasToken:"0x5300000000000000000000000000000000000004"},Blast:{...chains$2.Blast,displayName:"Blast",explorerUrl:"https://testnet.blastscan.io/",explorerName:"Blastscan",chainId:168587773,icon:"Blast",symbol:"BLAST",sdkName:"Blast",wrappedGasToken:"0x9D020B1697035d9d54f115194c9e04a1e4Eb9aF7"},Xlayer:{...chains$2.Xlayer,displayName:"X Layer",explorerUrl:"https://www.okx.com/web3/explorer/xlayer-test/",explorerName:"OKX Explorer",chainId:195,icon:"Xlayer",symbol:"OKX",sdkName:"Xlayer",wrappedGasToken:"0xa2aFfd8301BfB3c5b815829f2F509f053556D21B"},Mantle:{...chains$2.Mantle,displayName:"Mantle",explorerUrl:"https://explorer.testnet.mantle.xyz/",explorerName:"Mantle Explorer",chainId:5003,icon:"Mantle",symbol:"MNT",sdkName:"Mantle",wrappedGasToken:"0xa4c4cb2A072eE99f77212Fa18c2B7Ca26DA23905"},Worldchain:{...chains$2.Worldchain,displayName:"World Chain",explorerUrl:"https://worldchain-sepolia.explorer.alchemy.com/",explorerName:"World Scan",chainId:4801,icon:"Worldchain",sdkName:"Worldchain",symbol:"WORLD"},Unichain:{...chains$2.Unichain,displayName:"Unichain",explorerUrl:"https://unichain-sepolia.blockscout.com/",explorerName:"Unichain Explorer",chainId:1301,icon:"Unichain",symbol:"UNI",sdkName:"Unichain",wrappedGasToken:"0x4200000000000000000000000000000000000006"}},__vite_import_meta_env__$1={},{REACT_APP_SEPOLIA_RPC,REACT_APP_BSC_TESTNET_RPC,REACT_APP_FUJI_RPC,REACT_APP_FANTOM_TESTNET_RPC,REACT_APP_ALFAJORES_RPC,REACT_APP_SOLANA_DEVNET_RPC,REACT_APP_MOONBASE_RPC,REACT_APP_SUI_TESTNET_RPC,REACT_APP_APTOS_TESTNET_RPC,REACT_APP_BASE_SEPOLIA_RPC,REACT_APP_KLAYTN_TESTNET_RPC,REACT_APP_ARBITRUM_SEPOLIA_RPC,REACT_APP_OPTIMISM_SEPOLIA_RPC,REACT_APP_SCROLL_TESTNET_RPC,REACT_APP_BLAST_TESTNET_RPC,REACT_APP_XLAYER_TESTNET_RPC,REACT_APP_MANTLE_TESTNET_RPC,REACT_APP_WORLDCHAIN_TESTNET_RPC,REACT_APP_UNICHAIN_TESTNET_RPC}=__vite_import_meta_env__$1,TESTNET_RPC_MAPPING={...populateRpcField("Sepolia",REACT_APP_SEPOLIA_RPC),...populateRpcField("Bsc",REACT_APP_BSC_TESTNET_RPC),...populateRpcField("Avalanche",REACT_APP_FUJI_RPC),...populateRpcField("Fantom",REACT_APP_FANTOM_TESTNET_RPC),...populateRpcField("Celo",REACT_APP_ALFAJORES_RPC),...populateRpcField("Solana",REACT_APP_SOLANA_DEVNET_RPC),...populateRpcField("Moonbeam",REACT_APP_MOONBASE_RPC),...populateRpcField("Sui",REACT_APP_SUI_TESTNET_RPC),...populateRpcField("Aptos",REACT_APP_APTOS_TESTNET_RPC),...populateRpcField("BaseSepolia",REACT_APP_BASE_SEPOLIA_RPC),...populateRpcField("ArbitrumSepolia",REACT_APP_ARBITRUM_SEPOLIA_RPC),...populateRpcField("OptimismSepolia",REACT_APP_OPTIMISM_SEPOLIA_RPC),...populateRpcField("Klaytn",REACT_APP_KLAYTN_TESTNET_RPC),...populateRpcField("Scroll",REACT_APP_SCROLL_TESTNET_RPC),...populateRpcField("Blast",REACT_APP_BLAST_TESTNET_RPC),...populateRpcField("Xlayer",REACT_APP_XLAYER_TESTNET_RPC),...populateRpcField("Mantle",REACT_APP_MANTLE_TESTNET_RPC),...populateRpcField("Worldchain",REACT_APP_WORLDCHAIN_TESTNET_RPC),...populateRpcField("Unichain",REACT_APP_UNICHAIN_TESTNET_RPC)},TESTNET_TOKENS=[{symbol:"BNB",icon:TokenIcon.BNB,decimals:18,tokenId:{chain:"Bsc",address:"native"}},{symbol:"WBNB",icon:TokenIcon.BNB,decimals:18,tokenId:{chain:"Bsc",address:"0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd"}},{symbol:"AVAX",icon:TokenIcon.AVAX,decimals:18,tokenId:{chain:"Avalanche",address:"native"}},{symbol:"WAVAX",icon:TokenIcon.AVAX,decimals:18,tokenId:{chain:"Avalanche",address:"0xd00ae08403B9bbb9124bB305C09058E32C39A48c"}},{symbol:"USDC",icon:TokenIcon.USDC,decimals:6,tokenId:{chain:"Avalanche",address:"0x5425890298aed601595a70AB815c96711a31Bc65"}},{symbol:"FTM",icon:TokenIcon.FANTOM,decimals:18,tokenId:{chain:"Fantom",address:"native"}},{symbol:"WFTM",icon:TokenIcon.FANTOM,decimals:18,tokenId:{chain:"Fantom",address:"0xf1277d1Ed8AD466beddF92ef448A132661956621"}},{symbol:"CELO",icon:TokenIcon.CELO,decimals:18,tokenId:{chain:"Celo",address:"0xF194afDf50B03e69Bd7D057c1Aa9e10c9954E4C9"}},{symbol:"USDC.e",icon:TokenIcon.USDC,decimals:6,tokenId:{chain:"Celo",address:"0x72CAaa7e9889E0a63e016748179b43911A3ec9e5"}},{symbol:"GLMR",icon:TokenIcon.GLMR,decimals:18,tokenId:{chain:"Moonbeam",address:"native"}},{symbol:"WGLMR",icon:TokenIcon.GLMR,decimals:18,tokenId:{chain:"Moonbeam",address:"0xD909178CC99d318e4D46e7E66a972955859670E1"}},{symbol:"SOL",icon:TokenIcon.SOLANA,decimals:9,tokenId:{chain:"Solana",address:"native"}},{symbol:"WSOL",tokenId:{chain:"Solana",address:"So11111111111111111111111111111111111111112"},icon:TokenIcon.SOLANA,decimals:9},{symbol:"USDC",tokenId:{chain:"Solana",address:"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU"},icon:TokenIcon.USDC,decimals:6},{symbol:"SUI",tokenId:{chain:"Sui",address:"native"},icon:TokenIcon.SUI,decimals:9},{symbol:"USDC",decimals:6,tokenId:{chain:"Sui",address:"0xa1ec7fc00a6f40db9693ad1415d0c193ad3906494428cf252621037bd7117e29::usdc::USDC"},icon:TokenIcon.USDC},{symbol:"APT",tokenId:{chain:"Aptos",address:"native"},icon:TokenIcon.APT,decimals:8},{symbol:"USDC",decimals:6,tokenId:{chain:"Aptos",address:"0x69091fbab5f7d635ee7ac5098cf0c1efbe31d68fec0f2cd565e8d168daf52832"},icon:TokenIcon.USDC},{symbol:"KLAY",icon:TokenIcon.KLAY,decimals:18,tokenId:{chain:"Klaytn",address:"native"}},{symbol:"WKLAY",name:"wKLAY",icon:TokenIcon.KLAY,decimals:18,tokenId:{chain:"Klaytn",address:"0x0339d5Eb6D195Ba90B13ed1BCeAa97EbD198b106"}},{symbol:"ETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"Sepolia",address:"native"}},{symbol:"WETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"Sepolia",address:"0xeef12A83EE5b7161D3873317c8E0E7B76e0B5D9c"}},{symbol:"USDC",icon:TokenIcon.USDC,decimals:6,tokenId:{chain:"Sepolia",address:"0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238"}},{symbol:"ETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"ArbitrumSepolia",address:"native"}},{symbol:"WETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"ArbitrumSepolia",address:"0x980B62Da83eFf3D4576C647993b0c1D7faf17c73"}},{symbol:"ETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"BaseSepolia",address:"native"}},{symbol:"WETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"BaseSepolia",address:"0x4200000000000000000000000000000000000006"}},{symbol:"ETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"OptimismSepolia",address:"native"}},{symbol:"WETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"OptimismSepolia",address:"0x4200000000000000000000000000000000000006"}},{symbol:"ETH",icon:TokenIcon.SCROLL,decimals:18,tokenId:{chain:"Scroll",address:"native"}},{symbol:"WETH",icon:TokenIcon.SCROLL,decimals:18,tokenId:{chain:"Scroll",address:"0x5300000000000000000000000000000000000004"}},{symbol:"ETH",icon:TokenIcon.BLAST,decimals:18,tokenId:{chain:"Blast",address:"native"}},{symbol:"WETH",icon:TokenIcon.BLAST,decimals:18,tokenId:{chain:"Blast",address:"0x9D020B1697035d9d54f115194c9e04a1e4Eb9aF7"}},{symbol:"OKB",icon:TokenIcon.XLAYER,decimals:18,tokenId:{chain:"Xlayer",address:"native"}},{symbol:"WOKB",icon:TokenIcon.XLAYER,decimals:18,tokenId:{chain:"Xlayer",address:"0xa2aFfd8301BfB3c5b815829f2F509f053556D21B"}},{symbol:"MNT",icon:TokenIcon.MANTLE,decimals:18,tokenId:{chain:"Mantle",address:"native"}},{symbol:"WMNT",icon:TokenIcon.MANTLE,decimals:18,tokenId:{chain:"Mantle",address:"0xa4c4cb2A072eE99f77212Fa18c2B7Ca26DA23905"}},{symbol:"ETH",tokenId:{chain:"Worldchain",address:"native"},decimals:18,icon:TokenIcon.WORLDCHAIN},{symbol:"WETH",tokenId:{chain:"Worldchain",address:"0x4200000000000000000000000000000000000006"},decimals:18,icon:TokenIcon.WORLDCHAIN},{symbol:"ETH",tokenId:{chain:"Unichain",address:"native"},decimals:18,icon:TokenIcon.ETH},{symbol:"WETH",tokenId:{chain:"Unichain",address:"0x4200000000000000000000000000000000000006"},decimals:18,icon:TokenIcon.ETH},{symbol:"USDC",tokenId:{chain:"Unichain",address:"0x31d0220469e10c4E71834a79b1f276d740d3768F"},decimals:6,icon:TokenIcon.USDC}],TESTNET_WRAPPED_TOKENS={Bsc:{"0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd":{Avalanche:"0x10F1053bF2884b28ee0Bd7a2dDBa237Af3511d29",Fantom:"0xfB174b43228950C2055CFc25AE93f2DCe8E2beF0",Celo:"0xa8050be9389466c3c524F10F131f244ACbf21A0D",Moonbeam:"0x6097E80331B0c6aF4F74D7F2363E70Cb2Fd078A5",Solana:"BaGfF51MQ3a61papTRDYaNefBgTQ9ywnVne5fCff4bxT",Sui:"0xddcf8680a8a4b8a527d8c85ec203274991590c2ea898d1c4635b70164d9c584b::coin::COIN",Aptos:"0xa5894f5ddb8647e6143102aa336ff07374f7b32e88c1c703aef5b7c9a370bf80::coin::T",Klaytn:"0xEFa3626825C33C4cd83850920Ad7Ac0a392E1faE",Sepolia:"0x02CdD5eB55934663F0aD8fbA3516dC7DE4E22894"}},Avalanche:{"0xd00ae08403B9bbb9124bB305C09058E32C39A48c":{Bsc:"0x6cE9E2c8b59bbcf65dA375D3d8AB503c8524caf7",Fantom:"0x0f545Be981C37fB15ab7c65404648761e99016e4",Celo:"0x502c8C83008D9Dd812a7C5fB886C063060C73Dbf",Moonbeam:"0x2E8afeCC19842229358f3650cc3F091908dcbaB4",Solana:"3Ftc5hTz9sG4huk79onufGiebJNDMZNL8HYgdMJ9E7JR",Sui:"0xa600741c469fb57ed01497ddf101e798fa79a9c529bd176675c5c4d970811f80::coin::COIN",Aptos:"0xbe8f4301c0b54e870902b9a23eeb95ce74ac190531782aa3262337ceb145401a::coin::T",Blast:"0x74C6aA987658FcBaB9FdC2ee65f52Ddd5B2cEd95",Klaytn:"0x10257392a2B5e3C4D4bEe1607650a1C0C738202a",Scroll:"0x5Bd1ba0040C16b13894A6EbE3d55708c91eF08bb",Xlayer:"0xb13a464ceE7455A9b2941bFAe1bB1eB5A6833867"},"0x5425890298aed601595a70AB815c96711a31Bc65":{Bsc:"0x1cfeCf72bcBE1E429A21A5B11E708C7c397AaC54",Fantom:"0x6BC4E8D8c1d54656D1DeBCa96efc53aFd1408aD2",Celo:"0xDDB349c976cA2C873644F21f594767Eb5390C831",Moonbeam:"0x6533CE14804D113b1F494dC56c5D60A43cb5C3b5",Solana:"GQtMXZxnuacCFTXVeTvyHi6P9F6chbtzhVc8JgD8hv7c",Sui:"0x2aa8c885d04e676c4e87b7d0f94d4f3b243b1b5d93239d1cc41d5528ce1714c1::coin::COIN",Aptos:"0x2ef7697bdb33361ca39d228671203afc0dea3202e792d79d2072b761d87c834::coin::T"}},Fantom:{"0xf1277d1Ed8AD466beddF92ef448A132661956621":{Bsc:"0x9aB305B792DBdb8253bEE909E7006611Cb45175b",Avalanche:"0x094cB577C21Ab1360178beE74B9591fa12216dAD",Celo:"0xE6F8710cA14CFe7F5aAAD3A799C3d1D92dCba938",Moonbeam:"0x566c1cebc6A4AFa1C122E039C4BEBe77043148Ee",Solana:"DMw2tLaq1bVoAEKtkoUtieSk9bfCPUvubYLatTMsSVop",Sui:"0x14e756ff65e0ac810a5f69ca5276ef5b899a6df3c4717de1f85559d8b5ae6ea6::coin::COIN",Aptos:"0x533c6ade00d15d1e014c41e29e34853e87df92c4e01a6a3f41318dbd098048d6::coin::T",Klaytn:"0x097c8878A0d852581Dc4D8820151094Ddd3663Ac",Sepolia:"0x852132647d301B7EED02589B1dc73545E73c8596"}},Celo:{"0xF194afDf50B03e69Bd7D057c1Aa9e10c9954E4C9":{Bsc:"0x1471698cBD9cAB0228F2EEA9303A2b3aA0ABDC2B",Avalanche:"0xC66d9c2b33c347d4A4441975f4688fcD5DD4c441",Fantom:"0xB18E73a69c3Aaea39a610372537Cf8482622d199",Moonbeam:"0x3406a9b09adf0cb36DC04c1523C4b294C6b79513",Solana:"84F2QX9278ToDmA98u4A86xSV9hz1ovazr8zwGaX6qjS",Sui:"0x81868174a6b11e1acc337b3414f9912455435d486609fb8d50b34312865085f2::coin::COIN",Aptos:"0xecbb0f7e7d049499ca83ca1358344f56557886f6f7adc740d6734cce7bfc9a14::coin::T",Klaytn:"0xC951826bbB310a8160BB78c2eEe6C98246292ba7",Sepolia:"0x648f226f3bDcAEdc844622d604F76935DC05bC24"}},Moonbeam:{"0xD909178CC99d318e4D46e7E66a972955859670E1":{Bsc:"0x5C31B36599ED7f06b09c0ffC7A2F928cE496F046",Avalanche:"0xf080782DF38eD5228D2FC2882d13D56c8f1D6f21",Fantom:"0x41E3CFDFC255A4bF3C8D3560Bc8D3D9b5080338e",Celo:"0x132D2172D89cd9CfD480A8887c6bF92360fB460e",Solana:"8987WGkYa5viiZ9DD8sS3PB5XghKmWjkEgmzvwDuoAEc",Sui:"0xeffae382de96981f7ddd2d294429924827e8f325d612487a12d6a0b249171002::coin::COIN",Aptos:"0x338373b6694f71dbeac5ca4a30503bf5f083888d71678aed31255de416be37c0::coin::T",Sepolia:"0x3F7CD70ECd402BBe71f45A95156A2CAC0d6A822E"}},Solana:{So11111111111111111111111111111111111111112:{Bsc:"0x30f19eBba919954FDc020B8A20aEF13ab5e02Af0",Avalanche:"0xb10563644a6AB8948ee6d7f5b0a1fb15AaEa1E03",Fantom:"0xED1a08Fc69A7008d225890A96aaE258c465CC7ad",Celo:"0x05EEF2AE1A7A938D78598F7d9e8b97A9bED0c9eC",Sui:"0xbc03aaab4c11eb84df8bf39fdc714fa5d5b65b16eb7d155e22c74a68c8d4e17f::coin::COIN",Aptos:"0xdd89c0e695df0692205912fb69fc290418bed0dbe6e4573d744a6d5e6bab6c13::coin::T",Klaytn:"0x48D99C16638E6FFD2ED60375cD35ef6c139e5f41",Moonbeam:"0x5babD0d267Adf2081626654E51d1cABF8c477440",Sepolia:"0x824CB8fC742F8D3300d29f16cA8beE94471169f5"},"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU":{Bsc:"0x51a3cc54eA30Da607974C5D07B8502599801AC08"}},Sui:{native:{Bsc:"0x5A73D76e09Af2E428EC64aE10F91B78AC990B298",Avalanche:"0xfc5128F8556a6F059466E67740e6cC31EE5C2C47",Fantom:"0xd882AB49372eC093E8697B5153f54ab5e7738e3b",Celo:"0xa40d9E69ca9867C4bFbeC11Ce79C939991e9bf26",Solana:"BJZ72CjPQojVoH68mzrd4VQ4nr6KuhbAGnhZEZCujKxY",Aptos:"0x7b22d0e02f653d4fd1caddcfa4719a2b329da56eb81d8f27db703f02466c26a5::coin::T",Moonbeam:"0x2ed4B5B1071A3C676664E9085C0e3826542C1b27",Klaytn:"0xbA5F07a20681Add3A396E7606c6DC9B03d71d28A"}},Aptos:{native:{Bsc:"0x4A7Bd5E135f421057F97BbA8BCeeE5c18334f454",Avalanche:"0x996a3f12C1FcD7339Ea8801f629201e4d42EAD04",Fantom:"0xAb2297E8994149BA91737944E40891881aF762a4",Celo:"0xAC0a2fF7DD597de863878a3372142b07B614C125",Moonbeam:"0xCaa2A1d3BbbA0D1466571e83b4E2CbE04252593D",Solana:"7EvFD3JKCJVdtkAYdaSVKJsrPEJCzy2neJha7TREGrCa",Sui:"0x812d6feb8b84e55d47a0bfcae9fb6a4e7e09be5ec86ce0a729e0f67d5f59f477::coin::COIN"}},Klaytn:{"0x0339d5Eb6D195Ba90B13ed1BCeAa97EbD198b106":{Bsc:"0x79D34FDb686B5D139949E4F92D83EEe376489176",Aptos:"0xa8ffe1ffe3057756019345cdf9cf3d1f1a3d9a355147dd9440878c448a057579::coin::T",Celo:"0x8e50fC4b7F8B7018E72475f78C640F973218C8Cf",Avalanche:"0x84f3298Bcc019BD5B995756494095e1Eb72B565C",Solana:"6p7qTfX4tRFtQovxwT77Jn9HFQEV7nxLbux9C31Tgm23",Fantom:"0x72A1C24dA7F08d11a7668E228Ec287Fc6ec16E48",Sepolia:"0x142D0E977768cA4De6f2161D9E5B5C9F00435F9e",Moonbeam:"0x6eFf019D79D4136e57A7FC141967F3D0AD41089a",Sui:"0xd4a59fb612b162df75a9d190c0f72098dcae883e88bd0eb28667c31f8208dc3c::coin::COIN"}},Sepolia:{"0xeef12A83EE5b7161D3873317c8E0E7B76e0B5D9c":{Solana:"6F5YWWrUMNpee8C6BDUc6DmRvYRMDDTgJHwKhbXuifWs",Celo:"0x890ad4a7eD5bD08b7d6638515157dF3bF4BaD1Bc",Bsc:"0x667a61Efa611399970AE927637dD6f9A16f51e40",Moonbeam:"0xa7276055a1d45fB9982575411801e10ac9970Da8",ArbitrumSepolia:"0x97Ee87C7Db6049669a518730a2Ee60d1Fc58844E",Avalanche:"0x12bFE94230daaE3d48067577F45b7b031dD357f3",Fantom:"0x7F96D67186561Aa17cEb699494E94bEE3F3499D4"},"0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238":{Aptos:"0x3f2912a313c5bea312dbf19f9080101d2e762df6546a6fe9f60a4de72c93d015::coin::T",Solana:"23Adx8na44L3M1Nf9RrUpQPb41eufdRXKseg25FfcJtw",Celo:"0xD6A34325e5F6BE27b7006bf06651444196Da579a",Bsc:"0xb8850F591019F0794F813426d4A4A9b5fB8f23C8",BaseSepolia:"0x3F872340B6A75397aa9b0A463000349962a8795D",ArbitrumSepolia:"0x27B8F40Cf0915e729ae5A96970E91045Fe9724dF",Fantom:"0xa686203C86140142230f44A724281E1BEd09c369",Klaytn:"0x25f2a470a2e1E75DDAc40289AB277eDE4DD98aFa",Sui:"0x6529fef82a8a09470c550a3129bbd889030b62306f0c14161224b1a40ef1346f::coin::COIN"}},OptimismSepolia:{"0x4200000000000000000000000000000000000006":{ArbitrumSepolia:"0xa2610700cCA8361DECD27dB2564848C530f20813"}}},TESTNET={chains:TESTNET_CHAINS,tokens:TESTNET_TOKENS,wrappedTokens:TESTNET_WRAPPED_TOKENS,rpcs:TESTNET_RPC_MAPPING,guardianSet:{index:0,keys:["0x13947Bd48b18E53fdAeEe77F3473391aC727C638"]}},{chains:chains$1}=CONFIG.DEVNET,DEVNET_CHAINS={Ethereum:{...chains$1.Ethereum,sdkName:"Ethereum",displayName:"EVM",explorerUrl:"",explorerName:"",wrappedGasToken:"0xDDb64fE46a91D46ee29420539FC25FD07c5FEa3E",chainId:1,icon:"Ethereum",symbol:"ETH"},Osmosis:{...chains$1.Osmosis,displayName:"Osmosis",sdkName:"Osmosis",explorerUrl:"",explorerName:"",wrappedGasToken:"",chainId:"osmosis-1002",icon:"Osmosis",symbol:"OSMO"},Wormchain:{...chains$1.Wormchain,sdkName:"Wormchain",displayName:"Wormchain",explorerUrl:"",explorerName:"",wrappedGasToken:"",chainId:"wormchain-1",icon:"Osmosis",symbol:"OSMO"},Terra2:{...chains$1.Terra2,sdkName:"Terra2",displayName:"Terra",explorerUrl:"",explorerName:"",wrappedGasToken:"",chainId:"localterra",icon:"Terra2",symbol:"OSMO"}},__vite_import_meta_env__={},{REACT_APP_ETHEREUM_DEVNET_RPC}=__vite_import_meta_env__,DEVNET_RPC_MAPPING={...populateRpcField("Ethereum",REACT_APP_ETHEREUM_DEVNET_RPC)},DEVNET_TOKENS=[{symbol:"ETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"Ethereum",address:"native"}},{symbol:"WETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"Ethereum",address:"0xDDb64fE46a91D46ee29420539FC25FD07c5FEa3E"}},{symbol:"TKN",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"Ethereum",address:"0x2D8BE6BF0baA74e0A907016679CaE9190e80dD0A"}}],DEVNET={chains:DEVNET_CHAINS,tokens:DEVNET_TOKENS,wrappedTokens:{},rpcs:DEVNET_RPC_MAPPING,guardianSet:{index:0,keys:["0x13947Bd48b18E53fdAeEe77F3473391aC727C638"]}},WORMSCAN="https://wormholescan.io/#/",CONNECT_VERSION="2.3.0-beta.1-development",CONNECT_GIT_HASH="864251c3003203a9d085527e40911192d0014457",CHAIN_ORDER=["Ethereum","Solana","Arbitrum","Base","Sui","Bsc","Optimism","Unichain","Fantom","Polygon","Avalanche","Celo","Moonbeam","Klaytn","Scroll","Evmos","Mantle","Berachain"];function wrapEventHandler(t){var s;const e=typeof window>"u"||(s=window.location)==null?void 0:s.host;return function(l){const d={meta:{version:CONNECT_VERSION,hash:CONNECT_GIT_HASH,host:e},...l};if(console.info("Wormhole Connect event:",d),t)try{t(d)}catch(u){console.error("Error handling event:",u)}}}const evm=async()=>(await Promise.resolve().then(()=>require("./evm-DT_W87u-.js"))).default,solana$1=async()=>(await Promise.resolve().then(()=>require("./solana-B1Wsl1Pg.js"))).default,aptos$1=async()=>(await Promise.resolve().then(()=>require("./aptos-CVrk2e8x.js")).then(t=>t.aptos)).default,sui=async()=>(await Promise.resolve().then(()=>require("./sui-BSr1lx4J.js")).then(t=>t.sui)).default,COINGECKO_URL="https://api.coingecko.com",COINGECKO_URL_PRO="https://pro-api.coingecko.com",NATIVE_TOKEN_IDS={Solana:"solana",Ethereum:"ethereum",Arbitrum:"ethereum",Optimism:"ethereum",Base:"ethereum",Scroll:"ethereum",Blast:"ethereum",Bsc:"binancecoin",Polygon:"matic-network",Avalanche:"avalanche-2",Fantom:"fantom",Moonbeam:"moonbeam",Klaytn:"klay-token",Xlayer:"okb",Mantle:"mantle",Aptos:"aptos",Sui:"sui",Berachain:"berachain-bera"},CHAIN_IDS={Bsc:"binance-smart-chain",Arbitrum:"arbitrum-one",Optimism:"optimism-ethereum",Polygon:"polygon-pos",Klaytn:"kaia-token",Xlayer:"x-layer"},coingeckoRequest=async(t,e)=>{var d,u,p,m;const s=new Headers({"Content-Type":"application/json",...(d=config$1.coingecko)!=null&&d.apiKey?{"x-cg-pro-api-key":config$1.coingecko.apiKey}:{}}),l=(u=config$1.coingecko)!=null&&u.customUrl?config$1.coingecko.customUrl:(p=config$1.coingecko)!=null&&p.apiKey?COINGECKO_URL_PRO:COINGECKO_URL;return fetch(`${l}${t}`,{signal:(m=e==null?void 0:e.abort)==null?void 0:m.signal,headers:s}).then(y=>y.json())},fetchTokenMetadata=async(t,e)=>coingeckoRequest(`/api/v3/coins/${t.chain.toLowerCase()}/contract/${t.address.toString()}`,e),fetchTokenPrices=async(t,e)=>{const s={},l=[];for(const m of t)isNative(m.address)?l.push(m):(s[m.chain]===void 0&&(s[m.chain]=[]),s[m.chain].push(m.address.toString()));const d=Object.keys(s).map(m=>{const y=s[m];return new Promise((h,v)=>{const A=y.join(","),w=CHAIN_IDS[m]||m.toLowerCase();coingeckoRequest(`/api/v3/simple/token_price/${w}?contract_addresses=${A}&vs_currencies=usd`,e).then(I=>{I.error!==void 0?v(I.error):h(Object.keys(I).map(k=>{try{const $=Wormhole.tokenId(m,k);return I[k]?{tokenId:$,price:I[k].usd}:null}catch($){return console.error($),null}}).filter(k=>k!==null))}).catch(v)})});l.length>0&&d.push(new Promise((m,y)=>{const h=[];for(const v of l){const A=NATIVE_TOKEN_IDS[v.chain];A?h.push(A):console.error(`Don't know a coingecko ID for native token for chain ${v.chain}`)}coingeckoRequest(`/api/v3/simple/price?ids=${h.join(",")}&vs_currencies=usd`,e).then(v=>m(l.map(A=>{const w=NATIVE_TOKEN_IDS[A.chain];if(w){const{usd:I}=v[w];return{tokenId:A,price:I}}else return null}).filter(A=>!!A))).catch(y)}));const u=new TokenMapping,p=(await Promise.allSettled(d)).map(m=>m.status==="fulfilled"?m.value:null).filter(m=>!!m).flat();for(const{tokenId:m,price:y}of p)u.add(m,y);return u},some=t=>({__option:"Some",value:t}),none=()=>({__option:"None"}),isOption=t=>t&&typeof t=="object"&&"__option"in t&&(t.__option==="Some"&&"value"in t||t.__option==="None"),isSome=t=>t.__option==="Some",isNone=t=>t.__option==="None";function unwrapOption(t,e){return isSome(t)?t.value:e?e():null}const wrapNullable=t=>t!==null?some(t):none(),unwrapSome=t=>isSome(t)?t.value:null,unwrapSomeOrElse=(t,e)=>isSome(t)?t.value:e();function unwrapOptionRecursively(t,e){if(!t||ArrayBuffer.isView(t))return t;const s=l=>e?unwrapOptionRecursively(l,e):unwrapOptionRecursively(l);return isOption(t)?isSome(t)?s(t.value):e?e():null:Array.isArray(t)?t.map(s):typeof t=="object"?Object.fromEntries(Object.entries(t).map(([l,d])=>[l,s(d)])):t}let InvalidBaseStringError$1=class extends Error{constructor(s,l,d){const u=`Expected a string of base ${l}, got [${s}].`;super(u);Ae(this,"name","InvalidBaseStringError");this.cause=d}};const baseX$1=t=>{const e=t.length,s=BigInt(e);return{description:`base${e}`,fixedSize:null,maxSize:null,serialize(l){if(!l.match(new RegExp(`^[${t}]*$`)))throw new InvalidBaseStringError$1(l,e);if(l==="")return new Uint8Array;const d=[...l];let u=d.findIndex(A=>A!==t[0]);u=u===-1?d.length:u;const p=Array(u).fill(0);if(u===d.length)return Uint8Array.from(p);const m=d.slice(u);let y=0n,h=1n;for(let A=m.length-1;A>=0;A-=1)y+=h*BigInt(t.indexOf(m[A])),h*=s;const v=[];for(;y>0n;)v.unshift(Number(y%256n)),y/=256n;return Uint8Array.from(p.concat(v))},deserialize(l,d=0){if(l.length===0)return["",0];const u=l.slice(d);let p=u.findIndex(v=>v!==0);p=p===-1?u.length:p;const m=t[0].repeat(p);if(p===u.length)return[m,l.length];let y=u.slice(p).reduce((v,A)=>v*256n+BigInt(A),0n);const h=[];for(;y>0n;)h.unshift(t[Number(y%s)]),y/=s;return[m+h.join(""),l.length]}}},base10$1=baseX$1("0123456789"),base16$1={description:"base16",fixedSize:null,maxSize:null,serialize(t){const e=t.toLowerCase();if(!e.match(/^[0123456789abcdef]*$/))throw new InvalidBaseStringError$1(t,16);const s=e.match(/.{1,2}/g);return Uint8Array.from(s?s.map(l=>parseInt(l,16)):[])},deserialize(t,e=0){return[t.slice(e).reduce((l,d)=>l+d.toString(16).padStart(2,"0"),""),t.length]}},base58$1=baseX$1("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"),mergeBytes$1=t=>{const e=t.reduce((d,u)=>d+u.length,0),s=new Uint8Array(e);let l=0;return t.forEach(d=>{s.set(d,l),l+=d.length}),s},padBytes$1=(t,e)=>{if(t.length>=e)return t;const s=new Uint8Array(e).fill(0);return s.set(t),s},fixBytes$1=(t,e)=>padBytes$1(t.slice(0,e),e);class DeserializingEmptyBufferError extends Error{constructor(s){super(`Serializer [${s}] cannot deserialize empty buffers.`);Ae(this,"name","DeserializingEmptyBufferError")}}class NotEnoughBytesError extends Error{constructor(s,l,d){super(`Serializer [${s}] expected ${l} bytes, got ${d}.`);Ae(this,"name","NotEnoughBytesError")}}class ExpectedFixedSizeSerializerError extends Error{constructor(s){s??(s="Expected a fixed-size serializer, got a variable-size one.");super(s);Ae(this,"name","ExpectedFixedSizeSerializerError")}}function fixSerializer$1(t,e,s){return{description:s??`fixed(${e}, ${t.description})`,fixedSize:e,maxSize:e,serialize:l=>fixBytes$1(t.serialize(l),e),deserialize:(l,d=0)=>{if(l=l.slice(d,d+e),l.length<e)throw new NotEnoughBytesError("fixSerializer",e,l.length);t.fixedSize!==null&&(l=fixBytes$1(l,t.fixedSize));const[u]=t.deserialize(l,0);return[u,d+e]}}}function mapSerializer$1(t,e,s){return{description:t.description,fixedSize:t.fixedSize,maxSize:t.maxSize,serialize:l=>t.serialize(e(l)),deserialize:(l,d=0)=>{const[u,p]=t.deserialize(l,d);return s?[s(u,l,d),p]:[u,p]}}}function reverseSerializer$1(t){if(t.fixedSize===null)throw new ExpectedFixedSizeSerializerError("Cannot reverse a serializer of variable size.");return{...t,serialize:e=>t.serialize(e).reverse(),deserialize:(e,s=0)=>{const l=t.fixedSize,d=mergeBytes$1([e.slice(0,s),e.slice(s,s+l).reverse(),e.slice(s+l)]);return t.deserialize(d,s)}}}const baseXReslice=(t,e)=>{const s=t.length,l=(d,u,p,m)=>{const y=[];let h=0,v=0;const A=(1<<p)-1;for(const w of d)for(h=h<<u|w,v+=u;v>=p;)v-=p,y.push(h>>v&A);return m&&v>0&&y.push(h<<p-v&A),y};return{description:`base${s}`,fixedSize:null,maxSize:null,serialize(d){if(!d.match(new RegExp(`^[${t}]*$`)))throw new InvalidBaseStringError$1(d,s);if(d==="")return new Uint8Array;const u=[...d].map(m=>t.indexOf(m)),p=l(u,e,8,!1);return Uint8Array.from(p)},deserialize(d,u=0){if(d.length===0)return["",0];const p=[...d.slice(u)];return[l(p,8,e,!0).map(y=>t[y]).join(""),d.length]}}},base64$2=mapSerializer$1(baseXReslice("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",6),t=>t.replace(/=/g,""),t=>t.padEnd(Math.ceil(t.length/4)*4,"=")),removeNullCharacters$1=t=>t.replace(/\u0000/g,""),padNullCharacters$1=(t,e)=>t.padEnd(e,"\0"),utf8$2={description:"utf8",fixedSize:null,maxSize:null,serialize(t){return new TextEncoder().encode(t)},deserialize(t,e=0){const s=new TextDecoder().decode(t.slice(e));return[removeNullCharacters$1(s),t.length]}};class InvalidPublicKeyError extends Error{constructor(s,l){l=l?`. ${l}`:"";super(`The provided public key is invalid: ${s}${l}`);Ae(this,"name","InvalidPublicKeyError");this.invalidPublicKey=s}}const PUBLIC_KEY_LENGTH=32;function publicKey$5(t,e=!0){const s=typeof t=="string"?t:typeof t=="object"&&"publicKey"in t?t.publicKey:typeof t=="object"&&"toBase58"in t?t.toBase58():Array.isArray(t)?t[0]:base58$1.deserialize(t)[0];return e&&assertPublicKey(s),s}const defaultPublicKey=()=>"11111111111111111111111111111111",isPublicKey=t=>{try{return assertPublicKey(t),!0}catch{return!1}},isPda=t=>Array.isArray(t)&&t.length===2&&typeof t[1]=="number"&&isPublicKey(t[0]);function assertPublicKey(t){if(typeof t!="string")throw new InvalidPublicKeyError(t,"Public keys must be strings.");publicKeyBytes(t)}const uniquePublicKeys=t=>[...new Set(t)],publicKeyBytes=t=>{if(t.length<32||t.length>44)throw new InvalidPublicKeyError(t,"Public keys must be between 32 and 44 characters.");let e;try{e=base58$1.serialize(t)}catch{throw new InvalidPublicKeyError(t,"Public keys must be base58 encoded.")}if(e.length!==PUBLIC_KEY_LENGTH)throw new InvalidPublicKeyError(t,`Public keys must be ${PUBLIC_KEY_LENGTH} bytes.`);return e},base58PublicKey=t=>publicKey$5(t),samePublicKey=(t,e)=>publicKey$5(t)===publicKey$5(e);let Endian$1;(function(t){t.Little="le",t.Big="be"})(Endian$1||(Endian$1={}));class NumberOutOfRangeError extends RangeError{constructor(s,l,d,u){super(`Serializer [${s}] expected number to be between ${l} and ${d}, got ${u}.`);Ae(this,"name","NumberOutOfRangeError")}}function numberFactory(t){let e,s=t.name;return t.size>1&&(e=!("endian"in t.options)||t.options.endian===Endian$1.Little,s+=e?"(le)":"(be)"),{description:t.options.description??s,fixedSize:t.size,maxSize:t.size,serialize(l){t.range&&assertRange(t.name,t.range[0],t.range[1],l);const d=new ArrayBuffer(t.size);return t.set(new DataView(d),l,e),new Uint8Array(d)},deserialize(l,d=0){const u=l.slice(d,d+t.size);assertEnoughBytes("i8",u,t.size);const p=toDataView(u);return[t.get(p,e),d+t.size]}}}const toArrayBuffer=t=>t.buffer.slice(t.byteOffset,t.byteLength+t.byteOffset),toDataView=t=>new DataView(toArrayBuffer(t)),assertRange=(t,e,s,l)=>{if(l<e||l>s)throw new NumberOutOfRangeError(t,e,s,l)},assertEnoughBytes=(t,e,s)=>{if(e.length===0)throw new DeserializingEmptyBufferError(t);if(e.length<s)throw new NotEnoughBytesError(t,s,e.length)},f32=(t={})=>numberFactory({name:"f32",size:4,set:(e,s,l)=>e.setFloat32(0,Number(s),l),get:(e,s)=>e.getFloat32(0,s),options:t}),f64=(t={})=>numberFactory({name:"f64",size:8,set:(e,s,l)=>e.setFloat64(0,Number(s),l),get:(e,s)=>e.getFloat64(0,s),options:t}),i8=(t={})=>numberFactory({name:"i8",size:1,range:[-+"0x7f"-1,+"0x7f"],set:(e,s)=>e.setInt8(0,Number(s)),get:e=>e.getInt8(0),options:t}),i16=(t={})=>numberFactory({name:"i16",size:2,range:[-+"0x7fff"-1,+"0x7fff"],set:(e,s,l)=>e.setInt16(0,Number(s),l),get:(e,s)=>e.getInt16(0,s),options:t}),i32=(t={})=>numberFactory({name:"i32",size:4,range:[-+"0x7fffffff"-1,+"0x7fffffff"],set:(e,s,l)=>e.setInt32(0,Number(s),l),get:(e,s)=>e.getInt32(0,s),options:t}),i64=(t={})=>numberFactory({name:"i64",size:8,range:[-BigInt("0x7fffffffffffffff")-1n,BigInt("0x7fffffffffffffff")],set:(e,s,l)=>e.setBigInt64(0,BigInt(s),l),get:(e,s)=>e.getBigInt64(0,s),options:t}),i128=(t={})=>numberFactory({name:"i128",size:16,range:[-BigInt("0x7fffffffffffffffffffffffffffffff")-1n,BigInt("0x7fffffffffffffffffffffffffffffff")],set:(e,s,l)=>{const d=l?8:0,u=l?0:8,p=0xffffffffffffffffn;e.setBigInt64(d,BigInt(s)>>64n,l),e.setBigUint64(u,BigInt(s)&p,l)},get:(e,s)=>{const l=s?8:0,d=s?0:8,u=e.getBigInt64(l,s),p=e.getBigUint64(d,s);return(u<<64n)+p},options:t}),u8$1=(t={})=>numberFactory({name:"u8",size:1,range:[0,+"0xff"],set:(e,s)=>e.setUint8(0,Number(s)),get:e=>e.getUint8(0),options:t}),u16=(t={})=>numberFactory({name:"u16",size:2,range:[0,+"0xffff"],set:(e,s,l)=>e.setUint16(0,Number(s),l),get:(e,s)=>e.getUint16(0,s),options:t}),u32$1=(t={})=>numberFactory({name:"u32",size:4,range:[0,+"0xffffffff"],set:(e,s,l)=>e.setUint32(0,Number(s),l),get:(e,s)=>e.getUint32(0,s),options:t}),u64$2=(t={})=>numberFactory({name:"u64",size:8,range:[0,BigInt("0xffffffffffffffff")],set:(e,s,l)=>e.setBigUint64(0,BigInt(s),l),get:(e,s)=>e.getBigUint64(0,s),options:t}),u128=(t={})=>numberFactory({name:"u128",size:16,range:[0,BigInt("0xffffffffffffffffffffffffffffffff")],set:(e,s,l)=>{const d=l?8:0,u=l?0:8,p=0xffffffffffffffffn;e.setBigUint64(d,BigInt(s)>>64n,l),e.setBigUint64(u,BigInt(s)&p,l)},get:(e,s)=>{const l=s?8:0,d=s?0:8,u=e.getBigUint64(l,s),p=e.getBigUint64(d,s);return(u<<64n)+p},options:t}),shortU16=(t={})=>({description:t.description??"shortU16",fixedSize:null,maxSize:3,serialize:e=>{assertRange("shortU16",0,65535,e);const s=[0];for(let l=0;;l+=1){const d=e>>l*7;if(d===0)break;const u=127&d;s[l]=u,l>0&&(s[l-1]|=128)}return new Uint8Array(s)},deserialize:(e,s=0)=>{let l=0,d=0;for(;++d;){const u=d-1,p=e[s+u],m=127&p;if(l|=m<<u*7,!(p&128))break}return[l,s+d]}});class InvalidNumberOfItemsError extends Error{constructor(s,l,d){super(`Expected [${s}] to have ${l} items, got ${d}.`);Ae(this,"name","InvalidNumberOfItemsError")}}class InvalidArrayLikeRemainderSizeError extends Error{constructor(s,l){super(`The remainder of the buffer (${s} bytes) cannot be split into chunks of ${l} bytes. Serializers of "remainder" size must have a remainder that is a multiple of its item size. In other words, ${s} modulo ${l} should be equal to zero.`);Ae(this,"name","InvalidArrayLikeRemainderSizeError")}}class UnrecognizedArrayLikeSerializerSizeError extends Error{constructor(s){super(`Unrecognized array-like serializer size: ${JSON.stringify(s)}`);Ae(this,"name","UnrecognizedArrayLikeSerializerSizeError")}}class InvalidDataEnumVariantError extends Error{constructor(s,l){super(`Invalid data enum variant. Expected one of [${l.join(", ")}], got "${s}".`);Ae(this,"name","InvalidDataEnumVariantError")}}class InvalidScalarEnumVariantError extends Error{constructor(s,l,d,u){super(`Invalid scalar enum variant. Expected one of [${l.join(", ")}] or a number between ${d} and ${u}, got "${s}".`);Ae(this,"name","InvalidScalarEnumVariantError")}}class EnumDiscriminatorOutOfRangeError extends RangeError{constructor(s,l,d){super(`Enum discriminator out of range. Expected a number between ${l} and ${d}, got ${s}.`);Ae(this,"name","EnumDiscriminatorOutOfRangeError")}}function sumSerializerSizes(t){return t.reduce((e,s)=>e===null||s===null?null:e+s,0)}function getResolvedSize(t,e,s){if(typeof t=="number")return[t,s];if(typeof t=="object")return t.deserialize(e,s);throw new UnrecognizedArrayLikeSerializerSizeError(t)}function getSizeDescription(t){return typeof t=="object"?t.description:`${t}`}function getSizeFromChildren(t,e){if(typeof t!="number")return null;if(t===0)return 0;const s=sumSerializerSizes(e);return s===null?null:s*t}function getSizePrefix(t,e){return typeof t=="object"?t.serialize(e):new Uint8Array}function array$2(t,e={}){const s=e.size??u32$1();return{description:e.description??`array(${t.description}; ${getSizeDescription(s)})`,fixedSize:getSizeFromChildren(s,[t.fixedSize]),maxSize:getSizeFromChildren(s,[t.maxSize]),serialize:l=>{if(typeof s=="number"&&l.length!==s)throw new InvalidNumberOfItemsError("array",s,l.length);return mergeBytes$1([getSizePrefix(s,l.length),...l.map(d=>t.serialize(d))])},deserialize:(l,d=0)=>{const u=[];if(typeof s=="object"&&l.slice(d).length===0)return[u,d];if(s==="remainder"){for(;d<l.length;){const[y,h]=t.deserialize(l,d);u.push(y),d=h}return[u,d]}const[p,m]=getResolvedSize(s,l,d);d=m;for(let y=0;y<p;y+=1){const[h,v]=t.deserialize(l,d);u.push(h),d=v}return[u,d]}}}const bitArray$1=(t,e={})=>{const s=typeof e=="boolean"?{backward:e}:e,l=s.backward??!1,d=l?"; backward":"";return{description:s.description??`bitArray(${t}${d})`,fixedSize:t,maxSize:t,serialize(u){const p=[];for(let m=0;m<t;m+=1){let y=0;for(let h=0;h<8;h+=1){const v=Number(u[m*8+h]??0);y|=v<<(l?h:7-h)}l?p.unshift(y):p.push(y)}return new Uint8Array(p)},deserialize(u,p=0){const m=[];let y=u.slice(p,p+t);if(y=l?y.reverse():y,y.length!==t)throw new NotEnoughBytesError("bitArray",t,y.length);return y.forEach(h=>{for(let v=0;v<8;v+=1)l?(m.push(!!(h&1)),h>>=1):(m.push(!!(h&128)),h<<=1)}),[m,p+t]}}};function bool$1(t={}){const e=t.size??u8$1();if(e.fixedSize===null)throw new ExpectedFixedSizeSerializerError("Serializer [bool] requires a fixed size.");return{description:t.description??`bool(${e.description})`,fixedSize:e.fixedSize,maxSize:e.fixedSize,serialize:s=>e.serialize(s?1:0),deserialize:(s,l=0)=>{if(s.slice(l).length===0)throw new DeserializingEmptyBufferError("bool");const[d,u]=e.deserialize(s,l);return[d===1,u]}}}function bytes(t={}){const e=t.size??"variable",s=t.description??`bytes(${getSizeDescription(e)})`,l={description:s,fixedSize:null,maxSize:null,serialize:d=>new Uint8Array(d),deserialize:(d,u=0)=>{const p=d.slice(u);return[p,u+p.length]}};return e==="variable"?l:typeof e=="number"?fixSerializer$1(l,e,s):{description:s,fixedSize:null,maxSize:null,serialize:d=>{const u=l.serialize(d),p=e.serialize(u.length);return mergeBytes$1([p,u])},deserialize:(d,u=0)=>{if(d.slice(u).length===0)throw new DeserializingEmptyBufferError("bytes");const[p,m]=e.deserialize(d,u),y=Number(p);u=m;const h=d.slice(u,u+y);if(h.length<y)throw new NotEnoughBytesError("bytes",y,h.length);const[v,A]=l.deserialize(h);return u+=A,[v,u]}}}function maxSerializerSizes(t){return t.reduce((e,s)=>e===null||s===null?null:Math.max(e,s),0)}function dataEnum(t,e={}){const s=e.size??u8$1(),l=t.map(([m,y])=>`${String(m)}${y?`: ${y.description}`:""}`).join(", "),u=t.every((m,y,h)=>m[1].fixedSize===h[0][1].fixedSize)?t[0][1].fixedSize:null,p=maxSerializerSizes(t.map(([,m])=>m.maxSize));return{description:e.description??`dataEnum(${l}; ${s.description})`,fixedSize:t.length===0?s.fixedSize:sumSerializerSizes([s.fixedSize,u]),maxSize:t.length===0?s.maxSize:sumSerializerSizes([s.maxSize,p]),serialize:m=>{const y=t.findIndex(([w])=>m.__kind===w);if(y<0)throw new InvalidDataEnumVariantError(m.__kind,t.map(([w])=>w));const h=s.serialize(y),A=t[y][1].serialize(m);return mergeBytes$1([h,A])},deserialize:(m,y=0)=>{if(m.slice(y).length===0)throw new DeserializingEmptyBufferError("dataEnum");const[h,v]=s.deserialize(m,y);y=v;const A=t[Number(h)]??null;if(!A)throw new EnumDiscriminatorOutOfRangeError(h,0,t.length-1);const[w,I]=A[1].deserialize(m,y);return y=I,[{__kind:A[0],...w??{}},y]}}}function map(t,e,s={}){const l=s.size??u32$1();return{description:s.description??`map(${t.description}, ${e.description}; ${getSizeDescription(l)})`,fixedSize:getSizeFromChildren(l,[t.fixedSize,e.fixedSize]),maxSize:getSizeFromChildren(l,[t.maxSize,e.maxSize]),serialize:d=>{if(typeof l=="number"&&d.size!==l)throw new InvalidNumberOfItemsError("map",l,d.size);const u=Array.from(d,([p,m])=>mergeBytes$1([t.serialize(p),e.serialize(m)]));return mergeBytes$1([getSizePrefix(l,d.size),...u])},deserialize:(d,u=0)=>{const p=new Map;if(typeof l=="object"&&d.slice(u).length===0)return[p,u];if(l==="remainder"){for(;u<d.length;){const[h,v]=t.deserialize(d,u);u=v;const[A,w]=e.deserialize(d,u);u=w,p.set(h,A)}return[p,u]}const[m,y]=getResolvedSize(l,d,u);u=y;for(let h=0;h<m;h+=1){const[v,A]=t.deserialize(d,u);u=A;const[w,I]=e.deserialize(d,u);u=I,p.set(v,w)}return[p,u]}}}function nullable$2(t,e={}){const s=e.prefix??u8$1(),l=e.fixed??!1;let d=`; ${getSizeDescription(s)}`,u=t.fixedSize===0?s.fixedSize:null;if(l){if(t.fixedSize===null||s.fixedSize===null)throw new ExpectedFixedSizeSerializerError("Fixed nullables can only be used with fixed-size serializers");d+="; fixed",u=s.fixedSize+t.fixedSize}return{description:e.description??`nullable(${t.description+d})`,fixedSize:u,maxSize:sumSerializerSizes([s.maxSize,t.maxSize]),serialize:p=>{const m=s.serialize(+(p!==null));if(l){const h=t.fixedSize,v=p!==null?t.serialize(p).slice(0,h):new Uint8Array(h).fill(0);return mergeBytes$1([m,v])}const y=p!==null?t.serialize(p):new Uint8Array;return mergeBytes$1([m,y])},deserialize:(p,m=0)=>{if(p.slice(m).length===0)return[null,m];const y=m+(s.fixedSize??0)+(t.fixedSize??0),[h,v]=s.deserialize(p,m);if(m=v,h===0)return[null,l?y:m];const[A,w]=t.deserialize(p,m);return m=w,[A,l?y:m]}}}function option$1(t,e={}){const s=e.prefix??u8$1(),l=e.fixed??!1;let d=`; ${getSizeDescription(s)}`,u=t.fixedSize===0?s.fixedSize:null;if(l){if(t.fixedSize===null||s.fixedSize===null)throw new ExpectedFixedSizeSerializerError("Fixed options can only be used with fixed-size serializers");d+="; fixed",u=s.fixedSize+t.fixedSize}return{description:e.description??`option(${t.description+d})`,fixedSize:u,maxSize:sumSerializerSizes([s.maxSize,t.maxSize]),serialize:p=>{const m=isOption(p)?p:wrapNullable(p),y=s.serialize(Number(isSome(m)));if(l){const v=t.fixedSize,A=isSome(m)?t.serialize(m.value).slice(0,v):new Uint8Array(v).fill(0);return mergeBytes$1([y,A])}const h=isSome(m)?t.serialize(m.value):new Uint8Array;return mergeBytes$1([y,h])},deserialize:(p,m=0)=>{if(p.slice(m).length===0)return[none(),m];const y=m+(s.fixedSize??0)+(t.fixedSize??0),[h,v]=s.deserialize(p,m);if(m=v,h===0)return[none(),l?y:m];const[A,w]=t.deserialize(p,m);return m=w,[some(A),l?y:m]}}}function publicKey$4(t={}){return{description:t.description??"publicKey",fixedSize:32,maxSize:32,serialize:e=>publicKeyBytes(publicKey$5(e)),deserialize:(e,s=0)=>{const l=e.slice(s,s+32);if(l.length===0)throw new DeserializingEmptyBufferError("publicKey");if(l.length<PUBLIC_KEY_LENGTH)throw new NotEnoughBytesError("publicKey",PUBLIC_KEY_LENGTH,l.length);return[publicKey$5(l),s+32]}}}function scalarEnum(t,e={}){const s=e.size??u8$1(),l=Object.keys(t),d=Object.values(t),u=d.some(A=>typeof A=="number"),p=d.filter(A=>typeof A=="string").join(", "),m=0,y=u?d.length/2-1:d.length-1,h=u?[...l]:[...new Set([...l,...d])];function v(A){const w=typeof A=="number"&&(A<m||A>y),I=typeof A=="string"&&!h.includes(A);if(w||I)throw new InvalidScalarEnumVariantError(A,h,m,y)}return{description:e.description??`enum(${p}; ${s.description})`,fixedSize:s.fixedSize,maxSize:s.maxSize,serialize:A=>{if(v(A),typeof A=="number")return s.serialize(A);const w=d.indexOf(A);return w>=0?s.serialize(w):s.serialize(l.indexOf(A))},deserialize:(A,w=0)=>{if(A.slice(w).length===0)throw new DeserializingEmptyBufferError("enum");const[I,k]=s.deserialize(A,w),$=Number(I);if(w=k,$<m||$>y)throw new EnumDiscriminatorOutOfRangeError($,m,y);return[u?$:d[$],w]}}}function set$1(t,e={}){const s=e.size??u32$1();return{description:e.description??`set(${t.description}; ${getSizeDescription(s)})`,fixedSize:getSizeFromChildren(s,[t.fixedSize]),maxSize:getSizeFromChildren(s,[t.maxSize]),serialize:l=>{if(typeof s=="number"&&l.size!==s)throw new InvalidNumberOfItemsError("set",s,l.size);const d=Array.from(l,u=>t.serialize(u));return mergeBytes$1([getSizePrefix(s,l.size),...d])},deserialize:(l,d=0)=>{const u=new Set;if(typeof s=="object"&&l.slice(d).length===0)return[u,d];if(s==="remainder"){for(;d<l.length;){const[y,h]=t.deserialize(l,d);u.add(y),d=h}return[u,d]}const[p,m]=getResolvedSize(s,l,d);d=m;for(let y=0;y<p;y+=1){const[h,v]=t.deserialize(l,d);u.add(h),d=v}return[u,d]}}}function string$2(t={}){const e=t.size??u32$1(),s=t.encoding??utf8$2,l=t.description??`string(${s.description}; ${getSizeDescription(e)})`;return e==="variable"?{...s,description:l}:typeof e=="number"?fixSerializer$1(s,e,l):{description:l,fixedSize:null,maxSize:null,serialize:d=>{const u=s.serialize(d),p=e.serialize(u.length);return mergeBytes$1([p,u])},deserialize:(d,u=0)=>{if(d.slice(u).length===0)throw new DeserializingEmptyBufferError("string");const[p,m]=e.deserialize(d,u),y=Number(p);u=m;const h=d.slice(u,u+y);if(h.length<y)throw new NotEnoughBytesError("string",y,h.length);const[v,A]=s.deserialize(h);return u+=A,[v,u]}}}function struct$1(t,e={}){const s=t.map(([l,d])=>`${String(l)}: ${d.description}`).join(", ");return{description:e.description??`struct(${s})`,fixedSize:sumSerializerSizes(t.map(([,l])=>l.fixedSize)),maxSize:sumSerializerSizes(t.map(([,l])=>l.maxSize)),serialize:l=>{const d=t.map(([u,p])=>p.serialize(l[u]));return mergeBytes$1(d)},deserialize:(l,d=0)=>{const u={};return t.forEach(([p,m])=>{const[y,h]=m.deserialize(l,d);d=h,u[p]=y}),[u,d]}}}function tuple$1(t,e={}){const s=t.map(l=>l.description).join(", ");return{description:e.description??`tuple(${s})`,fixedSize:sumSerializerSizes(t.map(l=>l.fixedSize)),maxSize:sumSerializerSizes(t.map(l=>l.maxSize)),serialize:l=>{if(l.length!==t.length)throw new InvalidNumberOfItemsError("tuple",t.length,l.length);return mergeBytes$1(t.map((d,u)=>d.serialize(l[u])))},deserialize:(l,d=0)=>{const u=[];return t.forEach(p=>{const[m,y]=p.deserialize(l,d);u.push(m),d=y}),[u,d]}}}function unit(t={}){return{description:t.description??"unit",fixedSize:0,maxSize:0,serialize:()=>new Uint8Array,deserialize:(e,s=0)=>[void 0,s]}}const esm$1=Object.freeze(Object.defineProperty({__proto__:null,DeserializingEmptyBufferError,get Endian(){return Endian$1},EnumDiscriminatorOutOfRangeError,ExpectedFixedSizeSerializerError,InvalidArrayLikeRemainderSizeError,InvalidBaseStringError:InvalidBaseStringError$1,InvalidDataEnumVariantError,InvalidNumberOfItemsError,InvalidScalarEnumVariantError,NotEnoughBytesError,NumberOutOfRangeError,UnrecognizedArrayLikeSerializerSizeError,array:array$2,base10:base10$1,base16:base16$1,base58:base58$1,base64:base64$2,baseX:baseX$1,baseXReslice,bitArray:bitArray$1,bool:bool$1,bytes,dataEnum,f32,f64,fixBytes:fixBytes$1,fixSerializer:fixSerializer$1,i128,i16,i32,i64,i8,map,mapSerializer:mapSerializer$1,maxSerializerSizes,mergeBytes:mergeBytes$1,nullable:nullable$2,option:option$1,padBytes:padBytes$1,padNullCharacters:padNullCharacters$1,publicKey:publicKey$4,removeNullCharacters:removeNullCharacters$1,reverseSerializer:reverseSerializer$1,scalarEnum,set:set$1,shortU16,string:string$2,struct:struct$1,sumSerializerSizes,tuple:tuple$1,u128,u16,u32:u32$1,u64:u64$2,u8:u8$1,unit,utf8:utf8$2},Symbol.toStringTag,{value:"Module"})),mapSerializer=mapSerializer$1,fixSerializer=fixSerializer$1,reverseSerializer=reverseSerializer$1,mergeBytes=mergeBytes$1,padBytes=padBytes$1,fixBytes=fixBytes$1,utf8$1=utf8$2,baseX=baseX$1,base10=base10$1,base58=base58$1,base64$1=base64$2,base16=base16$1,bitArray=bitArray$1,removeNullCharacters=removeNullCharacters$1,padNullCharacters=padNullCharacters$1,Endian=Endian$1;class UmiError extends Error{constructor(s,l,d,u){super(s);Ae(this,"name","UmiError");this.source=l,this.sourceDetails=d,this.cause=u,this.message=`${this.message}
103
+ `,P=$+k.join($);console.error(I.error.message,P)}throw new SendTransactionError({action:"simulate",signature:"",transactionMessage:I.error.message,logs:k})}return I.result}async sendTransaction(e,s,l){if("version"in e){if(s&&Array.isArray(s))throw new Error("Invalid arguments");const p=e.serialize();return await this.sendRawTransaction(p,s)}if(s===void 0||!Array.isArray(s))throw new Error("Invalid arguments");const d=s;if(e.nonceInfo)e.sign(...d);else{let p=this._disableBlockhashCaching;for(;;){const m=await this._blockhashWithExpiryBlockHeight(p);if(e.lastValidBlockHeight=m.lastValidBlockHeight,e.recentBlockhash=m.blockhash,e.sign(...d),!e.signature)throw new Error("!signature");const y=e.signature.toString("base64");if(this._blockhashInfo.transactionSignatures.includes(y))p=!0;else{this._blockhashInfo.transactionSignatures.push(y);break}}}const u=e.serialize();return await this.sendRawTransaction(u,l)}async sendRawTransaction(e,s){const l=toBuffer(e).toString("base64");return await this.sendEncodedTransaction(l,s)}async sendEncodedTransaction(e,s){const l={encoding:"base64"},d=s&&s.skipPreflight,u=d===!0?"processed":s&&s.preflightCommitment||this.commitment;s&&s.maxRetries!=null&&(l.maxRetries=s.maxRetries),s&&s.minContextSlot!=null&&(l.minContextSlot=s.minContextSlot),d&&(l.skipPreflight=d),u&&(l.preflightCommitment=u);const p=[e,l],m=await this._rpcRequest("sendTransaction",p),y=create$3(m,SendTransactionRpcResult);if("error"in y){let h;throw"data"in y.error&&(h=y.error.data.logs),new SendTransactionError({action:d?"send":"simulate",signature:"",transactionMessage:y.error.message,logs:h})}return y.result}_wsOnOpen(){this._rpcWebSocketConnected=!0,this._rpcWebSocketHeartbeat=setInterval(()=>{(async()=>{try{await this._rpcWebSocket.notify("ping")}catch{}})()},5e3),this._updateSubscriptions()}_wsOnError(e){this._rpcWebSocketConnected=!1,console.error("ws error:",e.message)}_wsOnClose(e){if(this._rpcWebSocketConnected=!1,this._rpcWebSocketGeneration=(this._rpcWebSocketGeneration+1)%Number.MAX_SAFE_INTEGER,this._rpcWebSocketIdleTimeout&&(clearTimeout(this._rpcWebSocketIdleTimeout),this._rpcWebSocketIdleTimeout=null),this._rpcWebSocketHeartbeat&&(clearInterval(this._rpcWebSocketHeartbeat),this._rpcWebSocketHeartbeat=null),e===1e3){this._updateSubscriptions();return}this._subscriptionCallbacksByServerSubscriptionId={},Object.entries(this._subscriptionsByHash).forEach(([s,l])=>{this._setSubscription(s,{...l,state:"pending"})})}_setSubscription(e,s){var d;const l=(d=this._subscriptionsByHash[e])==null?void 0:d.state;if(this._subscriptionsByHash[e]=s,l!==s.state){const u=this._subscriptionStateChangeCallbacksByHash[e];u&&u.forEach(p=>{try{p(s.state)}catch{}})}}_onSubscriptionStateChange(e,s){var u;const l=this._subscriptionHashByClientSubscriptionId[e];if(l==null)return()=>{};const d=(u=this._subscriptionStateChangeCallbacksByHash)[l]||(u[l]=new Set);return d.add(s),()=>{d.delete(s),d.size===0&&delete this._subscriptionStateChangeCallbacksByHash[l]}}async _updateSubscriptions(){if(Object.keys(this._subscriptionsByHash).length===0){this._rpcWebSocketConnected&&(this._rpcWebSocketConnected=!1,this._rpcWebSocketIdleTimeout=setTimeout(()=>{this._rpcWebSocketIdleTimeout=null;try{this._rpcWebSocket.close()}catch(l){l instanceof Error&&console.log(`Error when closing socket connection: ${l.message}`)}},500));return}if(this._rpcWebSocketIdleTimeout!==null&&(clearTimeout(this._rpcWebSocketIdleTimeout),this._rpcWebSocketIdleTimeout=null,this._rpcWebSocketConnected=!0),!this._rpcWebSocketConnected){this._rpcWebSocket.connect();return}const e=this._rpcWebSocketGeneration,s=()=>e===this._rpcWebSocketGeneration;await Promise.all(Object.keys(this._subscriptionsByHash).map(async l=>{const d=this._subscriptionsByHash[l];if(d!==void 0)switch(d.state){case"pending":case"unsubscribed":if(d.callbacks.size===0){delete this._subscriptionsByHash[l],d.state==="unsubscribed"&&delete this._subscriptionCallbacksByServerSubscriptionId[d.serverSubscriptionId],await this._updateSubscriptions();return}await(async()=>{const{args:u,method:p}=d;try{this._setSubscription(l,{...d,state:"subscribing"});const m=await this._rpcWebSocket.call(p,u);this._setSubscription(l,{...d,serverSubscriptionId:m,state:"subscribed"}),this._subscriptionCallbacksByServerSubscriptionId[m]=d.callbacks,await this._updateSubscriptions()}catch(m){if(console.error(`Received ${m instanceof Error?"":"JSON-RPC "}error calling \`${p}\``,{args:u,error:m}),!s())return;this._setSubscription(l,{...d,state:"pending"}),await this._updateSubscriptions()}})();break;case"subscribed":d.callbacks.size===0&&await(async()=>{const{serverSubscriptionId:u,unsubscribeMethod:p}=d;if(this._subscriptionsAutoDisposedByRpc.has(u))this._subscriptionsAutoDisposedByRpc.delete(u);else{this._setSubscription(l,{...d,state:"unsubscribing"}),this._setSubscription(l,{...d,state:"unsubscribing"});try{await this._rpcWebSocket.call(p,[u])}catch(m){if(m instanceof Error&&console.error(`${p} error:`,m.message),!s())return;this._setSubscription(l,{...d,state:"subscribed"}),await this._updateSubscriptions();return}}this._setSubscription(l,{...d,state:"unsubscribed"}),await this._updateSubscriptions()})();break}}))}_handleServerNotification(e,s){const l=this._subscriptionCallbacksByServerSubscriptionId[e];l!==void 0&&l.forEach(d=>{try{d(...s)}catch(u){console.error(u)}})}_wsOnAccountNotification(e){const{result:s,subscription:l}=create$3(e,AccountNotificationResult);this._handleServerNotification(l,[s.value,s.context])}_makeSubscription(e,s){const l=this._nextClientSubscriptionId++,d=fastStableStringify([e.method,s]),u=this._subscriptionsByHash[d];return u===void 0?this._subscriptionsByHash[d]={...e,args:s,callbacks:new Set([e.callback]),state:"pending"}:u.callbacks.add(e.callback),this._subscriptionHashByClientSubscriptionId[l]=d,this._subscriptionDisposeFunctionsByClientSubscriptionId[l]=async()=>{delete this._subscriptionDisposeFunctionsByClientSubscriptionId[l],delete this._subscriptionHashByClientSubscriptionId[l];const p=this._subscriptionsByHash[d];assert$4(p!==void 0,`Could not find a \`Subscription\` when tearing down client subscription #${l}`),p.callbacks.delete(e.callback),await this._updateSubscriptions()},this._updateSubscriptions(),l}onAccountChange(e,s,l){const{commitment:d,config:u}=extractCommitmentFromConfig(l),p=this._buildArgs([e.toBase58()],d||this._commitment||"finalized","base64",u);return this._makeSubscription({callback:s,method:"accountSubscribe",unsubscribeMethod:"accountUnsubscribe"},p)}async removeAccountChangeListener(e){await this._unsubscribeClientSubscription(e,"account change")}_wsOnProgramAccountNotification(e){const{result:s,subscription:l}=create$3(e,ProgramAccountNotificationResult);this._handleServerNotification(l,[{accountId:s.value.pubkey,accountInfo:s.value.account},s.context])}onProgramAccountChange(e,s,l,d){const{commitment:u,config:p}=extractCommitmentFromConfig(l),m=this._buildArgs([e.toBase58()],u||this._commitment||"finalized","base64",p||(d?{filters:applyDefaultMemcmpEncodingToFilters(d)}:void 0));return this._makeSubscription({callback:s,method:"programSubscribe",unsubscribeMethod:"programUnsubscribe"},m)}async removeProgramAccountChangeListener(e){await this._unsubscribeClientSubscription(e,"program account change")}onLogs(e,s,l){const d=this._buildArgs([typeof e=="object"?{mentions:[e.toString()]}:e],l||this._commitment||"finalized");return this._makeSubscription({callback:s,method:"logsSubscribe",unsubscribeMethod:"logsUnsubscribe"},d)}async removeOnLogsListener(e){await this._unsubscribeClientSubscription(e,"logs")}_wsOnLogsNotification(e){const{result:s,subscription:l}=create$3(e,LogsNotificationResult);this._handleServerNotification(l,[s.value,s.context])}_wsOnSlotNotification(e){const{result:s,subscription:l}=create$3(e,SlotNotificationResult);this._handleServerNotification(l,[s])}onSlotChange(e){return this._makeSubscription({callback:e,method:"slotSubscribe",unsubscribeMethod:"slotUnsubscribe"},[])}async removeSlotChangeListener(e){await this._unsubscribeClientSubscription(e,"slot change")}_wsOnSlotUpdatesNotification(e){const{result:s,subscription:l}=create$3(e,SlotUpdateNotificationResult);this._handleServerNotification(l,[s])}onSlotUpdate(e){return this._makeSubscription({callback:e,method:"slotsUpdatesSubscribe",unsubscribeMethod:"slotsUpdatesUnsubscribe"},[])}async removeSlotUpdateListener(e){await this._unsubscribeClientSubscription(e,"slot update")}async _unsubscribeClientSubscription(e,s){const l=this._subscriptionDisposeFunctionsByClientSubscriptionId[e];l?await l():console.warn(`Ignored unsubscribe request because an active subscription with id \`${e}\` for '${s}' events could not be found.`)}_buildArgs(e,s,l,d){const u=s||this._commitment;if(u||l||d){let p={};l&&(p.encoding=l),u&&(p.commitment=u),d&&(p=Object.assign(p,d)),e.push(p)}return e}_buildArgsAtLeastConfirmed(e,s,l,d){const u=s||this._commitment;if(u&&!["confirmed","finalized"].includes(u))throw new Error("Using Connection with default commitment: `"+this._commitment+"`, but method requires at least `confirmed`");return this._buildArgs(e,s,l,d)}_wsOnSignatureNotification(e){const{result:s,subscription:l}=create$3(e,SignatureNotificationResult);s.value!=="receivedSignature"&&this._subscriptionsAutoDisposedByRpc.add(l),this._handleServerNotification(l,s.value==="receivedSignature"?[{type:"received"},s.context]:[{type:"status",result:s.value},s.context])}onSignature(e,s,l){const d=this._buildArgs([e],l||this._commitment||"finalized"),u=this._makeSubscription({callback:(p,m)=>{if(p.type==="status"){s(p.result,m);try{this.removeSignatureListener(u)}catch{}}},method:"signatureSubscribe",unsubscribeMethod:"signatureUnsubscribe"},d);return u}onSignatureWithOptions(e,s,l){const{commitment:d,...u}={...l,commitment:l&&l.commitment||this._commitment||"finalized"},p=this._buildArgs([e],d,void 0,u),m=this._makeSubscription({callback:(y,h)=>{s(y,h);try{this.removeSignatureListener(m)}catch{}},method:"signatureSubscribe",unsubscribeMethod:"signatureUnsubscribe"},p);return m}async removeSignatureListener(e){await this._unsubscribeClientSubscription(e,"signature result")}_wsOnRootNotification(e){const{result:s,subscription:l}=create$3(e,RootNotificationResult);this._handleServerNotification(l,[s])}onRootChange(e){return this._makeSubscription({callback:e,method:"rootSubscribe",unsubscribeMethod:"rootUnsubscribe"},[])}async removeRootChangeListener(e){await this._unsubscribeClientSubscription(e,"root change")}};class Keypair{constructor(e){this._keypair=void 0,this._keypair=e??generateKeypair()}static generate(){return new Keypair(generateKeypair())}static fromSecretKey(e,s){if(e.byteLength!==64)throw new Error("bad secret key size");const l=e.slice(32,64);if(!s||!s.skipValidation){const d=e.slice(0,32),u=getPublicKey(d);for(let p=0;p<32;p++)if(l[p]!==u[p])throw new Error("provided secretKey is invalid")}return new Keypair({publicKey:l,secretKey:e})}static fromSeed(e){const s=getPublicKey(e),l=new Uint8Array(64);return l.set(e),l.set(s,32),new Keypair({publicKey:s,secretKey:l})}get publicKey(){return new PublicKey(this._keypair.publicKey)}get secretKey(){return new Uint8Array(this._keypair.secretKey)}}const LOOKUP_TABLE_INSTRUCTION_LAYOUTS=Object.freeze({CreateLookupTable:{index:0,layout:exports.struct([exports.u32("instruction"),u64$3("recentSlot"),exports.u8("bumpSeed")])},FreezeLookupTable:{index:1,layout:exports.struct([exports.u32("instruction")])},ExtendLookupTable:{index:2,layout:exports.struct([exports.u32("instruction"),u64$3(),exports.seq(publicKey$6(),offset$3(exports.u32(),-8),"addresses")])},DeactivateLookupTable:{index:3,layout:exports.struct([exports.u32("instruction")])},CloseLookupTable:{index:4,layout:exports.struct([exports.u32("instruction")])}});class AddressLookupTableInstruction{constructor(){}static decodeInstructionType(e){this.checkProgramId(e.programId);const l=exports.u32("instruction").decode(e.data);let d;for(const[u,p]of Object.entries(LOOKUP_TABLE_INSTRUCTION_LAYOUTS))if(p.index==l){d=u;break}if(!d)throw new Error("Invalid Instruction. Should be a LookupTable Instruction");return d}static decodeCreateLookupTable(e){this.checkProgramId(e.programId),this.checkKeysLength(e.keys,4);const{recentSlot:s}=decodeData$1(LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable,e.data);return{authority:e.keys[1].pubkey,payer:e.keys[2].pubkey,recentSlot:Number(s)}}static decodeExtendLookupTable(e){if(this.checkProgramId(e.programId),e.keys.length<2)throw new Error(`invalid instruction; found ${e.keys.length} keys, expected at least 2`);const{addresses:s}=decodeData$1(LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable,e.data);return{lookupTable:e.keys[0].pubkey,authority:e.keys[1].pubkey,payer:e.keys.length>2?e.keys[2].pubkey:void 0,addresses:s.map(l=>new PublicKey(l))}}static decodeCloseLookupTable(e){return this.checkProgramId(e.programId),this.checkKeysLength(e.keys,3),{lookupTable:e.keys[0].pubkey,authority:e.keys[1].pubkey,recipient:e.keys[2].pubkey}}static decodeFreezeLookupTable(e){return this.checkProgramId(e.programId),this.checkKeysLength(e.keys,2),{lookupTable:e.keys[0].pubkey,authority:e.keys[1].pubkey}}static decodeDeactivateLookupTable(e){return this.checkProgramId(e.programId),this.checkKeysLength(e.keys,2),{lookupTable:e.keys[0].pubkey,authority:e.keys[1].pubkey}}static checkProgramId(e){if(!e.equals(AddressLookupTableProgram.programId))throw new Error("invalid instruction; programId is not AddressLookupTable Program")}static checkKeysLength(e,s){if(e.length<s)throw new Error(`invalid instruction; found ${e.length} keys, expected at least ${s}`)}}class AddressLookupTableProgram{constructor(){}static createLookupTable(e){const[s,l]=PublicKey.findProgramAddressSync([e.authority.toBuffer(),toBufferLE_1(BigInt(e.recentSlot),8)],this.programId),d=LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable,u=encodeData(d,{recentSlot:BigInt(e.recentSlot),bumpSeed:l}),p=[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1},{pubkey:e.payer,isSigner:!0,isWritable:!0},{pubkey:SystemProgram.programId,isSigner:!1,isWritable:!1}];return[new TransactionInstruction({programId:this.programId,keys:p,data:u}),s]}static freezeLookupTable(e){const s=LOOKUP_TABLE_INSTRUCTION_LAYOUTS.FreezeLookupTable,l=encodeData(s),d=[{pubkey:e.lookupTable,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1}];return new TransactionInstruction({programId:this.programId,keys:d,data:l})}static extendLookupTable(e){const s=LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable,l=encodeData(s,{addresses:e.addresses.map(u=>u.toBytes())}),d=[{pubkey:e.lookupTable,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1}];return e.payer&&d.push({pubkey:e.payer,isSigner:!0,isWritable:!0},{pubkey:SystemProgram.programId,isSigner:!1,isWritable:!1}),new TransactionInstruction({programId:this.programId,keys:d,data:l})}static deactivateLookupTable(e){const s=LOOKUP_TABLE_INSTRUCTION_LAYOUTS.DeactivateLookupTable,l=encodeData(s),d=[{pubkey:e.lookupTable,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1}];return new TransactionInstruction({programId:this.programId,keys:d,data:l})}static closeLookupTable(e){const s=LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CloseLookupTable,l=encodeData(s),d=[{pubkey:e.lookupTable,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1},{pubkey:e.recipient,isSigner:!1,isWritable:!0}];return new TransactionInstruction({programId:this.programId,keys:d,data:l})}}AddressLookupTableProgram.programId=new PublicKey("AddressLookupTab1e1111111111111111111111111");class ComputeBudgetInstruction{constructor(){}static decodeInstructionType(e){this.checkProgramId(e.programId);const l=exports.u8("instruction").decode(e.data);let d;for(const[u,p]of Object.entries(COMPUTE_BUDGET_INSTRUCTION_LAYOUTS))if(p.index==l){d=u;break}if(!d)throw new Error("Instruction type incorrect; not a ComputeBudgetInstruction");return d}static decodeRequestUnits(e){this.checkProgramId(e.programId);const{units:s,additionalFee:l}=decodeData$1(COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits,e.data);return{units:s,additionalFee:l}}static decodeRequestHeapFrame(e){this.checkProgramId(e.programId);const{bytes:s}=decodeData$1(COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame,e.data);return{bytes:s}}static decodeSetComputeUnitLimit(e){this.checkProgramId(e.programId);const{units:s}=decodeData$1(COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit,e.data);return{units:s}}static decodeSetComputeUnitPrice(e){this.checkProgramId(e.programId);const{microLamports:s}=decodeData$1(COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice,e.data);return{microLamports:s}}static checkProgramId(e){if(!e.equals(ComputeBudgetProgram.programId))throw new Error("invalid instruction; programId is not ComputeBudgetProgram")}}const COMPUTE_BUDGET_INSTRUCTION_LAYOUTS=Object.freeze({RequestUnits:{index:0,layout:exports.struct([exports.u8("instruction"),exports.u32("units"),exports.u32("additionalFee")])},RequestHeapFrame:{index:1,layout:exports.struct([exports.u8("instruction"),exports.u32("bytes")])},SetComputeUnitLimit:{index:2,layout:exports.struct([exports.u8("instruction"),exports.u32("units")])},SetComputeUnitPrice:{index:3,layout:exports.struct([exports.u8("instruction"),u64$3("microLamports")])}});class ComputeBudgetProgram{constructor(){}static requestUnits(e){const s=COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits,l=encodeData(s,e);return new TransactionInstruction({keys:[],programId:this.programId,data:l})}static requestHeapFrame(e){const s=COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame,l=encodeData(s,e);return new TransactionInstruction({keys:[],programId:this.programId,data:l})}static setComputeUnitLimit(e){const s=COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit,l=encodeData(s,e);return new TransactionInstruction({keys:[],programId:this.programId,data:l})}static setComputeUnitPrice(e){const s=COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice,l=encodeData(s,{microLamports:BigInt(e.microLamports)});return new TransactionInstruction({keys:[],programId:this.programId,data:l})}}ComputeBudgetProgram.programId=new PublicKey("ComputeBudget111111111111111111111111111111");const PRIVATE_KEY_BYTES$1=64,PUBLIC_KEY_BYTES$1=32,SIGNATURE_BYTES=64,ED25519_INSTRUCTION_LAYOUT=exports.struct([exports.u8("numSignatures"),exports.u8("padding"),exports.u16("signatureOffset"),exports.u16("signatureInstructionIndex"),exports.u16("publicKeyOffset"),exports.u16("publicKeyInstructionIndex"),exports.u16("messageDataOffset"),exports.u16("messageDataSize"),exports.u16("messageInstructionIndex")]);class Ed25519Program{constructor(){}static createInstructionWithPublicKey(e){const{publicKey:s,message:l,signature:d,instructionIndex:u}=e;assert$4(s.length===PUBLIC_KEY_BYTES$1,`Public Key must be ${PUBLIC_KEY_BYTES$1} bytes but received ${s.length} bytes`),assert$4(d.length===SIGNATURE_BYTES,`Signature must be ${SIGNATURE_BYTES} bytes but received ${d.length} bytes`);const p=ED25519_INSTRUCTION_LAYOUT.span,m=p+s.length,y=m+d.length,h=1,v=bufferPolyfill.Buffer.alloc(y+l.length),A=u??65535;return ED25519_INSTRUCTION_LAYOUT.encode({numSignatures:h,padding:0,signatureOffset:m,signatureInstructionIndex:A,publicKeyOffset:p,publicKeyInstructionIndex:A,messageDataOffset:y,messageDataSize:l.length,messageInstructionIndex:A},v),v.fill(s,p),v.fill(d,m),v.fill(l,y),new TransactionInstruction({keys:[],programId:Ed25519Program.programId,data:v})}static createInstructionWithPrivateKey(e){const{privateKey:s,message:l,instructionIndex:d}=e;assert$4(s.length===PRIVATE_KEY_BYTES$1,`Private key must be ${PRIVATE_KEY_BYTES$1} bytes but received ${s.length} bytes`);try{const u=Keypair.fromSecretKey(s),p=u.publicKey.toBytes(),m=sign$3(l,u.secretKey);return this.createInstructionWithPublicKey({publicKey:p,message:l,signature:m,instructionIndex:d})}catch(u){throw new Error(`Error creating instruction; ${u}`)}}}Ed25519Program.programId=new PublicKey("Ed25519SigVerify111111111111111111111111111");const ecdsaSign=(t,e)=>{const s=secp256k1$1.sign(t,e);return[s.toCompactRawBytes(),s.recovery]};secp256k1$1.utils.isValidPrivateKey;const publicKeyCreate=secp256k1$1.getPublicKey,PRIVATE_KEY_BYTES=32,ETHEREUM_ADDRESS_BYTES=20,PUBLIC_KEY_BYTES=64,SIGNATURE_OFFSETS_SERIALIZED_SIZE=11,SECP256K1_INSTRUCTION_LAYOUT=exports.struct([exports.u8("numSignatures"),exports.u16("signatureOffset"),exports.u8("signatureInstructionIndex"),exports.u16("ethAddressOffset"),exports.u8("ethAddressInstructionIndex"),exports.u16("messageDataOffset"),exports.u16("messageDataSize"),exports.u8("messageInstructionIndex"),exports.blob(20,"ethAddress"),exports.blob(64,"signature"),exports.u8("recoveryId")]);class Secp256k1Program{constructor(){}static publicKeyToEthAddress(e){assert$4(e.length===PUBLIC_KEY_BYTES,`Public key must be ${PUBLIC_KEY_BYTES} bytes but received ${e.length} bytes`);try{return bufferPolyfill.Buffer.from(keccak_256(toBuffer(e))).slice(-ETHEREUM_ADDRESS_BYTES)}catch(s){throw new Error(`Error constructing Ethereum address: ${s}`)}}static createInstructionWithPublicKey(e){const{publicKey:s,message:l,signature:d,recoveryId:u,instructionIndex:p}=e;return Secp256k1Program.createInstructionWithEthAddress({ethAddress:Secp256k1Program.publicKeyToEthAddress(s),message:l,signature:d,recoveryId:u,instructionIndex:p})}static createInstructionWithEthAddress(e){const{ethAddress:s,message:l,signature:d,recoveryId:u,instructionIndex:p=0}=e;let m;typeof s=="string"?s.startsWith("0x")?m=bufferPolyfill.Buffer.from(s.substr(2),"hex"):m=bufferPolyfill.Buffer.from(s,"hex"):m=s,assert$4(m.length===ETHEREUM_ADDRESS_BYTES,`Address must be ${ETHEREUM_ADDRESS_BYTES} bytes but received ${m.length} bytes`);const y=1+SIGNATURE_OFFSETS_SERIALIZED_SIZE,h=y,v=y+m.length,A=v+d.length+1,w=1,I=bufferPolyfill.Buffer.alloc(SECP256K1_INSTRUCTION_LAYOUT.span+l.length);return SECP256K1_INSTRUCTION_LAYOUT.encode({numSignatures:w,signatureOffset:v,signatureInstructionIndex:p,ethAddressOffset:h,ethAddressInstructionIndex:p,messageDataOffset:A,messageDataSize:l.length,messageInstructionIndex:p,signature:toBuffer(d),ethAddress:toBuffer(m),recoveryId:u},I),I.fill(toBuffer(l),SECP256K1_INSTRUCTION_LAYOUT.span),new TransactionInstruction({keys:[],programId:Secp256k1Program.programId,data:I})}static createInstructionWithPrivateKey(e){const{privateKey:s,message:l,instructionIndex:d}=e;assert$4(s.length===PRIVATE_KEY_BYTES,`Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${s.length} bytes`);try{const u=toBuffer(s),p=publicKeyCreate(u,!1).slice(1),m=bufferPolyfill.Buffer.from(keccak_256(toBuffer(l))),[y,h]=ecdsaSign(m,u);return this.createInstructionWithPublicKey({publicKey:p,message:l,signature:y,recoveryId:h,instructionIndex:d})}catch(u){throw new Error(`Error creating instruction; ${u}`)}}}Secp256k1Program.programId=new PublicKey("KeccakSecp256k11111111111111111111111111111");var _Lockup;const STAKE_CONFIG_ID=new PublicKey("StakeConfig11111111111111111111111111111111");class Authorized{constructor(e,s){this.staker=void 0,this.withdrawer=void 0,this.staker=e,this.withdrawer=s}}class Lockup{constructor(e,s,l){this.unixTimestamp=void 0,this.epoch=void 0,this.custodian=void 0,this.unixTimestamp=e,this.epoch=s,this.custodian=l}}_Lockup=Lockup;Lockup.default=new _Lockup(0,0,PublicKey.default);class StakeInstruction{constructor(){}static decodeInstructionType(e){this.checkProgramId(e.programId);const l=exports.u32("instruction").decode(e.data);let d;for(const[u,p]of Object.entries(STAKE_INSTRUCTION_LAYOUTS))if(p.index==l){d=u;break}if(!d)throw new Error("Instruction type incorrect; not a StakeInstruction");return d}static decodeInitialize(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,2);const{authorized:s,lockup:l}=decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Initialize,e.data);return{stakePubkey:e.keys[0].pubkey,authorized:new Authorized(new PublicKey(s.staker),new PublicKey(s.withdrawer)),lockup:new Lockup(l.unixTimestamp,l.epoch,new PublicKey(l.custodian))}}static decodeDelegate(e){return this.checkProgramId(e.programId),this.checkKeyLength(e.keys,6),decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Delegate,e.data),{stakePubkey:e.keys[0].pubkey,votePubkey:e.keys[1].pubkey,authorizedPubkey:e.keys[5].pubkey}}static decodeAuthorize(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{newAuthorized:s,stakeAuthorizationType:l}=decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Authorize,e.data),d={stakePubkey:e.keys[0].pubkey,authorizedPubkey:e.keys[2].pubkey,newAuthorizedPubkey:new PublicKey(s),stakeAuthorizationType:{index:l}};return e.keys.length>3&&(d.custodianPubkey=e.keys[3].pubkey),d}static decodeAuthorizeWithSeed(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,2);const{newAuthorized:s,stakeAuthorizationType:l,authoritySeed:d,authorityOwner:u}=decodeData$1(STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,e.data),p={stakePubkey:e.keys[0].pubkey,authorityBase:e.keys[1].pubkey,authoritySeed:d,authorityOwner:new PublicKey(u),newAuthorizedPubkey:new PublicKey(s),stakeAuthorizationType:{index:l}};return e.keys.length>3&&(p.custodianPubkey=e.keys[3].pubkey),p}static decodeSplit(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{lamports:s}=decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Split,e.data);return{stakePubkey:e.keys[0].pubkey,splitStakePubkey:e.keys[1].pubkey,authorizedPubkey:e.keys[2].pubkey,lamports:s}}static decodeMerge(e){return this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3),decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Merge,e.data),{stakePubkey:e.keys[0].pubkey,sourceStakePubKey:e.keys[1].pubkey,authorizedPubkey:e.keys[4].pubkey}}static decodeWithdraw(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,5);const{lamports:s}=decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Withdraw,e.data),l={stakePubkey:e.keys[0].pubkey,toPubkey:e.keys[1].pubkey,authorizedPubkey:e.keys[4].pubkey,lamports:s};return e.keys.length>5&&(l.custodianPubkey=e.keys[5].pubkey),l}static decodeDeactivate(e){return this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3),decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Deactivate,e.data),{stakePubkey:e.keys[0].pubkey,authorizedPubkey:e.keys[2].pubkey}}static checkProgramId(e){if(!e.equals(StakeProgram.programId))throw new Error("invalid instruction; programId is not StakeProgram")}static checkKeyLength(e,s){if(e.length<s)throw new Error(`invalid instruction; found ${e.length} keys, expected at least ${s}`)}}const STAKE_INSTRUCTION_LAYOUTS=Object.freeze({Initialize:{index:0,layout:exports.struct([exports.u32("instruction"),authorized(),lockup()])},Authorize:{index:1,layout:exports.struct([exports.u32("instruction"),publicKey$6("newAuthorized"),exports.u32("stakeAuthorizationType")])},Delegate:{index:2,layout:exports.struct([exports.u32("instruction")])},Split:{index:3,layout:exports.struct([exports.u32("instruction"),exports.ns64("lamports")])},Withdraw:{index:4,layout:exports.struct([exports.u32("instruction"),exports.ns64("lamports")])},Deactivate:{index:5,layout:exports.struct([exports.u32("instruction")])},Merge:{index:7,layout:exports.struct([exports.u32("instruction")])},AuthorizeWithSeed:{index:8,layout:exports.struct([exports.u32("instruction"),publicKey$6("newAuthorized"),exports.u32("stakeAuthorizationType"),rustString("authoritySeed"),publicKey$6("authorityOwner")])}}),StakeAuthorizationLayout=Object.freeze({Staker:{index:0},Withdrawer:{index:1}});class StakeProgram{constructor(){}static initialize(e){const{stakePubkey:s,authorized:l,lockup:d}=e,u=d||Lockup.default,p=STAKE_INSTRUCTION_LAYOUTS.Initialize,m=encodeData(p,{authorized:{staker:toBuffer(l.staker.toBuffer()),withdrawer:toBuffer(l.withdrawer.toBuffer())},lockup:{unixTimestamp:u.unixTimestamp,epoch:u.epoch,custodian:toBuffer(u.custodian.toBuffer())}}),y={keys:[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}],programId:this.programId,data:m};return new TransactionInstruction(y)}static createAccountWithSeed(e){const s=new Transaction;s.add(SystemProgram.createAccountWithSeed({fromPubkey:e.fromPubkey,newAccountPubkey:e.stakePubkey,basePubkey:e.basePubkey,seed:e.seed,lamports:e.lamports,space:this.space,programId:this.programId}));const{stakePubkey:l,authorized:d,lockup:u}=e;return s.add(this.initialize({stakePubkey:l,authorized:d,lockup:u}))}static createAccount(e){const s=new Transaction;s.add(SystemProgram.createAccount({fromPubkey:e.fromPubkey,newAccountPubkey:e.stakePubkey,lamports:e.lamports,space:this.space,programId:this.programId}));const{stakePubkey:l,authorized:d,lockup:u}=e;return s.add(this.initialize({stakePubkey:l,authorized:d,lockup:u}))}static delegate(e){const{stakePubkey:s,authorizedPubkey:l,votePubkey:d}=e,u=STAKE_INSTRUCTION_LAYOUTS.Delegate,p=encodeData(u);return new Transaction().add({keys:[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:STAKE_CONFIG_ID,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!0,isWritable:!1}],programId:this.programId,data:p})}static authorize(e){const{stakePubkey:s,authorizedPubkey:l,newAuthorizedPubkey:d,stakeAuthorizationType:u,custodianPubkey:p}=e,m=STAKE_INSTRUCTION_LAYOUTS.Authorize,y=encodeData(m,{newAuthorized:toBuffer(d.toBuffer()),stakeAuthorizationType:u.index}),h=[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!0,isWritable:!1}];return p&&h.push({pubkey:p,isSigner:!0,isWritable:!1}),new Transaction().add({keys:h,programId:this.programId,data:y})}static authorizeWithSeed(e){const{stakePubkey:s,authorityBase:l,authoritySeed:d,authorityOwner:u,newAuthorizedPubkey:p,stakeAuthorizationType:m,custodianPubkey:y}=e,h=STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,v=encodeData(h,{newAuthorized:toBuffer(p.toBuffer()),stakeAuthorizationType:m.index,authoritySeed:d,authorityOwner:toBuffer(u.toBuffer())}),A=[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!0,isWritable:!1},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1}];return y&&A.push({pubkey:y,isSigner:!0,isWritable:!1}),new Transaction().add({keys:A,programId:this.programId,data:v})}static splitInstruction(e){const{stakePubkey:s,authorizedPubkey:l,splitStakePubkey:d,lamports:u}=e,p=STAKE_INSTRUCTION_LAYOUTS.Split,m=encodeData(p,{lamports:u});return new TransactionInstruction({keys:[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!0,isWritable:!1}],programId:this.programId,data:m})}static split(e,s){const l=new Transaction;return l.add(SystemProgram.createAccount({fromPubkey:e.authorizedPubkey,newAccountPubkey:e.splitStakePubkey,lamports:s,space:this.space,programId:this.programId})),l.add(this.splitInstruction(e))}static splitWithSeed(e,s){const{stakePubkey:l,authorizedPubkey:d,splitStakePubkey:u,basePubkey:p,seed:m,lamports:y}=e,h=new Transaction;return h.add(SystemProgram.allocate({accountPubkey:u,basePubkey:p,seed:m,space:this.space,programId:this.programId})),s&&s>0&&h.add(SystemProgram.transfer({fromPubkey:e.authorizedPubkey,toPubkey:u,lamports:s})),h.add(this.splitInstruction({stakePubkey:l,authorizedPubkey:d,splitStakePubkey:u,lamports:y}))}static merge(e){const{stakePubkey:s,sourceStakePubKey:l,authorizedPubkey:d}=e,u=STAKE_INSTRUCTION_LAYOUTS.Merge,p=encodeData(u);return new Transaction().add({keys:[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!0,isWritable:!1}],programId:this.programId,data:p})}static withdraw(e){const{stakePubkey:s,authorizedPubkey:l,toPubkey:d,lamports:u,custodianPubkey:p}=e,m=STAKE_INSTRUCTION_LAYOUTS.Withdraw,y=encodeData(m,{lamports:u}),h=[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!0,isWritable:!1}];return p&&h.push({pubkey:p,isSigner:!0,isWritable:!1}),new Transaction().add({keys:h,programId:this.programId,data:y})}static deactivate(e){const{stakePubkey:s,authorizedPubkey:l}=e,d=STAKE_INSTRUCTION_LAYOUTS.Deactivate,u=encodeData(d);return new Transaction().add({keys:[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!0,isWritable:!1}],programId:this.programId,data:u})}}StakeProgram.programId=new PublicKey("Stake11111111111111111111111111111111111111");StakeProgram.space=200;class VoteInit{constructor(e,s,l,d){this.nodePubkey=void 0,this.authorizedVoter=void 0,this.authorizedWithdrawer=void 0,this.commission=void 0,this.nodePubkey=e,this.authorizedVoter=s,this.authorizedWithdrawer=l,this.commission=d}}class VoteInstruction{constructor(){}static decodeInstructionType(e){this.checkProgramId(e.programId);const l=exports.u32("instruction").decode(e.data);let d;for(const[u,p]of Object.entries(VOTE_INSTRUCTION_LAYOUTS))if(p.index==l){d=u;break}if(!d)throw new Error("Instruction type incorrect; not a VoteInstruction");return d}static decodeInitializeAccount(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,4);const{voteInit:s}=decodeData$1(VOTE_INSTRUCTION_LAYOUTS.InitializeAccount,e.data);return{votePubkey:e.keys[0].pubkey,nodePubkey:e.keys[3].pubkey,voteInit:new VoteInit(new PublicKey(s.nodePubkey),new PublicKey(s.authorizedVoter),new PublicKey(s.authorizedWithdrawer),s.commission)}}static decodeAuthorize(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{newAuthorized:s,voteAuthorizationType:l}=decodeData$1(VOTE_INSTRUCTION_LAYOUTS.Authorize,e.data);return{votePubkey:e.keys[0].pubkey,authorizedPubkey:e.keys[2].pubkey,newAuthorizedPubkey:new PublicKey(s),voteAuthorizationType:{index:l}}}static decodeAuthorizeWithSeed(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{voteAuthorizeWithSeedArgs:{currentAuthorityDerivedKeyOwnerPubkey:s,currentAuthorityDerivedKeySeed:l,newAuthorized:d,voteAuthorizationType:u}}=decodeData$1(VOTE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,e.data);return{currentAuthorityDerivedKeyBasePubkey:e.keys[2].pubkey,currentAuthorityDerivedKeyOwnerPubkey:new PublicKey(s),currentAuthorityDerivedKeySeed:l,newAuthorizedPubkey:new PublicKey(d),voteAuthorizationType:{index:u},votePubkey:e.keys[0].pubkey}}static decodeWithdraw(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{lamports:s}=decodeData$1(VOTE_INSTRUCTION_LAYOUTS.Withdraw,e.data);return{votePubkey:e.keys[0].pubkey,authorizedWithdrawerPubkey:e.keys[2].pubkey,lamports:s,toPubkey:e.keys[1].pubkey}}static checkProgramId(e){if(!e.equals(VoteProgram.programId))throw new Error("invalid instruction; programId is not VoteProgram")}static checkKeyLength(e,s){if(e.length<s)throw new Error(`invalid instruction; found ${e.length} keys, expected at least ${s}`)}}const VOTE_INSTRUCTION_LAYOUTS=Object.freeze({InitializeAccount:{index:0,layout:exports.struct([exports.u32("instruction"),voteInit()])},Authorize:{index:1,layout:exports.struct([exports.u32("instruction"),publicKey$6("newAuthorized"),exports.u32("voteAuthorizationType")])},Withdraw:{index:3,layout:exports.struct([exports.u32("instruction"),exports.ns64("lamports")])},UpdateValidatorIdentity:{index:4,layout:exports.struct([exports.u32("instruction")])},AuthorizeWithSeed:{index:10,layout:exports.struct([exports.u32("instruction"),voteAuthorizeWithSeedArgs()])}}),VoteAuthorizationLayout=Object.freeze({Voter:{index:0},Withdrawer:{index:1}});class VoteProgram{constructor(){}static initializeAccount(e){const{votePubkey:s,nodePubkey:l,voteInit:d}=e,u=VOTE_INSTRUCTION_LAYOUTS.InitializeAccount,p=encodeData(u,{voteInit:{nodePubkey:toBuffer(d.nodePubkey.toBuffer()),authorizedVoter:toBuffer(d.authorizedVoter.toBuffer()),authorizedWithdrawer:toBuffer(d.authorizedWithdrawer.toBuffer()),commission:d.commission}}),m={keys:[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!0,isWritable:!1}],programId:this.programId,data:p};return new TransactionInstruction(m)}static createAccount(e){const s=new Transaction;return s.add(SystemProgram.createAccount({fromPubkey:e.fromPubkey,newAccountPubkey:e.votePubkey,lamports:e.lamports,space:this.space,programId:this.programId})),s.add(this.initializeAccount({votePubkey:e.votePubkey,nodePubkey:e.voteInit.nodePubkey,voteInit:e.voteInit}))}static authorize(e){const{votePubkey:s,authorizedPubkey:l,newAuthorizedPubkey:d,voteAuthorizationType:u}=e,p=VOTE_INSTRUCTION_LAYOUTS.Authorize,m=encodeData(p,{newAuthorized:toBuffer(d.toBuffer()),voteAuthorizationType:u.index}),y=[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!0,isWritable:!1}];return new Transaction().add({keys:y,programId:this.programId,data:m})}static authorizeWithSeed(e){const{currentAuthorityDerivedKeyBasePubkey:s,currentAuthorityDerivedKeyOwnerPubkey:l,currentAuthorityDerivedKeySeed:d,newAuthorizedPubkey:u,voteAuthorizationType:p,votePubkey:m}=e,y=VOTE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,h=encodeData(y,{voteAuthorizeWithSeedArgs:{currentAuthorityDerivedKeyOwnerPubkey:toBuffer(l.toBuffer()),currentAuthorityDerivedKeySeed:d,newAuthorized:toBuffer(u.toBuffer()),voteAuthorizationType:p.index}}),v=[{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!1}];return new Transaction().add({keys:v,programId:this.programId,data:h})}static withdraw(e){const{votePubkey:s,authorizedWithdrawerPubkey:l,lamports:d,toPubkey:u}=e,p=VOTE_INSTRUCTION_LAYOUTS.Withdraw,m=encodeData(p,{lamports:d}),y=[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!0,isWritable:!1}];return new Transaction().add({keys:y,programId:this.programId,data:m})}static safeWithdraw(e,s,l){if(e.lamports>s-l)throw new Error("Withdraw will leave vote account with insufficient funds.");return VoteProgram.withdraw(e)}static updateValidatorIdentity(e){const{votePubkey:s,authorizedWithdrawerPubkey:l,nodePubkey:d}=e,u=VOTE_INSTRUCTION_LAYOUTS.UpdateValidatorIdentity,p=encodeData(u),m=[{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!0,isWritable:!1},{pubkey:l,isSigner:!0,isWritable:!1}];return new Transaction().add({keys:m,programId:this.programId,data:p})}}VoteProgram.programId=new PublicKey("Vote111111111111111111111111111111111111111");VoteProgram.space=3762;const VALIDATOR_INFO_KEY=new PublicKey("Va1idator1nfo111111111111111111111111111111"),InfoString=type$3({name:string$3(),website:optional$2(string$3()),details:optional$2(string$3()),iconUrl:optional$2(string$3()),keybaseUsername:optional$2(string$3())});class ValidatorInfo{constructor(e,s){this.key=void 0,this.info=void 0,this.key=e,this.info=s}static fromConfigData(e){let s=[...e];if(decodeLength(s)!==2)return null;const d=[];for(let u=0;u<2;u++){const p=new PublicKey(guardedSplice(s,0,PUBLIC_KEY_LENGTH$1)),m=guardedShift(s)===1;d.push({publicKey:p,isSigner:m})}if(d[0].publicKey.equals(VALIDATOR_INFO_KEY)&&d[1].isSigner){const u=rustString().decode(bufferPolyfill.Buffer.from(s)),p=JSON.parse(u);return assert$5(p,InfoString),new ValidatorInfo(d[1].publicKey,p)}return null}}const VOTE_PROGRAM_ID=new PublicKey("Vote111111111111111111111111111111111111111"),VoteAccountLayout=exports.struct([publicKey$6("nodePubkey"),publicKey$6("authorizedWithdrawer"),exports.u8("commission"),nu64$1(),exports.seq(exports.struct([nu64$1("slot"),exports.u32("confirmationCount")]),offset$3(exports.u32(),-8),"votes"),exports.u8("rootSlotValid"),nu64$1("rootSlot"),nu64$1(),exports.seq(exports.struct([nu64$1("epoch"),publicKey$6("authorizedVoter")]),offset$3(exports.u32(),-8),"authorizedVoters"),exports.struct([exports.seq(exports.struct([publicKey$6("authorizedPubkey"),nu64$1("epochOfLastAuthorizedSwitch"),nu64$1("targetEpoch")]),32,"buf"),nu64$1("idx"),exports.u8("isEmpty")],"priorVoters"),nu64$1(),exports.seq(exports.struct([nu64$1("epoch"),nu64$1("credits"),nu64$1("prevCredits")]),offset$3(exports.u32(),-8),"epochCredits"),exports.struct([nu64$1("slot"),nu64$1("timestamp")],"lastTimestamp")]);class VoteAccount{constructor(e){this.nodePubkey=void 0,this.authorizedWithdrawer=void 0,this.commission=void 0,this.rootSlot=void 0,this.votes=void 0,this.authorizedVoters=void 0,this.priorVoters=void 0,this.epochCredits=void 0,this.lastTimestamp=void 0,this.nodePubkey=e.nodePubkey,this.authorizedWithdrawer=e.authorizedWithdrawer,this.commission=e.commission,this.rootSlot=e.rootSlot,this.votes=e.votes,this.authorizedVoters=e.authorizedVoters,this.priorVoters=e.priorVoters,this.epochCredits=e.epochCredits,this.lastTimestamp=e.lastTimestamp}static fromAccountData(e){const l=VoteAccountLayout.decode(toBuffer(e),4);let d=l.rootSlot;return l.rootSlotValid||(d=null),new VoteAccount({nodePubkey:new PublicKey(l.nodePubkey),authorizedWithdrawer:new PublicKey(l.authorizedWithdrawer),commission:l.commission,votes:l.votes,rootSlot:d,authorizedVoters:l.authorizedVoters.map(parseAuthorizedVoter),priorVoters:getPriorVoters(l.priorVoters),epochCredits:l.epochCredits,lastTimestamp:l.lastTimestamp})}}function parseAuthorizedVoter({authorizedVoter:t,epoch:e}){return{epoch:e,authorizedVoter:new PublicKey(t)}}function parsePriorVoters({authorizedPubkey:t,epochOfLastAuthorizedSwitch:e,targetEpoch:s}){return{authorizedPubkey:new PublicKey(t),epochOfLastAuthorizedSwitch:e,targetEpoch:s}}function getPriorVoters({buf:t,idx:e,isEmpty:s}){return s?[]:[...t.slice(e+1).map(parsePriorVoters),...t.slice(0,e).map(parsePriorVoters)]}const endpoint={http:{devnet:"http://api.devnet.solana.com",testnet:"http://api.testnet.solana.com","mainnet-beta":"http://api.mainnet-beta.solana.com/"},https:{devnet:"https://api.devnet.solana.com",testnet:"https://api.testnet.solana.com","mainnet-beta":"https://api.mainnet-beta.solana.com/"}};function clusterApiUrl(t,e){const s=e===!1?"http":"https";if(!t)return endpoint[s].devnet;const l=endpoint[s][t];if(!l)throw new Error(`Unknown ${s} cluster: ${t}`);return l}async function sendAndConfirmRawTransaction$1(t,e,s,l){let d,u;s&&Object.prototype.hasOwnProperty.call(s,"lastValidBlockHeight")||s&&Object.prototype.hasOwnProperty.call(s,"nonceValue")?(d=s,u=l):u=s;const p=u&&{skipPreflight:u.skipPreflight,preflightCommitment:u.preflightCommitment||u.commitment,minContextSlot:u.minContextSlot},m=await t.sendRawTransaction(e,p),y=u&&u.commitment,v=(await(d?t.confirmTransaction(d,y):t.confirmTransaction(m,y))).value;if(v.err)throw m!=null?new SendTransactionError({action:p!=null&&p.skipPreflight?"send":"simulate",signature:m,transactionMessage:`Status: (${JSON.stringify(v)})`}):new Error(`Raw transaction ${m} failed (${JSON.stringify(v)})`);return m}const LAMPORTS_PER_SOL=1e9,index_browser_esm=Object.freeze(Object.defineProperty({__proto__:null,Account,AddressLookupTableAccount,AddressLookupTableInstruction,AddressLookupTableProgram,Authorized,BLOCKHASH_CACHE_TIMEOUT_MS,BPF_LOADER_DEPRECATED_PROGRAM_ID,BPF_LOADER_PROGRAM_ID,BpfLoader,COMPUTE_BUDGET_INSTRUCTION_LAYOUTS,ComputeBudgetInstruction,ComputeBudgetProgram,Connection:Connection$1,Ed25519Program,Enum,EpochSchedule,FeeCalculatorLayout,Keypair,LAMPORTS_PER_SOL,LOOKUP_TABLE_INSTRUCTION_LAYOUTS,Loader,Lockup,MAX_SEED_LENGTH,Message,MessageAccountKeys,MessageV0,NONCE_ACCOUNT_LENGTH,NonceAccount,PACKET_DATA_SIZE,PUBLIC_KEY_LENGTH:PUBLIC_KEY_LENGTH$1,PublicKey,SIGNATURE_LENGTH_IN_BYTES,SOLANA_SCHEMA,STAKE_CONFIG_ID,STAKE_INSTRUCTION_LAYOUTS,SYSTEM_INSTRUCTION_LAYOUTS,SYSVAR_CLOCK_PUBKEY,SYSVAR_EPOCH_SCHEDULE_PUBKEY,SYSVAR_INSTRUCTIONS_PUBKEY,SYSVAR_RECENT_BLOCKHASHES_PUBKEY,SYSVAR_RENT_PUBKEY,SYSVAR_REWARDS_PUBKEY,SYSVAR_SLOT_HASHES_PUBKEY,SYSVAR_SLOT_HISTORY_PUBKEY,SYSVAR_STAKE_HISTORY_PUBKEY,Secp256k1Program,SendTransactionError,SolanaJSONRPCError,SolanaJSONRPCErrorCode,StakeAuthorizationLayout,StakeInstruction,StakeProgram,Struct:Struct$2,SystemInstruction,SystemProgram,Transaction,TransactionExpiredBlockheightExceededError,TransactionExpiredNonceInvalidError,TransactionExpiredTimeoutError,TransactionInstruction,TransactionMessage,TransactionStatus,VALIDATOR_INFO_KEY,VERSION_PREFIX_MASK,VOTE_PROGRAM_ID,ValidatorInfo,VersionedMessage,VersionedTransaction,VoteAccount,VoteAuthorizationLayout,VoteInit,VoteInstruction,VoteProgram,clusterApiUrl,sendAndConfirmRawTransaction:sendAndConfirmRawTransaction$1,sendAndConfirmTransaction},Symbol.toStringTag,{value:"Module"})),_platform="Solana",SolanaZeroAddress="11111111111111111111111111111111",Yn=class Yn{constructor(e){Ae(this,"type","Native");Ae(this,"address");Yn.instanceof(e)?this.address=e.address:UniversalAddress.instanceof(e)?this.address=new PublicKey(e.toUint8Array()):typeof e=="string"&&hex$1.valid(e)?this.address=new PublicKey(hex$1.decode(e)):this.address=new PublicKey(e)}unwrap(){return this.address}toString(){return this.address.toBase58()}toUint8Array(){return new Uint8Array(this.address.toBytes())}toNative(){return this}toUniversalAddress(){return new UniversalAddress(this.toUint8Array())}static instanceof(e){return e.constructor.platform===Yn.platform}equals(e){return Yn.instanceof(e)?e.unwrap().equals(this.unwrap()):this.toUniversalAddress().equals(e)}};Ae(Yn,"byteSize",32),Ae(Yn,"platform",_platform);let SolanaAddress=Yn;registerNative(_platform,SolanaAddress);function base$3(t){if(t.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),s=0;s<e.length;s++)e[s]=255;for(var l=0;l<t.length;l++){var d=t.charAt(l),u=d.charCodeAt(0);if(e[u]!==255)throw new TypeError(d+" is ambiguous");e[u]=l}var p=t.length,m=t.charAt(0),y=Math.log(p)/Math.log(256),h=Math.log(256)/Math.log(p);function v(I){if(I instanceof Uint8Array||(ArrayBuffer.isView(I)?I=new Uint8Array(I.buffer,I.byteOffset,I.byteLength):Array.isArray(I)&&(I=Uint8Array.from(I))),!(I instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(I.length===0)return"";for(var k=0,$=0,P=0,z=I.length;P!==z&&I[P]===0;)P++,k++;for(var U=(z-P)*h+1>>>0,F=new Uint8Array(U);P!==z;){for(var q=I[P],V=0,H=U-1;(q!==0||V<$)&&H!==-1;H--,V++)q+=256*F[H]>>>0,F[H]=q%p>>>0,q=q/p>>>0;if(q!==0)throw new Error("Non-zero carry");$=V,P++}for(var Z=U-$;Z!==U&&F[Z]===0;)Z++;for(var ne=m.repeat(k);Z<U;++Z)ne+=t.charAt(F[Z]);return ne}function A(I){if(typeof I!="string")throw new TypeError("Expected String");if(I.length===0)return new Uint8Array;for(var k=0,$=0,P=0;I[k]===m;)$++,k++;for(var z=(I.length-k)*y+1>>>0,U=new Uint8Array(z);I[k];){var F=e[I.charCodeAt(k)];if(F===255)return;for(var q=0,V=z-1;(F!==0||q<P)&&V!==-1;V--,q++)F+=p*U[V]>>>0,U[V]=F%256>>>0,F=F/256>>>0;if(F!==0)throw new Error("Non-zero carry");P=q,k++}for(var H=z-P;H!==z&&U[H]===0;)H++;for(var Z=new Uint8Array($+(z-H)),ne=$;H!==z;)Z[ne++]=U[H++];return Z}function w(I){var k=A(I);if(k)return k;throw new Error("Non-base"+p+" character")}return{encode:v,decodeUnsafe:A,decode:w}}var src$3=base$3;const basex$1=src$3,ALPHABET$2="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";var bs58$3=basex$1(ALPHABET$2);const bs58$4=getDefaultExportFromCjs$2(bs58$3),toB58$1=t=>bs58$4.encode(t),fromB58$1=t=>bs58$4.decode(t),TX_DIGEST_LENGTH$1=32;function isValidTransactionDigest$1(t){try{return fromB58$1(t).length===TX_DIGEST_LENGTH$1}catch{return!1}}const SUI_ADDRESS_LENGTH$2=32;function isValidSuiAddress$1(t){return isHex$1(t)&&getHexByteLength$1(t)===SUI_ADDRESS_LENGTH$2}function isValidSuiObjectId$1(t){return isValidSuiAddress$1(t)}function normalizeSuiAddress$1(t,e=!1){let s=t.toLowerCase();return!e&&s.startsWith("0x")&&(s=s.slice(2)),`0x${s.padStart(SUI_ADDRESS_LENGTH$2*2,"0")}`}function normalizeSuiObjectId$1(t,e=!1){return normalizeSuiAddress$1(t,e)}function isHex$1(t){return/^(0x|0X)?[a-fA-F0-9]+$/.test(t)&&t.length%2===0}function getHexByteLength$1(t){return/^(0x|0X)/.test(t)?(t.length-2)/2:t.length/2}BigInt(1e9);const MOVE_STDLIB_ADDRESS$1="0x1",SUI_FRAMEWORK_ADDRESS$1="0x2";normalizeSuiObjectId$1("0x6");const SUI_TYPE_ARG$1=`${SUI_FRAMEWORK_ADDRESS$1}::sui::SUI`;normalizeSuiObjectId$1("0x5");const SUI_SEPARATOR="::",SUI_COIN="0x2::sui::SUI",isValidSuiType=t=>/^(0x)?[0-9a-fA-F]+::\w+::\w+$/.test(t),trimSuiType=t=>t.replace(/(0x)(0*)/g,"0x");function zpadSuiAddress(t){return t=t.startsWith("0x")?t.slice(2):t,t=t.length%2===0?t:"0"+t,`0x${t.length===64?t:hex$1.encode(bytes$1.zpad(hex$1.decode(t),32))}`}const normalizeSuiType=t=>{const e=t.split(SUI_SEPARATOR);if(e.length!==3)throw new Error(`Invalid Sui type: ${t}`);return[normalizeSuiAddress$1(e[0]),e[1],e[2]].join(SUI_SEPARATOR)},getCoinTypeFromPackageId=t=>new SuiAddress$1(t).getCoinType(),getPackageIdFromType=t=>new SuiAddress$1(t).getPackageId(),getTableKeyType=t=>{const e=trimSuiType(t).match(/0x2::table::Table<(.*)>/);if(!e)throw new Error(`Invalid table type: ${t}`);if(e.length<2)throw new Error(`Invalid table type: ${t}`);const[s]=e[1].split(",");if(!s||!isValidSuiType(s))throw new Error(`Invalid key type: ${s}`);return s};var Zr;let SuiAddress$1=(Zr=class{constructor(e){Ae(this,"address");Ae(this,"module");if(Zr.instanceof(e))this.address=e.address,this.module=e.module;else if(UniversalAddress.instanceof(e))this.address=e.toUint8Array();else if(typeof e=="string"){if(isValidSuiType(e)){const s=e.split(SUI_SEPARATOR);this.module=s.slice(1).join(SUI_SEPARATOR),e=s[0]}if(e=zpadSuiAddress(e),!hex$1.valid(e))throw new Error("Invalid Sui address: "+e);this.address=hex$1.decode(e)}else this.address=e}unwrap(){const e=this.getPackageId(),s=this.module?SUI_SEPARATOR+this.module:"";return`${e}${s}`}toString(){return this.unwrap()}toNative(){return this}toUint8Array(){return this.address}toUniversalAddress(){return new UniversalAddress(this.toUint8Array())}getPackageId(){return zpadSuiAddress(hex$1.encode(this.address))}getCoinType(){if(this.module==="sui::SUI")return SUI_COIN;if(!this.module)throw new Error("No module present in Sui token address");return this.unwrap()}static instanceof(e){return e.constructor.platform===Zr.platform}equals(e){return Zr.instanceof(e)?e.unwrap()===this.unwrap():this.toUniversalAddress().equals(e)}},Ae(Zr,"byteSize",32),Ae(Zr,"platform","Sui"),Zr);registerNative("Sui",SuiAddress$1);async function loadPlatforms(t){try{const e=await Promise.all(t.map(async s=>s()));return await Promise.all(e.map(async s=>await loadProtocols(s))),e}catch(e){throw console.error("Failed to load required packages",e),e}}async function loadProtocols(t,e){try{let s=Object.entries(t.protocols);await Promise.all(s.map(([,l])=>l()))}catch(s){throw console.error("Failed to load required packages",s),s}}async function wormhole(t,e,s){const l=(await loadPlatforms(e)).map(d=>d.Platform);return new Wormhole(t,l,s)}class WormholeContext extends MultiProvider{constructor(s,l){super();Ae(this,"conf");l?this.conf=l:this.conf=WormholeContext.getConfig(s),this.registerProviders()}get environment(){return this.conf.env}registerProviders(){var s;for(const l of Object.keys(this.conf.rpcs)){const d=toChainId(l);if(!d)throw new Error(`Unknown chain ${l}`);this.registerDomain({domain:d,name:l}),((s=this.conf.chains[l])==null?void 0:s.context)===Context.ETH&&this.registerRpcProvider(l,this.conf.rpcs[l])}}getContext(s){return this}static getConfig(s){return s==="Mainnet"?MAINNET_CONFIG:s==="Devnet"?DEVNET_CONFIG:TESTNET_CONFIG}}const wi=class wi extends Error{constructor(){super(wi.MESSAGE)}};Ae(wi,"MESSAGE","Insufficient funds for gas"),Ae(wi,"MESSAGE_REGEX",/insufficient funds|Insufficient funds for gas/gm);let InsufficientFundsForGasError=wi;const CONFIG={MAINNET:MAINNET_CONFIG,TESTNET:TESTNET_CONFIG,DEVNET:DEVNET_CONFIG},{chains:chains$3}=CONFIG.MAINNET,MAINNET_CHAINS={Ethereum:{...chains$3.Ethereum,displayName:"Ethereum",sdkName:"Ethereum",explorerUrl:"https://etherscan.io/",explorerName:"Etherscan",chainId:1,icon:"Ethereum",symbol:"ETH",wrappedGasToken:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},Bsc:{...chains$3.Bsc,displayName:"BSC",sdkName:"Bsc",explorerUrl:"https://bscscan.com/",explorerName:"BscScan",chainId:56,icon:"Bsc",symbol:"BSC",wrappedGasToken:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"},Polygon:{...chains$3.Polygon,displayName:"Polygon",sdkName:"Polygon",explorerUrl:"https://polygonscan.com/",explorerName:"PolygonScan",chainId:137,icon:"Polygon",symbol:"POL",wrappedGasToken:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"},Avalanche:{...chains$3.Avalanche,displayName:"Avalanche",sdkName:"Avalanche",explorerUrl:"https://avascan.info/blockchain/c/",explorerName:"Avascan",chainId:43114,icon:"Avalanche",symbol:"AVAX",wrappedGasToken:"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"},Fantom:{...chains$3.Fantom,displayName:"Fantom",sdkName:"Fantom",explorerUrl:"https://ftmscan.com/",explorerName:"FTMscan",chainId:250,icon:"Fantom",symbol:"FTM",wrappedGasToken:"0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83"},Celo:{...chains$3.Celo,displayName:"Celo",sdkName:"Celo",explorerUrl:"https://explorer.celo.org/mainnet/",explorerName:"Celo Explorer",chainId:42220,icon:"Celo",symbol:"CELO"},Moonbeam:{...chains$3.Moonbeam,displayName:"Moonbeam",sdkName:"Moonbeam",explorerUrl:"https://moonscan.io/",explorerName:"Moonscan",chainId:1284,icon:"Moonbeam",symbol:"GLMR",wrappedGasToken:"0xAcc15dC74880C9944775448304B263D191c6077F"},Solana:{...chains$3.Solana,displayName:"Solana",sdkName:"Solana",explorerUrl:"https://explorer.solana.com/",explorerName:"Solana Explorer",chainId:0,icon:"Solana",symbol:"SOL",wrappedGasToken:"So11111111111111111111111111111111111111112"},Sui:{...chains$3.Sui,displayName:"Sui",sdkName:"Sui",explorerUrl:"https://suiscan.xyz/",explorerName:"Suiscan",chainId:0,icon:"Sui",symbol:"SUI"},Aptos:{...chains$3.Aptos,displayName:"Aptos",sdkName:"Aptos",explorerUrl:"https://explorer.aptoslabs.com/",explorerName:"Aptos Explorer",chainId:0,icon:"Aptos",symbol:"APT"},Base:{...chains$3.Base,displayName:"Base",sdkName:"Base",explorerUrl:"https://basescan.org/",explorerName:"BaseScan",chainId:8453,icon:"Base",symbol:"BASE",wrappedGasToken:"0x4200000000000000000000000000000000000006"},Arbitrum:{...chains$3.Arbitrum,displayName:"Arbitrum",sdkName:"Arbitrum",explorerUrl:"https://arbiscan.io/",explorerName:"Arbitrum Explorer",chainId:42161,icon:"Arbitrum",symbol:"ARB",wrappedGasToken:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"},Optimism:{...chains$3.Optimism,displayName:"Optimism",sdkName:"Optimism",explorerUrl:"https://optimistic.etherscan.io/",explorerName:"Optimistic Etherscan",chainId:10,icon:"Optimism",symbol:"OP",wrappedGasToken:"0x4200000000000000000000000000000000000006"},Klaytn:{...chains$3.Klaytn,displayName:"Kaia",sdkName:"Klaytn",explorerUrl:"https://kaiascope.com/",explorerName:"Kaia Scope",chainId:8217,icon:"Klaytn",symbol:"KLAY",wrappedGasToken:"0xe4f05A66Ec68B54A58B17c22107b02e0232cC817"},Scroll:{...chains$3.Scroll,displayName:"Scroll",sdkName:"Scroll",explorerUrl:"https://scrollscan.com/",explorerName:"Scrollscan",chainId:534352,icon:"Scroll",symbol:"SCR",wrappedGasToken:"0x5300000000000000000000000000000000000004"},Blast:{...chains$3.Blast,displayName:"Blast",sdkName:"Blast",explorerUrl:"https://blastscan.io/",explorerName:"Blastscan",chainId:81457,icon:"Blast",symbol:"BLAST",wrappedGasToken:"0x9D020B1697035d9d54f115194c9e04a1e4Eb9aF7"},Xlayer:{...chains$3.Xlayer,displayName:"X Layer",sdkName:"Xlayer",explorerUrl:"https://www.okx.com/web3/explorer/xlayer/",explorerName:"OKX Explorer",chainId:196,icon:"Xlayer",symbol:"OKX",wrappedGasToken:"0xe538905cf8410324e03A5A23C1c177a474D59b2b"},Mantle:{...chains$3.Mantle,displayName:"Mantle",sdkName:"Mantle",explorerUrl:"https://explorer.mantle.xyz/",explorerName:"Mantle Explorer",chainId:5e3,icon:"Mantle",symbol:"MNT",wrappedGasToken:"0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8"},Worldchain:{...chains$3.Worldchain,displayName:"World Chain",sdkName:"Worldchain",explorerUrl:"https://worldscan.org/",explorerName:"World Scan",chainId:480,icon:"Worldchain",symbol:"WORLD"},Unichain:{...chains$3.Unichain,displayName:"Unichain",sdkName:"Unichain",explorerUrl:"https://uniscan.xyz/",explorerName:"Uniscan",chainId:130,icon:"Unichain",symbol:"UNI",wrappedGasToken:"0x4200000000000000000000000000000000000006"},Berachain:{...chains$3.Berachain,displayName:"Berachain",sdkName:"Berachain",explorerUrl:"https://berascan.com/",explorerName:"Berascan",chainId:80094,icon:"Berachain",symbol:"BERA",wrappedGasToken:"0x6969696969696969696969696969696969696969"}},error=t=>{console.error(`Wormhole Connect: ${t}`)},populateRpcField=(t,e)=>e?{[t]:e}:{},mergeCustomWrappedTokens=(t,e)=>{if(!e)return t;for(const s in e)for(const l in e[s])t[s]||(t[s]={}),t[s][l]={...e[s][l],...t[s][l]};return t},validateDefaults=(t,e,s)=>{if(t)return t.fromChain&&(e[t.fromChain]||(error(`Invalid chain name "${t.fromChain}" specified for defaultInputs.fromChain`),delete t.fromChain)),t.toChain&&(e[t.toChain]||(error(`Invalid chain name "${t.toChain}" specified for defaultInputs.toChain`),delete t.fromChain)),t.fromChain&&t.toChain&&t.fromChain===t.toChain&&error("Source and destination chain cannot be the same, check the defaultInputs configuration"),t.fromChain&&t.toChain&&t.requiredChain&&(e[t.requiredChain]||error(`Invalid network value "${t.requiredChain}" specified for defaultInputs.requiredChain`),t.toChain!==t.requiredChain&&t.fromChain!==t.requiredChain&&error("Source chain or destination chain must equal the required network")),t.fromChain&&t.fromToken&&(s.findByAddressOrSymbol(t.fromChain,t.fromToken)||(error(`Invalid token "${t.fromToken}" specified for defaultInputs.fromToken`),delete t.fromToken)),t.toChain&&t.toToken&&(s.findByAddressOrSymbol(t.toChain,t.toToken)||(error(`Invalid token "${t.toToken}" specified for defaultInputs.toToken`),delete t.toToken)),t},capitalize$1=t=>t[0].toUpperCase()+t.slice(1),__vite_import_meta_env__$2={},{REACT_APP_ETHEREUM_RPC,REACT_APP_SOLANA_RPC,REACT_APP_POLYGON_RPC,REACT_APP_BSC_RPC,REACT_APP_AVALANCHE_RPC,REACT_APP_FANTOM_RPC,REACT_APP_CELO_RPC,REACT_APP_MOONBEAM_RPC,REACT_APP_SUI_RPC,REACT_APP_APTOS_RPC,REACT_APP_BASE_RPC,REACT_APP_KLAYTN_RPC,REACT_APP_ARBITRUM_RPC,REACT_APP_OPTIMISM_RPC,REACT_APP_SCROLL_RPC,REACT_APP_BLAST_RPC,REACT_APP_XLAYER_RPC,REACT_APP_MANTLE_RPC,REACT_APP_WORLDCHAIN_RPC,REACT_APP_UNICHAIN_RPC,REACT_APP_BERACHAIN_RPC}=__vite_import_meta_env__$2,MAINNET_RPC_MAPPING={...populateRpcField("Ethereum",REACT_APP_ETHEREUM_RPC),...populateRpcField("Solana",REACT_APP_SOLANA_RPC),...populateRpcField("Polygon",REACT_APP_POLYGON_RPC),...populateRpcField("Bsc",REACT_APP_BSC_RPC),...populateRpcField("Avalanche",REACT_APP_AVALANCHE_RPC),...populateRpcField("Fantom",REACT_APP_FANTOM_RPC),...populateRpcField("Celo",REACT_APP_CELO_RPC),...populateRpcField("Moonbeam",REACT_APP_MOONBEAM_RPC),...populateRpcField("Sui",REACT_APP_SUI_RPC),...populateRpcField("Aptos",REACT_APP_APTOS_RPC),...populateRpcField("Base",REACT_APP_BASE_RPC),...populateRpcField("Arbitrum",REACT_APP_ARBITRUM_RPC),...populateRpcField("Optimism",REACT_APP_OPTIMISM_RPC),...populateRpcField("Klaytn",REACT_APP_KLAYTN_RPC),...populateRpcField("Scroll",REACT_APP_SCROLL_RPC),...populateRpcField("Blast",REACT_APP_BLAST_RPC),...populateRpcField("Xlayer",REACT_APP_XLAYER_RPC),...populateRpcField("Mantle",REACT_APP_MANTLE_RPC),...populateRpcField("Worldchain",REACT_APP_WORLDCHAIN_RPC),...populateRpcField("Unichain",REACT_APP_UNICHAIN_RPC),...populateRpcField("Berachain",REACT_APP_BERACHAIN_RPC)};var TokenIcon=(t=>(t[t.AVAX=1]="AVAX",t[t.BNB=2]="BNB",t[t.BSC=3]="BSC",t[t.CELO=4]="CELO",t[t.ETH=5]="ETH",t[t.FANTOM=6]="FANTOM",t[t.POLYGON=7]="POLYGON",t[t.SOLANA=8]="SOLANA",t[t.USDC=9]="USDC",t[t.GLMR=10]="GLMR",t[t.DAI=11]="DAI",t[t.USDT=12]="USDT",t[t.BUSD=13]="BUSD",t[t.WBTC=14]="WBTC",t[t.SUI=15]="SUI",t[t.APT=16]="APT",t[t.SEI=17]="SEI",t[t.BASE=18]="BASE",t[t.OSMO=19]="OSMO",t[t.TBTC=20]="TBTC",t[t.WSTETH=21]="WSTETH",t[t.ARBITRUM=22]="ARBITRUM",t[t.OPTIMISM=23]="OPTIMISM",t[t.ATOM=24]="ATOM",t[t.EVMOS=25]="EVMOS",t[t.KUJI=26]="KUJI",t[t.PYTH=27]="PYTH",t[t.INJ=28]="INJ",t[t.KLAY=29]="KLAY",t[t.NTT=30]="NTT",t[t.SCROLL=31]="SCROLL",t[t.BLAST=32]="BLAST",t[t.XLAYER=33]="XLAYER",t[t.MANTLE=34]="MANTLE",t[t.WORLDCHAIN=35]="WORLDCHAIN",t[t.BERA=36]="BERA",t))(TokenIcon||{});const MAINNET_TOKENS=[{symbol:"ETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Ethereum",address:"native"}},{symbol:"WETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Ethereum",address:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"}},{symbol:"USDC",decimals:6,icon:TokenIcon.USDC,tokenId:{chain:"Ethereum",address:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"}},{symbol:"WBTC",decimals:8,icon:TokenIcon.WBTC,tokenId:{chain:"Ethereum",address:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"}},{symbol:"USDT",decimals:6,icon:TokenIcon.USDT,tokenId:{chain:"Ethereum",address:"0xdAC17F958D2ee523a2206206994597C13D831ec7"}},{symbol:"DAI",decimals:18,icon:TokenIcon.DAI,tokenId:{chain:"Ethereum",address:"0x6B175474E89094C44Da98b954EedeAC495271d0F"}},{symbol:"BUSD",decimals:18,icon:TokenIcon.BUSD,tokenId:{chain:"Ethereum",address:"0x4Fabb145d64652a948d72533023f6E7A623C7C53"}},{symbol:"POL",decimals:18,icon:TokenIcon.POLYGON,tokenId:{chain:"Polygon",address:"native"}},{symbol:"WPOL",decimals:18,icon:TokenIcon.POLYGON,tokenId:{chain:"Polygon",address:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"}},{symbol:"WETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Polygon",address:"0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619"}},{symbol:"USDC",decimals:6,icon:TokenIcon.USDC,tokenId:{chain:"Polygon",address:"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"}},{symbol:"USDT",decimals:6,icon:TokenIcon.USDT,tokenId:{chain:"Polygon",address:"0xc2132D05D31c914a87C6611C10748AEb04B58e8F"}},{symbol:"BNB",decimals:18,icon:TokenIcon.BNB,tokenId:{chain:"Bsc",address:"native"}},{symbol:"WBNB",decimals:18,icon:TokenIcon.BNB,tokenId:{chain:"Bsc",address:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"}},{symbol:"USDC",decimals:18,icon:TokenIcon.USDC,tokenId:{chain:"Bsc",address:"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"}},{symbol:"AVAX",decimals:18,icon:TokenIcon.AVAX,tokenId:{chain:"Avalanche",address:"native"}},{symbol:"WAVAX",decimals:18,icon:TokenIcon.AVAX,tokenId:{chain:"Avalanche",address:"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"}},{symbol:"USDC",decimals:6,icon:TokenIcon.USDC,tokenId:{chain:"Avalanche",address:"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"}},{symbol:"USDT",decimals:6,icon:TokenIcon.USDT,tokenId:{chain:"Avalanche",address:"0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7"}},{symbol:"WETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Avalanche",address:"0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB"}},{symbol:"FTM",decimals:18,icon:TokenIcon.FANTOM,tokenId:{chain:"Fantom",address:"native"}},{symbol:"WFTM",name:"Wrapped Fantom",decimals:18,icon:TokenIcon.FANTOM,tokenId:{chain:"Fantom",address:"0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83"}},{symbol:"USDC.e",decimals:6,icon:TokenIcon.USDC,tokenId:{chain:"Fantom",address:"0x2F733095B80A04b38b0D10cC884524a3d09b836a"}},{symbol:"CELO",decimals:18,icon:TokenIcon.CELO,tokenId:{chain:"Celo",address:"0x471EcE3750Da237f93B8E339c536989b8978a438"}},{symbol:"USDT",decimals:6,icon:TokenIcon.USDT,tokenId:{chain:"Celo",address:"0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e"}},{symbol:"GLMR",decimals:18,icon:TokenIcon.GLMR,tokenId:{chain:"Moonbeam",address:"native"}},{symbol:"WGLMR",decimals:18,icon:TokenIcon.GLMR,tokenId:{chain:"Moonbeam",address:"0xAcc15dC74880C9944775448304B263D191c6077F"}},{symbol:"SOL",decimals:9,icon:TokenIcon.SOLANA,tokenId:{chain:"Solana",address:"native"}},{symbol:"WSOL",decimals:9,tokenId:{chain:"Solana",address:"So11111111111111111111111111111111111111112"},icon:TokenIcon.SOLANA},{symbol:"USDC",decimals:6,tokenId:{chain:"Solana",address:"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"},icon:TokenIcon.USDC},{symbol:"USDT",decimals:6,icon:TokenIcon.USDT,tokenId:{chain:"Solana",address:"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"}},{symbol:"SUI",decimals:9,tokenId:{chain:"Sui",address:"native"},icon:TokenIcon.SUI},{symbol:"USDC",decimals:6,tokenId:{chain:"Sui",address:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"},icon:TokenIcon.USDC},{symbol:"APT",decimals:8,tokenId:{chain:"Aptos",address:"native"},icon:TokenIcon.APT},{symbol:"USDC",decimals:6,tokenId:{chain:"Aptos",address:"0xbae207659db88bea0cbead6da0ed00aac12edcdda169e591cd41c94180b46f3b"},icon:TokenIcon.USDC},{symbol:"ETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Arbitrum",address:"native"}},{symbol:"WETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Arbitrum",address:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"}},{symbol:"USDC",decimals:6,icon:TokenIcon.USDC,tokenId:{chain:"Arbitrum",address:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831"}},{symbol:"USDT",decimals:6,icon:TokenIcon.USDT,tokenId:{chain:"Arbitrum",address:"0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9"}},{symbol:"ETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Optimism",address:"native"}},{symbol:"WETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Optimism",address:"0x4200000000000000000000000000000000000006"}},{symbol:"USDC",decimals:6,icon:TokenIcon.USDC,tokenId:{chain:"Optimism",address:"0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85"}},{symbol:"USDT",decimals:6,icon:TokenIcon.USDT,tokenId:{chain:"Optimism",address:"0x94b008aA00579c1307B0EF2c499aD98a8ce58e58"}},{symbol:"WETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Bsc",address:"0x2170Ed0880ac9A755fd29B2688956BD959F933F8"}},{symbol:"USDT",decimals:18,icon:TokenIcon.USDT,tokenId:{chain:"Bsc",address:"0x55d398326f99059fF775485246999027B3197955"}},{symbol:"ETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Base",address:"native"}},{symbol:"WETH",decimals:18,icon:TokenIcon.ETH,tokenId:{chain:"Base",address:"0x4200000000000000000000000000000000000006"}},{symbol:"USDC",decimals:6,icon:TokenIcon.USDC,tokenId:{chain:"Base",address:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}},{symbol:"USDT",decimals:6,icon:TokenIcon.USDT,tokenId:{chain:"Base",address:"0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2"}},{symbol:"wstETH",decimals:18,tokenId:{chain:"Base",address:"0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452"},icon:TokenIcon.WSTETH},{symbol:"wstETH",decimals:18,tokenId:{chain:"Ethereum",address:"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"},icon:TokenIcon.WSTETH},{symbol:"wstETH",decimals:18,tokenId:{chain:"Arbitrum",address:"0x5979D7b546E38E414F7E9822514be443A4800529"},icon:TokenIcon.WSTETH},{symbol:"wstETH",decimals:18,tokenId:{chain:"Optimism",address:"0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb"},icon:TokenIcon.WSTETH},{symbol:"wstETH",decimals:18,tokenId:{chain:"Polygon",address:"0x03b54A6e9a984069379fae1a4fC4dBAE93B3bCCD"},icon:TokenIcon.WSTETH},{symbol:"KLAY",decimals:18,icon:TokenIcon.KLAY,tokenId:{chain:"Klaytn",address:"native"}},{symbol:"WKLAY",decimals:18,name:"wKLAY",icon:TokenIcon.KLAY,tokenId:{chain:"Klaytn",address:"0xe4f05A66Ec68B54A58B17c22107b02e0232cC817"}},{symbol:"PYTH",decimals:6,tokenId:{chain:"Solana",address:"HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3"},icon:TokenIcon.PYTH},{symbol:"ETH",decimals:18,icon:TokenIcon.SCROLL,tokenId:{chain:"Scroll",address:"native"}},{symbol:"WETH",decimals:18,icon:TokenIcon.SCROLL,tokenId:{chain:"Scroll",address:"0x5300000000000000000000000000000000000004"}},{symbol:"ETH",decimals:18,icon:TokenIcon.BLAST,tokenId:{chain:"Blast",address:"native"}},{symbol:"WETH",decimals:18,icon:TokenIcon.BLAST,tokenId:{chain:"Blast",address:"0x9D020B1697035d9d54f115194c9e04a1e4Eb9aF7"}},{symbol:"OKB",decimals:18,icon:TokenIcon.XLAYER,tokenId:{chain:"Xlayer",address:"native"}},{symbol:"WOKB",decimals:18,icon:TokenIcon.XLAYER,tokenId:{chain:"Xlayer",address:"0xe538905cf8410324e03A5A23C1c177a474D59b2b"}},{symbol:"MNT",decimals:18,icon:TokenIcon.MANTLE,tokenId:{chain:"Mantle",address:"native"}},{symbol:"WMNT",decimals:18,icon:TokenIcon.MANTLE,tokenId:{chain:"Mantle",address:"0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8"}},{symbol:"tBTC",decimals:18,tokenId:{chain:"Ethereum",address:"0x18084fbA666a33d37592fA2633fD49a74DD93a88"},icon:TokenIcon.TBTC},{symbol:"tBTC",decimals:18,tokenId:{chain:"Polygon",address:"0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b"},icon:TokenIcon.TBTC},{symbol:"tBTC",decimals:18,tokenId:{chain:"Optimism",address:"0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40"},icon:TokenIcon.TBTC},{symbol:"tBTC",decimals:18,tokenId:{chain:"Arbitrum",address:"0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40"},icon:TokenIcon.TBTC},{symbol:"tBTC",decimals:18,tokenId:{chain:"Base",address:"0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b"},icon:TokenIcon.TBTC},{symbol:"tBTC",decimals:8,tokenId:{chain:"Solana",address:"6DNSN2BJsaPFdFFc1zP37kkeNe4Usc1Sqkzr9C9vPWcU"},icon:TokenIcon.TBTC},{symbol:"ETH",tokenId:{chain:"Worldchain",address:"native"},decimals:18,icon:TokenIcon.WORLDCHAIN},{symbol:"WETH",tokenId:{chain:"Worldchain",address:"0x4200000000000000000000000000000000000006"},decimals:18,icon:TokenIcon.WORLDCHAIN},{symbol:"ETH",tokenId:{chain:"Unichain",address:"native"},decimals:18,icon:TokenIcon.ETH},{symbol:"WETH",tokenId:{chain:"Unichain",address:"0x4200000000000000000000000000000000000006"},decimals:18,icon:TokenIcon.ETH},{symbol:"USDC",tokenId:{chain:"Unichain",address:"0x078D782b760474a361dDA0AF3839290b0EF57AD6"},decimals:6,icon:TokenIcon.USDC},{symbol:"BERA",tokenId:{chain:"Berachain",address:"native"},decimals:18,icon:TokenIcon.BERA},{symbol:"WBERA",tokenId:{chain:"Berachain",address:"0x6969696969696969696969696969696969696969"},decimals:18,icon:TokenIcon.BERA}],MAINNET_WRAPPED_TOKENS={Ethereum:{"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2":{Bsc:"0x4DB5a66E937A9F4473fA95b1cAF1d1E1D62E29EA",Polygon:"0x11CD37bb86F65419713f30673A480EA33c826872",Avalanche:"0x8b82A291F83ca07Af22120ABa21632088fC92931",Fantom:"0x2A126f043BDEBe5A0A9841c51915E562D9B07289",Celo:"0x66803FB87aBd4aaC3cbB3fAd7C3aa01f6F3FB207",Moonbeam:"0xab3f0245B83feB11d15AAffeFD7AD465a59817eD",Solana:"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs",Sui:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN",Aptos:"0xcc8a89c8dce9693d354449f1f73e60e14e347417854f029db5bc8e7454008abb::coin::T",Base:"0x71b35ECb35104773537f849FBC353F81303A5860",Arbitrum:"0xD8369C2EDA18dD6518eABb1F85BD60606dEb39Ec",Optimism:"0xb47bC3ed6D70F04fe759b2529c9bc7377889678f",Blast:"0xC09a79fCF76ab2917c685896E3693e04EEbab69C",Mantle:"0x115Fcc627AcE0457fbeb7Af3b8BcAcE7Ff6211A4",Klaytn:"0x98A8345bB9D3DDa9D808Ca1c9142a28F6b0430E1",Worldchain:"0x6938c3EfFEf84E5C69e3d7cc41eBC6Cff99EF8A7"},"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48":{Bsc:"0xB04906e95AB5D797aDA81508115611fee694c2b3",Polygon:"0x4318CB63A2b8edf2De971E2F17F77097e499459D",Avalanche:"0xB24CA28D4e2742907115fECda335b40dbda07a4C",Fantom:"0x2Ec752329c3EB419136ca5e4432Aa2CDb1eA23e6",Celo:"0x37f750B7cC259A2f741AF45294f6a16572CF5cAd",Moonbeam:"0x931715FEE2d06333043d11F658C8CE934aC61D0c",Solana:"A9mUU4qviSctJVPJdBJWkb28deg915LYJKrzQ19ji3FM",Sui:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",Aptos:"0x5e156f1207d0ebfa19a9eeff00d62a282278fb8719f4fab3a586a0a2c0fffbea::coin::T",Base:"0xec267C53f53807c2337C257f8AC3Fc3cC07cc0ed",Arbitrum:"0xC96F2715E2a242d50D1b0bC923dbe1740b8eCf18",Optimism:"0x711e53D031ea9B0bb0C24dD506df11b41AEA419e",Klaytn:"0x608792Deb376CCE1c9FA4D0E6B7b44f507CfFa6A",Worldchain:"0x2cbD3491d687A76bb9C53c30B212855520D47b52"},"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599":{Bsc:"0x43359676E1A3F9FbB5de095333f8e9c1B46dFA44",Polygon:"0x5D49c278340655B56609FdF8976eb0612aF3a0C3",Avalanche:"0x1C0e79C5292c59bbC13C9F9f209D204cf4d65aD6",Fantom:"0x87e9E225aD8a0755B9958fd95BE43DD6A91FF3A7",Celo:"0xd71Ffd0940c920786eC4DbB5A12306669b5b81EF",Moonbeam:"0xE57eBd2d67B462E9926e04a8e33f01cD0D64346D",Solana:"3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh",Sui:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881::coin::COIN",Aptos:"0xae478ff7d83ed072dbc5e264250e67ef58f57c99d89b447efd8a0a2e8b2be76e::coin::T",Base:"0xE6396f780b543dF16ee3b784D789c75B68319db0",Arbitrum:"0x397846a8078d4845c7f5c6Ca76aeBbcFDc044fAe",Optimism:"0xB214C19d81c99E75e84706a3aa0A757319023e26",Klaytn:"0x981846bE8d2d697f4dfeF6689a161A25FfbAb8F9",Worldchain:"0x06c9ec7E18A7900E79Ad5BeCc6Cc29E3eebD81EC"},"0xdAC17F958D2ee523a2206206994597C13D831ec7":{Bsc:"0x524bC91Dc82d6b90EF29F76A3ECAaBAffFD490Bc",Polygon:"0x9417669fBF23357D2774e9D421307bd5eA1006d2",Avalanche:"0x9d228444FC4B7E15A2C481b48E10247A03351FD8",Fantom:"0x14BCb86aEed6a74D3452550a25D37f1c30AA0A66",Celo:"0x617f3112bf5397D0467D315cC709EF968D9ba546",Moonbeam:"0xc30E9cA94CF52f3Bf5692aaCF81353a27052c46f",Solana:"Dn4noZ5jgGfkntzcQSUZ8czkreiZ1ForXYoV2H8Dm7S1",Sui:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN",Aptos:"0xa2eda21a58856fda86451436513b867c97eecb4ba099da5775520e0f7492e852::coin::T",Base:"0xFf0C62A4979400841eFaA6faADb07Ac7d5C98b27",Arbitrum:"0xE4728F3E48E94C6DA2B53610E677cc241DAFB134",Optimism:"0xf6B4185FCf8aF291c0E3927fbEab7046b4f6A8CA",Blast:"0x37C1dea9C51864cc6640FA9c09f4dac574b8285E",Klaytn:"0x5C13E303a62Fc5DEdf5B52D66873f2E59fEdADC2",Xlayer:"0x5866709f926f26C5870191F40333ac462B917bC0",Worldchain:"0x95dd0680Fd6B6c7546e75C1A4E6A3256072C0593"},"0x6B175474E89094C44Da98b954EedeAC495271d0F":{Bsc:"0x3413a030EF81a3dD5a302F4B4D11d911e12ed337",Polygon:"0x732EB1747ecCFC431fF19bc359ffc83755B1918c",Avalanche:"0xca319f81D147559e19A522A0a0310Dd43A96cA0F",Fantom:"0xEE786D3D73Ea645365c7248E4e40eDba08B1169F",Celo:"0x97926a82930bb7B33178E3c2f4ED1BFDc91A9FBF",Moonbeam:"0x06e605775296e851FF43b4dAa541Bb0984E9D6fD",Solana:"EjmyN6qEC1Tf1JxiG1ae7UTJhUxSwk1TCWNWqxWV4J6o",Aptos:"0x407a220699982ebb514568d007938d2447d33667e4418372ffec1ddb24491b6c::coin::T",Base:"0x617Edadb51BfB43A44Bb91C7402129C23bA52381",Arbitrum:"0x5c4f2FEFB97F7DF09E762d95C83f0Ccf8bCe8234",Optimism:"0x098EA47D630b46df1E08e389e5e4466119c7dd30",Blast:"0x286ebE2BacB0EBeF746DBDA24dED0fc001c6d0F6",Sui:"0xc01c54cd767a60835bf100b0a8f7aae66ac9f4e374f76746af60f02493b6f2cf::coin::COIN",Klaytn:"0xCB2C7998696Ef7a582dFD0aAFadCd008D03E791A",Worldchain:"0x69635e59E89000e08a13C3F7B9f7293160Dc83a2"},"0x4Fabb145d64652a948d72533023f6E7A623C7C53":{Bsc:"0x035de3679E692C471072d1A09bEb9298fBB2BD31",Polygon:"0x95ea750420da26bE1Ab0891e209e921bCd84763f",Celo:"0x1dd42c0785ca90B677adc2ABad01dfc5ECcD0b4d",Moonbeam:"0xa2284e1F98E4d0B7Eb6a6b4f3C57f1b209C755F3",Solana:"33fsBLA8djQm82RpHmE3SuVrPGtZBWNYExsEUeKX1HXX",Aptos:"0x77400d2f56a01bad2d7c8c6fa282f62647ce3c03f43f2a8742e47ea01a91e24a::coin::T",Worldchain:"0x276719Fc6a38E62B717c6FF6E39d1C336ee633AB"},"0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0":{Polygon:"0xe082a7Fc696De18172Ad08D956569Ee80BC37f06",Solana:"ZScHuTtqZukUrtZS43teTKGs2VqkKL8k4QCouR2n6Uo",Arbitrum:"0xf2717122Dfdbe988ae811E7eFB157aAa07Ff9D0F",Optimism:"0x855CFcEEe998c8ca34F9c914F584AbF72dC88B87",Base:"0xEd4e2FD35161c3c0e33cA187fce64C70d44Ce32b",Bsc:"0xad80E1A9B5824234afA9dE1F3bbDb8a994796169",Avalanche:"0x11449fd2F05D93827972b40adE96F6ffBE42E35a",Fantom:"0x2a2Ec6Ad3e47C536F47934F63b95BD647F1C730E",Worldchain:"0xd977e0251db8d38155dC5d212944AB7B7a6777Ad"}},Polygon:{"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270":{Ethereum:"0x7c9f4C87d911613Fe9ca58b579f737911AAD2D43",Bsc:"0xc836d8dC361E44DbE64c4862D55BA041F88Ddd39",Avalanche:"0xf2f13f0B7008ab2FA4A2418F4ccC3684E49D20Eb",Fantom:"0xb88A6064B1F3FF5B9AE4A82fFD52560b0dF9FBD3",Celo:"0x9C234706292b1144133ED509ccc5B3CD193BF712",Moonbeam:"0x82DbDa803bb52434B1f4F41A6F0Acb1242A7dFa3",Solana:"Gz7VkD4MacbEB6yC5XD3HcumEiYx2EtDYYrfikGsvopG",Sui:"0xdbe380b13a6d0f5cdedd58de8f04625263f113b3f9db32b3e1983f49e2841676::coin::COIN",Aptos:"0x6781088e2a1629d38eda521467af4a8ca7bfa7e5516338017940389595c85c0f::coin::T",Base:"0xc863399E5c5C4011B1DC3fB602902C77BA72B709",Arbitrum:"0x3ab0E28C3F56616aD7061b4db38aE337E3809AEA",Optimism:"0x8f02B6a32cebcAe44D2Fd17d87966f5B5dD14c6d",Blast:"0xE00CB9206aCF0413aa9Dc12F01A22BB5Dd7A2866",Mantle:"0x1d15Dc3B3DB5A182eA8E3091F21EB0549d4a72E0",Klaytn:"0x9858e5A4f8202baD619D4BD39382CA67F4CA0E63",Scroll:"0x982D057feCD66c3af27b16EBC67C4db24810bcD8",Xlayer:"0xc97E2b2d7730C34adC389563721d9dF52EDA4A2a",Worldchain:"0xDcB507ECEA06724d8c4F2f03964f7EE4da504E8C"},"0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619":{Bsc:"0x1384284E16e3375522Be54F50909Bc52A69e90e4",Solana:"DQyeU3oFezEGia761GQ4iPcMCnxnH8fuLrmHZUvTYuby",Aptos:"0x2692323828f627a45a75a05eba8281dd46690c538b4f6ccb7a35ffe8199a28b7::coin::T",Sui:"0xa1ed6e76b06ff8f959cc479fbbd423820a3349dad8707b98ff4309c677fa20ad::coin::COIN",Arbitrum:"0xd2b299eD76d1369Ac8762CFEc85245fFD302FC17",Ethereum:"0x32d222E1f6386B3dF7065d639870bE0ef76D3599",Avalanche:"0x061FE51530768889dc20Ac7fCD29b5307b823395",Optimism:"0x2740220fFa4b206280907ce12b7cDC57445f3B92",Fantom:"0x1cAFd8d3301E4E54Fc1462E7117Eb678bF50C765",Base:"0x7A79923734eDA9c7f7ff69ad9ec1e234F67E7CD6",Moonbeam:"0xf1BB9A987B9edC360580b0c9F28069C808c2a7da",Celo:"0x8Ed68859f162970258992168293232e3Bdd987d0",Klaytn:"0x3eb25C7098AC38a852Cd2366161c5e216af50Df3"},"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359":{Aptos:"0xc5fd7820e9f053e6dd8e7dd8ca3ce8e9b10d200ba1692bdeb7a035217180ad4a::coin::T",Base:"0xFe1579BAc60363c8572CB30Bf4DD1Fd85811BBF8",Moonbeam:"0x4415BfBDee669446550d55c749007EF60B520FC8",Sui:"0x5c8c9082401982e8c2519a5c12883a5475295bf5cec4a0a13c26d35dd9a20d73::coin::COIN",Bsc:"0xe6d82Bbe75041E42E51d755e922cE1BA91af9c4d",Celo:"0x42c76808f3179A091Ee007A2955aF2522978ADE7",Fantom:"0xB4DcfD221048a1Dad989D39456BBd87762c26F06",Avalanche:"0xDb2d08f5A9C9ADBBA0DE5a69bbB1E9Ca03411692",Arbitrum:"0x599ADB10E6A012dF34935D47407450f6D7170e3C",Optimism:"0xbB1EaB9Eb8fDf65F0E291D013DA07B4b65a27a01",Solana:"C321jHPwWBzgfSGndosDTp5pBsiXPyMU1irxKLVcedRB",Ethereum:"0xFbcE0f9e92AD1003e893Ba647bC055D845aAa507",Klaytn:"0x59AEaD999e018a00B162D34de7a81AFFAB88bAbB"},"0x03b54A6e9a984069379fae1a4fC4dBAE93B3bCCD":{Base:"0xcB6D47199d60747152d7671D6497ce8D23cc1D75",Arbitrum:"0x23D3901A635fDd98D8d6509bc0720281f80a8E6D",Ethereum:"0x302F636d723c8Ed75C0d1E9D9C714009184C5624",Optimism:"0x4fad81d2268a7D9E1e0fE7dB38af07FFFA0aA56E",Celo:"0xA4c7302659eCF88a90e62e915Bd486E66B616A4C"}},Bsc:{"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c":{Ethereum:"0x418D75f65a02b3D53B2418FB8E1fe493759c7605",Polygon:"0xeCDCB5B88F8e3C15f95c720C51c71c9E2080525d",Avalanche:"0x442F7f22b1EE2c842bEAFf52880d4573E9201158",Fantom:"0xc033551e05907Ddd643AE14b6D4a9CA72BfF509B",Celo:"0xBf2554ce8A4D1351AFeB1aC3E5545AaF7591042d",Moonbeam:"0xE3b841C3f96e647E6dc01b468d6D0AD3562a9eeb",Solana:"9gP2kCy3wA1ctvYWQk75guqXuHfrEomqydHLtcTCqiLa",Sui:"0xb848cce11ef3a8f62eccea6eb5b35a12c4c2b1ee1af7755d02d7bd6218e8226f::coin::COIN",Aptos:"0x6312bc0a484bc4e37013befc9949df2d7c8a78e01c6fe14a34018449d136ba86::coin::T",Base:"0x7fdAa50d7399ac436943028edA6ed9a1BD89509f",Arbitrum:"0x7AF00405916D823eDb1121546EfA6F4972B51b84",Optimism:"0x6A09fE65ACa27C12573F04aAFa290bD75497E1BC",Blast:"0xdcd0Ec817d3ae2E82bCE8Cc9f92fFA7686A52160",Mantle:"0x9a7E85260d6F5d3c3d2a1FdDc3D980DBC78e508d",Klaytn:"0xaC9C1E4787139aF4c751B1C0fadfb513C44Ed833",Scroll:"0x5b0da0a36DC415714B53A4f24b56921332F42E7C",Xlayer:"0x8bC46166E06122603bA10D2bCA63b75091c25cAe",Worldchain:"0x59163d9c70E9b3852a504c5F1458e2daD33516Ff"},"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d":{Ethereum:"0x7cd167B101D2808Cfd2C45d17b2E7EA9F46b74B6",Polygon:"0x4B3a922c773BDCF3BA8f1A4FDAc2029E1D0E9868",Avalanche:"0x6145E8a910aE937913426BF32De2b26039728ACF",Fantom:"0x0FcbDAC44c67A43607D3E95886dB19871ADc985F",Celo:"0x9d9abAE97a9344e3854527b4efbB366a1564bfEb",Moonbeam:"0x7f433E22366E03a3758CE22cCf82887d828078f8",Solana:"FCqfQSujuPxy6V42UvafBhsysWtEq1vhjfMN1PUbgaxA",Sui:"0x909cba62ce96d54de25bec9502de5ca7b4f28901747bbf96b76c2e63ec5f1cba::coin::COIN",Aptos:"0x79a6ed7a0607fdad2d18d67d1a0e552d4b09ebce5951f1e5c851732c02437595::coin::T",Base:"0x68E2b07F92ed506f92935d7359ECA84D5342dbb4",Arbitrum:"0x1a0590F951bc9C3818Ce75ba5Bbe92831b2cf57e",Optimism:"0x1C15057d1F3794C934a6cBC1f7EceE934050F219",Klaytn:"0x01B342d26FEF5749E87CBe412e16163771b0277c"},"0x2170Ed0880ac9A755fd29B2688956BD959F933F8":{Aptos:"0xd9fc4259ec5def95477dba9f0861c2882d1f8bee9a4138b476dd0720a3444547::coin::T",Solana:"FzjTz2cD1DfqYvafrbHWZvf1dK9qjwXGLuaU7xYXQjxP",Sui:"0x5029d5a94429a73b8036cd67192d9c5e09bbc2c0fee942d50075a9edba66744f::coin::COIN",Base:"0xf50509Bb6aF76E20c6E1eD493699c5f70764BcCC",Arbitrum:"0x6478377A399bE8c92bD35254aA7bF287836de32e",Ethereum:"0x5DbBB101CDc29443d12055eCDDdD7ca037Dce721",Fantom:"0xc511E3aec79CABD605021C237c475Ec553B002d4",Celo:"0x09F236D3708894581b1Cf679e582ba9eA5BE16f0",Klaytn:"0x4C07075BB44076106f3389766946b79784Fb5C58",Avalanche:"0xf0e509144CfA602d0A5e8C75d76FF74077f52f2b",Optimism:"0x8088Bc767c392b5769b94c9ec1D07c62874c8d5f",Polygon:"0x2D291e940DbDdaa9E847Ba5cC49451575f086b27",Moonbeam:"0xBefd7902B682938b29B3FD3D4AdECD9A984D5930"}},Avalanche:{"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7":{Ethereum:"0x85f138bfEE4ef8e540890CFb48F620571d67Eda3",Bsc:"0x96412902aa9aFf61E13f085e70D3152C6ef2a817",Polygon:"0x7Bb11E7f8b10E9e571E5d8Eace04735fDFB2358a",Fantom:"0x358CE030DC6116Cc296E8B9F002728e65459C146",Celo:"0xFFdb274b4909fC2efE26C8e4Ddc9fe91963cAA4d",Moonbeam:"0xd4937A95BeC789CC1AE1640714C61c160279B22F",Solana:"KgV1GvrHQmRBY8sHQQeUKwTm2r2h8t4C8qt12Cw1HVE",Sui:"0x1e8b532cca6569cab9f9b9ebc73f8c13885012ade714729aa3b450e0339ac766::coin::COIN",Aptos:"0x5b1bbc25524d41b17a95dac402cf2f584f56400bf5cc06b53c36b331b1ec6e8f::coin::T",Base:"0xc449A60A31E1eebFE83c42E9465fd4Dc318aE9a7",Arbitrum:"0x565609fAF65B92F7be02468acF86f8979423e514",Optimism:"0x8418C1d909842f458c9394886b83F19d62bF1A0D",Blast:"0x7D86F00026c2cD8137D60ae85d53c5E5a15B2481",Mantle:"0x2cAb4233d42043AEBbbb1445af362Ef686f3C133",Klaytn:"0x45830b92443a8f750247da2A76C85c70d0f1EBF3",Scroll:"0xC043c8A3672f397e7b52bF0a04F47d6f1aA952Ed",Xlayer:"0x5208Fb676B2DBab7aFaFB56e8997237F0ceECF71",Worldchain:"0x5Bf2A0622aa1254D963A3074b593A379784C116a"},"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E":{Ethereum:"0x39EbF69137D98FB7659Ef8D4ea21ec26394389d7",Bsc:"0xc88Dc63bf0c8c8198C97Db0945E3eF25Ca89A8e4",Polygon:"0xAEA5CC14DefbC1b845FDE729E563B717Ee6825ae",Fantom:"0xEfE7701cb2B80664385Be226d0300912CA92f66A",Celo:"0x62FFf2D2D1692D52eAf043AeeC727F7918d269D3",Moonbeam:"0xd4918c40cA9f02d42Cb53d06587aF42017Bc345D",Solana:"FHfba3ov5P3RjaiLVgh8FTv4oirxQDoVXuoUUDvHuXax",Sui:"0xe596782fbaebef51ae99ffac8731aed98a80642b9dc193ed659c97fbc2cc0f84::coin::COIN",Aptos:"0x39d84c2af3b0c9895b45d4da098049e382c451ba63bec0ce0396ff7af4bb5dff::coin::T",Arbitrum:"0x93e0FcbEd43CD6fC30DF00CcBD4669718dc74e77",Optimism:"0x355f0a8a7ecAeD971b8Fbd50994558291ff2413a",Base:"0xD83385fE100E20c269a5975D4Bf92525BcE09F87",Blast:"0x3Db095413b5e1e5681c48028e31e8dc2505D8aD3",Klaytn:"0x9C97D4c09679Dfd00A39681f6d3b61A285312B13",Scroll:"0xbEFc3d0457fB88f82364Dd982F7BA195FEE96b74"},"0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB":{Aptos:"0x25ff8e0c07552c392c9e5dd4c9c07cf0382765c1bca560e80b6296a702034219::coin::T",Solana:"F9B9qLwUN3TAWGV9EGsuzFzS2PxWvKAmLhvfeqYNaS7J",Bsc:"0xBDfe278268524de38Da89B3023C1F49deBDFdA8A",Sui:"0xc1ea686a329e35808c61484d95904d50522f1d1616cab4b416d9cfa9b274bc6c::coin::COIN",Base:"0xEfe64b52bc0bDfa109790736F25cefb79724adF0",Arbitrum:"0xdF64fB41b7f45304a786695E0D5daD8d033C01eF",Polygon:"0x2912b3a9586Fc2AB177dC869e878c688DAA7d06E",Ethereum:"0xD85a87Edbe9fB3Baf6a1Bbd1E46f1C04B291331d",Optimism:"0xBe6EA3e70e2bbB0dbD093B657fbbc0DFF0BA67eC",Moonbeam:"0x9C673c6b651D6FDEF57441125A6AC16b08bba939",Celo:"0xDac2C97b5E64d7C79d040cd2906EBe02341F1Ab5",Klaytn:"0x9971F9d9170D787C4e4E01c56E1BDB308291CacF",Fantom:"0x86a09597fc91b116511B990D29CB46ddedC0fCb0"}},Fantom:{"0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83":{Ethereum:"0x4cD2690d86284e044cb63E60F1EB218a825a7e92",Bsc:"0xbF8413EE8612E0E4f66Aa63B5ebE27f3C5883d47",Polygon:"0x3726831304D77f585f1Aca9d9841cc3Ef80dAa62",Avalanche:"0xd19abc09B7b36F7558929b97a866f499a26c2f83",Celo:"0xd1A342eE2210238233a347FEd61EE7Faf9f251ce",Moonbeam:"0x609AedD990bf45926bca9E4eE988b4Fb98587D3A",Solana:"DRQBDBEWmwWGK13fRTLhSPzjbvMSUavhV6nW4RUH8W6T",Sui:"0x6081300950a4f1e2081580e919c210436a1bed49080502834950d31ee55a2396::coin::COIN",Aptos:"0xd1aa2ff36a0e93e1b4e4fecdecf8bb95bc5de399061c5e84b515281f48718842::coin::T",Base:"0x936Fa2DE8380Dc5BF34C80F1BaD53a9f3630263B",Arbitrum:"0x7f7dcDb91930033a4Eb269196EBb6fd5f0644E4B",Optimism:"0x0b0ecbe5C3995541876d27633B63296570FB34Af",Blast:"0xf1D0eEeB6B6B35dc7289E1AD5e523F68b82bd09A",Mantle:"0x6BFDc59ECBC5503aE16F71851064597D0a75dA76",Klaytn:"0xF3AebeA789F30C22F3657F70f4CaA0f8b49ed676",Scroll:"0x16f077e2e9bF99Adfb1FEEc8360ee002842C44A2",Xlayer:"0x956b5E88c311b976C76CB415C7E030A5Af87373b"},"0x2F733095B80A04b38b0D10cC884524a3d09b836a":{Bsc:"0x521af8b1c43B503BE91F542d82EEFEabc0C93340",Arbitrum:"0xF68734163731ad6A6108f76A8e09862C1d412B42",Ethereum:"0xfcC349c14013EdeFAAcAE09Ba30F4ef2571b8D2c"}},Celo:{"0x471EcE3750Da237f93B8E339c536989b8978a438":{Ethereum:"0x3294395e62F4eB6aF3f1Fcf89f5602D90Fb3Ef69",Bsc:"0x2A335e327a55b177f5B40132fEC5D7298aa0D7e6",Polygon:"0x922F49a9911effc034eE756196E59BE7b90D43b3",Avalanche:"0x494317B8521c5a5287a06DEE467dd6fe285dA4a8",Fantom:"0xF432490C6c96C9d3bF523a499a1CEaFd8208A373",Moonbeam:"0xc1a792041985F65c17Eb65E66E254DC879CF380b",Solana:"9kvAcwQbqejuJMd59mKuw2bfSsLRaQ7zuvaTVHEeBBec",Sui:"0xa198f3be41cda8c07b3bf3fee02263526e535d682499806979a111e88a5a8d0f::coin::COIN",Aptos:"0xac0c3c35d50f6ef00e3b4db6998732fe9ed6331384925fe8ec95fcd7745a9112::coin::T",Base:"0x74df3823aA29D278cAD0A3632fCB56C896a38eD4",Arbitrum:"0x4E51aC49bC5e2d87e0EF713E9e5AB2D71EF4F336",Optimism:"0x9b88D293b7a791E40d36A39765FFd5A1B9b5c349",Blast:"0x75345Cc6a3333cca03aCE2a28C7de328122Db3b1",Klaytn:"0xB2b5bC9bc872c7107CBC8E8e0E2805Db0ac4FBc2",Worldchain:"0x2250A0E2532A745b585B69dd2CdC75207384917c"}},Moonbeam:{"0xAcc15dC74880C9944775448304B263D191c6077F":{Ethereum:"0x93d3696A9F879b331f40CB5059e37015423A3Bd0",Bsc:"0x1C063db3c621BF901FC6C1D03328b08b2F9bbfba",Polygon:"0xcC48d6CF842083fEc0E01d913fB964b585975F05",Avalanche:"0x375aA6C67BF499fBf01804A9f92C03c0776F372d",Fantom:"0xBF227E92D6754EB4BFE26C40cb299ff2809Da45f",Celo:"0x383A5513AbE4Fe36e0E00d484F710148E348Aa9D",Solana:"7ixSaXGsHAFy34wogPk2YXiUX3BMmQMFdercdaHLnBby",Sui:"0x66f87084e49c38f76502d17f87d17f943f183bb94117561eb573e075fdc5ff75::coin::COIN",Aptos:"0x7ab1283a7b13c4254d4e1f803d7ce6578442c1d7a40d0faee41cd48ba4884c8a::coin::T",Base:"0xfdB7311BeC3b2CcCF8407d0585f81B97b3b5eff1",Arbitrum:"0x944C5b67a03e6Cb93Ae1E4B70081f13b04CDB6Bd",Optimism:"0xbffD46DFDb8d3a02b8D2E0F864a2cD712090a4D3",Blast:"0x43E43580A34c8FdD4694e1F9B5F9b1121a7044a5",Klaytn:"0x52a4558f98dDc7cb40cd9114C005f0B9571258Fc",Scroll:"0x2Aba1Ed24EaFC17F801b1A7dF1c3a06737F8aB72",Xlayer:"0xE2a44Dad57004517738FbD84cdf09Bd1451b4e43",Worldchain:"0xaAe2Bd4EB640f02dD3a53bd994ad19110b4191b0"}},Solana:{So11111111111111111111111111111111111111112:{Ethereum:"0xD31a59c85aE9D8edEFeC411D448f90841571b89c",Bsc:"0xfA54fF1a158B5189Ebba6ae130CEd6bbd3aEA76e",Polygon:"0xd93f7E271cB87c23AaA73edC008A79646d1F9912",Avalanche:"0xFE6B19286885a4F7F55AdAD09C3Cd1f906D2478F",Fantom:"0xd99021C2A33e4Cf243010539c9e9b7c52E0236c1",Celo:"0x4581E64115d46CcdeE65Be2336bEc86c9BA54C01",Moonbeam:"0x99Fec54a5Ad36D50A4Bba3a41CAB983a5BB86A7d",Sui:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8::coin::COIN",Aptos:"0xdd89c0e695df0692205912fb69fc290418bed0dbe6e4573d744a6d5e6bab6c13::coin::T",Base:"0x1C61629598e4a901136a81BC138E5828dc150d67",Arbitrum:"0x2bcC6D6CdBbDC0a4071e48bb3B969b06B3330c07",Optimism:"0xba1Cf949c382A32a09A17B2AdF3587fc7fA664f1",Blast:"0xA5370b8e2413b23eA16F3B78D1d1ba3969678227",Mantle:"0xDA03239f428c76A527e1ceCa0ecA6cC367A2D945",Klaytn:"0xfAA03A2AC2d1B8481Ec3fF44A0152eA818340e6d",Xlayer:"0x3a859D92da2E16Ad32C5C6F3ADAddFBa4dE3A47e",Scroll:"0xCDf95E1F720caade4b1DC83ABfE15400D2a458AD",Worldchain:"0xEfae32D1c15EDBaEA3ebdDe1e2C51003AED04d30"},EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v:{Ethereum:"0x41f7B8b9b897276b7AAE926a9016935280b44E97",Bsc:"0x91Ca579B0D47E5cfD5D0862c21D5659d39C8eCf0",Polygon:"0x576Cf361711cd940CD9C397BB98C4C896cBd38De",Avalanche:"0x0950Fc1AD509358dAeaD5eB8020a3c7d8b43b9DA",Fantom:"0xb8398DA4FB3BC4306B9D9d9d13d9573e7d0E299f",Celo:"0x8B6eef6C449D3Ac723a9C06a9eaE2dCd7d308BA9",Moonbeam:"0x098d6eE48341D6a0a0A72dE5baaF80A10E0F6082",Sui:"0xb231fcda8bbddb31f2ef02e6161444aec64a514e2c89279584ac9806ce9cf037::coin::COIN",Aptos:"0xc91d826e29a3183eb3b6f6aa3a722089fdffb8e9642b94c5fcd4c48d035c0080::coin::T",Arbitrum:"0x3870546cfd600ba87e4180686d29dC993A45d3B7",Optimism:"0x6F974A6dfD5B166731704Be226795901c45Bb815",Base:"0xe8CE40EBBB844142400D21558a2F1c9683d69139",Klaytn:"0xa1a7feeD29EbFa38079D943486c23f401939Ce80",Scroll:"0x883Ccb5aEfD0084f1e4D04b133675acd6D5F123F"},HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3:{Aptos:"0x770211b47954e15bec1a4271bf33bacebc2d2adb43b7dc1ca45efa787615dd4c::coin::T",Bsc:"0xb0188B0bb2cD4a6D2744637fC83C94a284B247Da",Base:"0x4c5d8A75F3762c1561D96f177694f67378705E98",Celo:"0x985aa4814419ba338379A634785216301e51113D",Avalanche:"0x8A0691e602B7a5FCc51a27E4a08376dE50889B42",Polygon:"0xFa4B761A1e07909Ba31331a5dfa12390E3ff5583",Fantom:"0x77ad3B2dA29FBd208F12c3C701E969F4422aAD79",Optimism:"0x99C59ACeBFEF3BBFB7129DC90D1a11DB0E91187f",Ethereum:"0xeFc0CED4B3D536103e76a1c4c74F0385C8F4Bdd3",Arbitrum:"0xE4D5c6aE46ADFAF04313081e8C0052A30b6Dd724",Sui:"0x9c6d76eb273e6b5ba2ec8d708b7fa336a5531f6be59f326b5be8d4d8b12348a4::coin::COIN",Moonbeam:"0x27cc3FDbDD1F415b09a41232D0fD71345DAB8030",Xlayer:"0x057b766b3fB76527cf815c3b5C38Dfa8144335CF",Worldchain:"0x838f3045F3B2dcDFF8cB4e5CaB0c0092A69B790a"}},Sui:{native:{Ethereum:"0x84074EA631dEc7a4edcD5303d164D5dEa4c653D6",Bsc:"0x8314f6Bf1B4dd8604A0fC33C84F9AF2fc07AABC8",Polygon:"0x34bE049fEbfc6C64Ffd82Da08a8931A9a45f2cc8",Avalanche:"0x1703CB0F762D2a435199B64Ea47E5349B7C17480",Fantom:"0xC277423a21F6e32D886BF85Ef6cCB945d5D28347",Celo:"0x1Cb9859B1A16A67ef83A0c7b9A21eeC17d9a97Dc",Moonbeam:"0x484eCCE6775143D3335Ed2C7bCB22151C53B9F49",Solana:"G1vJEgzepqhnVu35BN4jrkv3wVwkujYWFFCxhbEZ1CZr",Aptos:"0xa72a97e872be9ee3d2f14d56fd511eb7e4a53f4055be3a267d8602e7685b41c0::coin::T",Base:"0x36c6FBF7B49bF65f5F82b674af219C05b2a4aDD1",Arbitrum:"0xCF79d86B8a830030aF6D835737d6eac3bE823fD7",Optimism:"0x27A533e438892DA192725b4C9AcA51447F457212",Mantle:"0x9ef1BB6072d7d6B9C935d9c040133036aD532119",Blast:"0x62c95Ffd6d2f893Ea2EF072d1EbBcb242a974b1A",Klaytn:"0xB0B40516293e0204fB376A18aA230A210cbE0305",Xlayer:"0xEa76dBFE6e449420f294e74E057518F750E99A16",Worldchain:"0xf69005c35B5d9AcC22E4DbCf52f892cAE21F83B0"}},Aptos:{native:{Ethereum:"0x8CDf7AF57E4c8B930e1B23c477c22f076530585e",Bsc:"0x2Ba98cf7Edd2c5C794e21bc3Dc6973D3C2585eE3",Polygon:"0xa4ef199d3ad524E9C3C51Ac46B303B103A307Cef",Avalanche:"0x43c588459b3243fA541B98CC4B2E995b3de553A2",Fantom:"0x3Cd9162Ca5256b8E26A0e3Ad14CCfF7C0Da0F174",Celo:"0x89F2b718Ca518db39d377F0ABBa6B42582b549F7",Moonbeam:"0x25331575641d35D9765e1934acC8F0991c58e904",Solana:"6LNeTYMqtNm1pBFN8PfhQaoLyegAH8GD32WmHU9erXKN",Sui:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37::coin::COIN",Base:"0x1d36126289Be1658297A35CC3EB2BB80A7D7A04b",Arbitrum:"0x4EdeF400eDe5309240814b5FC403F224504604e9",Optimism:"0xC5B3AC2DF8D8D7AC851F763a5b3Ff23B4A696d59",Blast:"0x2a3DdE20159FbDbC86f1da0e7a462711b610c815",Klaytn:"0x68d5254007BE3a6d3d2A37e2C1ad3921D049F46D",Xlayer:"0xEdF2AEaCE382A3c0722f110c4927d34b78bce34F",Worldchain:"0xfC5011f2037f2Dad9c9aC05CbB6749B383C3099c"}},Arbitrum:{"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1":{Ethereum:"0xb945E3F853B5f8033C8513Cf3cE9F8AD9beBB1c9",Bsc:"0xaA1eEdABC48D078350ccBdD620bD088848e299E5",Polygon:"0x6a5c59AB16268d2c872916054C50440B999e417C",Avalanche:"0xDfDA518A1612030536bD77Fd67eAcbe90dDC52Ab",Fantom:"0xE8367853A0823515D37b1538331B4704089becb4",Celo:"0xc6F962fCcb140ece554AfD0E589f971532A57f14",Solana:"CSD6JQMvLi46psjHdpfFdr826mF336pEVMJgjwcoS1m4",Sui:"0x33744e7df340a4d01c23f6b18c13563f767545ea95f976f8045f056358419da3::coin::COIN",Aptos:"0xe977796d7bfb3263609b90dffd264c7bd078ce35dac42b55302858d9fa3452b::coin::T",Base:"0x9D36e0edb8BBaBeec5edE8a218dc2B9a6Fce494F",Optimism:"0x825206E1D29456337769e6f1384101E997C6A732",Moonbeam:"0x18872b45c603eD2EbC508b9C5514a85c2e2791FB",Klaytn:"0x3CF1751E32c4225CB12ba953786C260C2cE89008"},"0xaf88d065e77c8cC2239327C5EDb3A432268e5831":{Ethereum:"0xCFc006a32a98031C2338BF9d5ff8ED2c0Cae4a9e",Bsc:"0x5caa170b465122D15a6D20FD9A804a9613CE7882",Polygon:"0x7800FE8951cdc1cDea748d878fAce63018D97960",Avalanche:"0x4b5fE357Eb11c735078e47526D6e853DBff18541",Celo:"0xA41a62567d9eb960D84b72663FdaeBE0BCdE2683",Solana:"CR4xnGrhsu1fWNPoX4KbTUUtqGMF3mzRLfj4S6YEs1Yo",Sui:"0xc3f8927de33d3deb52c282a836082a413bc73c6ee0bd4d7ec7e3b6b4c28e9abf::coin::COIN",Aptos:"0xca3a2c28bc8c6c762f752dd2a4ebbfd00356ca99977ce6636e3af5897124a87a::coin::T",Optimism:"0xa6252F56cc6eEA21165d56744C795F91c8a3Cf68",Base:"0xb96B82Cd6D45d98Fb6897D16A5E4EE888329C513",Fantom:"0x2228703672906fEe5eD681Ec28e42B4506b8c336",Moonbeam:"0xbd2B6D665439514EEaA8519f4fE87CC8C46e9167",Klaytn:"0x3d5973fF7288f47857dAa5a32C53976A9A968928",Xlayer:"0xd53bD30985B4125fc561774e388d9f679BB84117"},"0x5979D7b546E38E414F7E9822514be443A4800529":{Bsc:"0x159167e842C586a81f02E55bc043AC8EdB033E0b",Aptos:"0xd2ca17516bc4ca57c1c69577e0c9cc0129153286695b46b97f438ecc138c225e::coin::T",Solana:"8wJakbZuv7WApfHmRo2sdkeQfu6hXqfEqjb7BYXDKpKe",Sui:"0xb607aed1c09e676384d14ae638dbcb08523fc691d309e71c856c7fdcb60d4430::coin::COIN",Base:"0xbE3981b37CcE5eCb6925d2ad9D9E28dE7b165793",Optimism:"0xEae5ccc3c36beF59f6794b467e7e228CB3720415",Fantom:"0xf65BF40A3299Df500D440520dF7e6ce1BEa53E73",Ethereum:"0x906310cE867C22c5016248Bd791FA5dd162c9D6d",Polygon:"0xcf0aa97c2fD78Ee0f0C3090B9EB65d2bd6C1D81a"}},Optimism:{"0x4200000000000000000000000000000000000006":{Fantom:"0xe8E8f941377A955bFA72880ec0dc2319dbC827a8",Celo:"0x8d53771b1Ec7461f8e45Bca2609c45bC0bbd0677",Solana:"8M6d63oL7dvMZ1gNbgGe3h8afMSWJEKEhtPTFM2u8h3c",Sui:"0x0aab14ec22908de73d1b0619f5e03842398f8e68262981bd35ef44b42d22b23a::coin::COIN",Aptos:"0x6a7a7f36ef5e2d0e65fcf72669c20d514d68298b0f76c7554517208f73260aaf::coin::T",Arbitrum:"0xB1fC645a86fB5085e12D8BDDb77702F728D2A26F",Avalanche:"0xDf11535274c0FD2Fe41A88bd1bBF802D72296037",Bsc:"0x94AEc09B5e2CE591e39DC6aa58A3A6E85Ed45265",Ethereum:"0x8B5653Ae095529155462eDa8CF664eD96773F557",Polygon:"0x8182De59485Bb646542Db8C7E5958148Dc699319",Base:"0xCb725aC8d9985D3bE306Dd9e1517d3702929176c",Moonbeam:"0xd4870F7F5AD8Ae5139E1a5D8AD4ac55204aE4490",Klaytn:"0x4ab77AF7059435b71dBC3B7c5255983C8628eFdf"},"0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85":{Fantom:"0x385b219f0C4fa2e84EfE5aaf9692a821C57B8248",Celo:"0xEe48963C003e21EaCEdFA8a0A19BB3cbF7E776Fe",Moonbeam:"0x7143e8EA96e158381057a58AfdDF44601c7e532C",Base:"0xc6bfBeb3002aD563D2d1f72614C61C83Bf147Acd",Arbitrum:"0x3A5C2Da9E30741cb59a5e9446A23A86886fC9DC2",Aptos:"0x4f6ecb05a797902d472abc2f5804bde93a53d8b75f14f767824cdb1623a4ee83::coin::T",Bsc:"0xa41ae127D04F7ee73B5058E2C60Fb7c7A2D21F79",Avalanche:"0xBe04f76A0ba2100c3F2d6Aa1FD8484F415469573",Polygon:"0x31F12aCb60C3c32EE884F3894a873347C097D925",Sui:"0x6037801f060f0f54b3817bca05e3c8b9b9ffaa2da8e93fd5b80fa662aa3c9e55::coin::COIN",Solana:"J8kcD4Wnd1ehne1dpL8WNtgZQR6Jpui2cTZcrmg5ybAa",Klaytn:"0x7Ee2AB1443fDB59AECEa3aDD8F81296d68c2D1e3",Ethereum:"0xe77C99b64414e0fd9aeEA48AFFBBD2E97A895020"},"0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb":{Bsc:"0x1f29fAD000255BF49D72803b2A8FaC8e31947eF8",Base:"0xBb0BeaB819dEAf091C193bE4bBEeA9D5b0F5227C",Arbitrum:"0xf99C5EEd186601955a9a1027536D1b46b1f909F8",Polygon:"0x9065e1D25E65F7A1D60bb6197154386B52faA469",Ethereum:"0xB3ceE6DCa1dD528CB7CC258e32D8B50ce9Ee46f5"}},Base:{"0x4200000000000000000000000000000000000006":{Ethereum:"0x1D4241F7370253C0f12EFC536B7e16E462Fb3526",Bsc:"0x9dc152F4941cE1A138326e70c3600385bf0C22dD",Polygon:"0x5BCf8d8c097FbB35C371F921E3FF3e6F6Eb54B41",Avalanche:"0xFA83178c66fE51ee99109b5cC912f8098Ff812eF",Fantom:"0xd3365E7355230c78098b44B172eE27DAB95B041A",Celo:"0x905CADB645684140E285e2D09D39dF5a2082BC87",Moonbeam:"0x6C6f83366A42fcA4D30a2D3f1914284de995Ac3a",Solana:"DWXe1hxpnb8LAH21iyXcjvMbiAGzoYyuCVQtRLvZdLYd",Sui:"0xaecbc804fa7ca7cffc74c9a05eb6ae86fda0c68375b5c1724204a1065bcb239a::coin::COIN",Aptos:"0x5b5f14781164cf77185a7b6acd8e4f3cbb7e7cfb1cd5760d2b8af81075fc153d::coin::T",Arbitrum:"0xBAfbCB010D920e0Dab9DFdcF634De1B777028a85",Optimism:"0x3F369a664fa665e01e8EB9f20bFcE03A0CAb8971",Mantle:"0x4a2176DE2Fb36485704965bd1Cc471854f21303B",Klaytn:"0x7Bf9ad1D104dEAE4B59Ef1be6a273Cb46BA16362"},"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913":{Solana:"EfqRM8ZGWhDTKJ7BHmFvNagKVu3AxQRDQs8WMMaoBCu6",Moonbeam:"0xE6d02a875CcC153c076fe418f33De3A5C420f505",Celo:"0x2e2acb1782Aad0490f8446b6fD4626C467987bD6",Bsc:"0x55CaD531c8E303Cab8B3BE4bB4744Db4f896ac81",Optimism:"0xb931c7BbD87A6e249EaA7355B13927F9c99Bce87",Arbitrum:"0x8619F97D4d08382548F536E5CE1D3e0D9bA40326",Polygon:"0x1eeCaB0F75fE93abbFa0cDFfb4fB13d1dC8706c8",Avalanche:"0xab933e939a9236BD439F7d29b87CE712f42bAC06",Fantom:"0xd9E4C283d8A49Dc3767A6F5a4dFdc1d0cEf21604",Sui:"0x7e3e74afcc1913aa9491c8cee89b02131a6e5519b090f16b54321835c1241cfb::coin::COIN",Aptos:"0xfcc4fcd734d5b8578fb629d238d15264a49eca6165c7444c21feec3b4962eb88::coin::T",Blast:"0x35a926D55A726cdF70Ac498972F22426363F3C77",Mantle:"0x5D628a3285a10fdd93AEa704007957F294e05F91",Ethereum:"0xc38261846c42C1E1D59E04dA675Eb1974E9cE7b1",Klaytn:"0x0a2330c1C46E9A74e8651F7117a1264410eA3C88",Scroll:"0x22C9bde4Ad49C4b6CCFB8D394B5ED42A57853d58"},"0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452":{Arbitrum:"0x09E79693E44c8813A8CA25EeD7A40e5E24cD9c01",Ethereum:"0x187175c7a526f48c905202Bd2Bf8D25A457F479F",Polygon:"0x95d4C8e851D9E8c6B92aa518474E991c373E9Fb2",Optimism:"0x6ee40855c0BaB20585d17D2b9dd8d2Cd1cd41801",Avalanche:"0x5e513CA12DbD8424bDFc5B50711dF4AE999a8C58"}},Klaytn:{"0xe4f05A66Ec68B54A58B17c22107b02e0232cC817":{Aptos:"0x539b652f8230a0e42adaeda4706b5639893d22362eda6ea897493c210cb48219::coin::T",Ethereum:"0x9AEA32B459e96C8eF5010f69130bf95fd129ac05",Celo:"0xe304254de5c2048F9bFb042dDFB54f84d1d77730",Polygon:"0x415ce980fde17F1FF102e1c6e4ce860Acc615D74",Base:"0x41c433c146c47Dc53FC48cDc69e406e365e298E1",Arbitrum:"0xFA95f6c796E54F9C4a99392CAE84410a25794BB3",Moonbeam:"0xf0a9476E4712123A807859f9Fd25fe98213379BD",Fantom:"0x787e2F3509583C0F03A339Be0826463C839CBE5E",Sui:"0xa5ec915864d7f37b25ca9144b2db6ebcf29e73603c2ccf9d0e765adcd9049a98::coin::COIN",Avalanche:"0x126C03982Ad6D7ef7E6aF020bF219e87185a6BC3",Bsc:"0xEA970e7b7D131Ea36c3051C9Ca11e785462fE00c",Optimism:"0xbbeF8233a0d10EEAb84E913FaDB337ab9b62F683",Solana:"2b8fZGLBZjpxFugCdnJbbLLBYxvx23rsrsvLYYueiHb7",Blast:"0x5F6fE613528df9AE4Bf6f667fbCB923263098617",Scroll:"0xA55FB7A046454998b2f6d8D99Df5F0E108b38229",Worldchain:"0xC080f0082029fC6e8A4Bb33a9B0655B8d4f2BAB0"}},Scroll:{"0x5300000000000000000000000000000000000004":{Arbitrum:"0xAe81a542e20270b48Bd5297E3e0f280f79E46C42"}},Mantle:{"0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8":{Optimism:"0xf704F6a3241609Cfb3E44Db1237E68EB6CaC7C04"}}},MAINNET={chains:MAINNET_CHAINS,tokens:MAINNET_TOKENS,wrappedTokens:MAINNET_WRAPPED_TOKENS,rpcs:MAINNET_RPC_MAPPING,guardianSet:{index:4,keys:["0x5893b5a76c3f739645648885bdccc06cd70a3cd3","0xff6cb952589bde862c25ef4392132fb9d4a42157","0x114de8460193bdf3a2fcf81f86a09765f4762fd1","0x107a0086b32d7a0977926a205131d8731d39cbeb","0x8c82b2fd82faed2711d59af0f2499d16e726f6b2","0x11b39756c042441be6d8650b69b54ebe715e2343","0x54ce5b4d348fb74b958e8966e2ec3dbd4958a7cd","0x15e7caf07c4e3dc8e7c469f92c8cd88fb8005a20","0x74a3bf913953d695260d88bc1aa25a4eee363ef0","0x000ac0076727b35fbea2dac28fee5ccb0fea768e","0xaf45ced136b9d9e24903464ae889f5c8a723fc14","0xf93124b7c738843cbb89e864c862c38cddcccf95","0xd2cc37a4dc036a8d232b48f62cdd4731412f4890","0xda798f6896a3331f64b48c12d1d57fd9cbe70811","0x71aa1be1d36cafe3867910f99c09e347899c19c3","0x8192b6e7387ccd768277c17dab1b7a5027c0b3cf","0x178e21ad2e77ae06711549cfbb1f9c7a9d8096e8","0x5e1487f35515d02a92753504a8d75471b9f49edb","0x6fbebc898f403e4773e95feb15e80c9a99c8348d"]}},{chains:chains$2}=CONFIG.TESTNET,TESTNET_CHAINS={Bsc:{...chains$2.Bsc,displayName:"BSC",explorerUrl:"https://testnet.bscscan.com/",explorerName:"BscScan",chainId:97,icon:"Bsc",symbol:"BSC",sdkName:"Bsc",wrappedGasToken:"0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd"},Avalanche:{...chains$2.Avalanche,displayName:"Fuji",explorerUrl:"https://testnet.avascan.info/blockchain/c/",explorerName:"Avascan",chainId:43113,icon:"Avalanche",symbol:"AVAX",sdkName:"Avalanche",wrappedGasToken:"0xd00ae08403B9bbb9124bB305C09058E32C39A48c"},Fantom:{...chains$2.Fantom,displayName:"Fantom",explorerUrl:"https://testnet.ftmscan.com/",explorerName:"FtmScan",chainId:4002,icon:"Fantom",symbol:"FTM",sdkName:"Fantom",wrappedGasToken:"0xf1277d1Ed8AD466beddF92ef448A132661956621"},Celo:{...chains$2.Celo,displayName:"Alfajores",explorerUrl:"https://explorer.celo.org/alfajores/",explorerName:"Celo Explorer",chainId:44787,icon:"Celo",symbol:"CELO",sdkName:"Celo"},Moonbeam:{...chains$2.Moonbeam,displayName:"Moonbase",explorerUrl:"https://moonbase.moonscan.io/",explorerName:"Moonscan",chainId:1287,icon:"Moonbeam",symbol:"GLMR",sdkName:"Moonbeam",wrappedGasToken:"0xD909178CC99d318e4D46e7E66a972955859670E1"},Solana:{...chains$2.Solana,displayName:"Solana",explorerUrl:"https://explorer.solana.com/",explorerName:"Solana Explorer",chainId:0,icon:"Solana",symbol:"SOL",sdkName:"Solana",wrappedGasToken:"So11111111111111111111111111111111111111112"},Sui:{...chains$2.Sui,displayName:"Sui",explorerUrl:"https://suiscan.xyz/testnet/",explorerName:"Suiscan",chainId:0,icon:"Sui",symbol:"SUI",sdkName:"Sui"},Aptos:{...chains$2.Aptos,displayName:"Aptos",explorerUrl:"https://explorer.aptoslabs.com/",explorerName:"Aptos Explorer",chainId:0,icon:"Aptos",symbol:"APT",sdkName:"Aptos"},Klaytn:{...chains$2.Klaytn,displayName:"Kaia",explorerUrl:"https://kairos.kaiascope.com/",explorerName:"Kaia Scope",chainId:1001,icon:"Klaytn",symbol:"KLAY",sdkName:"Klaytn",wrappedGasToken:"0x0339d5Eb6D195Ba90B13ed1BCeAa97EbD198b106"},Sepolia:{...chains$2.Sepolia,displayName:"Sepolia",explorerUrl:"https://sepolia.etherscan.io/",explorerName:"Etherscan",chainId:11155111,icon:"Ethereum",symbol:"ETH",sdkName:"Sepolia",wrappedGasToken:"0xeef12A83EE5b7161D3873317c8E0E7B76e0B5D9c"},ArbitrumSepolia:{...chains$2.ArbitrumSepolia,displayName:"Arbitrum Sepolia",explorerUrl:"https://sepolia.arbiscan.io/",explorerName:"Etherscan",chainId:421614,icon:"Arbitrum",symbol:"ARB",sdkName:"ArbitrumSepolia",wrappedGasToken:"0x980B62Da83eFf3D4576C647993b0c1D7faf17c73"},BaseSepolia:{...chains$2.BaseSepolia,displayName:"Base Sepolia",explorerUrl:"https://base-sepolia.blockscout.com/",explorerName:"Etherscan",chainId:84532,icon:"Base",symbol:"BASE",sdkName:"BaseSepolia",wrappedGasToken:"0x4200000000000000000000000000000000000006"},OptimismSepolia:{...chains$2.OptimismSepolia,displayName:"Optimism Sepolia",explorerUrl:"https://sepolia-optimistic.etherscan.io/",explorerName:"Etherscan",chainId:11155420,icon:"Optimism",symbol:"OP",sdkName:"OptimismSepolia",wrappedGasToken:"0x4200000000000000000000000000000000000006"},Scroll:{...chains$2.Scroll,displayName:"Scroll",explorerUrl:"https://sepolia.scrollscan.dev/",explorerName:"Scrollscan",chainId:534351,icon:"Scroll",symbol:"SCR",sdkName:"Scroll",wrappedGasToken:"0x5300000000000000000000000000000000000004"},Blast:{...chains$2.Blast,displayName:"Blast",explorerUrl:"https://testnet.blastscan.io/",explorerName:"Blastscan",chainId:168587773,icon:"Blast",symbol:"BLAST",sdkName:"Blast",wrappedGasToken:"0x9D020B1697035d9d54f115194c9e04a1e4Eb9aF7"},Xlayer:{...chains$2.Xlayer,displayName:"X Layer",explorerUrl:"https://www.okx.com/web3/explorer/xlayer-test/",explorerName:"OKX Explorer",chainId:195,icon:"Xlayer",symbol:"OKX",sdkName:"Xlayer",wrappedGasToken:"0xa2aFfd8301BfB3c5b815829f2F509f053556D21B"},Mantle:{...chains$2.Mantle,displayName:"Mantle",explorerUrl:"https://explorer.testnet.mantle.xyz/",explorerName:"Mantle Explorer",chainId:5003,icon:"Mantle",symbol:"MNT",sdkName:"Mantle",wrappedGasToken:"0xa4c4cb2A072eE99f77212Fa18c2B7Ca26DA23905"},Worldchain:{...chains$2.Worldchain,displayName:"World Chain",explorerUrl:"https://worldchain-sepolia.explorer.alchemy.com/",explorerName:"World Scan",chainId:4801,icon:"Worldchain",sdkName:"Worldchain",symbol:"WORLD"},Unichain:{...chains$2.Unichain,displayName:"Unichain",explorerUrl:"https://unichain-sepolia.blockscout.com/",explorerName:"Unichain Explorer",chainId:1301,icon:"Unichain",symbol:"UNI",sdkName:"Unichain",wrappedGasToken:"0x4200000000000000000000000000000000000006"}},__vite_import_meta_env__$1={},{REACT_APP_SEPOLIA_RPC,REACT_APP_BSC_TESTNET_RPC,REACT_APP_FUJI_RPC,REACT_APP_FANTOM_TESTNET_RPC,REACT_APP_ALFAJORES_RPC,REACT_APP_SOLANA_DEVNET_RPC,REACT_APP_MOONBASE_RPC,REACT_APP_SUI_TESTNET_RPC,REACT_APP_APTOS_TESTNET_RPC,REACT_APP_BASE_SEPOLIA_RPC,REACT_APP_KLAYTN_TESTNET_RPC,REACT_APP_ARBITRUM_SEPOLIA_RPC,REACT_APP_OPTIMISM_SEPOLIA_RPC,REACT_APP_SCROLL_TESTNET_RPC,REACT_APP_BLAST_TESTNET_RPC,REACT_APP_XLAYER_TESTNET_RPC,REACT_APP_MANTLE_TESTNET_RPC,REACT_APP_WORLDCHAIN_TESTNET_RPC,REACT_APP_UNICHAIN_TESTNET_RPC}=__vite_import_meta_env__$1,TESTNET_RPC_MAPPING={...populateRpcField("Sepolia",REACT_APP_SEPOLIA_RPC),...populateRpcField("Bsc",REACT_APP_BSC_TESTNET_RPC),...populateRpcField("Avalanche",REACT_APP_FUJI_RPC),...populateRpcField("Fantom",REACT_APP_FANTOM_TESTNET_RPC),...populateRpcField("Celo",REACT_APP_ALFAJORES_RPC),...populateRpcField("Solana",REACT_APP_SOLANA_DEVNET_RPC),...populateRpcField("Moonbeam",REACT_APP_MOONBASE_RPC),...populateRpcField("Sui",REACT_APP_SUI_TESTNET_RPC),...populateRpcField("Aptos",REACT_APP_APTOS_TESTNET_RPC),...populateRpcField("BaseSepolia",REACT_APP_BASE_SEPOLIA_RPC),...populateRpcField("ArbitrumSepolia",REACT_APP_ARBITRUM_SEPOLIA_RPC),...populateRpcField("OptimismSepolia",REACT_APP_OPTIMISM_SEPOLIA_RPC),...populateRpcField("Klaytn",REACT_APP_KLAYTN_TESTNET_RPC),...populateRpcField("Scroll",REACT_APP_SCROLL_TESTNET_RPC),...populateRpcField("Blast",REACT_APP_BLAST_TESTNET_RPC),...populateRpcField("Xlayer",REACT_APP_XLAYER_TESTNET_RPC),...populateRpcField("Mantle",REACT_APP_MANTLE_TESTNET_RPC),...populateRpcField("Worldchain",REACT_APP_WORLDCHAIN_TESTNET_RPC),...populateRpcField("Unichain",REACT_APP_UNICHAIN_TESTNET_RPC)},TESTNET_TOKENS=[{symbol:"BNB",icon:TokenIcon.BNB,decimals:18,tokenId:{chain:"Bsc",address:"native"}},{symbol:"WBNB",icon:TokenIcon.BNB,decimals:18,tokenId:{chain:"Bsc",address:"0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd"}},{symbol:"AVAX",icon:TokenIcon.AVAX,decimals:18,tokenId:{chain:"Avalanche",address:"native"}},{symbol:"WAVAX",icon:TokenIcon.AVAX,decimals:18,tokenId:{chain:"Avalanche",address:"0xd00ae08403B9bbb9124bB305C09058E32C39A48c"}},{symbol:"USDC",icon:TokenIcon.USDC,decimals:6,tokenId:{chain:"Avalanche",address:"0x5425890298aed601595a70AB815c96711a31Bc65"}},{symbol:"FTM",icon:TokenIcon.FANTOM,decimals:18,tokenId:{chain:"Fantom",address:"native"}},{symbol:"WFTM",icon:TokenIcon.FANTOM,decimals:18,tokenId:{chain:"Fantom",address:"0xf1277d1Ed8AD466beddF92ef448A132661956621"}},{symbol:"CELO",icon:TokenIcon.CELO,decimals:18,tokenId:{chain:"Celo",address:"0xF194afDf50B03e69Bd7D057c1Aa9e10c9954E4C9"}},{symbol:"USDC.e",icon:TokenIcon.USDC,decimals:6,tokenId:{chain:"Celo",address:"0x72CAaa7e9889E0a63e016748179b43911A3ec9e5"}},{symbol:"GLMR",icon:TokenIcon.GLMR,decimals:18,tokenId:{chain:"Moonbeam",address:"native"}},{symbol:"WGLMR",icon:TokenIcon.GLMR,decimals:18,tokenId:{chain:"Moonbeam",address:"0xD909178CC99d318e4D46e7E66a972955859670E1"}},{symbol:"SOL",icon:TokenIcon.SOLANA,decimals:9,tokenId:{chain:"Solana",address:"native"}},{symbol:"WSOL",tokenId:{chain:"Solana",address:"So11111111111111111111111111111111111111112"},icon:TokenIcon.SOLANA,decimals:9},{symbol:"USDC",tokenId:{chain:"Solana",address:"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU"},icon:TokenIcon.USDC,decimals:6},{symbol:"SUI",tokenId:{chain:"Sui",address:"native"},icon:TokenIcon.SUI,decimals:9},{symbol:"USDC",decimals:6,tokenId:{chain:"Sui",address:"0xa1ec7fc00a6f40db9693ad1415d0c193ad3906494428cf252621037bd7117e29::usdc::USDC"},icon:TokenIcon.USDC},{symbol:"APT",tokenId:{chain:"Aptos",address:"native"},icon:TokenIcon.APT,decimals:8},{symbol:"USDC",decimals:6,tokenId:{chain:"Aptos",address:"0x69091fbab5f7d635ee7ac5098cf0c1efbe31d68fec0f2cd565e8d168daf52832"},icon:TokenIcon.USDC},{symbol:"KLAY",icon:TokenIcon.KLAY,decimals:18,tokenId:{chain:"Klaytn",address:"native"}},{symbol:"WKLAY",name:"wKLAY",icon:TokenIcon.KLAY,decimals:18,tokenId:{chain:"Klaytn",address:"0x0339d5Eb6D195Ba90B13ed1BCeAa97EbD198b106"}},{symbol:"ETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"Sepolia",address:"native"}},{symbol:"WETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"Sepolia",address:"0xeef12A83EE5b7161D3873317c8E0E7B76e0B5D9c"}},{symbol:"USDC",icon:TokenIcon.USDC,decimals:6,tokenId:{chain:"Sepolia",address:"0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238"}},{symbol:"ETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"ArbitrumSepolia",address:"native"}},{symbol:"WETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"ArbitrumSepolia",address:"0x980B62Da83eFf3D4576C647993b0c1D7faf17c73"}},{symbol:"ETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"BaseSepolia",address:"native"}},{symbol:"WETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"BaseSepolia",address:"0x4200000000000000000000000000000000000006"}},{symbol:"ETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"OptimismSepolia",address:"native"}},{symbol:"WETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"OptimismSepolia",address:"0x4200000000000000000000000000000000000006"}},{symbol:"ETH",icon:TokenIcon.SCROLL,decimals:18,tokenId:{chain:"Scroll",address:"native"}},{symbol:"WETH",icon:TokenIcon.SCROLL,decimals:18,tokenId:{chain:"Scroll",address:"0x5300000000000000000000000000000000000004"}},{symbol:"ETH",icon:TokenIcon.BLAST,decimals:18,tokenId:{chain:"Blast",address:"native"}},{symbol:"WETH",icon:TokenIcon.BLAST,decimals:18,tokenId:{chain:"Blast",address:"0x9D020B1697035d9d54f115194c9e04a1e4Eb9aF7"}},{symbol:"OKB",icon:TokenIcon.XLAYER,decimals:18,tokenId:{chain:"Xlayer",address:"native"}},{symbol:"WOKB",icon:TokenIcon.XLAYER,decimals:18,tokenId:{chain:"Xlayer",address:"0xa2aFfd8301BfB3c5b815829f2F509f053556D21B"}},{symbol:"MNT",icon:TokenIcon.MANTLE,decimals:18,tokenId:{chain:"Mantle",address:"native"}},{symbol:"WMNT",icon:TokenIcon.MANTLE,decimals:18,tokenId:{chain:"Mantle",address:"0xa4c4cb2A072eE99f77212Fa18c2B7Ca26DA23905"}},{symbol:"ETH",tokenId:{chain:"Worldchain",address:"native"},decimals:18,icon:TokenIcon.WORLDCHAIN},{symbol:"WETH",tokenId:{chain:"Worldchain",address:"0x4200000000000000000000000000000000000006"},decimals:18,icon:TokenIcon.WORLDCHAIN},{symbol:"ETH",tokenId:{chain:"Unichain",address:"native"},decimals:18,icon:TokenIcon.ETH},{symbol:"WETH",tokenId:{chain:"Unichain",address:"0x4200000000000000000000000000000000000006"},decimals:18,icon:TokenIcon.ETH},{symbol:"USDC",tokenId:{chain:"Unichain",address:"0x31d0220469e10c4E71834a79b1f276d740d3768F"},decimals:6,icon:TokenIcon.USDC}],TESTNET_WRAPPED_TOKENS={Bsc:{"0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd":{Avalanche:"0x10F1053bF2884b28ee0Bd7a2dDBa237Af3511d29",Fantom:"0xfB174b43228950C2055CFc25AE93f2DCe8E2beF0",Celo:"0xa8050be9389466c3c524F10F131f244ACbf21A0D",Moonbeam:"0x6097E80331B0c6aF4F74D7F2363E70Cb2Fd078A5",Solana:"BaGfF51MQ3a61papTRDYaNefBgTQ9ywnVne5fCff4bxT",Sui:"0xddcf8680a8a4b8a527d8c85ec203274991590c2ea898d1c4635b70164d9c584b::coin::COIN",Aptos:"0xa5894f5ddb8647e6143102aa336ff07374f7b32e88c1c703aef5b7c9a370bf80::coin::T",Klaytn:"0xEFa3626825C33C4cd83850920Ad7Ac0a392E1faE",Sepolia:"0x02CdD5eB55934663F0aD8fbA3516dC7DE4E22894"}},Avalanche:{"0xd00ae08403B9bbb9124bB305C09058E32C39A48c":{Bsc:"0x6cE9E2c8b59bbcf65dA375D3d8AB503c8524caf7",Fantom:"0x0f545Be981C37fB15ab7c65404648761e99016e4",Celo:"0x502c8C83008D9Dd812a7C5fB886C063060C73Dbf",Moonbeam:"0x2E8afeCC19842229358f3650cc3F091908dcbaB4",Solana:"3Ftc5hTz9sG4huk79onufGiebJNDMZNL8HYgdMJ9E7JR",Sui:"0xa600741c469fb57ed01497ddf101e798fa79a9c529bd176675c5c4d970811f80::coin::COIN",Aptos:"0xbe8f4301c0b54e870902b9a23eeb95ce74ac190531782aa3262337ceb145401a::coin::T",Blast:"0x74C6aA987658FcBaB9FdC2ee65f52Ddd5B2cEd95",Klaytn:"0x10257392a2B5e3C4D4bEe1607650a1C0C738202a",Scroll:"0x5Bd1ba0040C16b13894A6EbE3d55708c91eF08bb",Xlayer:"0xb13a464ceE7455A9b2941bFAe1bB1eB5A6833867"},"0x5425890298aed601595a70AB815c96711a31Bc65":{Bsc:"0x1cfeCf72bcBE1E429A21A5B11E708C7c397AaC54",Fantom:"0x6BC4E8D8c1d54656D1DeBCa96efc53aFd1408aD2",Celo:"0xDDB349c976cA2C873644F21f594767Eb5390C831",Moonbeam:"0x6533CE14804D113b1F494dC56c5D60A43cb5C3b5",Solana:"GQtMXZxnuacCFTXVeTvyHi6P9F6chbtzhVc8JgD8hv7c",Sui:"0x2aa8c885d04e676c4e87b7d0f94d4f3b243b1b5d93239d1cc41d5528ce1714c1::coin::COIN",Aptos:"0x2ef7697bdb33361ca39d228671203afc0dea3202e792d79d2072b761d87c834::coin::T"}},Fantom:{"0xf1277d1Ed8AD466beddF92ef448A132661956621":{Bsc:"0x9aB305B792DBdb8253bEE909E7006611Cb45175b",Avalanche:"0x094cB577C21Ab1360178beE74B9591fa12216dAD",Celo:"0xE6F8710cA14CFe7F5aAAD3A799C3d1D92dCba938",Moonbeam:"0x566c1cebc6A4AFa1C122E039C4BEBe77043148Ee",Solana:"DMw2tLaq1bVoAEKtkoUtieSk9bfCPUvubYLatTMsSVop",Sui:"0x14e756ff65e0ac810a5f69ca5276ef5b899a6df3c4717de1f85559d8b5ae6ea6::coin::COIN",Aptos:"0x533c6ade00d15d1e014c41e29e34853e87df92c4e01a6a3f41318dbd098048d6::coin::T",Klaytn:"0x097c8878A0d852581Dc4D8820151094Ddd3663Ac",Sepolia:"0x852132647d301B7EED02589B1dc73545E73c8596"}},Celo:{"0xF194afDf50B03e69Bd7D057c1Aa9e10c9954E4C9":{Bsc:"0x1471698cBD9cAB0228F2EEA9303A2b3aA0ABDC2B",Avalanche:"0xC66d9c2b33c347d4A4441975f4688fcD5DD4c441",Fantom:"0xB18E73a69c3Aaea39a610372537Cf8482622d199",Moonbeam:"0x3406a9b09adf0cb36DC04c1523C4b294C6b79513",Solana:"84F2QX9278ToDmA98u4A86xSV9hz1ovazr8zwGaX6qjS",Sui:"0x81868174a6b11e1acc337b3414f9912455435d486609fb8d50b34312865085f2::coin::COIN",Aptos:"0xecbb0f7e7d049499ca83ca1358344f56557886f6f7adc740d6734cce7bfc9a14::coin::T",Klaytn:"0xC951826bbB310a8160BB78c2eEe6C98246292ba7",Sepolia:"0x648f226f3bDcAEdc844622d604F76935DC05bC24"}},Moonbeam:{"0xD909178CC99d318e4D46e7E66a972955859670E1":{Bsc:"0x5C31B36599ED7f06b09c0ffC7A2F928cE496F046",Avalanche:"0xf080782DF38eD5228D2FC2882d13D56c8f1D6f21",Fantom:"0x41E3CFDFC255A4bF3C8D3560Bc8D3D9b5080338e",Celo:"0x132D2172D89cd9CfD480A8887c6bF92360fB460e",Solana:"8987WGkYa5viiZ9DD8sS3PB5XghKmWjkEgmzvwDuoAEc",Sui:"0xeffae382de96981f7ddd2d294429924827e8f325d612487a12d6a0b249171002::coin::COIN",Aptos:"0x338373b6694f71dbeac5ca4a30503bf5f083888d71678aed31255de416be37c0::coin::T",Sepolia:"0x3F7CD70ECd402BBe71f45A95156A2CAC0d6A822E"}},Solana:{So11111111111111111111111111111111111111112:{Bsc:"0x30f19eBba919954FDc020B8A20aEF13ab5e02Af0",Avalanche:"0xb10563644a6AB8948ee6d7f5b0a1fb15AaEa1E03",Fantom:"0xED1a08Fc69A7008d225890A96aaE258c465CC7ad",Celo:"0x05EEF2AE1A7A938D78598F7d9e8b97A9bED0c9eC",Sui:"0xbc03aaab4c11eb84df8bf39fdc714fa5d5b65b16eb7d155e22c74a68c8d4e17f::coin::COIN",Aptos:"0xdd89c0e695df0692205912fb69fc290418bed0dbe6e4573d744a6d5e6bab6c13::coin::T",Klaytn:"0x48D99C16638E6FFD2ED60375cD35ef6c139e5f41",Moonbeam:"0x5babD0d267Adf2081626654E51d1cABF8c477440",Sepolia:"0x824CB8fC742F8D3300d29f16cA8beE94471169f5"},"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU":{Bsc:"0x51a3cc54eA30Da607974C5D07B8502599801AC08"}},Sui:{native:{Bsc:"0x5A73D76e09Af2E428EC64aE10F91B78AC990B298",Avalanche:"0xfc5128F8556a6F059466E67740e6cC31EE5C2C47",Fantom:"0xd882AB49372eC093E8697B5153f54ab5e7738e3b",Celo:"0xa40d9E69ca9867C4bFbeC11Ce79C939991e9bf26",Solana:"BJZ72CjPQojVoH68mzrd4VQ4nr6KuhbAGnhZEZCujKxY",Aptos:"0x7b22d0e02f653d4fd1caddcfa4719a2b329da56eb81d8f27db703f02466c26a5::coin::T",Moonbeam:"0x2ed4B5B1071A3C676664E9085C0e3826542C1b27",Klaytn:"0xbA5F07a20681Add3A396E7606c6DC9B03d71d28A"}},Aptos:{native:{Bsc:"0x4A7Bd5E135f421057F97BbA8BCeeE5c18334f454",Avalanche:"0x996a3f12C1FcD7339Ea8801f629201e4d42EAD04",Fantom:"0xAb2297E8994149BA91737944E40891881aF762a4",Celo:"0xAC0a2fF7DD597de863878a3372142b07B614C125",Moonbeam:"0xCaa2A1d3BbbA0D1466571e83b4E2CbE04252593D",Solana:"7EvFD3JKCJVdtkAYdaSVKJsrPEJCzy2neJha7TREGrCa",Sui:"0x812d6feb8b84e55d47a0bfcae9fb6a4e7e09be5ec86ce0a729e0f67d5f59f477::coin::COIN"}},Klaytn:{"0x0339d5Eb6D195Ba90B13ed1BCeAa97EbD198b106":{Bsc:"0x79D34FDb686B5D139949E4F92D83EEe376489176",Aptos:"0xa8ffe1ffe3057756019345cdf9cf3d1f1a3d9a355147dd9440878c448a057579::coin::T",Celo:"0x8e50fC4b7F8B7018E72475f78C640F973218C8Cf",Avalanche:"0x84f3298Bcc019BD5B995756494095e1Eb72B565C",Solana:"6p7qTfX4tRFtQovxwT77Jn9HFQEV7nxLbux9C31Tgm23",Fantom:"0x72A1C24dA7F08d11a7668E228Ec287Fc6ec16E48",Sepolia:"0x142D0E977768cA4De6f2161D9E5B5C9F00435F9e",Moonbeam:"0x6eFf019D79D4136e57A7FC141967F3D0AD41089a",Sui:"0xd4a59fb612b162df75a9d190c0f72098dcae883e88bd0eb28667c31f8208dc3c::coin::COIN"}},Sepolia:{"0xeef12A83EE5b7161D3873317c8E0E7B76e0B5D9c":{Solana:"6F5YWWrUMNpee8C6BDUc6DmRvYRMDDTgJHwKhbXuifWs",Celo:"0x890ad4a7eD5bD08b7d6638515157dF3bF4BaD1Bc",Bsc:"0x667a61Efa611399970AE927637dD6f9A16f51e40",Moonbeam:"0xa7276055a1d45fB9982575411801e10ac9970Da8",ArbitrumSepolia:"0x97Ee87C7Db6049669a518730a2Ee60d1Fc58844E",Avalanche:"0x12bFE94230daaE3d48067577F45b7b031dD357f3",Fantom:"0x7F96D67186561Aa17cEb699494E94bEE3F3499D4"},"0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238":{Aptos:"0x3f2912a313c5bea312dbf19f9080101d2e762df6546a6fe9f60a4de72c93d015::coin::T",Solana:"23Adx8na44L3M1Nf9RrUpQPb41eufdRXKseg25FfcJtw",Celo:"0xD6A34325e5F6BE27b7006bf06651444196Da579a",Bsc:"0xb8850F591019F0794F813426d4A4A9b5fB8f23C8",BaseSepolia:"0x3F872340B6A75397aa9b0A463000349962a8795D",ArbitrumSepolia:"0x27B8F40Cf0915e729ae5A96970E91045Fe9724dF",Fantom:"0xa686203C86140142230f44A724281E1BEd09c369",Klaytn:"0x25f2a470a2e1E75DDAc40289AB277eDE4DD98aFa",Sui:"0x6529fef82a8a09470c550a3129bbd889030b62306f0c14161224b1a40ef1346f::coin::COIN"}},OptimismSepolia:{"0x4200000000000000000000000000000000000006":{ArbitrumSepolia:"0xa2610700cCA8361DECD27dB2564848C530f20813"}}},TESTNET={chains:TESTNET_CHAINS,tokens:TESTNET_TOKENS,wrappedTokens:TESTNET_WRAPPED_TOKENS,rpcs:TESTNET_RPC_MAPPING,guardianSet:{index:0,keys:["0x13947Bd48b18E53fdAeEe77F3473391aC727C638"]}},{chains:chains$1}=CONFIG.DEVNET,DEVNET_CHAINS={Ethereum:{...chains$1.Ethereum,sdkName:"Ethereum",displayName:"EVM",explorerUrl:"",explorerName:"",wrappedGasToken:"0xDDb64fE46a91D46ee29420539FC25FD07c5FEa3E",chainId:1,icon:"Ethereum",symbol:"ETH"},Osmosis:{...chains$1.Osmosis,displayName:"Osmosis",sdkName:"Osmosis",explorerUrl:"",explorerName:"",wrappedGasToken:"",chainId:"osmosis-1002",icon:"Osmosis",symbol:"OSMO"},Wormchain:{...chains$1.Wormchain,sdkName:"Wormchain",displayName:"Wormchain",explorerUrl:"",explorerName:"",wrappedGasToken:"",chainId:"wormchain-1",icon:"Osmosis",symbol:"OSMO"},Terra2:{...chains$1.Terra2,sdkName:"Terra2",displayName:"Terra",explorerUrl:"",explorerName:"",wrappedGasToken:"",chainId:"localterra",icon:"Terra2",symbol:"OSMO"}},__vite_import_meta_env__={},{REACT_APP_ETHEREUM_DEVNET_RPC}=__vite_import_meta_env__,DEVNET_RPC_MAPPING={...populateRpcField("Ethereum",REACT_APP_ETHEREUM_DEVNET_RPC)},DEVNET_TOKENS=[{symbol:"ETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"Ethereum",address:"native"}},{symbol:"WETH",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"Ethereum",address:"0xDDb64fE46a91D46ee29420539FC25FD07c5FEa3E"}},{symbol:"TKN",icon:TokenIcon.ETH,decimals:18,tokenId:{chain:"Ethereum",address:"0x2D8BE6BF0baA74e0A907016679CaE9190e80dD0A"}}],DEVNET={chains:DEVNET_CHAINS,tokens:DEVNET_TOKENS,wrappedTokens:{},rpcs:DEVNET_RPC_MAPPING,guardianSet:{index:0,keys:["0x13947Bd48b18E53fdAeEe77F3473391aC727C638"]}},WORMSCAN="https://wormholescan.io/#/",CONNECT_VERSION="2.3.0",CONNECT_GIT_HASH="864251c3003203a9d085527e40911192d0014457",CHAIN_ORDER=["Ethereum","Solana","Arbitrum","Base","Sui","Bsc","Optimism","Unichain","Fantom","Polygon","Avalanche","Celo","Moonbeam","Klaytn","Scroll","Evmos","Mantle","Berachain"];function wrapEventHandler(t){var s;const e=typeof window>"u"||(s=window.location)==null?void 0:s.host;return function(l){const d={meta:{version:CONNECT_VERSION,hash:CONNECT_GIT_HASH,host:e},...l};if(console.info("Wormhole Connect event:",d),t)try{t(d)}catch(u){console.error("Error handling event:",u)}}}const evm=async()=>(await Promise.resolve().then(()=>require("./evm-CKGFrxPp.js"))).default,solana$1=async()=>(await Promise.resolve().then(()=>require("./solana-BzGuWSEw.js"))).default,aptos$1=async()=>(await Promise.resolve().then(()=>require("./aptos-C0fgCR3U.js")).then(t=>t.aptos)).default,sui=async()=>(await Promise.resolve().then(()=>require("./sui-D0YPksGW.js")).then(t=>t.sui)).default,COINGECKO_URL="https://api.coingecko.com",COINGECKO_URL_PRO="https://pro-api.coingecko.com",NATIVE_TOKEN_IDS={Solana:"solana",Ethereum:"ethereum",Arbitrum:"ethereum",Optimism:"ethereum",Base:"ethereum",Scroll:"ethereum",Blast:"ethereum",Bsc:"binancecoin",Polygon:"matic-network",Avalanche:"avalanche-2",Fantom:"fantom",Moonbeam:"moonbeam",Klaytn:"klay-token",Xlayer:"okb",Mantle:"mantle",Aptos:"aptos",Sui:"sui",Berachain:"berachain-bera"},CHAIN_IDS={Bsc:"binance-smart-chain",Arbitrum:"arbitrum-one",Optimism:"optimism-ethereum",Polygon:"polygon-pos",Klaytn:"kaia-token",Xlayer:"x-layer"},coingeckoRequest=async(t,e)=>{var d,u,p,m;const s=new Headers({"Content-Type":"application/json",...(d=config$1.coingecko)!=null&&d.apiKey?{"x-cg-pro-api-key":config$1.coingecko.apiKey}:{}}),l=(u=config$1.coingecko)!=null&&u.customUrl?config$1.coingecko.customUrl:(p=config$1.coingecko)!=null&&p.apiKey?COINGECKO_URL_PRO:COINGECKO_URL;return fetch(`${l}${t}`,{signal:(m=e==null?void 0:e.abort)==null?void 0:m.signal,headers:s}).then(y=>y.json())},fetchTokenMetadata=async(t,e)=>coingeckoRequest(`/api/v3/coins/${t.chain.toLowerCase()}/contract/${t.address.toString()}`,e),fetchTokenPrices=async(t,e)=>{const s={},l=[];for(const m of t)isNative(m.address)?l.push(m):(s[m.chain]===void 0&&(s[m.chain]=[]),s[m.chain].push(m.address.toString()));const d=Object.keys(s).map(m=>{const y=s[m];return new Promise((h,v)=>{const A=y.join(","),w=CHAIN_IDS[m]||m.toLowerCase();coingeckoRequest(`/api/v3/simple/token_price/${w}?contract_addresses=${A}&vs_currencies=usd`,e).then(I=>{I.error!==void 0?v(I.error):h(Object.keys(I).map(k=>{try{const $=Wormhole.tokenId(m,k);return I[k]?{tokenId:$,price:I[k].usd}:null}catch($){return console.error($),null}}).filter(k=>k!==null))}).catch(v)})});l.length>0&&d.push(new Promise((m,y)=>{const h=[];for(const v of l){const A=NATIVE_TOKEN_IDS[v.chain];A?h.push(A):console.error(`Don't know a coingecko ID for native token for chain ${v.chain}`)}coingeckoRequest(`/api/v3/simple/price?ids=${h.join(",")}&vs_currencies=usd`,e).then(v=>m(l.map(A=>{const w=NATIVE_TOKEN_IDS[A.chain];if(w){const{usd:I}=v[w];return{tokenId:A,price:I}}else return null}).filter(A=>!!A))).catch(y)}));const u=new TokenMapping,p=(await Promise.allSettled(d)).map(m=>m.status==="fulfilled"?m.value:null).filter(m=>!!m).flat();for(const{tokenId:m,price:y}of p)u.add(m,y);return u},some=t=>({__option:"Some",value:t}),none=()=>({__option:"None"}),isOption=t=>t&&typeof t=="object"&&"__option"in t&&(t.__option==="Some"&&"value"in t||t.__option==="None"),isSome=t=>t.__option==="Some",isNone=t=>t.__option==="None";function unwrapOption(t,e){return isSome(t)?t.value:e?e():null}const wrapNullable=t=>t!==null?some(t):none(),unwrapSome=t=>isSome(t)?t.value:null,unwrapSomeOrElse=(t,e)=>isSome(t)?t.value:e();function unwrapOptionRecursively(t,e){if(!t||ArrayBuffer.isView(t))return t;const s=l=>e?unwrapOptionRecursively(l,e):unwrapOptionRecursively(l);return isOption(t)?isSome(t)?s(t.value):e?e():null:Array.isArray(t)?t.map(s):typeof t=="object"?Object.fromEntries(Object.entries(t).map(([l,d])=>[l,s(d)])):t}let InvalidBaseStringError$1=class extends Error{constructor(s,l,d){const u=`Expected a string of base ${l}, got [${s}].`;super(u);Ae(this,"name","InvalidBaseStringError");this.cause=d}};const baseX$1=t=>{const e=t.length,s=BigInt(e);return{description:`base${e}`,fixedSize:null,maxSize:null,serialize(l){if(!l.match(new RegExp(`^[${t}]*$`)))throw new InvalidBaseStringError$1(l,e);if(l==="")return new Uint8Array;const d=[...l];let u=d.findIndex(A=>A!==t[0]);u=u===-1?d.length:u;const p=Array(u).fill(0);if(u===d.length)return Uint8Array.from(p);const m=d.slice(u);let y=0n,h=1n;for(let A=m.length-1;A>=0;A-=1)y+=h*BigInt(t.indexOf(m[A])),h*=s;const v=[];for(;y>0n;)v.unshift(Number(y%256n)),y/=256n;return Uint8Array.from(p.concat(v))},deserialize(l,d=0){if(l.length===0)return["",0];const u=l.slice(d);let p=u.findIndex(v=>v!==0);p=p===-1?u.length:p;const m=t[0].repeat(p);if(p===u.length)return[m,l.length];let y=u.slice(p).reduce((v,A)=>v*256n+BigInt(A),0n);const h=[];for(;y>0n;)h.unshift(t[Number(y%s)]),y/=s;return[m+h.join(""),l.length]}}},base10$1=baseX$1("0123456789"),base16$1={description:"base16",fixedSize:null,maxSize:null,serialize(t){const e=t.toLowerCase();if(!e.match(/^[0123456789abcdef]*$/))throw new InvalidBaseStringError$1(t,16);const s=e.match(/.{1,2}/g);return Uint8Array.from(s?s.map(l=>parseInt(l,16)):[])},deserialize(t,e=0){return[t.slice(e).reduce((l,d)=>l+d.toString(16).padStart(2,"0"),""),t.length]}},base58$1=baseX$1("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"),mergeBytes$1=t=>{const e=t.reduce((d,u)=>d+u.length,0),s=new Uint8Array(e);let l=0;return t.forEach(d=>{s.set(d,l),l+=d.length}),s},padBytes$1=(t,e)=>{if(t.length>=e)return t;const s=new Uint8Array(e).fill(0);return s.set(t),s},fixBytes$1=(t,e)=>padBytes$1(t.slice(0,e),e);class DeserializingEmptyBufferError extends Error{constructor(s){super(`Serializer [${s}] cannot deserialize empty buffers.`);Ae(this,"name","DeserializingEmptyBufferError")}}class NotEnoughBytesError extends Error{constructor(s,l,d){super(`Serializer [${s}] expected ${l} bytes, got ${d}.`);Ae(this,"name","NotEnoughBytesError")}}class ExpectedFixedSizeSerializerError extends Error{constructor(s){s??(s="Expected a fixed-size serializer, got a variable-size one.");super(s);Ae(this,"name","ExpectedFixedSizeSerializerError")}}function fixSerializer$1(t,e,s){return{description:s??`fixed(${e}, ${t.description})`,fixedSize:e,maxSize:e,serialize:l=>fixBytes$1(t.serialize(l),e),deserialize:(l,d=0)=>{if(l=l.slice(d,d+e),l.length<e)throw new NotEnoughBytesError("fixSerializer",e,l.length);t.fixedSize!==null&&(l=fixBytes$1(l,t.fixedSize));const[u]=t.deserialize(l,0);return[u,d+e]}}}function mapSerializer$1(t,e,s){return{description:t.description,fixedSize:t.fixedSize,maxSize:t.maxSize,serialize:l=>t.serialize(e(l)),deserialize:(l,d=0)=>{const[u,p]=t.deserialize(l,d);return s?[s(u,l,d),p]:[u,p]}}}function reverseSerializer$1(t){if(t.fixedSize===null)throw new ExpectedFixedSizeSerializerError("Cannot reverse a serializer of variable size.");return{...t,serialize:e=>t.serialize(e).reverse(),deserialize:(e,s=0)=>{const l=t.fixedSize,d=mergeBytes$1([e.slice(0,s),e.slice(s,s+l).reverse(),e.slice(s+l)]);return t.deserialize(d,s)}}}const baseXReslice=(t,e)=>{const s=t.length,l=(d,u,p,m)=>{const y=[];let h=0,v=0;const A=(1<<p)-1;for(const w of d)for(h=h<<u|w,v+=u;v>=p;)v-=p,y.push(h>>v&A);return m&&v>0&&y.push(h<<p-v&A),y};return{description:`base${s}`,fixedSize:null,maxSize:null,serialize(d){if(!d.match(new RegExp(`^[${t}]*$`)))throw new InvalidBaseStringError$1(d,s);if(d==="")return new Uint8Array;const u=[...d].map(m=>t.indexOf(m)),p=l(u,e,8,!1);return Uint8Array.from(p)},deserialize(d,u=0){if(d.length===0)return["",0];const p=[...d.slice(u)];return[l(p,8,e,!0).map(y=>t[y]).join(""),d.length]}}},base64$2=mapSerializer$1(baseXReslice("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",6),t=>t.replace(/=/g,""),t=>t.padEnd(Math.ceil(t.length/4)*4,"=")),removeNullCharacters$1=t=>t.replace(/\u0000/g,""),padNullCharacters$1=(t,e)=>t.padEnd(e,"\0"),utf8$2={description:"utf8",fixedSize:null,maxSize:null,serialize(t){return new TextEncoder().encode(t)},deserialize(t,e=0){const s=new TextDecoder().decode(t.slice(e));return[removeNullCharacters$1(s),t.length]}};class InvalidPublicKeyError extends Error{constructor(s,l){l=l?`. ${l}`:"";super(`The provided public key is invalid: ${s}${l}`);Ae(this,"name","InvalidPublicKeyError");this.invalidPublicKey=s}}const PUBLIC_KEY_LENGTH=32;function publicKey$5(t,e=!0){const s=typeof t=="string"?t:typeof t=="object"&&"publicKey"in t?t.publicKey:typeof t=="object"&&"toBase58"in t?t.toBase58():Array.isArray(t)?t[0]:base58$1.deserialize(t)[0];return e&&assertPublicKey(s),s}const defaultPublicKey=()=>"11111111111111111111111111111111",isPublicKey=t=>{try{return assertPublicKey(t),!0}catch{return!1}},isPda=t=>Array.isArray(t)&&t.length===2&&typeof t[1]=="number"&&isPublicKey(t[0]);function assertPublicKey(t){if(typeof t!="string")throw new InvalidPublicKeyError(t,"Public keys must be strings.");publicKeyBytes(t)}const uniquePublicKeys=t=>[...new Set(t)],publicKeyBytes=t=>{if(t.length<32||t.length>44)throw new InvalidPublicKeyError(t,"Public keys must be between 32 and 44 characters.");let e;try{e=base58$1.serialize(t)}catch{throw new InvalidPublicKeyError(t,"Public keys must be base58 encoded.")}if(e.length!==PUBLIC_KEY_LENGTH)throw new InvalidPublicKeyError(t,`Public keys must be ${PUBLIC_KEY_LENGTH} bytes.`);return e},base58PublicKey=t=>publicKey$5(t),samePublicKey=(t,e)=>publicKey$5(t)===publicKey$5(e);let Endian$1;(function(t){t.Little="le",t.Big="be"})(Endian$1||(Endian$1={}));class NumberOutOfRangeError extends RangeError{constructor(s,l,d,u){super(`Serializer [${s}] expected number to be between ${l} and ${d}, got ${u}.`);Ae(this,"name","NumberOutOfRangeError")}}function numberFactory(t){let e,s=t.name;return t.size>1&&(e=!("endian"in t.options)||t.options.endian===Endian$1.Little,s+=e?"(le)":"(be)"),{description:t.options.description??s,fixedSize:t.size,maxSize:t.size,serialize(l){t.range&&assertRange(t.name,t.range[0],t.range[1],l);const d=new ArrayBuffer(t.size);return t.set(new DataView(d),l,e),new Uint8Array(d)},deserialize(l,d=0){const u=l.slice(d,d+t.size);assertEnoughBytes("i8",u,t.size);const p=toDataView(u);return[t.get(p,e),d+t.size]}}}const toArrayBuffer=t=>t.buffer.slice(t.byteOffset,t.byteLength+t.byteOffset),toDataView=t=>new DataView(toArrayBuffer(t)),assertRange=(t,e,s,l)=>{if(l<e||l>s)throw new NumberOutOfRangeError(t,e,s,l)},assertEnoughBytes=(t,e,s)=>{if(e.length===0)throw new DeserializingEmptyBufferError(t);if(e.length<s)throw new NotEnoughBytesError(t,s,e.length)},f32=(t={})=>numberFactory({name:"f32",size:4,set:(e,s,l)=>e.setFloat32(0,Number(s),l),get:(e,s)=>e.getFloat32(0,s),options:t}),f64=(t={})=>numberFactory({name:"f64",size:8,set:(e,s,l)=>e.setFloat64(0,Number(s),l),get:(e,s)=>e.getFloat64(0,s),options:t}),i8=(t={})=>numberFactory({name:"i8",size:1,range:[-+"0x7f"-1,+"0x7f"],set:(e,s)=>e.setInt8(0,Number(s)),get:e=>e.getInt8(0),options:t}),i16=(t={})=>numberFactory({name:"i16",size:2,range:[-+"0x7fff"-1,+"0x7fff"],set:(e,s,l)=>e.setInt16(0,Number(s),l),get:(e,s)=>e.getInt16(0,s),options:t}),i32=(t={})=>numberFactory({name:"i32",size:4,range:[-+"0x7fffffff"-1,+"0x7fffffff"],set:(e,s,l)=>e.setInt32(0,Number(s),l),get:(e,s)=>e.getInt32(0,s),options:t}),i64=(t={})=>numberFactory({name:"i64",size:8,range:[-BigInt("0x7fffffffffffffff")-1n,BigInt("0x7fffffffffffffff")],set:(e,s,l)=>e.setBigInt64(0,BigInt(s),l),get:(e,s)=>e.getBigInt64(0,s),options:t}),i128=(t={})=>numberFactory({name:"i128",size:16,range:[-BigInt("0x7fffffffffffffffffffffffffffffff")-1n,BigInt("0x7fffffffffffffffffffffffffffffff")],set:(e,s,l)=>{const d=l?8:0,u=l?0:8,p=0xffffffffffffffffn;e.setBigInt64(d,BigInt(s)>>64n,l),e.setBigUint64(u,BigInt(s)&p,l)},get:(e,s)=>{const l=s?8:0,d=s?0:8,u=e.getBigInt64(l,s),p=e.getBigUint64(d,s);return(u<<64n)+p},options:t}),u8$1=(t={})=>numberFactory({name:"u8",size:1,range:[0,+"0xff"],set:(e,s)=>e.setUint8(0,Number(s)),get:e=>e.getUint8(0),options:t}),u16=(t={})=>numberFactory({name:"u16",size:2,range:[0,+"0xffff"],set:(e,s,l)=>e.setUint16(0,Number(s),l),get:(e,s)=>e.getUint16(0,s),options:t}),u32$1=(t={})=>numberFactory({name:"u32",size:4,range:[0,+"0xffffffff"],set:(e,s,l)=>e.setUint32(0,Number(s),l),get:(e,s)=>e.getUint32(0,s),options:t}),u64$2=(t={})=>numberFactory({name:"u64",size:8,range:[0,BigInt("0xffffffffffffffff")],set:(e,s,l)=>e.setBigUint64(0,BigInt(s),l),get:(e,s)=>e.getBigUint64(0,s),options:t}),u128=(t={})=>numberFactory({name:"u128",size:16,range:[0,BigInt("0xffffffffffffffffffffffffffffffff")],set:(e,s,l)=>{const d=l?8:0,u=l?0:8,p=0xffffffffffffffffn;e.setBigUint64(d,BigInt(s)>>64n,l),e.setBigUint64(u,BigInt(s)&p,l)},get:(e,s)=>{const l=s?8:0,d=s?0:8,u=e.getBigUint64(l,s),p=e.getBigUint64(d,s);return(u<<64n)+p},options:t}),shortU16=(t={})=>({description:t.description??"shortU16",fixedSize:null,maxSize:3,serialize:e=>{assertRange("shortU16",0,65535,e);const s=[0];for(let l=0;;l+=1){const d=e>>l*7;if(d===0)break;const u=127&d;s[l]=u,l>0&&(s[l-1]|=128)}return new Uint8Array(s)},deserialize:(e,s=0)=>{let l=0,d=0;for(;++d;){const u=d-1,p=e[s+u],m=127&p;if(l|=m<<u*7,!(p&128))break}return[l,s+d]}});class InvalidNumberOfItemsError extends Error{constructor(s,l,d){super(`Expected [${s}] to have ${l} items, got ${d}.`);Ae(this,"name","InvalidNumberOfItemsError")}}class InvalidArrayLikeRemainderSizeError extends Error{constructor(s,l){super(`The remainder of the buffer (${s} bytes) cannot be split into chunks of ${l} bytes. Serializers of "remainder" size must have a remainder that is a multiple of its item size. In other words, ${s} modulo ${l} should be equal to zero.`);Ae(this,"name","InvalidArrayLikeRemainderSizeError")}}class UnrecognizedArrayLikeSerializerSizeError extends Error{constructor(s){super(`Unrecognized array-like serializer size: ${JSON.stringify(s)}`);Ae(this,"name","UnrecognizedArrayLikeSerializerSizeError")}}class InvalidDataEnumVariantError extends Error{constructor(s,l){super(`Invalid data enum variant. Expected one of [${l.join(", ")}], got "${s}".`);Ae(this,"name","InvalidDataEnumVariantError")}}class InvalidScalarEnumVariantError extends Error{constructor(s,l,d,u){super(`Invalid scalar enum variant. Expected one of [${l.join(", ")}] or a number between ${d} and ${u}, got "${s}".`);Ae(this,"name","InvalidScalarEnumVariantError")}}class EnumDiscriminatorOutOfRangeError extends RangeError{constructor(s,l,d){super(`Enum discriminator out of range. Expected a number between ${l} and ${d}, got ${s}.`);Ae(this,"name","EnumDiscriminatorOutOfRangeError")}}function sumSerializerSizes(t){return t.reduce((e,s)=>e===null||s===null?null:e+s,0)}function getResolvedSize(t,e,s){if(typeof t=="number")return[t,s];if(typeof t=="object")return t.deserialize(e,s);throw new UnrecognizedArrayLikeSerializerSizeError(t)}function getSizeDescription(t){return typeof t=="object"?t.description:`${t}`}function getSizeFromChildren(t,e){if(typeof t!="number")return null;if(t===0)return 0;const s=sumSerializerSizes(e);return s===null?null:s*t}function getSizePrefix(t,e){return typeof t=="object"?t.serialize(e):new Uint8Array}function array$2(t,e={}){const s=e.size??u32$1();return{description:e.description??`array(${t.description}; ${getSizeDescription(s)})`,fixedSize:getSizeFromChildren(s,[t.fixedSize]),maxSize:getSizeFromChildren(s,[t.maxSize]),serialize:l=>{if(typeof s=="number"&&l.length!==s)throw new InvalidNumberOfItemsError("array",s,l.length);return mergeBytes$1([getSizePrefix(s,l.length),...l.map(d=>t.serialize(d))])},deserialize:(l,d=0)=>{const u=[];if(typeof s=="object"&&l.slice(d).length===0)return[u,d];if(s==="remainder"){for(;d<l.length;){const[y,h]=t.deserialize(l,d);u.push(y),d=h}return[u,d]}const[p,m]=getResolvedSize(s,l,d);d=m;for(let y=0;y<p;y+=1){const[h,v]=t.deserialize(l,d);u.push(h),d=v}return[u,d]}}}const bitArray$1=(t,e={})=>{const s=typeof e=="boolean"?{backward:e}:e,l=s.backward??!1,d=l?"; backward":"";return{description:s.description??`bitArray(${t}${d})`,fixedSize:t,maxSize:t,serialize(u){const p=[];for(let m=0;m<t;m+=1){let y=0;for(let h=0;h<8;h+=1){const v=Number(u[m*8+h]??0);y|=v<<(l?h:7-h)}l?p.unshift(y):p.push(y)}return new Uint8Array(p)},deserialize(u,p=0){const m=[];let y=u.slice(p,p+t);if(y=l?y.reverse():y,y.length!==t)throw new NotEnoughBytesError("bitArray",t,y.length);return y.forEach(h=>{for(let v=0;v<8;v+=1)l?(m.push(!!(h&1)),h>>=1):(m.push(!!(h&128)),h<<=1)}),[m,p+t]}}};function bool$1(t={}){const e=t.size??u8$1();if(e.fixedSize===null)throw new ExpectedFixedSizeSerializerError("Serializer [bool] requires a fixed size.");return{description:t.description??`bool(${e.description})`,fixedSize:e.fixedSize,maxSize:e.fixedSize,serialize:s=>e.serialize(s?1:0),deserialize:(s,l=0)=>{if(s.slice(l).length===0)throw new DeserializingEmptyBufferError("bool");const[d,u]=e.deserialize(s,l);return[d===1,u]}}}function bytes(t={}){const e=t.size??"variable",s=t.description??`bytes(${getSizeDescription(e)})`,l={description:s,fixedSize:null,maxSize:null,serialize:d=>new Uint8Array(d),deserialize:(d,u=0)=>{const p=d.slice(u);return[p,u+p.length]}};return e==="variable"?l:typeof e=="number"?fixSerializer$1(l,e,s):{description:s,fixedSize:null,maxSize:null,serialize:d=>{const u=l.serialize(d),p=e.serialize(u.length);return mergeBytes$1([p,u])},deserialize:(d,u=0)=>{if(d.slice(u).length===0)throw new DeserializingEmptyBufferError("bytes");const[p,m]=e.deserialize(d,u),y=Number(p);u=m;const h=d.slice(u,u+y);if(h.length<y)throw new NotEnoughBytesError("bytes",y,h.length);const[v,A]=l.deserialize(h);return u+=A,[v,u]}}}function maxSerializerSizes(t){return t.reduce((e,s)=>e===null||s===null?null:Math.max(e,s),0)}function dataEnum(t,e={}){const s=e.size??u8$1(),l=t.map(([m,y])=>`${String(m)}${y?`: ${y.description}`:""}`).join(", "),u=t.every((m,y,h)=>m[1].fixedSize===h[0][1].fixedSize)?t[0][1].fixedSize:null,p=maxSerializerSizes(t.map(([,m])=>m.maxSize));return{description:e.description??`dataEnum(${l}; ${s.description})`,fixedSize:t.length===0?s.fixedSize:sumSerializerSizes([s.fixedSize,u]),maxSize:t.length===0?s.maxSize:sumSerializerSizes([s.maxSize,p]),serialize:m=>{const y=t.findIndex(([w])=>m.__kind===w);if(y<0)throw new InvalidDataEnumVariantError(m.__kind,t.map(([w])=>w));const h=s.serialize(y),A=t[y][1].serialize(m);return mergeBytes$1([h,A])},deserialize:(m,y=0)=>{if(m.slice(y).length===0)throw new DeserializingEmptyBufferError("dataEnum");const[h,v]=s.deserialize(m,y);y=v;const A=t[Number(h)]??null;if(!A)throw new EnumDiscriminatorOutOfRangeError(h,0,t.length-1);const[w,I]=A[1].deserialize(m,y);return y=I,[{__kind:A[0],...w??{}},y]}}}function map(t,e,s={}){const l=s.size??u32$1();return{description:s.description??`map(${t.description}, ${e.description}; ${getSizeDescription(l)})`,fixedSize:getSizeFromChildren(l,[t.fixedSize,e.fixedSize]),maxSize:getSizeFromChildren(l,[t.maxSize,e.maxSize]),serialize:d=>{if(typeof l=="number"&&d.size!==l)throw new InvalidNumberOfItemsError("map",l,d.size);const u=Array.from(d,([p,m])=>mergeBytes$1([t.serialize(p),e.serialize(m)]));return mergeBytes$1([getSizePrefix(l,d.size),...u])},deserialize:(d,u=0)=>{const p=new Map;if(typeof l=="object"&&d.slice(u).length===0)return[p,u];if(l==="remainder"){for(;u<d.length;){const[h,v]=t.deserialize(d,u);u=v;const[A,w]=e.deserialize(d,u);u=w,p.set(h,A)}return[p,u]}const[m,y]=getResolvedSize(l,d,u);u=y;for(let h=0;h<m;h+=1){const[v,A]=t.deserialize(d,u);u=A;const[w,I]=e.deserialize(d,u);u=I,p.set(v,w)}return[p,u]}}}function nullable$2(t,e={}){const s=e.prefix??u8$1(),l=e.fixed??!1;let d=`; ${getSizeDescription(s)}`,u=t.fixedSize===0?s.fixedSize:null;if(l){if(t.fixedSize===null||s.fixedSize===null)throw new ExpectedFixedSizeSerializerError("Fixed nullables can only be used with fixed-size serializers");d+="; fixed",u=s.fixedSize+t.fixedSize}return{description:e.description??`nullable(${t.description+d})`,fixedSize:u,maxSize:sumSerializerSizes([s.maxSize,t.maxSize]),serialize:p=>{const m=s.serialize(+(p!==null));if(l){const h=t.fixedSize,v=p!==null?t.serialize(p).slice(0,h):new Uint8Array(h).fill(0);return mergeBytes$1([m,v])}const y=p!==null?t.serialize(p):new Uint8Array;return mergeBytes$1([m,y])},deserialize:(p,m=0)=>{if(p.slice(m).length===0)return[null,m];const y=m+(s.fixedSize??0)+(t.fixedSize??0),[h,v]=s.deserialize(p,m);if(m=v,h===0)return[null,l?y:m];const[A,w]=t.deserialize(p,m);return m=w,[A,l?y:m]}}}function option$1(t,e={}){const s=e.prefix??u8$1(),l=e.fixed??!1;let d=`; ${getSizeDescription(s)}`,u=t.fixedSize===0?s.fixedSize:null;if(l){if(t.fixedSize===null||s.fixedSize===null)throw new ExpectedFixedSizeSerializerError("Fixed options can only be used with fixed-size serializers");d+="; fixed",u=s.fixedSize+t.fixedSize}return{description:e.description??`option(${t.description+d})`,fixedSize:u,maxSize:sumSerializerSizes([s.maxSize,t.maxSize]),serialize:p=>{const m=isOption(p)?p:wrapNullable(p),y=s.serialize(Number(isSome(m)));if(l){const v=t.fixedSize,A=isSome(m)?t.serialize(m.value).slice(0,v):new Uint8Array(v).fill(0);return mergeBytes$1([y,A])}const h=isSome(m)?t.serialize(m.value):new Uint8Array;return mergeBytes$1([y,h])},deserialize:(p,m=0)=>{if(p.slice(m).length===0)return[none(),m];const y=m+(s.fixedSize??0)+(t.fixedSize??0),[h,v]=s.deserialize(p,m);if(m=v,h===0)return[none(),l?y:m];const[A,w]=t.deserialize(p,m);return m=w,[some(A),l?y:m]}}}function publicKey$4(t={}){return{description:t.description??"publicKey",fixedSize:32,maxSize:32,serialize:e=>publicKeyBytes(publicKey$5(e)),deserialize:(e,s=0)=>{const l=e.slice(s,s+32);if(l.length===0)throw new DeserializingEmptyBufferError("publicKey");if(l.length<PUBLIC_KEY_LENGTH)throw new NotEnoughBytesError("publicKey",PUBLIC_KEY_LENGTH,l.length);return[publicKey$5(l),s+32]}}}function scalarEnum(t,e={}){const s=e.size??u8$1(),l=Object.keys(t),d=Object.values(t),u=d.some(A=>typeof A=="number"),p=d.filter(A=>typeof A=="string").join(", "),m=0,y=u?d.length/2-1:d.length-1,h=u?[...l]:[...new Set([...l,...d])];function v(A){const w=typeof A=="number"&&(A<m||A>y),I=typeof A=="string"&&!h.includes(A);if(w||I)throw new InvalidScalarEnumVariantError(A,h,m,y)}return{description:e.description??`enum(${p}; ${s.description})`,fixedSize:s.fixedSize,maxSize:s.maxSize,serialize:A=>{if(v(A),typeof A=="number")return s.serialize(A);const w=d.indexOf(A);return w>=0?s.serialize(w):s.serialize(l.indexOf(A))},deserialize:(A,w=0)=>{if(A.slice(w).length===0)throw new DeserializingEmptyBufferError("enum");const[I,k]=s.deserialize(A,w),$=Number(I);if(w=k,$<m||$>y)throw new EnumDiscriminatorOutOfRangeError($,m,y);return[u?$:d[$],w]}}}function set$1(t,e={}){const s=e.size??u32$1();return{description:e.description??`set(${t.description}; ${getSizeDescription(s)})`,fixedSize:getSizeFromChildren(s,[t.fixedSize]),maxSize:getSizeFromChildren(s,[t.maxSize]),serialize:l=>{if(typeof s=="number"&&l.size!==s)throw new InvalidNumberOfItemsError("set",s,l.size);const d=Array.from(l,u=>t.serialize(u));return mergeBytes$1([getSizePrefix(s,l.size),...d])},deserialize:(l,d=0)=>{const u=new Set;if(typeof s=="object"&&l.slice(d).length===0)return[u,d];if(s==="remainder"){for(;d<l.length;){const[y,h]=t.deserialize(l,d);u.add(y),d=h}return[u,d]}const[p,m]=getResolvedSize(s,l,d);d=m;for(let y=0;y<p;y+=1){const[h,v]=t.deserialize(l,d);u.add(h),d=v}return[u,d]}}}function string$2(t={}){const e=t.size??u32$1(),s=t.encoding??utf8$2,l=t.description??`string(${s.description}; ${getSizeDescription(e)})`;return e==="variable"?{...s,description:l}:typeof e=="number"?fixSerializer$1(s,e,l):{description:l,fixedSize:null,maxSize:null,serialize:d=>{const u=s.serialize(d),p=e.serialize(u.length);return mergeBytes$1([p,u])},deserialize:(d,u=0)=>{if(d.slice(u).length===0)throw new DeserializingEmptyBufferError("string");const[p,m]=e.deserialize(d,u),y=Number(p);u=m;const h=d.slice(u,u+y);if(h.length<y)throw new NotEnoughBytesError("string",y,h.length);const[v,A]=s.deserialize(h);return u+=A,[v,u]}}}function struct$1(t,e={}){const s=t.map(([l,d])=>`${String(l)}: ${d.description}`).join(", ");return{description:e.description??`struct(${s})`,fixedSize:sumSerializerSizes(t.map(([,l])=>l.fixedSize)),maxSize:sumSerializerSizes(t.map(([,l])=>l.maxSize)),serialize:l=>{const d=t.map(([u,p])=>p.serialize(l[u]));return mergeBytes$1(d)},deserialize:(l,d=0)=>{const u={};return t.forEach(([p,m])=>{const[y,h]=m.deserialize(l,d);d=h,u[p]=y}),[u,d]}}}function tuple$1(t,e={}){const s=t.map(l=>l.description).join(", ");return{description:e.description??`tuple(${s})`,fixedSize:sumSerializerSizes(t.map(l=>l.fixedSize)),maxSize:sumSerializerSizes(t.map(l=>l.maxSize)),serialize:l=>{if(l.length!==t.length)throw new InvalidNumberOfItemsError("tuple",t.length,l.length);return mergeBytes$1(t.map((d,u)=>d.serialize(l[u])))},deserialize:(l,d=0)=>{const u=[];return t.forEach(p=>{const[m,y]=p.deserialize(l,d);u.push(m),d=y}),[u,d]}}}function unit(t={}){return{description:t.description??"unit",fixedSize:0,maxSize:0,serialize:()=>new Uint8Array,deserialize:(e,s=0)=>[void 0,s]}}const esm$1=Object.freeze(Object.defineProperty({__proto__:null,DeserializingEmptyBufferError,get Endian(){return Endian$1},EnumDiscriminatorOutOfRangeError,ExpectedFixedSizeSerializerError,InvalidArrayLikeRemainderSizeError,InvalidBaseStringError:InvalidBaseStringError$1,InvalidDataEnumVariantError,InvalidNumberOfItemsError,InvalidScalarEnumVariantError,NotEnoughBytesError,NumberOutOfRangeError,UnrecognizedArrayLikeSerializerSizeError,array:array$2,base10:base10$1,base16:base16$1,base58:base58$1,base64:base64$2,baseX:baseX$1,baseXReslice,bitArray:bitArray$1,bool:bool$1,bytes,dataEnum,f32,f64,fixBytes:fixBytes$1,fixSerializer:fixSerializer$1,i128,i16,i32,i64,i8,map,mapSerializer:mapSerializer$1,maxSerializerSizes,mergeBytes:mergeBytes$1,nullable:nullable$2,option:option$1,padBytes:padBytes$1,padNullCharacters:padNullCharacters$1,publicKey:publicKey$4,removeNullCharacters:removeNullCharacters$1,reverseSerializer:reverseSerializer$1,scalarEnum,set:set$1,shortU16,string:string$2,struct:struct$1,sumSerializerSizes,tuple:tuple$1,u128,u16,u32:u32$1,u64:u64$2,u8:u8$1,unit,utf8:utf8$2},Symbol.toStringTag,{value:"Module"})),mapSerializer=mapSerializer$1,fixSerializer=fixSerializer$1,reverseSerializer=reverseSerializer$1,mergeBytes=mergeBytes$1,padBytes=padBytes$1,fixBytes=fixBytes$1,utf8$1=utf8$2,baseX=baseX$1,base10=base10$1,base58=base58$1,base64$1=base64$2,base16=base16$1,bitArray=bitArray$1,removeNullCharacters=removeNullCharacters$1,padNullCharacters=padNullCharacters$1,Endian=Endian$1;class UmiError extends Error{constructor(s,l,d,u){super(s);Ae(this,"name","UmiError");this.source=l,this.sourceDetails=d,this.cause=u,this.message=`${this.message}
104
104
 
105
105
  Source: ${this.getFullSource()}${this.cause?`
106
106
 
@@ -191,7 +191,7 @@ ${JSON.stringify(t)}`)}hasType(t){return this.types.has(t)}registerAlias(t,e){re
191
191
  Received: "${y}"`);if(typeof y!="object")throw new Error(`Incorrect data passed into enum "${d}", expected object with properties: "${l.join(" | ")}".
192
192
  Received: "${JSON.stringify(y)}"`);let A=Object.keys(y)[0];if(A===void 0)throw new Error(`Empty object passed as invariant of the enum "${d}"`);let w=l.indexOf(A);if(w===-1)throw new Error(`Unknown invariant of the enum "${d}", allowed values: "${l.join(" | ")}"; received "${A}"`);let I=l[w],k=s[I];if(m.write8(w),k===null)return m;let $=u.indexOf(k),P=$===-1?k:h[$];{let{name:z,params:U}=this.parseTypeName(P);return this.getTypeInterface(z)._encodeRaw.call(this,m,y[A],U,v)}},function(m,y,h){let v=m.readULEB(),A=l[v],w=s[A];if(v===-1)throw new Error(`Decoding type mismatch, expected enum "${d}" invariant index, received "${v}"`);if(w===null)return{[A]:!0};let I=u.indexOf(w),k=I===-1?w:y[I];{let{name:$,params:P}=this.parseTypeName(k);return{[A]:this.getTypeInterface($)._decodeRaw.call(this,m,P,h)}}})}getTypeInterface(t){let e=this.types.get(t);if(typeof e=="string"){let s=[];for(;typeof e=="string";){if(s.includes(e))throw new Error(`Recursive definition found: ${s.join(" -> ")} -> ${e}`);s.push(e),e=this.types.get(e)}}if(e===void 0)throw new Error(`Type ${t} is not registered`);return e}parseTypeName(t){if(Array.isArray(t)){let[m,...y]=t;return{name:m,params:y}}if(typeof t!="string")throw new Error(`Illegal type passed as a name of the type: ${t}`);let[e,s]=this.schema.genericSeparators||["<",">"],l=t.indexOf(e),d=Array.from(t).reverse().indexOf(s);if(l===-1&&d===-1)return{name:t,params:[]};if(l===-1||d===-1)throw new Error(`Unclosed generic in name '${t}'`);let u=t.slice(0,l),p=t.slice(l+1,t.length-d-1).split(",").map(m=>m.trim());return{name:u,params:p}}},BCS=_BCS;BCS.U8="u8";BCS.U16="u16";BCS.U32="u32";BCS.U64="u64";BCS.U128="u128";BCS.U256="u256";BCS.BOOL="bool";BCS.VECTOR="vector";BCS.ADDRESS="address";BCS.STRING="string";BCS.HEX="hex-string";BCS.BASE58="base58-string";BCS.BASE64="base64-string";function encodeStr(t,e){switch(e){case"base58":return toB58(t);case"base64":return toB64(t);case"hex":return toHEX(t);default:throw new Error("Unsupported encoding, supported values are: base64, hex")}}function decodeStr(t,e){switch(e){case"base58":return fromB58(t);case"base64":return fromB64(t);case"hex":return fromHEX(t);default:throw new Error("Unsupported encoding, supported values are: base64, hex")}}function registerPrimitives(t){t.registerType(BCS.U8,function(e,s){return e.write8(s)},function(e){return e.read8()},e=>e<256),t.registerType(BCS.U16,function(e,s){return e.write16(s)},function(e){return e.read16()},e=>e<65536),t.registerType(BCS.U32,function(e,s){return e.write32(s)},function(e){return e.read32()},e=>e<=4294967296n),t.registerType(BCS.U64,function(e,s){return e.write64(s)},function(e){return e.read64()}),t.registerType(BCS.U128,function(e,s){return e.write128(s)},function(e){return e.read128()}),t.registerType(BCS.U256,function(e,s){return e.write256(s)},function(e){return e.read256()}),t.registerType(BCS.BOOL,function(e,s){return e.write8(s)},function(e){return e.read8().toString(10)==="1"}),t.registerType(BCS.STRING,function(e,s){return e.writeVec(Array.from(s),(l,d)=>l.write8(d.charCodeAt(0)))},function(e){return e.readVec(s=>s.read8()).map(s=>String.fromCharCode(Number(s))).join("")},e=>!0),t.registerType(BCS.HEX,function(e,s){return e.writeVec(Array.from(fromHEX(s)),(l,d)=>l.write8(d))},function(e){let s=e.readVec(l=>l.read8());return toHEX(new Uint8Array(s))}),t.registerType(BCS.BASE58,function(e,s){return e.writeVec(Array.from(fromB58(s)),(l,d)=>l.write8(d))},function(e){let s=e.readVec(l=>l.read8());return toB58(new Uint8Array(s))}),t.registerType(BCS.BASE64,function(e,s){return e.writeVec(Array.from(fromB64(s)),(l,d)=>l.write8(d))},function(e){let s=e.readVec(l=>l.read8());return toB64(new Uint8Array(s))})}function getSuiMoveConfig(){return{genericSeparators:["<",">"],vectorType:"vector",addressLength:SUI_ADDRESS_LENGTH$1,addressEncoding:"hex"}}const SIGMA=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9]);class BLAKE extends Hash{constructor(e,s,l={},d,u,p){if(super(),this.blockLen=e,this.outputLen=s,this.length=0,this.pos=0,this.finished=!1,this.destroyed=!1,anumber(e),anumber(s),anumber(d),s<0||s>d)throw new Error("outputLen bigger than keyLen");if(l.key!==void 0&&(l.key.length<1||l.key.length>d))throw new Error("key length must be undefined or 1.."+d);if(l.salt!==void 0&&l.salt.length!==u)throw new Error("salt must be undefined or "+u);if(l.personalization!==void 0&&l.personalization.length!==p)throw new Error("personalization must be undefined or "+p);this.buffer=new Uint8Array(e),this.buffer32=u32$2(this.buffer)}update(e){aexists(this);const{blockLen:s,buffer:l,buffer32:d}=this;e=toBytes$1(e);const u=e.length,p=e.byteOffset,m=e.buffer;for(let y=0;y<u;){this.pos===s&&(isLE||byteSwap32(d),this.compress(d,0,!1),isLE||byteSwap32(d),this.pos=0);const h=Math.min(s-this.pos,u-y),v=p+y;if(h===s&&!(v%4)&&y+h<u){const A=new Uint32Array(m,v,Math.floor((u-y)/4));isLE||byteSwap32(A);for(let w=0;y+s<u;w+=d.length,y+=s)this.length+=s,this.compress(A,w,!1);isLE||byteSwap32(A);continue}l.set(e.subarray(y,y+h),this.pos),this.pos+=h,this.length+=h,y+=h}return this}digestInto(e){aexists(this),aoutput(e,this);const{pos:s,buffer32:l}=this;this.finished=!0,this.buffer.subarray(s).fill(0),isLE||byteSwap32(l),this.compress(l,0,!0),isLE||byteSwap32(l);const d=u32$2(e);this.get().forEach((u,p)=>d[p]=byteSwapIfBE(u))}digest(){const{buffer:e,outputLen:s}=this;this.digestInto(e);const l=e.slice(0,s);return this.destroy(),l}_cloneInto(e){const{buffer:s,length:l,finished:d,destroyed:u,outputLen:p,pos:m}=this;return e||(e=new this.constructor({dkLen:p})),e.set(...this.get()),e.length=l,e.finished=d,e.destroyed=u,e.outputLen=p,e.buffer.set(s),e.pos=m,e}}const B2B_IV=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),BBUF=new Uint32Array(32);function G1b(t,e,s,l,d,u){const p=d[u],m=d[u+1];let y=BBUF[2*t],h=BBUF[2*t+1],v=BBUF[2*e],A=BBUF[2*e+1],w=BBUF[2*s],I=BBUF[2*s+1],k=BBUF[2*l],$=BBUF[2*l+1],P=u64$4.add3L(y,v,p);h=u64$4.add3H(P,h,A,m),y=P|0,{Dh:$,Dl:k}={Dh:$^h,Dl:k^y},{Dh:$,Dl:k}={Dh:u64$4.rotr32H($,k),Dl:u64$4.rotr32L($,k)},{h:I,l:w}=u64$4.add(I,w,$,k),{Bh:A,Bl:v}={Bh:A^I,Bl:v^w},{Bh:A,Bl:v}={Bh:u64$4.rotrSH(A,v,24),Bl:u64$4.rotrSL(A,v,24)},BBUF[2*t]=y,BBUF[2*t+1]=h,BBUF[2*e]=v,BBUF[2*e+1]=A,BBUF[2*s]=w,BBUF[2*s+1]=I,BBUF[2*l]=k,BBUF[2*l+1]=$}function G2b(t,e,s,l,d,u){const p=d[u],m=d[u+1];let y=BBUF[2*t],h=BBUF[2*t+1],v=BBUF[2*e],A=BBUF[2*e+1],w=BBUF[2*s],I=BBUF[2*s+1],k=BBUF[2*l],$=BBUF[2*l+1],P=u64$4.add3L(y,v,p);h=u64$4.add3H(P,h,A,m),y=P|0,{Dh:$,Dl:k}={Dh:$^h,Dl:k^y},{Dh:$,Dl:k}={Dh:u64$4.rotrSH($,k,16),Dl:u64$4.rotrSL($,k,16)},{h:I,l:w}=u64$4.add(I,w,$,k),{Bh:A,Bl:v}={Bh:A^I,Bl:v^w},{Bh:A,Bl:v}={Bh:u64$4.rotrBH(A,v,63),Bl:u64$4.rotrBL(A,v,63)},BBUF[2*t]=y,BBUF[2*t+1]=h,BBUF[2*e]=v,BBUF[2*e+1]=A,BBUF[2*s]=w,BBUF[2*s+1]=I,BBUF[2*l]=k,BBUF[2*l+1]=$}class BLAKE2b extends BLAKE{constructor(e={}){super(128,e.dkLen===void 0?64:e.dkLen,e,64,16,16),this.v0l=B2B_IV[0]|0,this.v0h=B2B_IV[1]|0,this.v1l=B2B_IV[2]|0,this.v1h=B2B_IV[3]|0,this.v2l=B2B_IV[4]|0,this.v2h=B2B_IV[5]|0,this.v3l=B2B_IV[6]|0,this.v3h=B2B_IV[7]|0,this.v4l=B2B_IV[8]|0,this.v4h=B2B_IV[9]|0,this.v5l=B2B_IV[10]|0,this.v5h=B2B_IV[11]|0,this.v6l=B2B_IV[12]|0,this.v6h=B2B_IV[13]|0,this.v7l=B2B_IV[14]|0,this.v7h=B2B_IV[15]|0;const s=e.key?e.key.length:0;if(this.v0l^=this.outputLen|s<<8|65536|1<<24,e.salt){const l=u32$2(toBytes$1(e.salt));this.v4l^=byteSwapIfBE(l[0]),this.v4h^=byteSwapIfBE(l[1]),this.v5l^=byteSwapIfBE(l[2]),this.v5h^=byteSwapIfBE(l[3])}if(e.personalization){const l=u32$2(toBytes$1(e.personalization));this.v6l^=byteSwapIfBE(l[0]),this.v6h^=byteSwapIfBE(l[1]),this.v7l^=byteSwapIfBE(l[2]),this.v7h^=byteSwapIfBE(l[3])}if(e.key){const l=new Uint8Array(this.blockLen);l.set(toBytes$1(e.key)),this.update(l)}}get(){let{v0l:e,v0h:s,v1l:l,v1h:d,v2l:u,v2h:p,v3l:m,v3h:y,v4l:h,v4h:v,v5l:A,v5h:w,v6l:I,v6h:k,v7l:$,v7h:P}=this;return[e,s,l,d,u,p,m,y,h,v,A,w,I,k,$,P]}set(e,s,l,d,u,p,m,y,h,v,A,w,I,k,$,P){this.v0l=e|0,this.v0h=s|0,this.v1l=l|0,this.v1h=d|0,this.v2l=u|0,this.v2h=p|0,this.v3l=m|0,this.v3h=y|0,this.v4l=h|0,this.v4h=v|0,this.v5l=A|0,this.v5h=w|0,this.v6l=I|0,this.v6h=k|0,this.v7l=$|0,this.v7h=P|0}compress(e,s,l){this.get().forEach((y,h)=>BBUF[h]=y),BBUF.set(B2B_IV,16);let{h:d,l:u}=u64$4.fromBig(BigInt(this.length));BBUF[24]=B2B_IV[8]^u,BBUF[25]=B2B_IV[9]^d,l&&(BBUF[28]=~BBUF[28],BBUF[29]=~BBUF[29]);let p=0;const m=SIGMA;for(let y=0;y<12;y++)G1b(0,4,8,12,e,s+2*m[p++]),G2b(0,4,8,12,e,s+2*m[p++]),G1b(1,5,9,13,e,s+2*m[p++]),G2b(1,5,9,13,e,s+2*m[p++]),G1b(2,6,10,14,e,s+2*m[p++]),G2b(2,6,10,14,e,s+2*m[p++]),G1b(3,7,11,15,e,s+2*m[p++]),G2b(3,7,11,15,e,s+2*m[p++]),G1b(0,5,10,15,e,s+2*m[p++]),G2b(0,5,10,15,e,s+2*m[p++]),G1b(1,6,11,12,e,s+2*m[p++]),G2b(1,6,11,12,e,s+2*m[p++]),G1b(2,7,8,13,e,s+2*m[p++]),G2b(2,7,8,13,e,s+2*m[p++]),G1b(3,4,9,14,e,s+2*m[p++]),G2b(3,4,9,14,e,s+2*m[p++]);this.v0l^=BBUF[0]^BBUF[16],this.v0h^=BBUF[1]^BBUF[17],this.v1l^=BBUF[2]^BBUF[18],this.v1h^=BBUF[3]^BBUF[19],this.v2l^=BBUF[4]^BBUF[20],this.v2h^=BBUF[5]^BBUF[21],this.v3l^=BBUF[6]^BBUF[22],this.v3h^=BBUF[7]^BBUF[23],this.v4l^=BBUF[8]^BBUF[24],this.v4h^=BBUF[9]^BBUF[25],this.v5l^=BBUF[10]^BBUF[26],this.v5h^=BBUF[11]^BBUF[27],this.v6l^=BBUF[12]^BBUF[28],this.v6h^=BBUF[13]^BBUF[29],this.v7l^=BBUF[14]^BBUF[30],this.v7h^=BBUF[15]^BBUF[31],BBUF.fill(0)}destroy(){this.destroyed=!0,this.buffer32.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const blake2b=wrapConstructorWithOpts(t=>new BLAKE2b(t));let StructError$1=class extends TypeError{constructor(e,s){let l;const{message:d,explanation:u,...p}=e,{path:m}=e,y=m.length===0?d:`At path: ${m.join(".")} -- ${d}`;super(u??y),u!=null&&(this.cause=y),Object.assign(this,p),this.name=this.constructor.name,this.failures=()=>l??(l=[e,...s()])}};function isIterable$1(t){return isObject$1(t)&&typeof t[Symbol.iterator]=="function"}function isObject$1(t){return typeof t=="object"&&t!=null}function print$1(t){return typeof t=="symbol"?t.toString():typeof t=="string"?JSON.stringify(t):`${t}`}function shiftIterator$1(t){const{done:e,value:s}=t.next();return e?void 0:s}function toFailure$1(t,e,s,l){if(t===!0)return;t===!1?t={}:typeof t=="string"&&(t={message:t});const{path:d,branch:u}=e,{type:p}=s,{refinement:m,message:y=`Expected a value of type \`${p}\`${m?` with refinement \`${m}\``:""}, but received: \`${print$1(l)}\``}=t;return{value:l,type:p,refinement:m,key:d[d.length-1],path:d,branch:u,...t,message:y}}function*toFailures$1(t,e,s,l){isIterable$1(t)||(t=[t]);for(const d of t){const u=toFailure$1(d,e,s,l);u&&(yield u)}}function*run$1(t,e,s={}){const{path:l=[],branch:d=[t],coerce:u=!1,mask:p=!1}=s,m={path:l,branch:d};if(u&&(t=e.coercer(t,m),p&&e.type!=="type"&&isObject$1(e.schema)&&isObject$1(t)&&!Array.isArray(t)))for(const h in t)e.schema[h]===void 0&&delete t[h];let y="valid";for(const h of e.validator(t,m))h.explanation=s.message,y="not_valid",yield[h,void 0];for(let[h,v,A]of e.entries(t,m)){const w=run$1(v,A,{path:h===void 0?l:[...l,h],branch:h===void 0?d:[...d,v],coerce:u,mask:p,message:s.message});for(const I of w)I[0]?(y=I[0].refinement!=null?"not_refined":"not_valid",yield[I[0],void 0]):u&&(v=I[1],h===void 0?t=v:t instanceof Map?t.set(h,v):t instanceof Set?t.add(v):isObject$1(t)&&(v!==void 0||h in t)&&(t[h]=v))}if(y!=="not_valid")for(const h of e.refiner(t,m))h.explanation=s.message,y="not_refined",yield[h,void 0];y==="valid"&&(yield[void 0,t])}let Struct$1=class{constructor(e){const{type:s,schema:l,validator:d,refiner:u,coercer:p=y=>y,entries:m=function*(){}}=e;this.type=s,this.schema=l,this.entries=m,this.coercer=p,d?this.validator=(y,h)=>{const v=d(y,h);return toFailures$1(v,h,this,y)}:this.validator=()=>[],u?this.refiner=(y,h)=>{const v=u(y,h);return toFailures$1(v,h,this,y)}:this.refiner=()=>[]}assert(e,s){return assert$2(e,this,s)}create(e,s){return create$2(e,this,s)}is(e){return is$1(e,this)}mask(e,s){return mask$1(e,this,s)}validate(e,s={}){return validate$2(e,this,s)}};function assert$2(t,e,s){const l=validate$2(t,e,{message:s});if(l[0])throw l[0]}function create$2(t,e,s){const l=validate$2(t,e,{coerce:!0,message:s});if(l[0])throw l[0];return l[1]}function mask$1(t,e,s){const l=validate$2(t,e,{coerce:!0,mask:!0,message:s});if(l[0])throw l[0];return l[1]}function is$1(t,e){return!validate$2(t,e)[0]}function validate$2(t,e,s={}){const l=run$1(t,e,s),d=shiftIterator$1(l);return d[0]?[new StructError$1(d[0],function*(){for(const p of l)p[0]&&(yield p[0])}),void 0]:[void 0,d[1]]}function assign$1(...t){const e=t[0].type==="type",s=t.map(d=>d.schema),l=Object.assign({},...s);return e?type$1(l):object(l)}function define$1(t,e){return new Struct$1({type:t,schema:null,validator:e})}function any$1(){return define$1("any",()=>!0)}function array$1(t){return new Struct$1({type:"array",schema:t,*entries(e){if(t&&Array.isArray(e))for(const[s,l]of e.entries())yield[s,l,t]},coercer(e){return Array.isArray(e)?e.slice():e},validator(e){return Array.isArray(e)||`Expected an array value, but received: ${print$1(e)}`}})}function boolean$1(){return define$1("boolean",t=>typeof t=="boolean")}function integer(){return define$1("integer",t=>typeof t=="number"&&!isNaN(t)&&Number.isInteger(t)||`Expected an integer, but received: ${print$1(t)}`)}function literal$1(t){const e=print$1(t),s=typeof t;return new Struct$1({type:"literal",schema:s==="string"||s==="number"||s==="boolean"?t:null,validator(l){return l===t||`Expected the literal \`${e}\`, but received: ${print$1(l)}`}})}function never(){return define$1("never",()=>!1)}function nullable$1(t){return new Struct$1({...t,validator:(e,s)=>e===null||t.validator(e,s),refiner:(e,s)=>e===null||t.refiner(e,s)})}function number$1(){return define$1("number",t=>typeof t=="number"&&!isNaN(t)||`Expected a number, but received: ${print$1(t)}`)}function object(t){const e=t?Object.keys(t):[],s=never();return new Struct$1({type:"object",schema:t||null,*entries(l){if(t&&isObject$1(l)){const d=new Set(Object.keys(l));for(const u of e)d.delete(u),yield[u,l[u],t[u]];for(const u of d)yield[u,l[u],s]}},validator(l){return isObject$1(l)||`Expected an object, but received: ${print$1(l)}`},coercer(l){return isObject$1(l)?{...l}:l}})}function optional$1(t){return new Struct$1({...t,validator:(e,s)=>e===void 0||t.validator(e,s),refiner:(e,s)=>e===void 0||t.refiner(e,s)})}function record(t,e){return new Struct$1({type:"record",schema:null,*entries(s){if(isObject$1(s))for(const l in s){const d=s[l];yield[l,l,t],yield[l,d,e]}},validator(s){return isObject$1(s)||`Expected an object, but received: ${print$1(s)}`}})}function string$1(){return define$1("string",t=>typeof t=="string"||`Expected a string, but received: ${print$1(t)}`)}function tuple(t){const e=never();return new Struct$1({type:"tuple",schema:null,*entries(s){if(Array.isArray(s)){const l=Math.max(t.length,s.length);for(let d=0;d<l;d++)yield[d,s[d],t[d]||e]}},validator(s){return Array.isArray(s)||`Expected an array, but received: ${print$1(s)}`}})}function type$1(t){const e=Object.keys(t);return new Struct$1({type:"type",schema:t,*entries(s){if(isObject$1(s))for(const l of e)yield[l,s[l],t[l]]},validator(s){return isObject$1(s)||`Expected an object, but received: ${print$1(s)}`},coercer(s){return isObject$1(s)?{...s}:s}})}function union$2(t){const e=t.map(s=>s.type).join(" | ");return new Struct$1({type:"union",schema:null,coercer(s){for(const l of t){const[d,u]=l.validate(s,{coerce:!0});if(!d)return u}return s},validator(s,l){const d=[];for(const u of t){const[...p]=run$1(s,u,l),[m]=p;if(m[0])for(const[y]of p)y&&d.push(y);else return[]}return[`Expected the value to satisfy a union of \`${e}\`, but received: ${print$1(s)}`,...d]}})}var index_browser={},websocket_browser={},eventemitter3$1={exports:{}};(function(t){var e=Object.prototype.hasOwnProperty,s="~";function l(){}Object.create&&(l.prototype=Object.create(null),new l().__proto__||(s=!1));function d(y,h,v){this.fn=y,this.context=h,this.once=v||!1}function u(y,h,v,A,w){if(typeof v!="function")throw new TypeError("The listener must be a function");var I=new d(v,A||y,w),k=s?s+h:h;return y._events[k]?y._events[k].fn?y._events[k]=[y._events[k],I]:y._events[k].push(I):(y._events[k]=I,y._eventsCount++),y}function p(y,h){--y._eventsCount===0?y._events=new l:delete y._events[h]}function m(){this._events=new l,this._eventsCount=0}m.prototype.eventNames=function(){var h=[],v,A;if(this._eventsCount===0)return h;for(A in v=this._events)e.call(v,A)&&h.push(s?A.slice(1):A);return Object.getOwnPropertySymbols?h.concat(Object.getOwnPropertySymbols(v)):h},m.prototype.listeners=function(h){var v=s?s+h:h,A=this._events[v];if(!A)return[];if(A.fn)return[A.fn];for(var w=0,I=A.length,k=new Array(I);w<I;w++)k[w]=A[w].fn;return k},m.prototype.listenerCount=function(h){var v=s?s+h:h,A=this._events[v];return A?A.fn?1:A.length:0},m.prototype.emit=function(h,v,A,w,I,k){var $=s?s+h:h;if(!this._events[$])return!1;var P=this._events[$],z=arguments.length,U,F;if(P.fn){switch(P.once&&this.removeListener(h,P.fn,void 0,!0),z){case 1:return P.fn.call(P.context),!0;case 2:return P.fn.call(P.context,v),!0;case 3:return P.fn.call(P.context,v,A),!0;case 4:return P.fn.call(P.context,v,A,w),!0;case 5:return P.fn.call(P.context,v,A,w,I),!0;case 6:return P.fn.call(P.context,v,A,w,I,k),!0}for(F=1,U=new Array(z-1);F<z;F++)U[F-1]=arguments[F];P.fn.apply(P.context,U)}else{var q=P.length,V;for(F=0;F<q;F++)switch(P[F].once&&this.removeListener(h,P[F].fn,void 0,!0),z){case 1:P[F].fn.call(P[F].context);break;case 2:P[F].fn.call(P[F].context,v);break;case 3:P[F].fn.call(P[F].context,v,A);break;case 4:P[F].fn.call(P[F].context,v,A,w);break;default:if(!U)for(V=1,U=new Array(z-1);V<z;V++)U[V-1]=arguments[V];P[F].fn.apply(P[F].context,U)}}return!0},m.prototype.on=function(h,v,A){return u(this,h,v,A,!1)},m.prototype.once=function(h,v,A){return u(this,h,v,A,!0)},m.prototype.removeListener=function(h,v,A,w){var I=s?s+h:h;if(!this._events[I])return this;if(!v)return p(this,I),this;var k=this._events[I];if(k.fn)k.fn===v&&(!w||k.once)&&(!A||k.context===A)&&p(this,I);else{for(var $=0,P=[],z=k.length;$<z;$++)(k[$].fn!==v||w&&!k[$].once||A&&k[$].context!==A)&&P.push(k[$]);P.length?this._events[I]=P.length===1?P[0]:P:p(this,I)}return this},m.prototype.removeAllListeners=function(h){var v;return h?(v=s?s+h:h,this._events[v]&&p(this,v)):(this._events=new l,this._eventsCount=0),this},m.prototype.off=m.prototype.removeListener,m.prototype.addListener=m.prototype.on,m.prefixed=s,m.EventEmitter=m,t.exports=m})(eventemitter3$1);var eventemitter3Exports$1=eventemitter3$1.exports;Object.defineProperty(websocket_browser,"__esModule",{value:!0});const eventemitter3_1$1=eventemitter3Exports$1;class WebSocketBrowserImpl extends eventemitter3_1$1.EventEmitter{constructor(s,l,d){super();Ae(this,"socket");this.socket=new window.WebSocket(s,d),this.socket.onopen=()=>this.emit("open"),this.socket.onmessage=u=>this.emit("message",u.data),this.socket.onerror=u=>this.emit("error",u),this.socket.onclose=u=>{this.emit("close",u.code,u.reason)}}send(s,l,d){const u=d||l;try{this.socket.send(s),u()}catch(p){u(p)}}close(s,l){this.socket.close(s,l)}addEventListener(s,l,d){this.socket.addEventListener(s,l,d)}}function default_1$d(t,e){return new WebSocketBrowserImpl(t,e)}websocket_browser.default=default_1$d;var client={},utils$1={};Object.defineProperty(utils$1,"__esModule",{value:!0});utils$1.createError=utils$1.DefaultDataPack=void 0;const errors$1=new Map([[-32e3,"Event not provided"],[-32600,"Invalid Request"],[-32601,"Method not found"],[-32602,"Invalid params"],[-32603,"Internal error"],[-32604,"Params not found"],[-32605,"Method forbidden"],[-32606,"Event forbidden"],[-32700,"Parse error"]]);class DefaultDataPack{encode(e){return JSON.stringify(e)}decode(e){return JSON.parse(e)}}utils$1.DefaultDataPack=DefaultDataPack;function createError(t,e){const s={code:t,message:errors$1.get(t)||"Internal Server Error"};return e&&(s.data=e),s}utils$1.createError=createError;Object.defineProperty(client,"__esModule",{value:!0});const eventemitter3_1=eventemitter3Exports$1,utils_cjs_1=utils$1;class CommonClient extends eventemitter3_1.EventEmitter{constructor(s,l="ws://localhost:8080",{autoconnect:d=!0,reconnect:u=!0,reconnect_interval:p=1e3,max_reconnects:m=5,...y}={},h,v){super();Ae(this,"address");Ae(this,"rpc_id");Ae(this,"queue");Ae(this,"options");Ae(this,"autoconnect");Ae(this,"ready");Ae(this,"reconnect");Ae(this,"reconnect_timer_id");Ae(this,"reconnect_interval");Ae(this,"max_reconnects");Ae(this,"rest_options");Ae(this,"current_reconnects");Ae(this,"generate_request_id");Ae(this,"socket");Ae(this,"webSocketFactory");Ae(this,"dataPack");this.webSocketFactory=s,this.queue={},this.rpc_id=0,this.address=l,this.autoconnect=d,this.ready=!1,this.reconnect=u,this.reconnect_timer_id=void 0,this.reconnect_interval=p,this.max_reconnects=m,this.rest_options=y,this.current_reconnects=0,this.generate_request_id=h||(()=>++this.rpc_id),v?this.dataPack=v:this.dataPack=new utils_cjs_1.DefaultDataPack,this.autoconnect&&this._connect(this.address,{autoconnect:this.autoconnect,reconnect:this.reconnect,reconnect_interval:this.reconnect_interval,max_reconnects:this.max_reconnects,...this.rest_options})}connect(){this.socket||this._connect(this.address,{autoconnect:this.autoconnect,reconnect:this.reconnect,reconnect_interval:this.reconnect_interval,max_reconnects:this.max_reconnects,...this.rest_options})}call(s,l,d,u){return!u&&typeof d=="object"&&(u=d,d=null),new Promise((p,m)=>{if(!this.ready)return m(new Error("socket not ready"));const y=this.generate_request_id(s,l),h={jsonrpc:"2.0",method:s,params:l||void 0,id:y};this.socket.send(this.dataPack.encode(h),u,v=>{if(v)return m(v);this.queue[y]={promise:[p,m]},d&&(this.queue[y].timeout=setTimeout(()=>{delete this.queue[y],m(new Error("reply timeout"))},d))})})}async login(s){const l=await this.call("rpc.login",s);if(!l)throw new Error("authentication failed");return l}async listMethods(){return await this.call("__listMethods")}notify(s,l){return new Promise((d,u)=>{if(!this.ready)return u(new Error("socket not ready"));const p={jsonrpc:"2.0",method:s,params:l};this.socket.send(this.dataPack.encode(p),m=>{if(m)return u(m);d()})})}async subscribe(s){typeof s=="string"&&(s=[s]);const l=await this.call("rpc.on",s);if(typeof s=="string"&&l[s]!=="ok")throw new Error("Failed subscribing to an event '"+s+"' with: "+l[s]);return l}async unsubscribe(s){typeof s=="string"&&(s=[s]);const l=await this.call("rpc.off",s);if(typeof s=="string"&&l[s]!=="ok")throw new Error("Failed unsubscribing from an event with: "+l);return l}close(s,l){this.socket.close(s||1e3,l)}setAutoReconnect(s){this.reconnect=s}setReconnectInterval(s){this.reconnect_interval=s}setMaxReconnects(s){this.max_reconnects=s}_connect(s,l){clearTimeout(this.reconnect_timer_id),this.socket=this.webSocketFactory(s,l),this.socket.addEventListener("open",()=>{this.ready=!0,this.emit("open"),this.current_reconnects=0}),this.socket.addEventListener("message",({data:d})=>{d instanceof ArrayBuffer&&(d=dist$2.Buffer.from(d).toString());try{d=this.dataPack.decode(d)}catch{return}if(d.notification&&this.listeners(d.notification).length){if(!Object.keys(d.params).length)return this.emit(d.notification);const u=[d.notification];if(d.params.constructor===Object)u.push(d.params);else for(let p=0;p<d.params.length;p++)u.push(d.params[p]);return Promise.resolve().then(()=>{this.emit.apply(this,u)})}if(!this.queue[d.id])return d.method?Promise.resolve().then(()=>{this.emit(d.method,d==null?void 0:d.params)}):void 0;"error"in d=="result"in d&&this.queue[d.id].promise[1](new Error('Server response malformed. Response must include either "result" or "error", but not both.')),this.queue[d.id].timeout&&clearTimeout(this.queue[d.id].timeout),d.error?this.queue[d.id].promise[1](d.error):this.queue[d.id].promise[0](d.result),delete this.queue[d.id]}),this.socket.addEventListener("error",d=>this.emit("error",d)),this.socket.addEventListener("close",({code:d,reason:u})=>{this.ready&&setTimeout(()=>this.emit("close",d,u),0),this.ready=!1,this.socket=void 0,d!==1e3&&(this.current_reconnects++,this.reconnect&&(this.max_reconnects>this.current_reconnects||this.max_reconnects===0)&&(this.reconnect_timer_id=setTimeout(()=>this._connect(s,l),this.reconnect_interval)))})}}client.default=CommonClient;var __importDefault=commonjsGlobal$1&&commonjsGlobal$1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(index_browser,"__esModule",{value:!0});var Client_1=index_browser.Client=void 0;const websocket_browser_cjs_1=__importDefault(websocket_browser),client_cjs_1=__importDefault(client);class Client extends client_cjs_1.default{constructor(e="ws://localhost:8080",{autoconnect:s=!0,reconnect:l=!0,reconnect_interval:d=1e3,max_reconnects:u=5}={},p){super(websocket_browser_cjs_1.default,e,{autoconnect:s,reconnect:l,reconnect_interval:d,max_reconnects:u},p)}}Client_1=index_browser.Client=Client;function isValid(t){return/^\d+\.\d+\.\d+$/.test(t)}function parse(t){if(!isValid(t))throw new Error("Invalid semver version: "+t);const[e,s,l]=t.split(".").map(d=>parseInt(d,10));return{major:e,minor:s,patch:l}}function lt(t,e){const s=parse(t),l=parse(e);return s.major!==l.major?s.major<l.major:s.minor!==l.minor?s.minor<l.minor:s.patch!==l.patch?s.patch<l.patch:!1}function lte(t,e){const s=parse(t),l=parse(e);return s.major!==l.major?s.major<=l.major:s.minor!==l.minor?s.minor<=l.minor:s.patch!==l.patch?s.patch<=l.patch:!0}function gt(t,e){const s=parse(t),l=parse(e);return s.major!==l.major?s.major>l.major:s.minor!==l.minor?s.minor>l.minor:s.patch!==l.patch?s.patch>l.patch:!1}function gte(t,e){const s=parse(t),l=parse(e);return s.major!==l.major?s.major>=l.major:s.minor!==l.minor?s.minor>=l.minor:s.patch!==l.patch?s.patch>=l.patch:!0}function eq(t,e){return parse(t),parse(e),t===e}var femver={isValid,parse,lt,lte,gt,gte,eq},__accessCheck=(t,e,s)=>{if(!e.has(t))throw TypeError("Cannot "+s)},__privateGet=(t,e,s)=>(__accessCheck(t,e,"read from private field"),s?s.call(t):e.get(t)),__privateAdd=(t,e,s)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,s)},__privateSet=(t,e,s,l)=>(__accessCheck(t,e,"write to private field"),e.set(t,s),s),__privateMethod=(t,e,s)=>(__accessCheck(t,e,"access private method"),s),TransactionDigest=string$1(),TransactionEffectsDigest=string$1(),TransactionEventDigest=string$1(),ObjectId=string$1(),SuiAddress=string$1(),SequenceNumber=string$1(),ObjectOwner=union$2([object({AddressOwner:SuiAddress}),object({ObjectOwner:SuiAddress}),object({Shared:object({initial_shared_version:number$1()})}),literal$1("Immutable")]),SuiJsonValue=define$1("SuiJsonValue",()=>!0),TX_DIGEST_LENGTH=32;function isValidTransactionDigest(t){try{return fromB58(t).length===TX_DIGEST_LENGTH}catch{return!1}}var SUI_ADDRESS_LENGTH=32;function isValidSuiAddress(t){return isHex(t)&&getHexByteLength(t)===SUI_ADDRESS_LENGTH}function isValidSuiObjectId(t){return isValidSuiAddress(t)}function normalizeSuiAddress(t,e=!1){let s=t.toLowerCase();return!e&&s.startsWith("0x")&&(s=s.slice(2)),`0x${s.padStart(SUI_ADDRESS_LENGTH*2,"0")}`}function normalizeSuiObjectId(t,e=!1){return normalizeSuiAddress(t,e)}function isHex(t){return/^(0x|0X)?[a-fA-F0-9]+$/.test(t)&&t.length%2===0}function getHexByteLength(t){return/^(0x|0X)/.test(t)?(t.length-2)/2:t.length/2}union$2([string$1(),literal$1("package")]);var SuiObjectRef=object({digest:TransactionDigest,objectId:string$1(),version:union$2([number$1(),string$1()])}),SuiGasData=object({payment:array$1(SuiObjectRef),owner:string$1(),price:string$1(),budget:string$1()}),SuiObjectInfo=assign$1(SuiObjectRef,object({type:string$1(),owner:ObjectOwner,previousTransaction:TransactionDigest})),ObjectContentFields=record(string$1(),any$1()),MovePackageContent=record(string$1(),string$1()),SuiMoveObject=object({type:string$1(),fields:ObjectContentFields,hasPublicTransfer:boolean$1()}),SuiMovePackage=object({disassembled:MovePackageContent}),SuiParsedData=union$2([assign$1(SuiMoveObject,object({dataType:literal$1("moveObject")})),assign$1(SuiMovePackage,object({dataType:literal$1("package")}))]);object({type:string$1(),hasPublicTransfer:boolean$1(),version:SequenceNumber,bcsBytes:array$1(number$1())});var SuiRawMovePackage=object({id:ObjectId,moduleMap:record(string$1(),string$1())}),SuiRawData=union$2([assign$1(SuiMoveObject,object({dataType:literal$1("moveObject")})),assign$1(SuiRawMovePackage,object({dataType:literal$1("package")}))]);BigInt(1e9);var ObjectDigest=string$1(),SuiObjectResponseError=object({code:string$1(),error:optional$1(string$1()),object_id:optional$1(ObjectId),version:optional$1(SequenceNumber),digest:optional$1(ObjectDigest)}),DisplayFieldsResponse=object({data:nullable$1(record(string$1(),string$1())),error:nullable$1(SuiObjectResponseError)}),DisplayFieldsBackwardCompatibleResponse=union$2([DisplayFieldsResponse,optional$1(record(string$1(),string$1()))]),SuiObjectData=object({objectId:ObjectId,version:SequenceNumber,digest:ObjectDigest,type:optional$1(string$1()),content:optional$1(SuiParsedData),bcs:optional$1(SuiRawData),owner:optional$1(ObjectOwner),previousTransaction:optional$1(TransactionDigest),storageRebate:optional$1(string$1()),display:optional$1(DisplayFieldsBackwardCompatibleResponse)});object({showType:optional$1(boolean$1()),showContent:optional$1(boolean$1()),showBcs:optional$1(boolean$1()),showOwner:optional$1(boolean$1()),showPreviousTransaction:optional$1(boolean$1()),showStorageRebate:optional$1(boolean$1()),showDisplay:optional$1(boolean$1())});union$2([literal$1("Exists"),literal$1("notExists"),literal$1("Deleted")]);array$1(SuiObjectInfo);var SuiObjectResponse=object({data:optional$1(SuiObjectData),error:optional$1(SuiObjectResponseError)});function getSuiObjectData(t){return t.data}function getObjectDeletedResponse(t){if(t.error&&"object_id"in t.error&&"version"in t.error&&"digest"in t.error){const e=t.error;return{objectId:e.object_id,version:e.version,digest:e.digest}}}function getObjectReference(t){if("reference"in t)return t.reference;const e=getSuiObjectData(t);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:getObjectDeletedResponse(t)}function getObjectOwner(t){var e;return is$1(t,ObjectOwner)?t:(e=getSuiObjectData(t))==null?void 0:e.owner}function getSharedObjectInitialVersion(t){const e=getObjectOwner(t);if(typeof e=="object"&&"Shared"in e)return e.Shared.initial_shared_version}var CheckpointedObjectId=object({objectId:ObjectId,atCheckpoint:optional$1(number$1())}),PaginatedObjectsResponse=object({data:array$1(SuiObjectResponse),nextCursor:union$2([nullable$1(ObjectId),nullable$1(CheckpointedObjectId)]),hasNextPage:boolean$1()}),EventId=object({txDigest:TransactionDigest,eventSeq:SequenceNumber}),SuiEvent=object({id:EventId,packageId:ObjectId,transactionModule:string$1(),sender:SuiAddress,type:string$1(),parsedJson:optional$1(record(string$1(),any$1())),bcs:optional$1(string$1()),timestampMs:optional$1(string$1())}),PaginatedEvents=object({data:array$1(SuiEvent),nextCursor:nullable$1(EventId),hasNextPage:boolean$1()}),SubscriptionId=number$1(),SubscriptionEvent=object({subscription:SubscriptionId,result:SuiEvent}),EpochId=string$1(),SuiChangeEpoch=object({epoch:EpochId,storage_charge:string$1(),computation_charge:string$1(),storage_rebate:string$1(),epoch_start_timestamp_ms:optional$1(string$1())}),SuiConsensusCommitPrologue=object({epoch:EpochId,round:string$1(),commit_timestamp_ms:string$1()}),Genesis=object({objects:array$1(ObjectId)}),SuiArgument=union$2([literal$1("GasCoin"),object({Input:number$1()}),object({Result:number$1()}),object({NestedResult:tuple([number$1(),number$1()])})]),MoveCallSuiTransaction=object({arguments:optional$1(array$1(SuiArgument)),type_arguments:optional$1(array$1(string$1())),package:ObjectId,module:string$1(),function:string$1()}),SuiTransaction=union$2([object({MoveCall:MoveCallSuiTransaction}),object({TransferObjects:tuple([array$1(SuiArgument),SuiArgument])}),object({SplitCoins:tuple([SuiArgument,array$1(SuiArgument)])}),object({MergeCoins:tuple([SuiArgument,array$1(SuiArgument)])}),object({Publish:tuple([SuiMovePackage,array$1(ObjectId)])}),object({Upgrade:tuple([SuiMovePackage,array$1(ObjectId),ObjectId,SuiArgument])}),object({MakeMoveVec:tuple([nullable$1(string$1()),array$1(SuiArgument)])})]),SuiCallArg=union$2([object({type:literal$1("pure"),valueType:optional$1(string$1()),value:SuiJsonValue}),object({type:literal$1("object"),objectType:literal$1("immOrOwnedObject"),objectId:ObjectId,version:SequenceNumber,digest:ObjectDigest}),object({type:literal$1("object"),objectType:literal$1("sharedObject"),objectId:ObjectId,initialSharedVersion:SequenceNumber,mutable:boolean$1()})]),ProgrammableTransaction=object({transactions:array$1(SuiTransaction),inputs:array$1(SuiCallArg)}),SuiTransactionBlockKind=union$2([assign$1(SuiChangeEpoch,object({kind:literal$1("ChangeEpoch")})),assign$1(SuiConsensusCommitPrologue,object({kind:literal$1("ConsensusCommitPrologue")})),assign$1(Genesis,object({kind:literal$1("Genesis")})),assign$1(ProgrammableTransaction,object({kind:literal$1("ProgrammableTransaction")}))]),SuiTransactionBlockData=object({messageVersion:literal$1("v1"),transaction:SuiTransactionBlockKind,sender:SuiAddress,gasData:SuiGasData}),AuthoritySignature=string$1(),GenericAuthoritySignature=union$2([AuthoritySignature,array$1(AuthoritySignature)]);object({epoch:EpochId,signature:GenericAuthoritySignature,signers_map:array$1(number$1())});var GasCostSummary=object({computationCost:string$1(),storageCost:string$1(),storageRebate:string$1(),nonRefundableStorageFee:string$1()}),ExecutionStatusType=union$2([literal$1("success"),literal$1("failure")]),ExecutionStatus=object({status:ExecutionStatusType,error:optional$1(string$1())}),OwnedObjectRef=object({owner:ObjectOwner,reference:SuiObjectRef}),TransactionEffectsModifiedAtVersions=object({objectId:ObjectId,sequenceNumber:SequenceNumber}),TransactionEffects=object({messageVersion:literal$1("v1"),status:ExecutionStatus,executedEpoch:EpochId,modifiedAtVersions:optional$1(array$1(TransactionEffectsModifiedAtVersions)),gasUsed:GasCostSummary,sharedObjects:optional$1(array$1(SuiObjectRef)),transactionDigest:TransactionDigest,created:optional$1(array$1(OwnedObjectRef)),mutated:optional$1(array$1(OwnedObjectRef)),unwrapped:optional$1(array$1(OwnedObjectRef)),deleted:optional$1(array$1(SuiObjectRef)),unwrapped_then_deleted:optional$1(array$1(SuiObjectRef)),wrapped:optional$1(array$1(SuiObjectRef)),gasObject:OwnedObjectRef,eventsDigest:optional$1(TransactionEventDigest),dependencies:optional$1(array$1(TransactionDigest))}),TransactionEvents=array$1(SuiEvent),ReturnValueType=tuple([array$1(number$1()),string$1()]),MutableReferenceOutputType=tuple([SuiArgument,array$1(number$1()),string$1()]),ExecutionResultType=object({mutableReferenceOutputs:optional$1(array$1(MutableReferenceOutputType)),returnValues:optional$1(array$1(ReturnValueType))}),DevInspectResults=object({effects:TransactionEffects,events:TransactionEvents,results:optional$1(array$1(ExecutionResultType)),error:optional$1(string$1())}),AuthorityName=string$1(),SuiTransactionBlock=object({data:SuiTransactionBlockData,txSignatures:array$1(string$1())}),SuiObjectChangePublished=object({type:literal$1("published"),packageId:ObjectId,version:SequenceNumber,digest:ObjectDigest,modules:array$1(string$1())}),SuiObjectChangeTransferred=object({type:literal$1("transferred"),sender:SuiAddress,recipient:ObjectOwner,objectType:string$1(),objectId:ObjectId,version:SequenceNumber,digest:ObjectDigest}),SuiObjectChangeMutated=object({type:literal$1("mutated"),sender:SuiAddress,owner:ObjectOwner,objectType:string$1(),objectId:ObjectId,version:SequenceNumber,previousVersion:SequenceNumber,digest:ObjectDigest}),SuiObjectChangeDeleted=object({type:literal$1("deleted"),sender:SuiAddress,objectType:string$1(),objectId:ObjectId,version:SequenceNumber}),SuiObjectChangeWrapped=object({type:literal$1("wrapped"),sender:SuiAddress,objectType:string$1(),objectId:ObjectId,version:SequenceNumber}),SuiObjectChangeCreated=object({type:literal$1("created"),sender:SuiAddress,owner:ObjectOwner,objectType:string$1(),objectId:ObjectId,version:SequenceNumber,digest:ObjectDigest}),SuiObjectChange=union$2([SuiObjectChangePublished,SuiObjectChangeTransferred,SuiObjectChangeMutated,SuiObjectChangeDeleted,SuiObjectChangeWrapped,SuiObjectChangeCreated]),BalanceChange=object({owner:ObjectOwner,coinType:string$1(),amount:string$1()}),SuiTransactionBlockResponse=object({digest:TransactionDigest,transaction:optional$1(SuiTransactionBlock),effects:optional$1(TransactionEffects),events:optional$1(TransactionEvents),timestampMs:optional$1(string$1()),checkpoint:optional$1(string$1()),confirmedLocalExecution:optional$1(boolean$1()),objectChanges:optional$1(array$1(SuiObjectChange)),balanceChanges:optional$1(array$1(BalanceChange)),errors:optional$1(array$1(string$1()))});object({showInput:optional$1(boolean$1()),showEffects:optional$1(boolean$1()),showEvents:optional$1(boolean$1()),showObjectChanges:optional$1(boolean$1()),showBalanceChanges:optional$1(boolean$1())});var PaginatedTransactionResponse=object({data:array$1(SuiTransactionBlockResponse),nextCursor:nullable$1(TransactionDigest),hasNextPage:boolean$1()}),DryRunTransactionBlockResponse=object({effects:TransactionEffects,events:TransactionEvents,objectChanges:array$1(SuiObjectChange),balanceChanges:array$1(BalanceChange),input:optional$1(SuiTransactionBlockData)}),SUI_FRAMEWORK_ADDRESS="0x2",MOVE_STDLIB_ADDRESS="0x1",OBJECT_MODULE_NAME="object",ID_STRUCT_NAME="ID",SUI_TYPE_ARG=`${SUI_FRAMEWORK_ADDRESS}::sui::SUI`;normalizeSuiObjectId("0x6");var CoinMetadataStruct=object({decimals:number$1(),name:string$1(),symbol:string$1(),description:string$1(),iconUrl:nullable$1(string$1()),id:nullable$1(ObjectId)}),VECTOR="vector",TransactionDataV1={kind:"TransactionKind",sender:BCS.ADDRESS,gasData:"GasData",expiration:"TransactionExpiration"},BCS_SPEC={enums:{"Option<T>":{None:null,Some:"T"},ObjectArg:{ImmOrOwned:"SuiObjectRef",Shared:"SharedObjectRef"},CallArg:{Pure:[VECTOR,BCS.U8],Object:"ObjectArg",ObjVec:[VECTOR,"ObjectArg"]},TypeTag:{bool:null,u8:null,u64:null,u128:null,address:null,signer:null,vector:"TypeTag",struct:"StructTag",u16:null,u32:null,u256:null},TransactionKind:{ProgrammableTransaction:"ProgrammableTransaction",ChangeEpoch:null,Genesis:null,ConsensusCommitPrologue:null},TransactionExpiration:{None:null,Epoch:BCS.U64},TransactionData:{V1:"TransactionDataV1"}},structs:{SuiObjectRef:{objectId:BCS.ADDRESS,version:BCS.U64,digest:"ObjectDigest"},SharedObjectRef:{objectId:BCS.ADDRESS,initialSharedVersion:BCS.U64,mutable:BCS.BOOL},StructTag:{address:BCS.ADDRESS,module:BCS.STRING,name:BCS.STRING,typeParams:[VECTOR,"TypeTag"]},GasData:{payment:[VECTOR,"SuiObjectRef"],owner:BCS.ADDRESS,price:BCS.U64,budget:BCS.U64},SenderSignedData:{data:"TransactionData",txSignatures:[VECTOR,[VECTOR,BCS.U8]]},TransactionDataV1},aliases:{ObjectDigest:BCS.BASE58}},bcs=new BCS({...getSuiMoveConfig(),types:BCS_SPEC});bcs.registerType("utf8string",(t,e)=>{const s=Array.from(new TextEncoder().encode(e));return t.writeVec(s,(l,d)=>l.write8(d))},t=>{let e=t.readVec(s=>s.read8());return new TextDecoder().decode(new Uint8Array(e))});var FaucetCoinInfo=object({amount:number$1(),id:ObjectId,transferTxDigest:TransactionDigest});object({transferredGasObjects:array$1(FaucetCoinInfo),error:nullable$1(string$1())});var SuiMoveFunctionArgType=union$2([string$1(),object({Object:string$1()})]),SuiMoveFunctionArgTypes=array$1(SuiMoveFunctionArgType),SuiMoveModuleId=object({address:string$1(),name:string$1()}),SuiMoveVisibility=union$2([literal$1("Private"),literal$1("Public"),literal$1("Friend")]),SuiMoveAbilitySet=object({abilities:array$1(string$1())}),SuiMoveStructTypeParameter=object({constraints:SuiMoveAbilitySet,isPhantom:boolean$1()}),SuiMoveNormalizedTypeParameterType=object({TypeParameter:number$1()});function isSuiMoveNormalizedType(t){if(!t)return!1;if(typeof t=="string"||is$1(t,SuiMoveNormalizedTypeParameterType)||isSuiMoveNormalizedStructType(t))return!0;if(typeof t!="object")return!1;const e=t;return!!(is$1(e.Reference,SuiMoveNormalizedType)||is$1(e.MutableReference,SuiMoveNormalizedType)||is$1(e.Vector,SuiMoveNormalizedType))}var SuiMoveNormalizedType=define$1("SuiMoveNormalizedType",isSuiMoveNormalizedType);function isSuiMoveNormalizedStructType(t){if(!t||typeof t!="object")return!1;const e=t;if(!e.Struct||typeof e.Struct!="object")return!1;const s=e.Struct;return!(typeof s.address!="string"||typeof s.module!="string"||typeof s.name!="string"||!Array.isArray(s.typeArguments)||!s.typeArguments.every(l=>isSuiMoveNormalizedType(l)))}define$1("SuiMoveNormalizedStructType",isSuiMoveNormalizedStructType);var SuiMoveNormalizedFunction=object({visibility:SuiMoveVisibility,isEntry:boolean$1(),typeParameters:array$1(SuiMoveAbilitySet),parameters:array$1(SuiMoveNormalizedType),return:array$1(SuiMoveNormalizedType)}),SuiMoveNormalizedField=object({name:string$1(),type:SuiMoveNormalizedType}),SuiMoveNormalizedStruct=object({abilities:SuiMoveAbilitySet,typeParameters:array$1(SuiMoveStructTypeParameter),fields:array$1(SuiMoveNormalizedField)}),SuiMoveNormalizedModule=object({fileFormatVersion:number$1(),address:string$1(),name:string$1(),friends:array$1(SuiMoveModuleId),structs:record(string$1(),SuiMoveNormalizedStruct),exposedFunctions:record(string$1(),SuiMoveNormalizedFunction)}),SuiMoveNormalizedModules=record(string$1(),SuiMoveNormalizedModule);function extractMutableReference(t){return typeof t=="object"&&"MutableReference"in t?t.MutableReference:void 0}function extractReference(t){return typeof t=="object"&&"Reference"in t?t.Reference:void 0}function extractStructTag(t){if(typeof t=="object"&&"Struct"in t)return t;const e=extractReference(t),s=extractMutableReference(t);if(typeof e=="object"&&"Struct"in e)return e;if(typeof s=="object"&&"Struct"in s)return s}object({value:number$1()});var StakeObject=object({stakedSuiId:ObjectId,stakeRequestEpoch:EpochId,stakeActiveEpoch:EpochId,principal:string$1(),status:union$2([literal$1("Active"),literal$1("Pending"),literal$1("Unstaked")]),estimatedReward:optional$1(string$1())}),DelegatedStake=object({validatorAddress:SuiAddress,stakingPool:ObjectId,stakes:array$1(StakeObject)}),StakeSubsidyFields=object({balance:object({value:number$1()}),distribution_counter:number$1(),current_distribution_amount:number$1(),stake_subsidy_period_length:number$1(),stake_subsidy_decrease_rate:number$1()});object({type:string$1(),fields:StakeSubsidyFields});object({value:number$1()});var ContentsFields=object({id:string$1(),size:number$1(),head:object({vec:array$1()}),tail:object({vec:array$1()})});object({id:string$1(),size:number$1()});object({type:string$1(),fields:ContentsFields});var DelegationStakingPoolFields=object({exchangeRates:object({id:string$1(),size:number$1()}),id:string$1(),pendingStake:number$1(),pendingPoolTokenWithdraw:number$1(),pendingTotalSuiWithdraw:number$1(),poolTokenBalance:number$1(),rewardsPool:object({value:number$1()}),activationEpoch:object({vec:array$1()}),deactivationEpoch:object({vec:array$1()}),suiBalance:number$1()});object({type:string$1(),fields:DelegationStakingPoolFields});var Validators=array$1(tuple([AuthorityName,string$1()])),CommitteeInfo=object({epoch:EpochId,validators:Validators}),SuiValidatorSummary=object({suiAddress:SuiAddress,protocolPubkeyBytes:string$1(),networkPubkeyBytes:string$1(),workerPubkeyBytes:string$1(),proofOfPossessionBytes:string$1(),operationCapId:string$1(),name:string$1(),description:string$1(),imageUrl:string$1(),projectUrl:string$1(),p2pAddress:string$1(),netAddress:string$1(),primaryAddress:string$1(),workerAddress:string$1(),nextEpochProtocolPubkeyBytes:nullable$1(string$1()),nextEpochProofOfPossession:nullable$1(string$1()),nextEpochNetworkPubkeyBytes:nullable$1(string$1()),nextEpochWorkerPubkeyBytes:nullable$1(string$1()),nextEpochNetAddress:nullable$1(string$1()),nextEpochP2pAddress:nullable$1(string$1()),nextEpochPrimaryAddress:nullable$1(string$1()),nextEpochWorkerAddress:nullable$1(string$1()),votingPower:string$1(),gasPrice:string$1(),commissionRate:string$1(),nextEpochStake:string$1(),nextEpochGasPrice:string$1(),nextEpochCommissionRate:string$1(),stakingPoolId:string$1(),stakingPoolActivationEpoch:nullable$1(string$1()),stakingPoolDeactivationEpoch:nullable$1(string$1()),stakingPoolSuiBalance:string$1(),rewardsPool:string$1(),poolTokenBalance:string$1(),pendingStake:string$1(),pendingPoolTokenWithdraw:string$1(),pendingTotalSuiWithdraw:string$1(),exchangeRatesId:string$1(),exchangeRatesSize:string$1()}),SuiSystemStateSummary=object({epoch:string$1(),protocolVersion:string$1(),systemStateVersion:string$1(),storageFundTotalObjectStorageRebates:string$1(),storageFundNonRefundableBalance:string$1(),referenceGasPrice:string$1(),safeMode:boolean$1(),safeModeStorageRewards:string$1(),safeModeComputationRewards:string$1(),safeModeStorageRebates:string$1(),safeModeNonRefundableStorageFee:string$1(),epochStartTimestampMs:string$1(),epochDurationMs:string$1(),stakeSubsidyStartEpoch:string$1(),maxValidatorCount:string$1(),minValidatorJoiningStake:string$1(),validatorLowStakeThreshold:string$1(),validatorVeryLowStakeThreshold:string$1(),validatorLowStakeGracePeriod:string$1(),stakeSubsidyBalance:string$1(),stakeSubsidyDistributionCounter:string$1(),stakeSubsidyCurrentDistributionAmount:string$1(),stakeSubsidyPeriodLength:string$1(),stakeSubsidyDecreaseRate:number$1(),totalStake:string$1(),activeValidators:array$1(SuiValidatorSummary),pendingActiveValidatorsId:string$1(),pendingActiveValidatorsSize:string$1(),pendingRemovals:array$1(string$1()),stakingPoolMappingsId:string$1(),stakingPoolMappingsSize:string$1(),inactivePoolsId:string$1(),inactivePoolsSize:string$1(),validatorCandidatesId:string$1(),validatorCandidatesSize:string$1(),atRiskValidators:array$1(tuple([SuiAddress,string$1()])),validatorReportRecords:array$1(tuple([SuiAddress,array$1(SuiAddress)]))}),CoinStruct=object({coinType:string$1(),coinObjectId:ObjectId,version:string$1(),digest:TransactionDigest,balance:string$1(),lockedUntilEpoch:optional$1(nullable$1(number$1())),previousTransaction:TransactionDigest}),PaginatedCoins=object({data:array$1(CoinStruct),nextCursor:nullable$1(ObjectId),hasNextPage:boolean$1()}),CoinBalance=object({coinType:string$1(),coinObjectCount:number$1(),totalBalance:string$1(),lockedBalance:object({epochId:optional$1(number$1()),number:optional$1(number$1())})}),CoinSupply=object({value:string$1()}),EndOfEpochInfo=object({lastCheckpointId:string$1(),epochEndTimestamp:string$1(),protocolVersion:string$1(),referenceGasPrice:string$1(),totalStake:string$1(),storageFundReinvestment:string$1(),storageCharge:string$1(),storageRebate:string$1(),storageFundBalance:string$1(),stakeSubsidyAmount:string$1(),totalGasFees:string$1(),totalStakeRewardsDistributed:string$1(),leftoverStorageFundInflow:string$1()}),EpochInfo=object({epoch:string$1(),validators:array$1(SuiValidatorSummary),epochTotalTransactions:string$1(),firstCheckpointId:string$1(),epochStartTimestamp:string$1(),endOfEpochInfo:nullable$1(EndOfEpochInfo)}),EpochPage=object({data:array$1(EpochInfo),nextCursor:nullable$1(string$1()),hasNextPage:boolean$1()}),GasCostSummary2=object({computationCost:string$1(),storageCost:string$1(),storageRebate:string$1(),nonRefundableStorageFee:string$1()});string$1();var CheckpointDigest=string$1();object({digest:array$1(number$1())});var CheckpointCommitment=any$1(),ValidatorSignature=string$1(),EndOfEpochData=object({nextEpochCommittee:array$1(tuple([string$1(),string$1()])),nextEpochProtocolVersion:string$1(),epochCommitments:array$1(CheckpointCommitment)});object({transaction:TransactionDigest,effects:TransactionEffectsDigest});var Checkpoint=object({epoch:string$1(),sequenceNumber:string$1(),digest:CheckpointDigest,networkTotalTransactions:string$1(),previousDigest:optional$1(CheckpointDigest),epochRollingGasCostSummary:GasCostSummary2,timestampMs:string$1(),endOfEpochData:optional$1(EndOfEpochData),validatorSignature:optional$1(ValidatorSignature),transactions:array$1(TransactionDigest),checkpointCommitments:array$1(CheckpointCommitment)}),CheckpointPage=object({data:array$1(Checkpoint),nextCursor:nullable$1(string$1()),hasNextPage:boolean$1()}),PACKAGE_VERSION="0.32.2",TARGETED_RPC_VERSION="0.34.0",RPCError=class extends Error{constructor(t){super(t.cause?`RPC Error: ${t.cause.message}`:"Unknown RPC Error",{cause:t.cause}),this.req=t.req,this.code=t.code,this.data=t.data}},RPCValidationError=class extends Error{constructor(t){super("RPC Validation Error: The response returned from RPC server does not match the TypeScript definition. This is likely because the SDK version is not compatible with the RPC server.",{cause:t.cause}),this.req=t.req,this.result=t.result,this.message=this.toString()}toString(){let t=super.toString();return this.cause&&(t+=`
193
193
  Cause: ${this.cause}`),this.result&&(t+=`
194
- Reponse Received: ${JSON.stringify(this.result,null,2)}`),t}},FaucetRateLimitError=class extends Error{},ValidResponse=object({jsonrpc:literal$1("2.0"),id:string$1(),result:any$1()}),ErrorResponse=object({jsonrpc:literal$1("2.0"),id:string$1(),error:object({code:any$1(),message:string$1(),data:optional$1(any$1())})}),JsonRpcClient=class{constructor(t,e){this.rpcClient=new RpcClient(async(s,l)=>{const d={method:"POST",body:s,headers:{"Content-Type":"application/json","Client-Sdk-Type":"typescript","Client-Sdk-Version":PACKAGE_VERSION,"Client-Target-Api-Version":TARGETED_RPC_VERSION,...e}};try{let u=await fetch(t,d);const p=await u.text();if(u.ok)l(null,p);else{const m=u.headers.get("content-type")==="text/html";l(new Error(`${u.status} ${u.statusText}${m?"":`: ${p}`}`))}}catch(u){l(u)}},{})}async requestWithType(t,e,s){const l={method:t,args:e},d=await this.request(t,e);if(is$1(d,ErrorResponse))throw new RPCError({req:l,code:d.error.code,data:d.error.data,cause:new Error(d.error.message)});if(is$1(d,ValidResponse)){const[u]=validate$2(d.result,s);return u&&console.warn(new RPCValidationError({req:l,result:d.result,cause:u})),d.result}throw new RPCError({req:l,data:d})}async request(t,e){return new Promise((s,l)=>{this.rpcClient.request(t,e,(d,u)=>{if(d){l(d);return}s(u)})})}},DynamicFieldType=union$2([literal$1("DynamicField"),literal$1("DynamicObject")]),DynamicFieldName=object({type:string$1(),value:any$1()}),DynamicFieldInfo=object({name:DynamicFieldName,bcsName:string$1(),type:DynamicFieldType,objectType:string$1(),objectId:ObjectId,version:number$1(),digest:string$1()}),DynamicFieldPage=object({data:array$1(DynamicFieldInfo),nextCursor:nullable$1(ObjectId),hasNextPage:boolean$1()}),getWebsocketUrl=(t,e)=>{const s=new URL(t);return s.protocol=s.protocol.replace("http","ws"),s.toString()},isMinimumSubscriptionMessage=t=>t&&"subscription"in t&&typeof t.subscription=="number"&&"result"in t&&typeof t.result=="object",DEFAULT_CLIENT_OPTIONS={connectTimeout:15e3,callTimeout:3e4,reconnectInterval:3e3,maxReconnects:5},SUBSCRIBE_EVENT_METHOD="suix_subscribeEvent",UNSUBSCRIBE_EVENT_METHOD="suix_unsubscribeEvent",WebsocketClient=class{constructor(t,e=DEFAULT_CLIENT_OPTIONS){this.endpoint=t,this.options=e,this.connectionState=0,this.connectionTimeout=null,this.isSetup=!1,this.connectionPromise=null,this.eventSubscriptions=new Map,this.endpoint.startsWith("http")&&(this.endpoint=getWebsocketUrl(this.endpoint)),this.rpcClient=new Client_1(this.endpoint,{reconnect_interval:this.options.reconnectInterval,max_reconnects:this.options.maxReconnects,autoconnect:!1})}setupSocket(){this.isSetup||(this.rpcClient.on("open",()=>{this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null),this.connectionState=2,this.rpcClient.socket.on("message",this.onSocketMessage.bind(this))}),this.rpcClient.on("close",()=>{this.connectionState=0}),this.rpcClient.on("error",console.error),this.isSetup=!0)}onSocketMessage(t){const e=JSON.parse(t),s=e.params;if(e.method===SUBSCRIBE_EVENT_METHOD){if(isMinimumSubscriptionMessage(s)){const l=this.eventSubscriptions.get(s.subscription);l&&l.onMessage(s.result)}else if(is$1(s,SubscriptionEvent)){const l=this.eventSubscriptions.get(s.subscription);l&&l.onMessage(s.result)}}}async connect(){return this.connectionPromise?this.connectionPromise:this.connectionState===2?Promise.resolve():(this.setupSocket(),this.rpcClient.connect(),this.connectionState=1,this.connectionPromise=new Promise((t,e)=>{this.connectionTimeout=setTimeout(()=>e(new Error("timeout")),this.options.connectTimeout),this.rpcClient.once("open",()=>{this.refreshSubscriptions(),this.connectionPromise=null,t()}),this.rpcClient.once("error",s=>{this.connectionPromise=null,e(s)})}),this.connectionPromise)}async refreshSubscriptions(){if(this.eventSubscriptions.size!==0)try{let t=new Map;(await Promise.all(Array.from(this.eventSubscriptions.values()).map(async s=>{const l=s.onMessage,d=s.filter;return!d||!l?Promise.resolve(null):{id:await this.subscribeEvent(d,l),onMessage:l,filter:d}}))).forEach(s=>{if(s===null)return;const l=s.filter,d=s.onMessage;t.set(s.id,{filter:l,onMessage:d})}),this.eventSubscriptions=t}catch(t){throw new Error(`error refreshing event subscriptions: ${t}`)}}async subscribeEvent(t,e){try{this.connectionState!==2&&await this.connect();let s=await this.rpcClient.call(SUBSCRIBE_EVENT_METHOD,[t],this.options.callTimeout);return this.eventSubscriptions.set(s,{filter:t,onMessage:e}),s}catch(s){throw new Error(`Error subscribing to event: ${JSON.stringify(s,null,2)}, filter: ${JSON.stringify(t)}`)}}async unsubscribeEvent(t){try{this.connectionState!==2&&await this.connect();let e=await this.rpcClient.call(UNSUBSCRIBE_EVENT_METHOD,[t],this.options.callTimeout);return this.eventSubscriptions.delete(t)||e}catch(e){throw new Error(`Error unsubscribing from event: ${e}, subscription: ${t}`)}}};async function requestSuiFromFaucet(t,e,s){const l=await fetch(t,{method:"POST",body:JSON.stringify({FixedAmountRequest:{recipient:e}}),headers:{"Content-Type":"application/json",...s||{}}});if(l.status===429)throw new FaucetRateLimitError("Too many requests from this client have been sent to the faucet. Please retry later");let d;try{d=await l.json()}catch(u){throw new Error(`Encountered error when parsing response from faucet, error: ${u}, status ${l.status}, response ${l}`)}if(d.error)throw new Error(`Faucet returns error: ${d.error}`);return d}var _options,Connection=class{constructor(t){__privateAdd(this,_options,void 0),__privateSet(this,_options,t)}get fullnode(){return __privateGet(this,_options).fullnode}get websocket(){return __privateGet(this,_options).websocket||__privateGet(this,_options).fullnode}get faucet(){return __privateGet(this,_options).faucet}};_options=new WeakMap;new Connection({fullnode:"http://127.0.0.1:9000",faucet:"http://127.0.0.1:9123/gas"});var devnetConnection=new Connection({fullnode:"https://fullnode.devnet.sui.io:443/",faucet:"https://faucet.devnet.sui.io/gas"});new Connection({fullnode:"https://fullnode.testnet.sui.io:443/",faucet:"https://faucet.testnet.sui.io/gas"});function create$1(t,e){return create$2(t,e)}var TRANSACTION_TYPE=Symbol("transaction-argument-type"),option=t=>union$2([object({None:literal$1(null)}),object({Some:t})]),TransactionBlockInput=object({kind:literal$1("Input"),index:integer(),value:optional$1(any$1()),type:optional$1(union$2([literal$1("pure"),literal$1("object")]))}),TransactionArgumentTypes=[TransactionBlockInput,object({kind:literal$1("GasCoin")}),object({kind:literal$1("Result"),index:integer()}),object({kind:literal$1("NestedResult"),index:integer(),resultIndex:integer()})],TransactionArgument=union$2([...TransactionArgumentTypes]),ObjectTransactionArgument=union$2([...TransactionArgumentTypes]);ObjectTransactionArgument[TRANSACTION_TYPE]={kind:"object"};var PureTransactionArgument=t=>{const e=union$2([...TransactionArgumentTypes]);return e[TRANSACTION_TYPE]={kind:"pure",type:t},e},MoveCallTransaction=object({kind:literal$1("MoveCall"),target:define$1("target",string$1().validator),typeArguments:array$1(string$1()),arguments:array$1(TransactionArgument)}),TransferObjectsTransaction=object({kind:literal$1("TransferObjects"),objects:array$1(ObjectTransactionArgument),address:PureTransactionArgument(BCS.ADDRESS)}),SplitCoinsTransaction=object({kind:literal$1("SplitCoins"),coin:ObjectTransactionArgument,amounts:array$1(PureTransactionArgument("u64"))}),MergeCoinsTransaction=object({kind:literal$1("MergeCoins"),destination:ObjectTransactionArgument,sources:array$1(ObjectTransactionArgument)}),MakeMoveVecTransaction=object({kind:literal$1("MakeMoveVec"),type:optional$1(option(string$1())),objects:array$1(ObjectTransactionArgument)}),PublishTransaction=object({kind:literal$1("Publish"),modules:array$1(array$1(integer())),dependencies:array$1(ObjectId)}),UpgradeTransaction=object({kind:literal$1("Upgrade"),modules:array$1(array$1(integer())),dependencies:array$1(ObjectId),packageId:ObjectId,ticket:ObjectTransactionArgument}),TransactionTypes=[MoveCallTransaction,TransferObjectsTransaction,SplitCoinsTransaction,MergeCoinsTransaction,PublishTransaction,UpgradeTransaction,MakeMoveVecTransaction],TransactionType=union$2([...TransactionTypes]);function getTransactionType(t){return assert$2(t,TransactionType),TransactionTypes.find(e=>is$1(t,e))}var Transactions={MoveCall(t){return create$1({kind:"MoveCall",target:t.target,arguments:t.arguments??[],typeArguments:t.typeArguments??[]},MoveCallTransaction)},TransferObjects(t,e){return create$1({kind:"TransferObjects",objects:t,address:e},TransferObjectsTransaction)},SplitCoins(t,e){return create$1({kind:"SplitCoins",coin:t,amounts:e},SplitCoinsTransaction)},MergeCoins(t,e){return create$1({kind:"MergeCoins",destination:t,sources:e},MergeCoinsTransaction)},Publish({modules:t,dependencies:e}){return create$1({kind:"Publish",modules:t.map(s=>typeof s=="string"?Array.from(fromB64(s)):s),dependencies:e.map(s=>normalizeSuiObjectId(s))},PublishTransaction)},Upgrade({modules:t,dependencies:e,packageId:s,ticket:l}){return create$1({kind:"Upgrade",modules:t.map(d=>typeof d=="string"?Array.from(fromB64(d)):d),dependencies:e.map(d=>normalizeSuiObjectId(d)),packageId:s,ticket:l},UpgradeTransaction)},MakeMoveVec({type:t,objects:e}){return create$1({kind:"MakeMoveVec",type:t?{Some:t}:{None:null},objects:e},MakeMoveVecTransaction)}},VECTOR_REGEX=/^vector<(.+)>$/,STRUCT_REGEX=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/,TypeTagSerializer=class{static parseFromStr(t,e=!1){if(t==="address")return{address:null};if(t==="bool")return{bool:null};if(t==="u8")return{u8:null};if(t==="u16")return{u16:null};if(t==="u32")return{u32:null};if(t==="u64")return{u64:null};if(t==="u128")return{u128:null};if(t==="u256")return{u256:null};if(t==="signer")return{signer:null};const s=t.match(VECTOR_REGEX);if(s)return{vector:TypeTagSerializer.parseFromStr(s[1],e)};const l=t.match(STRUCT_REGEX);if(l)return{struct:{address:e?normalizeSuiAddress(l[1]):l[1],module:l[2],name:l[3],typeParams:l[5]===void 0?[]:TypeTagSerializer.parseStructTypeArgs(l[5],e)}};throw new Error(`Encountered unexpected token when parsing type args for ${t}`)}static parseStructTypeArgs(t,e=!1){const s=[];let l="",d=0;for(let u=0;u<t.length;u++){const p=t[u];if(p==="<"&&d++,p===">"&&d--,d===0&&p===","){s.push(l.trim()),l="";continue}l+=p}return s.push(l.trim()),s.map(u=>TypeTagSerializer.parseFromStr(u,e))}static tagToString(t){if("bool"in t)return"bool";if("u8"in t)return"u8";if("u16"in t)return"u16";if("u32"in t)return"u32";if("u64"in t)return"u64";if("u128"in t)return"u128";if("u256"in t)return"u256";if("address"in t)return"address";if("signer"in t)return"signer";if("vector"in t)return`vector<${TypeTagSerializer.tagToString(t.vector)}>`;if("struct"in t){const e=t.struct,s=e.typeParams.map(TypeTagSerializer.tagToString).join(", ");return`${e.address}::${e.module}::${e.name}${s?`<${s}>`:""}`}throw new Error("Invalid TypeTag")}},ARGUMENT_INNER="Argument",VECTOR2="vector",OPTION="Option",CALL_ARG="CallArg",TYPE_TAG="TypeTag",PROGRAMMABLE_TX_BLOCK="ProgrammableTransaction",PROGRAMMABLE_CALL_INNER="ProgrammableMoveCall",TRANSACTION_INNER="Transaction",ENUM_KIND="EnumKind",TRANSACTION=[ENUM_KIND,TRANSACTION_INNER],ARGUMENT=[ENUM_KIND,ARGUMENT_INNER],PROGRAMMABLE_CALL="SimpleProgrammableMoveCall",builder=new BCS(bcs).registerStructType(PROGRAMMABLE_TX_BLOCK,{inputs:[VECTOR2,CALL_ARG],transactions:[VECTOR2,TRANSACTION]}).registerEnumType(ARGUMENT_INNER,{GasCoin:null,Input:{index:BCS.U16},Result:{index:BCS.U16},NestedResult:{index:BCS.U16,resultIndex:BCS.U16}}).registerStructType(PROGRAMMABLE_CALL_INNER,{package:BCS.ADDRESS,module:BCS.STRING,function:BCS.STRING,type_arguments:[VECTOR2,TYPE_TAG],arguments:[VECTOR2,ARGUMENT]}).registerEnumType(TRANSACTION_INNER,{MoveCall:PROGRAMMABLE_CALL,TransferObjects:{objects:[VECTOR2,ARGUMENT],address:ARGUMENT},SplitCoins:{coin:ARGUMENT,amounts:[VECTOR2,ARGUMENT]},MergeCoins:{destination:ARGUMENT,sources:[VECTOR2,ARGUMENT]},Publish:{modules:[VECTOR2,[VECTOR2,BCS.U8]],dependencies:[VECTOR2,BCS.ADDRESS]},MakeMoveVec:{type:[OPTION,TYPE_TAG],objects:[VECTOR2,ARGUMENT]},Upgrade:{modules:[VECTOR2,[VECTOR2,BCS.U8]],dependencies:[VECTOR2,BCS.ADDRESS],packageId:BCS.ADDRESS,ticket:ARGUMENT}});builder.registerType([ENUM_KIND,"T"],function(e,s,l,d){const p={[s.kind]:s},[m]=l;return this.getTypeInterface(m)._encodeRaw.call(this,e,p,l,d)},function(e,s,l){const[d]=s,u=this.getTypeInterface(d)._decodeRaw.call(this,e,s,l),p=Object.keys(u)[0];return{kind:p,...u[p]}},t=>{if(typeof t!="object"&&!("kind"in t))throw new Error(`EnumKind: Missing property "kind" in the input ${JSON.stringify(t)}`);return!0});builder.registerType(PROGRAMMABLE_CALL,function(e,s,l,d){const[u,p,m]=s.target.split("::"),y=s.typeArguments.map(h=>TypeTagSerializer.parseFromStr(h,!0));return this.getTypeInterface(PROGRAMMABLE_CALL_INNER)._encodeRaw.call(this,e,{package:normalizeSuiAddress(u),module:p,function:m,type_arguments:y,arguments:s.arguments},l,d)},function(e,s,l){let d=builder.getTypeInterface(PROGRAMMABLE_CALL_INNER)._decodeRaw.call(this,e,s,l);return{target:[d.package,d.module,d.function].join("::"),arguments:d.arguments,typeArguments:d.type_arguments.map(TypeTagSerializer.tagToString)}},t=>t.target.split("::").length===3);var ObjectArg=union$2([object({ImmOrOwned:SuiObjectRef}),object({Shared:object({objectId:string$1(),initialSharedVersion:union$2([integer(),string$1()]),mutable:boolean$1()})})]),PureCallArg=object({Pure:array$1(integer())}),ObjectCallArg=object({Object:ObjectArg}),BuilderCallArg=union$2([PureCallArg,ObjectCallArg]),Inputs={Pure(t,e){return{Pure:Array.from(t instanceof Uint8Array?t:builder.ser(e,t).toBytes())}},ObjectRef({objectId:t,digest:e,version:s}){return{Object:{ImmOrOwned:{digest:e,version:s,objectId:normalizeSuiAddress(t)}}}},SharedObjectRef({objectId:t,mutable:e,initialSharedVersion:s}){return{Object:{Shared:{mutable:e,initialSharedVersion:s,objectId:normalizeSuiAddress(t)}}}}};function getIdFromCallArg(t){return typeof t=="string"?normalizeSuiAddress(t):"ImmOrOwned"in t.Object?normalizeSuiAddress(t.Object.ImmOrOwned.objectId):normalizeSuiAddress(t.Object.Shared.objectId)}function getSharedObjectInput(t){return typeof t=="object"&&"Object"in t&&"Shared"in t.Object?t.Object.Shared:void 0}function isMutableSharedObjectInput(t){var e;return((e=getSharedObjectInput(t))==null?void 0:e.mutable)??!1}var STD_ASCII_MODULE_NAME="ascii",STD_ASCII_STRUCT_NAME="String",STD_UTF8_MODULE_NAME="string",STD_UTF8_STRUCT_NAME="String",STD_OPTION_MODULE_NAME="option",STD_OPTION_STRUCT_NAME="Option",RESOLVED_SUI_ID={address:SUI_FRAMEWORK_ADDRESS,module:OBJECT_MODULE_NAME,name:ID_STRUCT_NAME},RESOLVED_ASCII_STR={address:MOVE_STDLIB_ADDRESS,module:STD_ASCII_MODULE_NAME,name:STD_ASCII_STRUCT_NAME},RESOLVED_UTF8_STR={address:MOVE_STDLIB_ADDRESS,module:STD_UTF8_MODULE_NAME,name:STD_UTF8_STRUCT_NAME},RESOLVED_STD_OPTION={address:MOVE_STDLIB_ADDRESS,module:STD_OPTION_MODULE_NAME,name:STD_OPTION_STRUCT_NAME},isSameStruct=(t,e)=>t.address===e.address&&t.module===e.module&&t.name===e.name;function isTxContext(t){var s;const e=(s=extractStructTag(t))==null?void 0:s.Struct;return(e==null?void 0:e.address)==="0x2"&&(e==null?void 0:e.module)==="tx_context"&&(e==null?void 0:e.name)==="TxContext"}function expectType(t,e){if(!(typeof e>"u")&&typeof e!==t)throw new Error(`Expect ${e} to be ${t}, received ${typeof e}`)}var allowedTypes=["Address","Bool","U8","U16","U32","U64","U128","U256"];function getPureSerializationType(t,e){if(typeof t=="string"&&allowedTypes.includes(t)){if(t in["U8","U16","U32","U64","U128","U256"])expectType("number",e);else if(t==="Bool")expectType("boolean",e);else if(t==="Address"&&(expectType("string",e),e&&!isValidSuiAddress(e)))throw new Error("Invalid Sui Address");return t.toLowerCase()}else if(typeof t=="string")throw new Error(`Unknown pure normalized type ${JSON.stringify(t,null,2)}`);if("Vector"in t){if((e===void 0||typeof e=="string")&&t.Vector==="U8")return"string";if(e!==void 0&&!Array.isArray(e))throw new Error(`Expect ${e} to be a array, received ${typeof e}`);const s=getPureSerializationType(t.Vector,e?e[0]:void 0);return s===void 0?void 0:`vector<${s}>`}if("Struct"in t){if(isSameStruct(t.Struct,RESOLVED_ASCII_STR))return"string";if(isSameStruct(t.Struct,RESOLVED_UTF8_STR))return"utf8string";if(isSameStruct(t.Struct,RESOLVED_SUI_ID))return"address";if(isSameStruct(t.Struct,RESOLVED_STD_OPTION)){const s={Vector:t.Struct.typeArguments[0]};return getPureSerializationType(s,e)}}}function hashTypedData(t,e){const s=Array.from(`${t}::`).map(d=>d.charCodeAt(0)),l=new Uint8Array(s.length+e.length);return l.set(s),l.set(e,s.length),blake2b(l,{dkLen:32})}var TransactionExpiration=optional$1(nullable$1(union$2([object({Epoch:integer()}),object({None:union$2([literal$1(!0),literal$1(null)])})]))),SuiAddress3=string$1(),StringEncodedBigint=define$1("StringEncodedBigint",t=>{if(!["string","number","bigint"].includes(typeof t))return!1;try{return BigInt(t),!0}catch{return!1}}),GasConfig=object({budget:optional$1(StringEncodedBigint),price:optional$1(StringEncodedBigint),payment:optional$1(array$1(SuiObjectRef)),owner:optional$1(SuiAddress3)}),SerializedTransactionDataBuilder=object({version:literal$1(1),sender:optional$1(SuiAddress3),expiration:TransactionExpiration,gasConfig:GasConfig,inputs:array$1(TransactionBlockInput),transactions:array$1(TransactionType)});function prepareSuiAddress(t){return normalizeSuiAddress(t).replace("0x","")}var TRANSACTION_DATA_MAX_SIZE=128*1024,TransactionBlockDataBuilder=class{constructor(t){this.version=1,this.sender=t==null?void 0:t.sender,this.expiration=t==null?void 0:t.expiration,this.gasConfig=(t==null?void 0:t.gasConfig)??{},this.inputs=(t==null?void 0:t.inputs)??[],this.transactions=(t==null?void 0:t.transactions)??[]}static fromKindBytes(t){const e=builder.de("TransactionKind",t),s=e==null?void 0:e.ProgrammableTransaction;if(!s)throw new Error("Unable to deserialize from bytes.");const l=create$1({version:1,gasConfig:{},inputs:s.inputs.map((d,u)=>create$1({kind:"Input",value:d,index:u,type:is$1(d,PureCallArg)?"pure":"object"},TransactionBlockInput)),transactions:s.transactions},SerializedTransactionDataBuilder);return TransactionBlockDataBuilder.restore(l)}static fromBytes(t){var u;const e=builder.de("TransactionData",t),s=e==null?void 0:e.V1,l=(u=s==null?void 0:s.kind)==null?void 0:u.ProgrammableTransaction;if(!s||!l)throw new Error("Unable to deserialize from bytes.");const d=create$1({version:1,sender:s.sender,expiration:s.expiration,gasConfig:s.gasData,inputs:l.inputs.map((p,m)=>create$1({kind:"Input",value:p,index:m,type:is$1(p,PureCallArg)?"pure":"object"},TransactionBlockInput)),transactions:l.transactions},SerializedTransactionDataBuilder);return TransactionBlockDataBuilder.restore(d)}static restore(t){assert$2(t,SerializedTransactionDataBuilder);const e=new TransactionBlockDataBuilder;return Object.assign(e,t),e}static getDigestFromBytes(t){const e=hashTypedData("TransactionData",t);return toB58(e)}build({overrides:t,onlyTransactionKind:e}={}){const s=this.inputs.map(y=>(assert$2(y.value,BuilderCallArg),y.value)),l={ProgrammableTransaction:{inputs:s,transactions:this.transactions}};if(e)return builder.ser("TransactionKind",l,{maxSize:TRANSACTION_DATA_MAX_SIZE}).toBytes();const d=(t==null?void 0:t.expiration)??this.expiration,u=(t==null?void 0:t.sender)??this.sender,p={...this.gasConfig,...t==null?void 0:t.gasConfig};if(!u)throw new Error("Missing transaction sender");if(!p.budget)throw new Error("Missing gas budget");if(!p.payment)throw new Error("Missing gas payment");if(!p.price)throw new Error("Missing gas price");const m={sender:prepareSuiAddress(u),expiration:d||{None:!0},gasData:{payment:p.payment,owner:prepareSuiAddress(this.gasConfig.owner??u),price:BigInt(p.price),budget:BigInt(p.budget)},kind:{ProgrammableTransaction:{inputs:s,transactions:this.transactions}}};return builder.ser("TransactionData",{V1:m},{maxSize:TRANSACTION_DATA_MAX_SIZE}).toBytes()}getDigest(){const t=this.build({onlyTransactionKind:!1});return TransactionBlockDataBuilder.getDigestFromBytes(t)}snapshot(){return create$1(this,SerializedTransactionDataBuilder)}};function createTransactionResult(t){const e={kind:"Result",index:t},s=[],l=d=>s[d]??(s[d]={kind:"NestedResult",index:t,resultIndex:d});return new Proxy(e,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(d,u){if(u in d)return Reflect.get(d,u);if(u===Symbol.iterator)return function*(){let m=0;for(;;)yield l(m),m++};if(typeof u=="symbol")return;const p=parseInt(u,10);if(!(Number.isNaN(p)||p<0))return l(p)}})}function expectProvider(t){if(!t)throw new Error("No provider passed to Transaction#build, but transaction data was not sufficient to build offline.");return t}var TRANSACTION_BRAND=Symbol.for("@mysten/transaction"),MAX_GAS_OBJECTS=256,MAX_GAS=5e10,GAS_SAFE_OVERHEAD=1000n,_blockData,_input,input_fn,_selectGasPayment,selectGasPayment_fn,_prepare,prepare_fn,_TransactionBlock=class{constructor(t){__privateAdd(this,_input),__privateAdd(this,_selectGasPayment),__privateAdd(this,_prepare),__privateAdd(this,_blockData,void 0),__privateSet(this,_blockData,new TransactionBlockDataBuilder(t?t.blockData:void 0))}static is(t){return!!t&&typeof t=="object"&&t[TRANSACTION_BRAND]===!0}static fromKind(t){const e=new _TransactionBlock;return __privateSet(e,_blockData,TransactionBlockDataBuilder.fromKindBytes(typeof t=="string"?fromB64(t):t)),e}static from(t){const e=new _TransactionBlock;return typeof t!="string"||!t.startsWith("{")?__privateSet(e,_blockData,TransactionBlockDataBuilder.fromBytes(typeof t=="string"?fromB64(t):t)):__privateSet(e,_blockData,TransactionBlockDataBuilder.restore(JSON.parse(t))),e}static get Transactions(){return Transactions}static get Inputs(){return Inputs}setSender(t){__privateGet(this,_blockData).sender=t}setSenderIfNotSet(t){__privateGet(this,_blockData).sender||(__privateGet(this,_blockData).sender=t)}setExpiration(t){__privateGet(this,_blockData).expiration=t}setGasPrice(t){__privateGet(this,_blockData).gasConfig.price=String(t)}setGasBudget(t){__privateGet(this,_blockData).gasConfig.budget=String(t)}setGasOwner(t){__privateGet(this,_blockData).gasConfig.owner=t}setGasPayment(t){if(t.length>=MAX_GAS_OBJECTS)throw new Error(`Payment objects exceed maximum amount ${MAX_GAS_OBJECTS}`);__privateGet(this,_blockData).gasConfig.payment=t.map(e=>mask$1(e,SuiObjectRef))}get blockData(){return __privateGet(this,_blockData).snapshot()}get[TRANSACTION_BRAND](){return!0}get gas(){return{kind:"GasCoin"}}object(t){const e=getIdFromCallArg(t);return __privateGet(this,_blockData).inputs.find(l=>l.type==="object"&&e===getIdFromCallArg(l.value))??__privateMethod(this,_input,input_fn).call(this,"object",t)}objectRef(...t){return this.object(Inputs.ObjectRef(...t))}sharedObjectRef(...t){return this.object(Inputs.SharedObjectRef(...t))}pure(t,e){return __privateMethod(this,_input,input_fn).call(this,"pure",t instanceof Uint8Array?Inputs.Pure(t):e?Inputs.Pure(t,e):t)}add(t){const e=__privateGet(this,_blockData).transactions.push(t);return createTransactionResult(e-1)}splitCoins(...t){return this.add(Transactions.SplitCoins(...t))}mergeCoins(...t){return this.add(Transactions.MergeCoins(...t))}publish(...t){return this.add(Transactions.Publish(...t))}upgrade(...t){return this.add(Transactions.Upgrade(...t))}moveCall(...t){return this.add(Transactions.MoveCall(...t))}transferObjects(...t){return this.add(Transactions.TransferObjects(...t))}makeMoveVec(...t){return this.add(Transactions.MakeMoveVec(...t))}serialize(){return JSON.stringify(__privateGet(this,_blockData).snapshot())}async build({provider:t,onlyTransactionKind:e}={}){return await __privateMethod(this,_prepare,prepare_fn).call(this,{provider:t,onlyTransactionKind:e}),__privateGet(this,_blockData).build({onlyTransactionKind:e})}async getDigest({provider:t}={}){return await __privateMethod(this,_prepare,prepare_fn).call(this,{provider:t}),__privateGet(this,_blockData).getDigest()}},TransactionBlock=_TransactionBlock;_blockData=new WeakMap;_input=new WeakSet;input_fn=function(t,e){const s=__privateGet(this,_blockData).inputs.length,l=create$1({kind:"Input",value:typeof e=="bigint"?String(e):e,index:s,type:t},TransactionBlockInput);return __privateGet(this,_blockData).inputs.push(l),l};_selectGasPayment=new WeakSet;selectGasPayment_fn=async function(t){const e=__privateGet(this,_blockData).gasConfig.owner??__privateGet(this,_blockData).sender,l=(await expectProvider(t).getCoins({owner:e,coinType:SUI_TYPE_ARG})).data.filter(d=>!__privateGet(this,_blockData).inputs.find(p=>is$1(p.value,BuilderCallArg)&&"Object"in p.value&&"ImmOrOwned"in p.value.Object?d.coinObjectId===p.value.Object.ImmOrOwned.objectId:!1)).slice(0,MAX_GAS_OBJECTS-1).map(d=>({objectId:d.coinObjectId,digest:d.digest,version:d.version}));if(!l.length)throw new Error("No valid gas coins found for the transaction.");return l};_prepare=new WeakSet;prepare_fn=async function({provider:t,onlyTransactionKind:e}){if(!e&&!__privateGet(this,_blockData).sender)throw new Error("Missing transaction sender");const{inputs:s,transactions:l}=__privateGet(this,_blockData),d=[],u=[];if(l.forEach(p=>{if(p.kind==="MoveCall"){p.arguments.some(h=>h.kind==="Input"&&!is$1(s[h.index].value,BuilderCallArg))&&d.push(p);return}const m=getTransactionType(p);m.schema&&Object.entries(p).forEach(([y,h])=>{if(y==="kind")return;const v=m.schema[y],A=v.type==="array",w=A?v.schema[TRANSACTION_TYPE]:v[TRANSACTION_TYPE];if(!w)return;const I=k=>{const $=s[k];if(!$)throw new Error(`Missing input ${h.index}`);if(!is$1($.value,BuilderCallArg))if(w.kind==="object"&&typeof $.value=="string")u.push({id:$.value,input:$});else if(w.kind==="pure")$.value=Inputs.Pure($.value,w.type);else throw new Error("Unexpected input format.")};if(A)h.forEach(k=>{k.kind==="Input"&&I(k.index)});else{if(h.kind!=="Input")return;I(h.index)}})}),d.length&&await Promise.all(d.map(async p=>{const[m,y,h]=p.target.split("::"),v=await expectProvider(t).getNormalizedMoveFunction({package:normalizeSuiObjectId(m),module:y,function:h}),w=v.parameters.length>0&&isTxContext(v.parameters.at(-1))?v.parameters.slice(0,v.parameters.length-1):v.parameters;if(w.length!==p.arguments.length)throw new Error("Incorrect number of arguments.");w.forEach((I,k)=>{const $=p.arguments[k];if($.kind!=="Input")return;const P=s[$.index];if(is$1(P.value,BuilderCallArg))return;const z=P.value,U=getPureSerializationType(I,z);if(U){P.value=Inputs.Pure(z,U);return}if(extractStructTag(I)!=null||typeof I=="object"&&"TypeParameter"in I){if(typeof z!="string")throw new Error(`Expect the argument to be an object id string, got ${JSON.stringify(z,null,2)}`);u.push({id:z,input:P,normalizedType:I});return}throw new Error(`Unknown call arg type ${JSON.stringify(I,null,2)} for value ${JSON.stringify(z,null,2)}`)})})),u.length){const p=[...new Set(u.map(({id:v})=>v))],m=await expectProvider(t).multiGetObjects({ids:p,options:{showOwner:!0}});let y=new Map(p.map((v,A)=>[v,m[A]]));const h=Array.from(y).filter(([v,A])=>A.error).map(([v,A])=>v);if(h.length)throw new Error(`The following input objects are not invalid: ${h.join(", ")}`);u.forEach(({id:v,input:A,normalizedType:w})=>{const I=y.get(v),k=getSharedObjectInitialVersion(I);if(k){const $=isMutableSharedObjectInput(A.value)||w!=null&&extractMutableReference(w)!=null;A.value=Inputs.SharedObjectRef({objectId:v,initialSharedVersion:k,mutable:$})}else A.value=Inputs.ObjectRef(getObjectReference(I))})}if(!e&&(__privateGet(this,_blockData).gasConfig.price||this.setGasPrice(await expectProvider(t).getReferenceGasPrice()),__privateGet(this,_blockData).gasConfig.payment||(__privateGet(this,_blockData).gasConfig.payment=await __privateMethod(this,_selectGasPayment,selectGasPayment_fn).call(this,t)),!this.blockData.gasConfig.budget)){const p=await expectProvider(t).dryRunTransactionBlock({transactionBlock:__privateGet(this,_blockData).build({overrides:{gasConfig:{budget:String(MAX_GAS),payment:[]}}})});if(p.effects.status.status!=="success")throw new Error(`Dry run failed, could not automatically determine a budget: ${p.effects.status.error}`,{cause:p});const m=GAS_SAFE_OVERHEAD*BigInt(this.blockData.gasConfig.price||1n),y=BigInt(p.effects.gasUsed.computationCost)+m,h=y+BigInt(p.effects.gasUsed.storageCost)-BigInt(p.effects.gasUsed.storageRebate);this.setGasBudget(h>y?h:y)}};var NetworkMetrics=object({currentTps:number$1(),tps30Days:number$1(),currentCheckpoint:string$1(),currentEpoch:string$1(),totalAddresses:string$1(),totalObjects:string$1(),totalPackages:string$1()}),DEFAULT_OPTIONS$1={socketOptions:DEFAULT_CLIENT_OPTIONS,versionCacheTimeoutInSeconds:600},JsonRpcProvider=class{constructor(t=devnetConnection,e=DEFAULT_OPTIONS$1){this.options=e,this.connection=t;const s={...DEFAULT_OPTIONS$1,...e};this.options=s,this.client=s.rpcClient??new JsonRpcClient(this.connection.fullnode),this.wsClient=s.websocketClient??new WebsocketClient(this.connection.websocket,s.socketOptions)}async getRpcApiVersion(){if(this.rpcApiVersion&&this.cacheExpiry&&this.cacheExpiry<=Date.now())return this.rpcApiVersion;try{const t=await this.client.requestWithType("rpc.discover",[],any$1());return this.rpcApiVersion=t.info.version,this.cacheExpiry=Date.now()+(this.options.versionCacheTimeoutInSeconds??0)*1e3,this.rpcApiVersion}catch(t){console.warn("Error fetching version number of the RPC API",t)}}async requestSuiFromFaucet(t,e){if(!this.connection.faucet)throw new Error("Faucet URL is not specified");return requestSuiFromFaucet(this.connection.faucet,t,e)}async getCoins(t){if(!t.owner||!isValidSuiAddress(normalizeSuiAddress(t.owner)))throw new Error("Invalid Sui address");return await this.client.requestWithType("suix_getCoins",[t.owner,t.coinType,t.cursor,t.limit],PaginatedCoins)}async getAllCoins(t){if(!t.owner||!isValidSuiAddress(normalizeSuiAddress(t.owner)))throw new Error("Invalid Sui address");return await this.client.requestWithType("suix_getAllCoins",[t.owner,t.cursor,t.limit],PaginatedCoins)}async getBalance(t){if(!t.owner||!isValidSuiAddress(normalizeSuiAddress(t.owner)))throw new Error("Invalid Sui address");return await this.client.requestWithType("suix_getBalance",[t.owner,t.coinType],CoinBalance)}async getAllBalances(t){if(!t.owner||!isValidSuiAddress(normalizeSuiAddress(t.owner)))throw new Error("Invalid Sui address");return await this.client.requestWithType("suix_getAllBalances",[t.owner],array$1(CoinBalance))}async getCoinMetadata(t){return await this.client.requestWithType("suix_getCoinMetadata",[t.coinType],CoinMetadataStruct)}async getTotalSupply(t){return await this.client.requestWithType("suix_getTotalSupply",[t.coinType],CoinSupply)}async call(t,e){const s=await this.client.request(t,e);if(is$1(s,ErrorResponse))throw new RPCError({req:{method:t,args:e},code:s.error.code,data:s.error.data,cause:new Error(s.error.message)});return s.result}async getMoveFunctionArgTypes(t){return await this.client.requestWithType("sui_getMoveFunctionArgTypes",[t.package,t.module,t.function],SuiMoveFunctionArgTypes)}async getNormalizedMoveModulesByPackage(t){return await this.client.requestWithType("sui_getNormalizedMoveModulesByPackage",[t.package],SuiMoveNormalizedModules)}async getNormalizedMoveModule(t){return await this.client.requestWithType("sui_getNormalizedMoveModule",[t.package,t.module],SuiMoveNormalizedModule)}async getNormalizedMoveFunction(t){return await this.client.requestWithType("sui_getNormalizedMoveFunction",[t.package,t.module,t.function],SuiMoveNormalizedFunction)}async getNormalizedMoveStruct(t){return await this.client.requestWithType("sui_getNormalizedMoveStruct",[t.package,t.module,t.struct],SuiMoveNormalizedStruct)}async getOwnedObjects(t){if(!t.owner||!isValidSuiAddress(normalizeSuiAddress(t.owner)))throw new Error("Invalid Sui address");return await this.client.requestWithType("suix_getOwnedObjects",[t.owner,{filter:t.filter,options:t.options},t.cursor,t.limit],PaginatedObjectsResponse)}async getObject(t){if(!t.id||!isValidSuiObjectId(normalizeSuiObjectId(t.id)))throw new Error("Invalid Sui Object id");return await this.client.requestWithType("sui_getObject",[t.id,t.options],SuiObjectResponse)}async multiGetObjects(t){if(t.ids.forEach(s=>{if(!s||!isValidSuiObjectId(normalizeSuiObjectId(s)))throw new Error(`Invalid Sui Object id ${s}`)}),t.ids.length!==new Set(t.ids).size)throw new Error(`Duplicate object ids in batch call ${t.ids}`);return await this.client.requestWithType("sui_multiGetObjects",[t.ids,t.options],array$1(SuiObjectResponse))}async queryTransactionBlocks(t){return await this.client.requestWithType("suix_queryTransactionBlocks",[{filter:t.filter,options:t.options},t.cursor,t.limit,(t.order||"descending")==="descending"],PaginatedTransactionResponse)}async getTransactionBlock(t){if(!isValidTransactionDigest(t.digest))throw new Error("Invalid Transaction digest");return await this.client.requestWithType("sui_getTransactionBlock",[t.digest,t.options],SuiTransactionBlockResponse)}async multiGetTransactionBlocks(t){if(t.digests.forEach(s=>{if(!isValidTransactionDigest(s))throw new Error(`Invalid Transaction digest ${s}`)}),t.digests.length!==new Set(t.digests).size)throw new Error(`Duplicate digests in batch call ${t.digests}`);return await this.client.requestWithType("sui_multiGetTransactionBlocks",[t.digests,t.options],array$1(SuiTransactionBlockResponse))}async executeTransactionBlock(t){return await this.client.requestWithType("sui_executeTransactionBlock",[typeof t.transactionBlock=="string"?t.transactionBlock:toB64(t.transactionBlock),Array.isArray(t.signature)?t.signature:[t.signature],t.options,t.requestType],SuiTransactionBlockResponse)}async getTotalTransactionBlocks(){const t=await this.client.requestWithType("sui_getTotalTransactionBlocks",[],string$1());return BigInt(t)}async getReferenceGasPrice(){const t=await this.client.requestWithType("suix_getReferenceGasPrice",[],string$1());return BigInt(t)}async getStakes(t){if(!t.owner||!isValidSuiAddress(normalizeSuiAddress(t.owner)))throw new Error("Invalid Sui address");return await this.client.requestWithType("suix_getStakes",[t.owner],array$1(DelegatedStake))}async getStakesByIds(t){return t.stakedSuiIds.forEach(e=>{if(!e||!isValidSuiObjectId(normalizeSuiObjectId(e)))throw new Error(`Invalid Sui Stake id ${e}`)}),await this.client.requestWithType("suix_getStakesByIds",[t.stakedSuiIds],array$1(DelegatedStake))}async getLatestSuiSystemState(){return await this.client.requestWithType("suix_getLatestSuiSystemState",[],SuiSystemStateSummary)}async queryEvents(t){return await this.client.requestWithType("suix_queryEvents",[t.query,t.cursor,t.limit,(t.order||"descending")==="descending"],PaginatedEvents)}async subscribeEvent(t){return this.wsClient.subscribeEvent(t.filter,t.onMessage)}async unsubscribeEvent(t){return this.wsClient.unsubscribeEvent(t.id)}async devInspectTransactionBlock(t){let e;if(TransactionBlock.is(t.transactionBlock))t.transactionBlock.setSenderIfNotSet(t.sender),e=toB64(await t.transactionBlock.build({provider:this,onlyTransactionKind:!0}));else if(typeof t.transactionBlock=="string")e=t.transactionBlock;else if(t.transactionBlock instanceof Uint8Array)e=toB64(t.transactionBlock);else throw new Error("Unknown transaction block format.");return await this.client.requestWithType("sui_devInspectTransactionBlock",[t.sender,e,t.gasPrice,t.epoch],DevInspectResults)}async dryRunTransactionBlock(t){return await this.client.requestWithType("sui_dryRunTransactionBlock",[typeof t.transactionBlock=="string"?t.transactionBlock:toB64(t.transactionBlock)],DryRunTransactionBlockResponse)}async getDynamicFields(t){if(!t.parentId||!isValidSuiObjectId(normalizeSuiObjectId(t.parentId)))throw new Error("Invalid Sui Object id");return await this.client.requestWithType("suix_getDynamicFields",[t.parentId,t.cursor,t.limit],DynamicFieldPage)}async getDynamicFieldObject(t){return await this.client.requestWithType("suix_getDynamicFieldObject",[t.parentId,t.name],SuiObjectResponse)}async getLatestCheckpointSequenceNumber(){const t=await this.client.requestWithType("sui_getLatestCheckpointSequenceNumber",[],string$1());return String(t)}async getCheckpoint(t){return await this.client.requestWithType("sui_getCheckpoint",[t.id],Checkpoint)}async getCheckpoints(t){const e=await this.getRpcApiVersion();return await this.client.requestWithType("sui_getCheckpoints",[t.cursor,e&&femver.lt(e,"0.32.0")?String(t==null?void 0:t.limit):t==null?void 0:t.limit,t.descendingOrder],CheckpointPage)}async getCommitteeInfo(t){return await this.client.requestWithType("suix_getCommitteeInfo",[t==null?void 0:t.epoch],CommitteeInfo)}async getNetworkMetrics(){return await this.client.requestWithType("suix_getNetworkMetrics",[],NetworkMetrics)}async getEpochs(t){const e=await this.getRpcApiVersion();return await this.client.requestWithType("suix_getEpochs",[t==null?void 0:t.cursor,e&&femver.lt(e,"0.32.0")?String(t==null?void 0:t.limit):t==null?void 0:t.limit,t==null?void 0:t.descendingOrder],EpochPage)}async getCurrentEpoch(){return await this.client.requestWithType("suix_getCurrentEpoch",[],EpochInfo)}async waitForTransactionBlock({signal:t,timeout:e=60*1e3,pollInterval:s=2*1e3,...l}){const d=AbortSignal.timeout(e),u=new Promise((p,m)=>{d.addEventListener("abort",()=>m(d.reason))});for(;!d.aborted;){t==null||t.throwIfAborted();try{return await this.getTransactionBlock(l)}catch{await Promise.race([new Promise(m=>setTimeout(m,s)),u])}}throw d.throwIfAborted(),new Error("Unexpected error while waiting for transaction block.")}};normalizeSuiObjectId("0x5");function convertAddress(t){return t.length===22?t:`0x${t.slice(t.length-40,t.length)}`}function trimAddress(t,e=6){return t.slice(0,e)+"..."+t.slice(t.length-4,t.length)}function trimTxHash(t,e=6,s=4){const l=t.slice(0,e),d=t.slice(t.length-s,t.length);return`${l}...${d}`}function displayWalletAddress(t,e){return t?t===Context.ETH?trimAddress(convertAddress(e)):t===Context.SOLANA?trimAddress(e,4):trimAddress(e):""}function getChainByChainId(t){return config$1.chainsArr.filter(e=>t===e.chainId)[0]}function getWrappedToken(t){if(isNative(t.tokenId.address)){const s=config$1.chains[t.chain].wrappedGasToken;if(s){const l=config$1.tokens.get(t.chain,s);if(l)return l}}return t}function getGasToken(t){const e=config$1.tokens.getGasToken(t);if(!e)throw new Error(`gas token not found for ${t}`);return e}function chainDisplayName(t){const e=config$1.chains[t];return e?e.displayName:t}function fallbackCopyTextToClipboard(t){const e=document.createElement("textarea");e.value=t,e.style.top="0",e.style.left="0",e.style.position="fixed",document.body.appendChild(e),e.focus(),e.select();try{return document.execCommand("copy"),!0}catch{return!1}finally{document.body.removeChild(e)}}function copyTextToClipboard(t){return navigator.clipboard&&navigator.clipboard.writeText(t).then(function(){return!0},function(){return fallbackCopyTextToClipboard(t)}),fallbackCopyTextToClipboard(t)}function hexPrefix(t){return t.startsWith("0x")?t:`0x${t}`}function isValidTxId(t,e){return t==="Sui"?isValidTransactionDigest(e):t==="Sei"?isHexString(hexPrefix(e),32):e.startsWith("0x")&&e.length===66?!0:e.length>70&&e.length<100}function usePrevious(t){const e=React$1.useRef();return React$1.useEffect(()=>{e.current=t}),e.current}async function sleep(t){return new Promise(e=>setTimeout(e,t))}const getUSDFormat=t=>typeof t>"u"?"":t===0?"$0":Intl.NumberFormat("en-EN",{style:"currency",currency:"USD"}).format(t),calculateUSDPriceRaw=(t,e,s)=>{if(typeof e>"u"||!s)return;const l=t(s);if(l)return typeof e=="number"?e*l:whole(e)*l},calculateUSDPrice=(t,e,s)=>getUSDFormat(calculateUSDPriceRaw(t,e,s)),isEmptyObject=t=>{if(t==null)return!0;for(const e in t)if(t.hasOwnProperty.call(t,e))return!1;return!0},getExplorerUrl=(t,e,s)=>{const d=config$1.chains[t].explorerUrl;switch(s){case"wallet":return t==="Aptos"?`${d}account/${e}`:`${d}address/${e}`;case"tx":return t==="Aptos"?`${d}txn/${e}`:`${d}tx/${e}`;default:switch(t){case"Sui":return`${d}coin/${e}`;case"Aptos":return`${d}${isHexString(e)?"fungible_asset":"coin"}/${e}`;case"Solana":return`${d}address/${e}`;default:return`${d}token/${e}`}}},isFrankensteinToken=(t,e)=>{if(!t.isTokenBridgeWrappedToken)return!1;const{nativeChain:s,symbol:l}=t;return l==="USDC"&&s==="Ethereum"&&e==="Fantom"||t.symbol==="tBTC"?!0:!["Ethereum","Sepolia"].includes(s)&&["ETH","WETH","wstETH","USDT","USDC","USDC.e"].includes(l)},millisToHumanString=t=>t>=2*6e4?`~${Math.ceil(t/6e4)} min`:`~${Math.ceil(t/1e3)} sec`,millisToRelativeTime=t=>{if(t>864e5){const d=Math.floor(t/864e5);return`~${d} ${d===1?"day":"days"} ago`}else if(t>36e5){const d=Math.floor(t/36e5);return`~${d} ${d===1?"hour":"hours"} ago`}else if(t>6e4){const d=Math.floor(t/6e4);return`~${d} ${d===1?"minute":"minutes"} ago`}else return"~1 minute ago"},formatDuration=t=>{if(t<60)return t===1?`${t} second`:`${t} seconds`;if(t<3600){const e=Math.floor(t/60);return e===1?`${e} minute`:`${e} minutes`}else{const e=Math.floor(t/3600);return e===1?`${e} hour`:`${e} hours`}};var TransferWallet=(t=>(t.SENDING="sending",t.RECEIVING="receiving",t))(TransferWallet||{});const walletConnection={sending:void 0,receiving:void 0},walletAcceptedChains=t=>t?config$1.chainsArr.filter(e=>e.context===t).map(e=>e.key):config$1.chainsArr.map(e=>e.key),setWalletConnection=(t,e)=>{walletConnection[t]=e},connectWallet=async(t,e,s,l)=>{const{wallet:d,name:u}=s;setWalletConnection(t,d);const p=config$1.chains[e];if(!p)throw new Error(`Unable to find wallets for chain ${e}`);const{chainId:m,context:y}=p;try{await d.connect({chainId:m})}catch(A){if(A.message&&A.message.toLowerCase().includes("rejected"))return console.info("User rejected wallet connection"),!1;throw A}config$1.triggerEvent({type:"wallet.connect",details:{side:t,chain:e,wallet:s.name.toLowerCase()}});const h=d.getAddress(),v={address:h,type:s.type,icon:d.getIcon(),name:d.getName()};return l(t==="sending"?connectWallet$1(v):connectReceivingWallet(v)),d.on("disconnect",()=>{d.removeAllListeners(),setTimeout(()=>{l(clearWallet(t))},0),localStorage.removeItem(`wormhole-connect:wallet:${y}`)}),d.on("accountsChanged",A=>{(A.length===0||A.length&&h&&A[0]!==h)&&d.disconnect()}),u!==ReadOnlyWallet.NAME&&localStorage.setItem(`wormhole-connect:wallet:${y}`,u),!0},connectLastUsedWallet=async(t,e,s)=>{const l=config$1.chains[e],d=`wormhole-connect:wallet:${l.context}`,u=localStorage.getItem(d);if(u&&u!=="WalletConnect"){const m=(await getWalletOptions(l)).find(y=>y.name===u);m&&(await connectWallet(t,e,m,s)||localStorage.removeItem(d))}},useConnectToLastUsedWallet=()=>{const t=useDispatch(),{toChain:e,fromChain:s}=useSelector(l=>l.transferInput);React$1.useEffect(()=>{s&&connectLastUsedWallet("sending",s,t),e&&connectLastUsedWallet("receiving",e,t)},[s,e])},swapWalletConnections=()=>{const t=walletConnection.sending;walletConnection.sending=walletConnection.receiving,walletConnection.receiving=t},registerWalletSigner=async(t,e)=>{const s=walletConnection[e];if(!s)throw new Error("must connect wallet");const l=await s.getSigner();config$1.whLegacy.registerSigner(t,l)},switchChain=async(t,e)=>{const s=walletConnection[e];if(!s)throw new Error("must connect wallet");const l=getChainByChainId(t);if(s.getNetworkInfo().chainId!==t){if(l.context===Context.ETH)try{await(await Promise.resolve().then(()=>require("./evm-BXku4GNW.js")).then(p=>p.evm)).switchChain(s,t)}catch(u){if(u instanceof NotSupported)return;throw u}return s.getAddress()}},disconnect=async t=>{const e=walletConnection[t];e&&await e.disconnect()},signAndSendTransaction=async(t,e,s,l={})=>{const d=config$1.chains[t],u=walletConnection[s];if(!u)throw new Error("wallet is undefined");if(d.context===Context.ETH)return await(await Promise.resolve().then(()=>require("./evm-BXku4GNW.js")).then(y=>y.evm)).signAndSendTransaction(e,u,t,l);if(d.context===Context.SOLANA)return await(await Promise.resolve().then(()=>require("./solana-DK3yyz37.js"))).signAndSendTransaction(e,u,l);if(d.context===Context.SUI)return(await(await Promise.resolve().then(()=>require("./sui-BRZ30Let.js"))).signAndSendTransaction(e,u)).id;if(d.context===Context.APTOS)return(await(await Promise.resolve().then(()=>require("./aptos-D9RWCwaG.js"))).signAndSendTransaction(e,u)).id;throw new Error("unimplemented")},getReady=t=>{const e=t.getWalletState();return e!==exports.WalletState.Unsupported&&e!==exports.WalletState.NotDetected},mapWallets=(t,e,s=[])=>Object.values(t).filter((l,d,u)=>d===u.findIndex(p=>p.getName()===l.getName())).filter(l=>!s.includes(l.getName())).map(l=>({wallet:l,type:e,name:l.getName(),icon:l.getIcon(),isReady:getReady(l)})),getWalletOptions=async t=>{if(t===void 0)return[];if(t.context===Context.ETH){const e=await Promise.resolve().then(()=>require("./evm-BXku4GNW.js")).then(s=>s.evm);return Object.values(mapWallets(e.wallets,Context.ETH))}else if(t.context===Context.SOLANA){const s=(await Promise.resolve().then(()=>require("./solana-DK3yyz37.js"))).fetchOptions();return Object.values(mapWallets(s,Context.SOLANA))}else if(t.context===Context.SUI){const s=await(await Promise.resolve().then(()=>require("./sui-BRZ30Let.js"))).fetchOptions();return Object.values(mapWallets(s,Context.SUI))}else if(t.context===Context.APTOS){const s=(await Promise.resolve().then(()=>require("./aptos-D9RWCwaG.js"))).fetchOptions();return Object.values(mapWallets(s,Context.APTOS))}return[]};class SDKv2Signer{constructor(e,s,l,d,u){Ae(this,"_chain");Ae(this,"_chainContextV2");Ae(this,"_address");Ae(this,"_options");Ae(this,"_walletType");this._chain=e,this._chainContextV2=s,this._address=l,this._options=d,this._walletType=u}static async fromChain(e,s,l,d){const p=(await getWormholeContextV2()).getPlatform(chainToPlatform(e)).getChain(e);return new SDKv2Signer(e,p,s,l,d)}async signAndSend(e){const s=[];for(const l of e){const d=await signAndSendTransaction(this._chain,l,this._walletType,this._options);s.push(d)}return s}chain(){return this._chainContextV2.chain}address(){return this._address}}class SDKv2Route{constructor(e){Ae(this,"IS_TOKEN_BRIDGE_ROUTE",!1);this.rc=e,this.IS_TOKEN_BRIDGE_ROUTE=["ManualTokenBridge","AutomaticTokenBridge","CosmosGateway"].includes(e.meta.name)}get AUTOMATIC_DEPOSIT(){return this.rc.IS_AUTOMATIC}get NATIVE_GAS_DROPOFF_SUPPORTED(){return this.rc.NATIVE_GAS_DROPOFF_SUPPORTED}async getV2ChainContext(e){const l=(await getWormholeContextV2()).getPlatform(chainToPlatform(e)).getChain(e);return{chain:e,context:l}}async isRouteSupported(e,s,l,d){const u=await this.getV2ChainContext(l),p=await this.getV2ChainContext(d),m=this.rc.supportedChains(config$1.network),y=m.includes(u.chain),h=m.includes(p.chain);if(this.IS_TOKEN_BRIDGE_ROUTE&&await isNttSupportedToken(e,u.context,p.context))return!1;const A=!!(await this.rc.supportedDestinationTokens(e,u.context,p.context)).find(I=>isSameToken(I,s));return y&&h&&A}isSupportedChain(e){return this.rc.supportedChains(config$1.network).includes(e)}async supportedDestTokens(e,s,l){if(!s||!l||!e)return[];if(this.IS_TOKEN_BRIDGE_ROUTE&&this.isIlliquidDestToken(e,l))return[];const d=await this.getV2ChainContext(s),u=await this.getV2ChainContext(l);return await this.rc.supportedDestinationTokens(e.tokenId,d.context,u.context)}async getQuote(e,s,l,d,u,p){const m=await this.createRequest(s,l,d,u),y=await getWormholeContextV2(),h=new this.rc(y),v=await h.validate(m,{amount:display(e),options:p});if(!v.valid)throw v.error;const A=await h.quote(m,v.params);return[h,A,m]}async createRequest(e,s,l,d){const u=(await this.getV2ChainContext(l)).context,p=(await this.getV2ChainContext(d)).context,m=await getWormholeContextV2();return await RouteTransferRequest.create(m,{source:e.tokenId,destination:s.tokenId},u,p)}async computeReceiveAmount(e,s,l,d,u,p){if(!d||!u)throw new Error("Need both chains to get a quote from SDKv2");const[,m]=await this.getQuote(e,s,l,d,u,p);if(m.success)return m.destinationToken.amount;throw m.error}async computeQuote(e,s,l,d,u,p){if(!d||!u)throw new Error("Need both chains to get a quote from SDKv2");const[,m]=await this.getQuote(e,s,l,d,u,p);if(!m.success)throw m.error;return m}async send(e,s,l,d,u,p,m,y){const[h,v,A]=await this.getQuote(s,e,m,l,u,y);if(!v.success)throw v.error;const w=await SDKv2Signer.fromChain(l,d,{},TransferWallet.SENDING);let I=await h.initiate(A,w,v,Wormhole.chainAddress(u,p));if(I.state===TransferState.SourceInitiated||I.state===TransferState.SourceFinalized)return[h,I];let k=0;const $=5,P=1e3;for(;k<$;)try{for await(I of h.track(I,120*1e3))if(I.state>=TransferState.SourceInitiated)return[h,I]}catch(z){console.error(`Error tracking transfer (attempt ${k+1} / ${$}):`,z);const U=P*Math.pow(2,k);await sleep(U),k++}throw new Error("Never got a SourceInitiated state in receipt")}async resumeIfManual(e){const s=await getWormholeContextV2(),l=new this.rc(s);return isManual(l)||isFinalizable(l)?l.resume(e):null}isIlliquidDestToken(e,s){const{symbol:l,nativeChain:d}=e;return!!(isFrankensteinToken(e,s)||["ETH","WETH"].includes(l)&&d==="Ethereum"&&["Scroll","Blast","Xlayer","Mantle","Unichain"].includes(s))}}const isNttSupportedToken=async(t,e,s)=>{const l=async m=>{const y=config$1.routes.get(m);return y?(await y.rc.supportedDestinationTokens(t,e,s)).length>0:!1},[d,u,p]=await Promise.all([l("ManualNtt"),l("AutomaticNtt"),l("M0AutomaticRoute")]);return d||u||p};var NttRoute;(function(t){t.TRIMMED_DECIMALS=8,t.ManualOptions={automatic:!1},t.AutomaticOptions={automatic:!0,gasDropoff:"0.0"};function e(h){return["Mainnet","Testnet"]}t.resolveSupportedNetworks=e;function s(h,v){return Object.values(h.tokens).flatMap(w=>w.map(I=>I.chain))}t.resolveSupportedChains=s;function l(h,v){return Object.entries(h.tokens).map(([,w])=>{const I=w.find(k=>k.chain===v.chain);return I?Wormhole.tokenId(v.chain,I.token):null}).filter(w=>!!w)}t.resolveSourceTokens=l;function d(h,v,A,w){return Object.entries(h.tokens).map(([,I])=>{if(!I.find(P=>P.chain===A.chain&&P.token.toLowerCase()===canonicalAddress(v).toLowerCase()))return;const $=I.find(P=>P.chain===w.chain);if($)return Wormhole.tokenId(w.chain,$.token)}).filter(I=>!!I)}t.resolveDestinationTokens=d;function u(h,v){const A=Object.values(h.tokens),w=canonicalAddress(v);for(const I of A){const k=I.find($=>$.token.toLowerCase()===w.toLowerCase()&&$.chain===v.chain);if(k)return{token:k.token,manager:k.manager,transceiver:{wormhole:k.transceiver.find($=>$.type==="wormhole").address},quoter:k.quoter}}throw new Error("Cannot find Ntt contracts in config for: "+w)}t.resolveNttContracts=u;function p(h,v,A){const w=Object.values(h.tokens),I=canonicalAddress(v);for(const k of w)if(k.find(P=>P.manager.toLowerCase()===I.toLowerCase()&&P.chain===v.chain)){const P=k.find(z=>z.chain===A);if(!P)throw new Error(`Cannot find destination Ntt contracts in config for: ${I}`);return{token:P.token,manager:P.manager,transceiver:{wormhole:P.transceiver.find(z=>z.type==="wormhole").address},quoter:P.quoter}}throw new Error("Cannot find Ntt contracts in config for: "+I)}t.resolveDestinationNttContracts=p;function m(h,v){const A=v*95n/100n;return h>A}t.isCapacityThresholdExceeded=m;function y(h,v){return truncate(h,Math.min(h.decimals,v,t.TRIMMED_DECIMALS))}t.trimAmount=y})(NttRoute||(NttRoute={}));const nttManagerMessageLayout=t=>[{name:"id",binary:"bytes",size:32},{name:"sender",...universalAddressItem},customizableBytes({name:"payload",lengthSize:2},t)],prefixItem=t=>({name:"prefix",binary:"bytes",custom:Uint8Array.from(t),omit:!0}),transceiverMessageLayout=(t,e,s)=>[prefixItem(t),{name:"sourceNttManager",...universalAddressItem},{name:"recipientNttManager",...universalAddressItem},customizableBytes({name:"nttManagerPayload",lengthSize:2},e),customizableBytes({name:"transceiverPayload",lengthSize:2},s)],transceiverInfo=[prefixItem([156,35,189,59]),{name:"managerAddress",...universalAddressItem},{name:"mode",binary:"uint",size:1},{name:"token",...universalAddressItem},{name:"decimals",binary:"uint",size:1}],transceiverRegistration=[prefixItem([24,252,103,194]),{name:"chain",...chainItem()},{name:"transceiver",...universalAddressItem}],trimmedAmountLayout=[{name:"decimals",binary:"uint",size:1},{name:"amount",binary:"uint",size:8}],trimmedAmountItem={binary:"bytes",layout:trimmedAmountLayout};function deserializeNum(t,e){let s=0n;for(let l=0;l<e;++l)s|=BigInt(t[l])<<BigInt(8*(e-l-1));return Number(s)}function serializeNum(t,e){const s=2n**BigInt(e*8);if(t>=s)throw new Error(`Value ${t} is too large for ${e} bytes`);const l=new Uint8Array(e);for(let d=0;d<e;++d)l[d]=Number(BigInt(t)>>BigInt(8*(e-d-1))&0xffn);return l}const optionalAdditionalPayloadItem={binary:"bytes",custom:{to:t=>{if(t.byteLength>=2){const e=deserializeNum(t,2);return t.slice(2,2+e)}return new Uint8Array},from:t=>t.byteLength>0?new Uint8Array([...serializeNum(t.byteLength,2),...t]):new Uint8Array}},nativeTokenTransferLayout=[prefixItem([153,78,84,84]),{name:"trimmedAmount",...trimmedAmountItem},{name:"sourceToken",...universalAddressItem},{name:"recipientAddress",...universalAddressItem},{name:"recipientChain",...chainItem()},{name:"additionalPayload",...optionalAdditionalPayloadItem}],wormholeTransceiverMessageLayout=t=>transceiverMessageLayout([153,69,255,16],t,new Uint8Array(0)),transceiverInstructionLayout=t=>[{name:"index",binary:"uint",size:1},customizableBytes({name:"payload",lengthSize:1},t)],nttNamedPayloads=[["WormholeTransfer",wormholeTransceiverMessageLayout(nttManagerMessageLayout(nativeTokenTransferLayout))],["WormholeTransferStandardRelayer",deliveryInstructionLayout(wormholeTransceiverMessageLayout(nttManagerMessageLayout(nativeTokenTransferLayout)))],["TransceiverInfo",transceiverInfo],["TransceiverRegistration",transceiverRegistration]];var Ntt;(function(t){function e(d){if(d.length>255)throw new Error(`Too many instructions (${d.length})`);return bytes$1.concat(new Uint8Array([d.length]),...d.map(u=>serialize$2(transceiverInstructionLayout(),u)))}t.encodeTransceiverInstructions=e;function s(d,u){return keccak_256(bytes$1.concat(bignum.toBytes(toChainId(d),2),serialize$2(nttManagerMessageLayout(nativeTokenTransferLayout),u)))}t.messageDigest=s;function l(d,u){const p=A=>{const w=/^(\d+)\.(\d+)\.(.*)$/,I=A.match(w);if(!I)throw new Error(`Invalid version format: ${A}`);const[,k,$,P]=I;return{major:Number(k),minor:Number($),patchAndTag:P}},{major:m,minor:y}=p(d),{major:h,minor:v}=p(u);return m===h&&y>=v}t.abiVersionMatches=l})(Ntt||(Ntt={}));registerPayloadTypes("Ntt",nttNamedPayloads);function nttManualRoute(t){class e extends NttManualRoute{}return Ae(e,"config",t),e}class NttManualRoute extends FinalizableRoute{constructor(){super(...arguments);Ae(this,"staticConfig",this.constructor.config)}static supportedNetworks(){return NttRoute.resolveSupportedNetworks(this.config)}static supportedChains(s){return NttRoute.resolveSupportedChains(this.config,s)}static async supportedSourceTokens(s){return NttRoute.resolveSourceTokens(this.config,s)}static async supportedDestinationTokens(s,l,d){return NttRoute.resolveDestinationTokens(this.config,s,l,d)}static isProtocolSupported(s){return s.supportsProtocol("Ntt")}getDefaultOptions(){return NttRoute.ManualOptions}async validate(s,l){const d=l.options??this.getDefaultOptions(),u=parse$5(l.amount,s.source.decimals),p=NttRoute.trimAmount(u,s.destination.decimals),m=units(parse$5(d.gasDropoff??"0.0",s.toChain.config.nativeTokenDecimals));return{valid:!0,params:{amount:l.amount,normalizedParams:{amount:p,sourceContracts:NttRoute.resolveNttContracts(this.staticConfig,s.source.id),destinationContracts:NttRoute.resolveNttContracts(this.staticConfig,s.destination.id),options:{queue:!1,automatic:!1,gasDropoff:m}},options:d}}}async quote(s,l){const d=scale$1(l.normalizedParams.amount,s.destination.decimals),u={success:!0,params:l,sourceToken:{token:s.source.id,amount:l.normalizedParams.amount},destinationToken:{token:s.destination.id,amount:d},eta:estimateFinalityTime(s.fromChain.chain)},{fromChain:p,toChain:m}=s,y=await m.getProtocol("Ntt",{ntt:l.normalizedParams.destinationContracts}),h=await y.getRateLimitDuration();if(h>0n){const v=await y.getCurrentInboundCapacity(p.chain);NttRoute.isCapacityThresholdExceeded(units(d),v)&&(u.warnings=[{type:"DestinationCapacityWarning",delayDurationSec:Number(h)}])}return u}async initiate(s,l,d,u){const{params:p}=d,{fromChain:m}=s,y=Wormhole.parseAddress(l.chain(),l.address()),v=(await m.getProtocol("Ntt",{ntt:p.normalizedParams.sourceContracts})).transfer(y,units(p.normalizedParams.amount),u,p.normalizedParams.options),A=await signSendWait(m,v,l);return{from:m.chain,to:u.chain,state:TransferState.SourceInitiated,originTxs:A,params:p}}async complete(s,l){if(!isAttested(l)){if(isRedeemed(l))return l;throw new Error("The source must be finalized in order to complete the transfer")}const d=this.wh.getChain(l.to),u=await d.getProtocol("Ntt",{ntt:l.params.normalizedParams.destinationContracts}),p=Wormhole.parseAddress(s.chain(),s.address()),m=u.redeem([l.attestation.attestation],p),y=await signSendWait(d,m,s);return{...l,state:TransferState.DestinationInitiated,destinationTxs:y}}async resume(s){const l=await this.wh.getVaa(s.txid,"Ntt:WormholeTransfer");if(!l)throw new Error("No VAA found for transaction: "+s.txid);const d={chain:l.emitterChain,emitter:l.emitterAddress,sequence:l.sequence},{recipientChain:u,trimmedAmount:p}=l.payload.nttManagerPayload.payload,m=canonicalAddress({chain:l.emitterChain,address:l.payload.nttManagerPayload.payload.sourceToken}),y=canonicalAddress({chain:l.emitterChain,address:l.payload.sourceNttManager}),h=l.emitterChain==="Solana"?y:canonicalAddress({chain:l.emitterChain,address:l.emitterAddress}),v=NttRoute.resolveDestinationNttContracts(this.staticConfig,{chain:l.emitterChain,address:l.payload.sourceNttManager},u),A=fromBaseUnits(p.amount,p.decimals);return{from:l.emitterChain,to:u,state:TransferState.Attested,originTxs:[s],attestation:{id:d,attestation:l},params:{amount:display(A),options:{automatic:!1},normalizedParams:{amount:A,options:{queue:!1},sourceContracts:{token:m,manager:y,transceiver:{wormhole:h}},destinationContracts:{token:v.token,manager:v.manager,transceiver:{wormhole:v.transceiver.wormhole}}}}}}async finalize(s,l){if(!isDestinationQueued(l))throw new Error("The transfer must be destination queued in order to finalize");const{attestation:{attestation:d}}=l,u=this.wh.getChain(l.to),p=await u.getProtocol("Ntt",{ntt:l.params.normalizedParams.destinationContracts}),m=Wormhole.chainAddress(s.chain(),s.address()),y=p.completeInboundQueuedTransfer(l.from,d.payload.nttManagerPayload,m.address),h=await signSendWait(u,y,s);return{...l,state:TransferState.DestinationFinalized,destinationTxs:[...l.destinationTxs??[],...h]}}async*track(s,l){if(isSourceInitiated(s)||isSourceFinalized(s)){const{txid:p}=s.originTxs[s.originTxs.length-1],m=await this.wh.getVaa(p,"Ntt:WormholeTransfer",l);if(!m)throw new Error("No VAA found for transaction: "+p);const y={chain:m.emitterChain,emitter:m.emitterAddress,sequence:m.sequence};s={...s,state:TransferState.Attested,attestation:{id:y,attestation:m}},yield s}const u=await this.wh.getChain(s.to).getProtocol("Ntt",{ntt:s.params.normalizedParams.destinationContracts});if(isAttested(s)){const{attestation:{attestation:p}}=s;await u.getIsApproved(p)&&(s={...s,state:TransferState.DestinationInitiated},yield s)}if(isRedeemed(s)||isDestinationQueued(s)){const{attestation:{attestation:p}}=s,m=await u.getInboundQueuedTransfer(p.emitterChain,p.payload.nttManagerPayload);m!==null?(s={...s,state:TransferState.DestinationQueued,queueReleaseTime:new Date(m.rateLimitExpiryTimestamp*1e3)},yield s):await u.getIsExecuted(p)&&(s={...s,state:TransferState.DestinationFinalized},yield s)}yield s}}Ae(NttManualRoute,"NATIVE_GAS_DROPOFF_SUPPORTED",!1),Ae(NttManualRoute,"IS_AUTOMATIC",!1),Ae(NttManualRoute,"config",{tokens:{}}),Ae(NttManualRoute,"meta",{name:"ManualNtt"});function nttAutomaticRoute(t){class e extends NttAutomaticRoute{}return Ae(e,"config",t),e}class NttAutomaticRoute extends AutomaticRoute{constructor(){super(...arguments);Ae(this,"staticConfig",this.constructor.config)}static supportedNetworks(){return NttRoute.resolveSupportedNetworks(this.config)}static supportedChains(s){return NttRoute.resolveSupportedChains(this.config,s)}static async supportedSourceTokens(s){return NttRoute.resolveSourceTokens(this.config,s)}static async supportedDestinationTokens(s,l,d){return NttRoute.resolveDestinationTokens(this.config,s,l,d)}static isProtocolSupported(s){return s.supportsProtocol("Ntt")}getDefaultOptions(){return NttRoute.AutomaticOptions}async isAvailable(s){const l=NttRoute.resolveNttContracts(this.staticConfig,s.source.id);return(await s.fromChain.getProtocol("Ntt",{ntt:l})).isRelayingAvailable(s.toChain.chain)}async validate(s,l){const d=l.options??this.getDefaultOptions(),u=parse$5(d.gasDropoff??"0.0",s.toChain.config.nativeTokenDecimals),p=parse$5(l.amount,s.source.decimals),m=NttRoute.trimAmount(p,s.destination.decimals);return{valid:!0,params:{amount:l.amount,normalizedParams:{amount:m,sourceContracts:NttRoute.resolveNttContracts(this.staticConfig,s.source.id),destinationContracts:NttRoute.resolveNttContracts(this.staticConfig,s.destination.id),options:{queue:!1,automatic:!0,gasDropoff:units(u)}},options:d}}}async quote(s,l){const{fromChain:d,toChain:u}=s,p=await d.getProtocol("Ntt",{ntt:l.normalizedParams.sourceContracts});if(!await p.isRelayingAvailable(u.chain))return{success:!1,error:new Error(`Relaying to chain ${u.chain} is not available`)};const m=await p.quoteDeliveryPrice(u.chain,l.normalizedParams.options),y=scale$1(l.normalizedParams.amount,s.destination.decimals),h={success:!0,params:l,sourceToken:{token:s.source.id,amount:l.normalizedParams.amount},destinationToken:{token:s.destination.id,amount:y},relayFee:{token:Wormhole.tokenId(d.chain,"native"),amount:fromBaseUnits(m,d.config.nativeTokenDecimals)},destinationNativeGas:fromBaseUnits(l.normalizedParams.options.gasDropoff??0n,u.config.nativeTokenDecimals),eta:estimateFinalityTime(s.fromChain.chain)},v=await u.getProtocol("Ntt",{ntt:l.normalizedParams.destinationContracts}),A=await v.getRateLimitDuration();if(A>0n){const w=await v.getCurrentInboundCapacity(d.chain);NttRoute.isCapacityThresholdExceeded(units(y),w)&&(h.warnings=[{type:"DestinationCapacityWarning",delayDurationSec:Number(A)}])}return h}async initiate(s,l,d,u){const{params:p}=d,{fromChain:m}=s,y=Wormhole.parseAddress(l.chain(),l.address()),v=(await m.getProtocol("Ntt",{ntt:p.normalizedParams.sourceContracts})).transfer(y,units(p.normalizedParams.amount),u,p.normalizedParams.options),A=await signSendWait(m,v,l);return{from:m.chain,to:u.chain,state:TransferState.SourceInitiated,originTxs:A,params:p}}async resume(s){const l=await this.wh.getVaa(s.txid,"Ntt:WormholeTransferStandardRelayer");if(!l)throw new Error("No VAA found for transaction: "+s.txid);const d={chain:l.emitterChain,emitter:l.emitterAddress,sequence:l.sequence},{payload:u}=l.payload,{recipientChain:p,trimmedAmount:m}=u.nttManagerPayload.payload,y=canonicalAddress({chain:l.emitterChain,address:u.nttManagerPayload.payload.sourceToken}),h=canonicalAddress({chain:l.emitterChain,address:u.sourceNttManager}),v=l.emitterChain==="Solana"?h:canonicalAddress({chain:l.emitterChain,address:l.emitterAddress}),A=NttRoute.resolveDestinationNttContracts(this.staticConfig,{chain:l.emitterChain,address:u.sourceNttManager},p),w=fromBaseUnits(m.amount,m.decimals);return{from:l.emitterChain,to:p,state:TransferState.Attested,originTxs:[s],attestation:{id:d,attestation:l},params:{amount:display(w),options:{automatic:!0},normalizedParams:{amount:w,options:{queue:!1,automatic:!0},sourceContracts:{token:y,manager:h,transceiver:{wormhole:v}},destinationContracts:{token:A.token,manager:A.manager,transceiver:{wormhole:A.transceiver.wormhole}}}}}}async finalize(s,l){if(!isDestinationQueued(l))throw new Error("The transfer must be destination queued in order to finalize");const{attestation:{attestation:d}}=l,u=this.wh.getChain(l.to),p=await u.getProtocol("Ntt",{ntt:l.params.normalizedParams.destinationContracts}),m=Wormhole.chainAddress(s.chain(),s.address()),y=d.payloadName==="WormholeTransfer"?d.payload:d.payload.payload,h=p.completeInboundQueuedTransfer(l.from,y.nttManagerPayload,m.address),v=await signSendWait(u,h,s);return{...l,state:TransferState.DestinationFinalized,destinationTxs:[...l.destinationTxs??[],...v]}}async*track(s,l){if(isSourceInitiated(s)||isSourceFinalized(s)){const{txid:p}=s.originTxs[s.originTxs.length-1],m=A=>chainToPlatform(A)==="Evm",y=m(s.from)&&m(s.to)?"Ntt:WormholeTransferStandardRelayer":"Ntt:WormholeTransfer",h=await this.wh.getVaa(p,y,l);if(!h)throw new Error(`No VAA found for transaction: ${p}`);const v={chain:h.emitterChain,emitter:h.emitterAddress,sequence:h.sequence};s={...s,state:TransferState.Attested,attestation:{id:v,attestation:h}},yield s}const u=await this.wh.getChain(s.to).getProtocol("Ntt",{ntt:s.params.normalizedParams.destinationContracts});if(isAttested(s)){const{attestation:{attestation:p}}=s;await u.getIsApproved(p)&&(s={...s,state:TransferState.DestinationInitiated},yield s)}if(isRedeemed(s)||isDestinationQueued(s)){const{attestation:{attestation:p}}=s,m=p.payloadName==="WormholeTransfer"?p.payload:p.payload.payload,y=await u.getInboundQueuedTransfer(p.emitterChain,m.nttManagerPayload);y!==null?(s={...s,state:TransferState.DestinationQueued,queueReleaseTime:new Date(y.rateLimitExpiryTimestamp*1e3)},yield s):await u.getIsExecuted(p)&&(s={...s,state:TransferState.DestinationFinalized},yield s)}yield s}}Ae(NttAutomaticRoute,"NATIVE_GAS_DROPOFF_SUPPORTED",!1),Ae(NttAutomaticRoute,"config",{tokens:{}}),Ae(NttAutomaticRoute,"meta",{name:"AutomaticNtt"});class EvmUnsignedTransaction{constructor(e,s,l,d,u=!1){Ae(this,"transaction");Ae(this,"network");Ae(this,"chain");Ae(this,"description");Ae(this,"parallelizable");this.transaction=e,this.network=s,this.chain=l,this.description=d,this.parallelizable=u}}const _abi$7=[{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:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{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:[{internalType:"address",name:"account_",type:"address"},{internalType:"uint256",name:"amount_",type:"uint256"}],name:"burn",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint16",name:"",type:"uint16"}],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:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"domainFields",type:"bytes1"},{internalType:"string",name:"domainName",type:"string"},{internalType:"string",name:"domainVersion",type:"string"},{internalType:"uint256",name:"domainChainId",type:"uint256"},{internalType:"address",name:"domainVerifyingContract",type:"address"},{internalType:"bytes32",name:"domainSalt",type:"bytes32"},{internalType:"uint256[]",name:"domainExtensions",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:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"},{internalType:"uint8",name:"decimals_",type:"uint8"},{internalType:"uint64",name:"sequence_",type:"uint64"},{internalType:"address",name:"owner_",type:"address"},{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"bytes32",name:"nativeContract_",type:"bytes32"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"},{internalType:"uint256",name:"amount_",type:"uint256"}],name:"mint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"nativeContract",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner_",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner_",type:"address"},{internalType:"address",name:"spender_",type:"address"},{internalType:"uint256",name:"value_",type:"uint256"},{internalType:"uint256",name:"deadline_",type:"uint256"},{internalType:"uint8",name:"v_",type:"uint8"},{internalType:"bytes32",name:"r_",type:"bytes32"},{internalType:"bytes32",name:"s_",type:"bytes32"}],name:"permit",outputs:[],stateMutability:"nonpayable",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:"recipient_",type:"address"},{internalType:"uint256",name:"amount_",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"sender_",type:"address"},{internalType:"address",name:"recipient_",type:"address"},{internalType:"uint256",name:"amount_",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"},{internalType:"uint64",name:"sequence_",type:"uint64"}],name:"updateDetails",outputs:[],stateMutability:"nonpayable",type:"function"}],_bytecode$7="0x6080806040523461001657611af2908161001c8239f35b600080fdfe6040608081526004908136101561001557600080fd5b600091823560e01c90816306fdde0314611136578163095ea7b31461110c57816318160ddd146110ed57816323b872dd14611026578163313ce567146110055781633644e51514610fe15781633950935114610f985781633d6c043b14610f7957816340c10f1914610ea157816370a0823114610e695781637ecebe0014610e3157816384b0196e14610d575781638da5cb5b14610d2e57816395d89b4114610c595781639a8a059214610c335781639dc29fac14610af1578163a18cd7c6146107bf578163a457c2d71461070f578163a9059cbb146106de578163c71f461514610335578163d505accf14610160575063dd62ed3e1461011557600080fd5b3461015c578060031936011261015c57806020926101316111af565b6101396111ca565b6001600160a01b0391821683526006865283832091168252845220549051908152f35b5080fd5b8391503461015c5760e036600319011261015c5761017c6111af565b6101846111ca565b906044359260643560843560ff81168103610331576101a16112e1565b8142116102ee5760018060a01b039081851692838952600e602052898920908154916001830190558a519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98452868d840152858a1660608401528a608084015260a083015260c082015260c0815261021e81611212565b519020610229611798565b918a5191602083019361190160f01b855260228401526042830152604282526080820182811067ffffffffffffffff8211176102db5791610283939161027b938d5260c4359260a435925190206119c7565b919091611855565b160361029857506102959394506115e0565b80f35b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b634e487b7160e01b8b526041875260248bfd5b875162461bcd60e51b8152602081850152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8680fd5b9050346106da5760e03660031901126106da5767ffffffffffffffff81358181116106d6576103679036908401611250565b916024358281116106d25761037f9036908301611250565b6044359060ff821680920361033157606435938085168095036106ce576084356001600160a01b03811696908790036106ca5760a4359761ffff891689036106c6576007549060ff8260a01c1661068e575060ff60a01b1916600160a01b17600755805182811161067b57806103f58b546112a7565b92601f93848111610622575b506020908483116001146105b3578c926105a8575b50508160011b916000199060031b1c19161789555b825191821161059557819060019361044385546112a7565b828111610538575b5060209183116001146104cd578a926104c2575b5050600019600383901b1c191690821b1790555b60ff1982541617905567ffffffffffffffff1960025416176002556007549161ffff60a81b9060a81b16916bffffffffffffffffff0000ff60a01b16171760075560c4356008556102956112e1565b01519050388061045f565b848b52849350600080516020611a9d8339815191529190601f1984168c5b81811061052057508411610507575b505050811b019055610473565b015160001960f88460031b161c191690553880806104fa565b828401518555879690940193602093840193016104eb565b90919250848b52600080516020611a9d8339815191528380860160051c8201926020871061058c575b91869588929594930160051c01915b82811061057e57505061044b565b8d8155869550879101610570565b92508192610561565b634e487b7160e01b895260418552602489fd5b015190503880610416565b8c8052600080516020611a7d8339815191529250601f1984168d5b81811061060a57509084600195949392106105f1575b505050811b01895561042b565b015160001960f88460031b161c191690553880806105e4565b929360206001819287860151815501950193016105ce565b9091508b8052600080516020611a7d8339815191528480850160051c82019260208610610672575b9085949392910160051c01905b8181106106645750610401565b8d8155849350600101610657565b9250819261064a565b634e487b7160e01b8a526041865260248afd5b5162461bcd60e51b81526020818801526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b8980fd5b8880fd5b8780fd5b8580fd5b8480fd5b8280fd5b50503461015c578060031936011261015c576020906107086106fe6111af565b6024359033611416565b5160018152f35b905082346107bc57826003193601126107bc5761072a6111af565b918360243592338152600660205281812060018060a01b038616825260205220549082821061076b576020856107088661076487876113e6565b90336115e0565b608490602086519162461bcd60e51b8352820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152fd5b80fd5b83833461015c57606036600319011261015c5767ffffffffffffffff928035848111610aed576107f29036908301611250565b936024358181116106d65761080a9036908401611250565b91604435938285168095036106d25761082e60018060a01b03600754163314611594565b8483600254161015610aaa57508551828111610a97578061084f87546112a7565b97601f98898111610a3e575b506020908983116001146109cf5788926109c4575b50508160011b916000199060031b1c19161785555b82519182116109b1575060019161089c83546112a7565b868111610961575b5060209582116001146108f75794849582939495926108ec575b5050600019600383901b1c191690821b1790555b67ffffffffffffffff1960025416176002556102956112e1565b0151905085806108be565b828552601f19821695600080516020611a9d83398151915291865b88811061094b5750838596979810610932575b505050811b0190556108d2565b015160001960f88460031b161c19169055858080610925565b8183015184559285019260209283019201610912565b838652600080516020611a9d8339815191528780850160051c820192602086106109a8575b0160051c019084905b82811061099d5750506108a4565b87815501849061098f565b92508192610986565b634e487b7160e01b855260419052602484fd5b015190508880610870565b888052600080516020611a7d8339815191529250601f198416895b818110610a265750908460019594939210610a0d575b505050811b018555610885565b015160001960f88460031b161c19169055888080610a00565b929360206001819287860151815501950193016109ea565b909150878052600080516020611a7d8339815191528980850160051c82019260208610610a8e575b9085949392910160051c01905b818110610a80575061085b565b898155849350600101610a73565b92508192610a66565b634e487b7160e01b865260418252602486fd5b906020606492519162461bcd60e51b8352820152601e60248201527f63757272656e74206d6574616461746120697320757020746f206461746500006044820152fd5b8380fd5b8391503461015c578260031936011261015c57610b0c6111af565b600754602435916001600160a01b0391610b299083163314611594565b16918215610be65782845260056020528484205490828210610b985750818495610b767fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef946020946113e6565b8587526005845281872055610b8d826003546113e6565b60035551908152a380f35b608490602087519162461bcd60e51b8352820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152fd5b608490602086519162461bcd60e51b8352820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152fd5b50503461015c578160031936011261015c5760209061ffff60075460a81c169051908152f35b50503461015c578160031936011261015c57805190826001805491610c7d836112a7565b80865292828116908115610d065750600114610cbc575b505050610ca682610cb894038361122e565b5191829160208352602083019061118a565b0390f35b9450808552600080516020611a9d8339815191525b828610610cee57505050610ca6826020610cb89582010194610c94565b80546020878701810191909152909501948101610cd1565b610cb8975086935060209250610ca694915060ff191682840152151560051b82010194610c94565b50503461015c578160031936011261015c5760075490516001600160a01b039091168152602090f35b9050346106da57826003193601126106da57610d7161133d565b918051610d7d816111e0565b600194858252602091603160f81b83820152610d97611810565b938051918483019683881067ffffffffffffffff8911176109b1575093879592610dee838b978a859652878452610de182519a601f60f81b8c5260e0878d015260e08c019061118a565b918a8303908b015261118a565b9346606089015230608089015260a088015286840360c088015251928381520195925b828110610e1e5785870386f35b8351875295810195928101928401610e11565b50503461015c57602036600319011261015c5760209181906001600160a01b03610e596111af565b168152600e845220549051908152f35b50503461015c57602036600319011261015c5760209181906001600160a01b03610e916111af565b1681526005845220549051908152f35b919050346106da57806003193601126106da57610ebc6111af565b60075460243592916001600160a01b0391610eda9083163314611594565b16928315610f3757506020827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92610f158795600354611409565b60035585855260058352808520610f2d838254611409565b905551908152a380f35b6020606492519162461bcd60e51b8352820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b50503461015c578160031936011261015c576020906008549051908152f35b50503461015c578060031936011261015c57610708602092610764610fbb6111af565b338352600686528483206001600160a01b03821684528652918490205460243590611409565b50503461015c578160031936011261015c57602090610ffe611798565b9051908152f35b8284346107bc57806003193601126107bc575060ff60209254169051908152f35b905082346107bc5760603660031901126107bc576110426111af565b918361104c6111ca565b9261105b604435809587611416565b6001600160a01b0385168152600660209081528282203383529052205490828210611099576020856107088661109187876113e6565b9033906115e0565b608490602086519162461bcd60e51b8352820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152fd5b50503461015c578160031936011261015c576020906003549051908152f35b50503461015c578060031936011261015c5760209061070861112c6111af565b60243590336115e0565b50503461015c578160031936011261015c57610cb89061115461133d565b905191829160208352602083019061118a565b60005b83811061117a5750506000910152565b818101518382015260200161116a565b906020916111a381518092818552858086019101611167565b601f01601f1916010190565b600435906001600160a01b03821682036111c557565b600080fd5b602435906001600160a01b03821682036111c557565b6040810190811067ffffffffffffffff8211176111fc57604052565b634e487b7160e01b600052604160045260246000fd5b60e0810190811067ffffffffffffffff8211176111fc57604052565b90601f8019910116810190811067ffffffffffffffff8211176111fc57604052565b81601f820112156111c55780359067ffffffffffffffff82116111fc5760405192611285601f8401601f19166020018561122e565b828452602083830101116111c557816000926020809301838601378301015290565b90600182811c921680156112d7575b60208310146112c157565b634e487b7160e01b600052602260045260246000fd5b91607f16916112b6565b6112e96117de565b6112f1611810565b81600d5414801590611331575b611306575050565b46600a55600b80546001600160a01b0319163017905561132681836116e2565b600955600c55600d55565b5080600c5414156112fe565b60405190600082815491611350836112a7565b808352926001908181169081156113c45750600114611379575b506113779250038361122e565b565b60008080529150600080516020611a7d8339815191525b8483106113a9575061137793505081016020013861136a565b81935090816020925483858a01015201910190918592611390565b90506020925061137794915060ff191682840152151560051b8201013861136a565b919082039182116113f357565b634e487b7160e01b600052601160045260246000fd5b919082018092116113f357565b6001600160a01b0390811691821561154157169182156114f0576000828152600560205260408120549180831061149c576040602092611477837fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef966113e6565b868252600585528282205586815220611491828254611409565b9055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561159b57565b60405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606490fd5b6001600160a01b0390811691821561169157169182156116415760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260068252604060002085600052825280604060002055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b90604051906116f0826111e0565b600191828152602092603160f81b84830152604051918460005b83811061178457505050600060218301528152611726816111e0565b828151910120604051928301937fd87cd6ef79d4e2b95e15ce8abf732db51ec771f1ca2edccf22a46c729ac564728552604084015260608301524660808301523060a083015260c082015260c0815261177e81611212565b51902090565b81818401015182828701015201859061170a565b600b546001600160a01b03163014806117d3575b156117b75760095490565b6117d06117c26117de565b6117ca611810565b906116e2565b90565b50600a5446146117ac565b6117e661133d565b60405161177e602082816118038183019687815193849201611167565b810103808452018261122e565b60075460085460405190602082019261ffff60f01b9060481b1683526022820152602281526060810181811067ffffffffffffffff8211176111fc5760405251902090565b60058110156119b157806118665750565b600181036118b35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b600281036119005760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600381036119585760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b60041461196157565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608490fd5b634e487b7160e01b600052602160045260246000fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311611a705760ff16601b81141580611a65575b611a59579160809493916020936040519384528484015260408301526060820152600093849182805260015afa15611a4c5781516001600160a01b03811615611a46579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600490565b50601c8114156119ff565b5050505060009060039056fe290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6a26469706673582212209c2a6ab851b98b79f450a0f6c6580132088da5913ef53a145eab9f7b320248f664736f6c63430008130033",isSuperArgs$7=t=>t.length>1;class TokenImplementation__factory extends ContractFactory{constructor(...e){isSuperArgs$7(e)?super(...e):super(_abi$7,_bytecode$7,e[0])}getDeployTransaction(e){return super.getDeployTransaction(e||{})}deploy(e){return super.deploy(e||{})}connect(e){return super.connect(e)}static createInterface(){return new Interface(_abi$7)}static connect(e,s){return new Contract(e,_abi$7,s)}}Ae(TokenImplementation__factory,"bytecode",_bytecode$7),Ae(TokenImplementation__factory,"abi",_abi$7);class EvmChain extends ChainContext{}const Er=class Er extends PlatformContext{constructor(e,s){super(e,s??networkPlatformConfigs(e,Er._platform))}getRpc(e){if(e in this.config&&this.config[e].rpc)return new JsonRpcProvider$1(this.config[e].rpc);throw new Error("No configuration available for chain: "+e)}getChain(e,s){if(e in this.config)return new EvmChain(e,this,s);throw new Error("No configuration available for chain: "+e)}static nativeTokenId(e,s){if(!Er.isSupportedChain(s))throw new Error(`invalid chain for EVM: ${s}`);return Wormhole.tokenId(s,EvmZeroAddress)}static isNativeTokenId(e,s,l){return!Er.isSupportedChain(s)||l.chain!==s?!1:l.address.toString()===EvmZeroAddress}static isSupportedChain(e){return chainToPlatform(e)===Er._platform}static async getDecimals(e,s,l){if(isNative(l))return nativeDecimals(Er._platform);const d=Er.getTokenImplementation(s,new EvmAddress(l).toString());return Number(await d.decimals())}static async getBalance(e,s,l,d){return isNative(d)?s.getBalance(l):Er.getTokenImplementation(s,new EvmAddress(d).toString()).balanceOf(l)}static async getBalances(e,s,l,d){return(await Promise.all(d.map(async p=>{const m=await this.getBalance(e,s,l,p);return{[isNative(p)?"native":new EvmAddress(p).toString()]:m}}))).reduce((p,m)=>Object.assign(p,m),{})}static async sendWait(e,s,l){const d=[];for(const u of l){const p=await s.broadcastTransaction(u);if(d.push(p.hash),e==="Celo"){console.error("TODO: override celo block fetching");continue}if(await p.wait()===null)throw new Error("Received null TxReceipt")}return d}static async getLatestBlock(e){return await e.getBlockNumber()}static async getLatestFinalizedBlock(e){const s=await e.getBlock("finalized");if(!s)throw new Error("Could not get finalized block");return s==null?void 0:s.number}static chainFromChainId(e){const s=platformNativeChainIdToNetworkChain(Er._platform,BigInt(e));if(s===void 0)throw new Error(`Unknown EVM chainId ${e}`);const[l,d]=s;return[l,d]}static async chainFromRpc(e){const{chainId:s}=await e.getNetwork();return Er.chainFromChainId(bignum.encode(s,!0))}static getTokenImplementation(e,s){const l=TokenImplementation__factory.connect(s,e);if(!l)throw new Error(`No token implementation available for: ${s}`);return l}};Ae(Er,"_platform",_platform$1);let EvmPlatform=Er;class EvmWormholeCore{constructor(e,s,l,d){Ae(this,"network");Ae(this,"chain");Ae(this,"provider");Ae(this,"contracts");Ae(this,"chainId");Ae(this,"coreAddress");Ae(this,"core");Ae(this,"coreIface");this.network=e,this.chain=s,this.provider=l,this.contracts=d,this.chainId=networkChainToNativeChainId.get(e,s),this.coreIface=Implementation__factory.createInterface();const u=this.contracts.coreBridge;if(!u)throw new Error("Core bridge address not found");this.coreAddress=u,this.core=Implementation__factory.connect(u,l)}async getMessageFee(){return await this.core.messageFee.staticCall()}async getGuardianSetIndex(){return Number(await this.core.getCurrentGuardianSetIndex.staticCall())}async getGuardianSet(e){const s=await this.core.getGuardianSet(e);return{index:e,keys:s[0],expiry:s[1]}}static async fromRpc(e,s){const[l,d]=await EvmPlatform.chainFromRpc(e),u=s[d];if(u.network!==l)throw new Error(`Network mismatch: ${u.network} != ${l}`);return new EvmWormholeCore(l,d,e,u.contracts)}async*publishMessage(e,s,l,d){const u=new EvmAddress(e).toString(),p=await this.core.publishMessage.populateTransaction(l,s,d);yield this.createUnsignedTx(addFrom(p,u),"WormholeCore.publishMessage")}async*verifyMessage(e,s){const l=new EvmAddress(e).toString(),d=await this.core.parseAndVerifyVM.populateTransaction(serialize$1(s));yield this.createUnsignedTx(addFrom(d,l),"WormholeCore.verifyMessage")}async parseTransaction(e){const s=await this.provider.getTransactionReceipt(e);return s===null?[]:s.logs.filter(l=>l.address===this.coreAddress).map(l=>{const{topics:d,data:u}=l,p=this.coreIface.parseLog({topics:d.slice(),data:u});if(p===null)return;const m=new EvmAddress(p.args.sender);return{chain:this.chain,emitter:m.toUniversalAddress(),sequence:p.args.sequence}}).filter(isWormholeMessageId)}async parseMessages(e){const s=await this.provider.getTransactionReceipt(e);if(s===null)throw new Error("Could not get transaction receipt");const l=await this.getGuardianSetIndex();return s.logs.filter(d=>d.address===this.coreAddress).map(d=>{const{topics:u,data:p}=d,m=this.coreIface.parseLog({topics:u.slice(),data:p});if(m===null)return null;const y=new EvmAddress(m.args.sender);return createVAA("Uint8Array",{guardianSet:l,timestamp:0,emitterChain:this.chain,emitterAddress:y.toUniversalAddress(),consistencyLevel:Number(m.args.consistencyLevel),sequence:BigInt(m.args.sequence),nonce:Number(m.args.nonce),signatures:[],payload:hex$1.decode(m.args.payload)})}).filter(d=>!!d)}createUnsignedTx(e,s,l=!1){return new EvmUnsignedTransaction(addChainId(e,this.chainId),this.network,this.chain,s,l)}}const _abi$6=[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldContract",type:"address"},{indexed:!0,internalType:"address",name:"newContract",type:"address"}],name:"ContractUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint32",name:"index",type:"uint32"}],name:"GuardianSetAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint64",name:"sequence",type:"uint64"},{indexed:!1,internalType:"uint32",name:"nonce",type:"uint32"},{indexed:!1,internalType:"bytes",name:"payload",type:"bytes"},{indexed:!1,internalType:"uint8",name:"consistencyLevel",type:"uint8"}],name:"LogMessagePublished",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"chainId",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"evmChainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentGuardianSetIndex",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"index",type:"uint32"}],name:"getGuardianSet",outputs:[{components:[{internalType:"address[]",name:"keys",type:"address[]"},{internalType:"uint32",name:"expirationTime",type:"uint32"}],internalType:"struct Structs.GuardianSet",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getGuardianSetExpiry",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"hash",type:"bytes32"}],name:"governanceActionIsConsumed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"governanceChainId",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"governanceContract",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"isFork",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"impl",type:"address"}],name:"isInitialized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"messageFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"emitter",type:"address"}],name:"nextSequence",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"encodedVM",type:"bytes"}],name:"parseAndVerifyVM",outputs:[{components:[{internalType:"uint8",name:"version",type:"uint8"},{internalType:"uint32",name:"timestamp",type:"uint32"},{internalType:"uint32",name:"nonce",type:"uint32"},{internalType:"uint16",name:"emitterChainId",type:"uint16"},{internalType:"bytes32",name:"emitterAddress",type:"bytes32"},{internalType:"uint64",name:"sequence",type:"uint64"},{internalType:"uint8",name:"consistencyLevel",type:"uint8"},{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"uint32",name:"guardianSetIndex",type:"uint32"},{components:[{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"guardianIndex",type:"uint8"}],internalType:"struct Structs.Signature[]",name:"signatures",type:"tuple[]"},{internalType:"bytes32",name:"hash",type:"bytes32"}],internalType:"struct Structs.VM",name:"vm",type:"tuple"},{internalType:"bool",name:"valid",type:"bool"},{internalType:"string",name:"reason",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"encodedUpgrade",type:"bytes"}],name:"parseContractUpgrade",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint16",name:"chain",type:"uint16"},{internalType:"address",name:"newContract",type:"address"}],internalType:"struct GovernanceStructs.ContractUpgrade",name:"cu",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedUpgrade",type:"bytes"}],name:"parseGuardianSetUpgrade",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint16",name:"chain",type:"uint16"},{components:[{internalType:"address[]",name:"keys",type:"address[]"},{internalType:"uint32",name:"expirationTime",type:"uint32"}],internalType:"struct Structs.GuardianSet",name:"newGuardianSet",type:"tuple"},{internalType:"uint32",name:"newGuardianSetIndex",type:"uint32"}],internalType:"struct GovernanceStructs.GuardianSetUpgrade",name:"gsu",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedRecoverChainId",type:"bytes"}],name:"parseRecoverChainId",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint256",name:"evmChainId",type:"uint256"},{internalType:"uint16",name:"newChainId",type:"uint16"}],internalType:"struct GovernanceStructs.RecoverChainId",name:"rci",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedSetMessageFee",type:"bytes"}],name:"parseSetMessageFee",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint16",name:"chain",type:"uint16"},{internalType:"uint256",name:"messageFee",type:"uint256"}],internalType:"struct GovernanceStructs.SetMessageFee",name:"smf",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedTransferFees",type:"bytes"}],name:"parseTransferFees",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint16",name:"chain",type:"uint16"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"}],internalType:"struct GovernanceStructs.TransferFees",name:"tf",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedVM",type:"bytes"}],name:"parseVM",outputs:[{components:[{internalType:"uint8",name:"version",type:"uint8"},{internalType:"uint32",name:"timestamp",type:"uint32"},{internalType:"uint32",name:"nonce",type:"uint32"},{internalType:"uint16",name:"emitterChainId",type:"uint16"},{internalType:"bytes32",name:"emitterAddress",type:"bytes32"},{internalType:"uint64",name:"sequence",type:"uint64"},{internalType:"uint8",name:"consistencyLevel",type:"uint8"},{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"uint32",name:"guardianSetIndex",type:"uint32"},{components:[{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"guardianIndex",type:"uint8"}],internalType:"struct Structs.Signature[]",name:"signatures",type:"tuple[]"},{internalType:"bytes32",name:"hash",type:"bytes32"}],internalType:"struct Structs.VM",name:"vm",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint32",name:"nonce",type:"uint32"},{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"uint8",name:"consistencyLevel",type:"uint8"}],name:"publishMessage",outputs:[{internalType:"uint64",name:"sequence",type:"uint64"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"numGuardians",type:"uint256"}],name:"quorum",outputs:[{internalType:"uint256",name:"numSignaturesRequiredForQuorum",type:"uint256"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitContractUpgrade",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitNewGuardianSet",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitRecoverChainId",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitSetMessageFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitTransferFees",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"hash",type:"bytes32"},{components:[{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"guardianIndex",type:"uint8"}],internalType:"struct Structs.Signature[]",name:"signatures",type:"tuple[]"},{components:[{internalType:"address[]",name:"keys",type:"address[]"},{internalType:"uint32",name:"expirationTime",type:"uint32"}],internalType:"struct Structs.GuardianSet",name:"guardianSet",type:"tuple"}],name:"verifySignatures",outputs:[{internalType:"bool",name:"valid",type:"bool"},{internalType:"string",name:"reason",type:"string"}],stateMutability:"pure",type:"function"},{inputs:[{components:[{internalType:"uint8",name:"version",type:"uint8"},{internalType:"uint32",name:"timestamp",type:"uint32"},{internalType:"uint32",name:"nonce",type:"uint32"},{internalType:"uint16",name:"emitterChainId",type:"uint16"},{internalType:"bytes32",name:"emitterAddress",type:"bytes32"},{internalType:"uint64",name:"sequence",type:"uint64"},{internalType:"uint8",name:"consistencyLevel",type:"uint8"},{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"uint32",name:"guardianSetIndex",type:"uint32"},{components:[{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"guardianIndex",type:"uint8"}],internalType:"struct Structs.Signature[]",name:"signatures",type:"tuple[]"},{internalType:"bytes32",name:"hash",type:"bytes32"}],internalType:"struct Structs.VM",name:"vm",type:"tuple"}],name:"verifyVM",outputs:[{internalType:"bool",name:"valid",type:"bool"},{internalType:"string",name:"reason",type:"string"}],stateMutability:"view",type:"function"},{stateMutability:"payable",type:"receive"}],_bytecode$6="0x60808060405234610016576130a2908161001c8239f35b600080fdfe60806040526004361015610018575b366120d257612105565b60003560e01c80630319e59c146101e857806304ca84cf146101e3578063178149e7146101de5780631a90a219146101d95780631cfe7951146101d45780632c3c02a4146101cf5780634cf842b5146101ca5780634fdc60fa146101c5578063515f3247146101c05780635cb8cae2146101bb57806364d42b17146101b65780636606b4e0146101b15780638129fc1c146101ac578063875be02a146101a757806393df337e146101a25780639a8a05921461019d578063a0cce1b314610198578063a9e1189314610193578063b172b2221461018e578063b19a437e14610189578063c0fd8bde14610184578063cb4cfea81461017f578063d60b347f1461017a578063e039f22414610175578063eb8d3f1214610170578063f42bc6411461016b578063f8ce560a14610166578063f951975a146101615763fbe3c2cd0361000e576112d5565b61129d565b611277565b611203565b6111dd565b6111bc565b61117d565b611137565b6110d2565b610f96565b610f78565b610f50565b610d51565b610d2f565b610c78565b610b50565b610913565b6107c5565b6107a7565b6106d4565b61068e565b61063f565b6105fc565b61059b565b610577565b610559565b610476565b610409565b610363565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b0382111761021e57604052565b6101ed565b604081019081106001600160401b0382111761021e57604052565b60a081019081106001600160401b0382111761021e57604052565b606081019081106001600160401b0382111761021e57604052565b90601f801991011681019081106001600160401b0382111761021e57604052565b6040519061016082018281106001600160401b0382111761021e57604052565b604051906102c282610223565b565b6001600160401b03811161021e57601f01601f191660200190565b9291926102eb826102c4565b916102f96040519384610274565b829481845281830111610316578281602093846000960137010152565b600080fd5b9080601f8301121561031657816020610336933591016102df565b90565b602060031982011261031657600435906001600160401b038211610316576103369160040161031b565b346103165760a061037b61037636610339565b611dc4565b6080604051918051835260ff602082015116602084015261ffff60408201511660408401526060810151606084015201516080820152f35b906040810191805190604083528151809452606083019360208093019060005b8181106103ec5750505081015163ffffffff1691015290565b82516001600160a01b0316875295840195918401916001016103d3565b346103165761041f61041a36610339565b611b9f565b6040518091602082528051602083015260ff602082015116604083015261ffff604082015116606083015263ffffffff6080610469606084015160a08387015260c08601906103b3565b9201511660a08301520390f35b346103165761048436610339565b600854461461052757610513606061049e6105259361287e565b6104b06104aa8261185b565b906113b0565b61050a6104c060e0830151611e9d565b916104d163436f7265845114611459565b61050461014060408501926104e8468551146115ab565b015160005260056020526040600020600160ff19825416179055565b51612ca6565b015161ffff1690565b61ffff1661ffff196000541617600055565b005b60405162461bcd60e51b815260206004820152600a6024820152696e6f74206120666f726b60b01b6044820152606490fd5b34610316576000366003190112610316576020600754604051908152f35b3461031657600036600319011261031657602063ffffffff60035416604051908152f35b346103165760203660031901126103165760206105c8600435600052600560205260ff6040600020541690565b6040519015158152f35b600435906001600160a01b038216820361031657565b35906001600160a01b038216820361031657565b34610316576020366003190112610316576001600160a01b0361061d6105d2565b16600052600460205260206001600160401b0360406000205416604051908152f35b3461031657608061065761065236610339565b611a0c565b604051908051825260ff602082015116602083015261ffff6040820151166040830152606060018060a01b03910151166060820152f35b346103165760806106a66106a136610339565b611ce1565b6060604051918051835260ff602082015116602084015261ffff604082015116604084015201516060820152f35b34610316576106e236610339565b60085446036107735761076e60606106fc6105259361287e565b6107086104aa8261185b565b61076061014061071b60e0840151611a0c565b9261072c63436f72658551146113e0565b6104e861073e604086015161ffff1690565b61ffff61075861075160005461ffff1690565b61ffff1690565b91161461141d565b01516001600160a01b031690565b61163e565b60405162461bcd60e51b815260206004820152600c60248201526b696e76616c696420666f726b60a01b6044820152606490fd5b34610316576000366003190112610316576020600854604051908152f35b34610316576105256108d96107e16107dc36610339565b61287e565b6107ed6104aa8261185b565b6108cf6107fd60e0830151611b9f565b61080d63436f7265825114611459565b61084b61081f604083015161ffff1690565b61ffff61083261075160005461ffff1690565b911690811490816108f8575b81156108ef575b50611496565b6108a9610140608060608401936108668551515115156114d2565b01946104e8610879875163ffffffff1690565b63ffffffff6108a161089861089360035463ffffffff1690565b611534565b63ffffffff1690565b911614611549565b6108c06108bb60035463ffffffff1690565b612b24565b51825163ffffffff1690612c1b565b5163ffffffff1690565b63ffffffff1663ffffffff196003541617600355565b90501538610845565b905061090d61090960085446141590565b1590565b9061083e565b34610316576000806003193601126109cc577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b03168082526006602052604082205460ff16610991576001600160a01b03166000908152600660205260409020805460ff1916600117905561098e611f42565b80f35b60405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b80fd5b6044359060ff8216820361031657565b359060ff8216820361031657565b6004359063ffffffff8216820361031657565b359063ffffffff8216820361031657565b359061ffff8216820361031657565b35906001600160401b038216820361031657565b6001600160401b03811161021e5760051b60200190565b81601f8201121561031657803590610a6282610a34565b92604092610a7284519586610274565b808552602091828087019260071b85010193818511610316578301915b848310610a9f5750505050505090565b60808383031261031657836080918751610ab881610203565b853581528286013583820152610acf8987016109df565b898201526060610ae08188016109df565b90820152815201920191610a8f565b60005b838110610b025750506000910152565b8181015183820152602001610af2565b90602091610b2b81518092818552858086019101610aef565b601f01601f1916010190565b6040906103369392151581528160208201520190610b12565b346103165760031960203682011261031657600435906001600160401b03908183116103165761016090833603011261031657610b8b610295565b90610b98836004016109df565b8252610ba660248401610a00565b6020830152610bb760448401610a00565b6040830152610bc860648401610a11565b606083015260848301356080830152610be360a48401610a20565b60a0830152610bf460c484016109df565b60c083015260e483013581811161031657610c15906004369186010161031b565b60e0830152610c276101048401610a00565b61010083015261012483013590811161031657610c6492610c516101449260043691840101610a4b565b61012084015201356101408201526123f9565b90610c7460405192839283610b37565b0390f35b3461031657610ce2610140610c8f6107dc36610339565b610c9b6104aa8261185b565b6104e8610cab60e0830151611dc4565b610cbb63436f7265825114611459565b604081015161ffff1690600095869586958695869561ffff610832610751895461ffff1690565b6080810151606090610d0c90610d009081906001600160a01b031681565b6001600160a01b031690565b91015190828215610d26575bf115610d215780f35b61159f565b506108fc610d18565b3461031657600036600319011261031657602061ffff60005416604051908152f35b3461031657600319606036820112610316576001600160401b0360243581811161031657610d83903690600401610a4b565b604435928284116103165760409084360301126103165760405191610da783610223565b8360040135908111610316578301923660238501121561031657600484013593610dd085610a34565b90610dde6040519283610274565b85825260209560248784019160051b8301019136831161031657602401905b828210610e26575050506024610c649592610e1a92865201610a00565b9083015260043561268d565b878091610e32846105e8565b815201910190610dfd565b90815180825260208080930193019160005b828110610e5d575050505090565b835180518652808301518684015260408082015160ff90811691880191909152606091820151169086015260809094019392810192600101610e4f565b805160ff1682529060208281015163ffffffff169082015260408281015163ffffffff169082015260608281015161ffff169082015260808201516080820152610ef460a083015160a08301906001600160401b03169052565b60c08281015160ff1690820152610f42610f1d60e08401516101608060e0860152840190610b12565b6101008481015163ffffffff1690840152610120808501519084830390850152610e3d565b916101408091015191015290565b3461031657610c74610f646107dc36610339565b604051918291602083526020830190610e9a565b34610316576000366003190112610316576020600154604051908152f35b606036600319011261031657610faa6109ed565b6001600160401b0360243581811161031657610fca90369060040161031b565b91610fd36109cf565b91600754340361107457336000526004602052806040600020541692600184019482861161106f57610c74957f6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b293336000526004602052604060002091166001600160401b031982541617905561105260405192839233968885611f06565b0390a26040516001600160401b0390911681529081906020820190565b61151e565b60405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b6044820152606490fd5b6110bd6103369492606083526060830190610e9a565b92151560208201526040818403910152610b12565b34610316576020366003190112610316576001600160401b03600435818111610316573660238201121561031657806004013591821161031657366024838301011161031657610c7491602461112892016121c5565b604093919351938493846110a7565b3461031657608061114f61114a36610339565b611e9d565b61ffff6060604051928051845260ff6020820151166020850152604081015160408501520151166060820152f35b34610316576020366003190112610316576001600160a01b0361119e6105d2565b166000526006602052602060ff604060002054166040519015158152f35b34610316576000366003190112610316576020600854604051904614158152f35b3461031657600036600319011261031657602060035463ffffffff60405191831c168152f35b346103165760606112166107dc36610339565b6112226104aa8261185b565b61126561014061123560e0840151611ce1565b9261124663436f72658551146113e0565b61ffff806040860151169060005416148061126c575b6104e89061141d565b0151600755005b50600854461461125c565b34610316576020366003190112610316576020611295600435612ac1565b604051908152f35b3461031657602036600319011261031657610c746112c16112bc6109ed565b611314565b6040519182916020835260208301906103b3565b3461031657600036600319011261031657602061ffff60005460101c16604051908152f35b6040519061130782610223565b6000602083606081520152565b63ffffffff906113226112fa565b50166000526020600281526040600020906040519161134083610223565b6040518083835491828152019083600052846000209060005b8181106113935750505061033693928261137a611387946001940382610274565b8652015463ffffffff1690565b63ffffffff1690830152565b82546001600160a01b031684529286019260019283019201611359565b156113b85750565b60405162461bcd60e51b8152602060048201529081906113dc906024830190610b12565b0390fd5b156113e757565b60405162461bcd60e51b815260206004820152600e60248201526d496e76616c6964204d6f64756c6560901b6044820152606490fd5b1561142457565b60405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21021b430b4b760991b6044820152606490fd5b1561146057565b60405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964204d6f64756c6560901b6044820152606490fd5b1561149d57565b60405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b21021b430b4b760991b6044820152606490fd5b156114d957565b60405162461bcd60e51b815260206004820152601960248201527f6e657720677561726469616e2073657420697320656d707479000000000000006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90600163ffffffff8093160191821161106f57565b1561155057565b60405162461bcd60e51b815260206004820152602160248201527f696e646578206d75737420696e63726561736520696e207374657073206f66206044820152603160f81b6064820152608490fd5b6040513d6000823e3d90fd5b156115b257565b60405162461bcd60e51b815260206004820152601160248201527034b73b30b634b21022ab269021b430b4b760791b6044820152606490fd5b60405190602082018281106001600160401b0382111761021e5760405260008252565b3d15611639573d9061161f826102c4565b9161162d6040519384610274565b82523d6000602084013e565b606090565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc908154813b1561170d577f2e4cc16c100f0b55e2df82ab0b1a7e294aa9cbd01b48fbaf622683fbc0507a499060018060a01b039081841694856bffffffffffffffffffffffff60a01b8316179055611707604051600080968192897fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a263204a7f0760e21b6020820190815260048252906116fb81610223565b51915af46104aa61160e565b169180a3565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b6040519061177582610259565b6022825261195d60f21b6040837f6e6f74207369676e65642062792063757272656e7420677561726469616e207360208201520152565b604051906117b982610223565b60168252753bb937b7339033b7bb32b93730b731b29031b430b4b760511b6020830152565b604051906117eb82610223565b601982527f77726f6e6720676f7665726e616e636520636f6e7472616374000000000000006020830152565b6040519061182482610259565b6022825261195960f21b6040837f676f7665726e616e636520616374696f6e20616c726561647920636f6e73756d60208201520152565b611864816123f9565b9015611924575061010081015163ffffffff1663ffffffff61188e61089860035463ffffffff1690565b91160361191857606081015161ffff1661ffff6118b561075160005461ffff9060101c1690565b91160361190c57608081015160015403611900576101406118e6910151600052600560205260ff6040600020541690565b6118f5576001906103366115eb565b600090610336611817565b506000906103366117de565b506000906103366117ac565b50600090610336611768565b600092909150565b6040519061193982610203565b60006060838281528260208201528260408201520152565b906020820180921161106f57565b906001820180921161106f57565b906002820180921161106f57565b906004820180921161106f57565b906014820180921161106f57565b906008820180921161106f57565b90601f820180921161106f57565b9190820180921161106f57565b156119c757565b60405162461bcd60e51b815260206004820152601760248201527f696e76616c696420436f6e7472616374557067726164650000000000000000006044820152606490fd5b90611a1561192c565b91611a1f81613030565b8352611a3e600160ff611a3184612e51565b16806020870152146119c0565b61ffff611a4a82612ee8565b1660408401526043815110611a79576043818101516001600160a01b0316606085015290516102c291146119c0565b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b60405190611ac38261023e565b6000608083828152826020820152826040820152611adf6112fa565b60608201520152565b15611aef57565b60405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420477561726469616e536574557067726164650000000000006044820152606490fd5b90611b3e82610a34565b611b4b6040519182610274565b8281528092611b5c601f1991610a34565b0190602036910137565b600019811461106f5760010190565b8051821015611b895760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b90611ba8611ab6565b91611bb281613030565b8352611bdb600260ff611bd4611bc785612e51565b60ff166020880181905290565b1614611ae8565b611bf2611be782612ee8565b61ffff166040850152565b611c0b611bfe82612fac565b63ffffffff166080850152565b611c1481612ebc565b60ff6028911691611c2483611b34565b92611c2d6102b5565b93845260006020850152606086019384526000935b818510611c575750506102c292505114611ae8565b909192611c8e81611c89611c6e611c949488612df5565b611c7a89875151611b75565b6001600160a01b039091169052565b611989565b94611b66565b93929190611c42565b15611ca457565b60405162461bcd60e51b8152602060048201526015602482015274696e76616c6964205365744d65737361676546656560581b6044820152606490fd5b90611cea61192c565b91611cf481613030565b8352611d13600360ff611d0684612e51565b1680602087015214611c9d565b61ffff611d1f82612ee8565b1660408401526043815110611d4457604381816102c293015160608601525114611c9d565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b15611d8857565b60405162461bcd60e51b8152602060048201526014602482015273696e76616c6964205472616e736665724665657360601b6044820152606490fd5b9060405191611dd28361023e565b60008352602083019060008252604084019060008252606085019160008352611e20600460808801956000875288611e0986613030565b905260ff611e1686612e51565b1680915214611d81565b61ffff611e2c83612ee8565b1690526043815110611d44576102c29260639260438301519052611e4f82613040565b90525114611d81565b15611e5f57565b60405162461bcd60e51b81526020600482015260166024820152751a5b9d985b1a5908149958dbdd995c90da185a5b925960521b6044820152606490fd5b90611ea661192c565b91611eb081613030565b8352611ecf600560ff611ec284612e51565b1680602087015214611e58565b6041815110611d445760438160416102c29301516040860152611eff611ef482612f34565b61ffff166060870152565b5114611e58565b92611f3b9063ffffffff6060946001600160401b0360ff95999899168752166020860152608060408601526080850190610b12565b9416910152565b60085415611f4c57565b61ffff611f5c60005461ffff1690565b1660028103611f7057506102c26001612ca6565b60048103611f8357506102c26038612ca6565b60058103611f9657506102c26089612ca6565b60068103611faa57506102c261a86a612ca6565b60078103611fbe57506102c261a516612ca6565b60098103611fd457506102c2634e454152612ca6565b600a8103611fe757506102c260fa612ca6565b600b8103611ffb57506102c26102ae612ca6565b600c810361200f57506102c2610313612ca6565b600d810361202357506102c2612019612ca6565b600e810361203757506102c261a4ec612ca6565b6010810361204b57506102c2610504612ca6565b6011810361206157506102c2630e9ac0d6612ca6565b6017810361207557506102c261a4b1612ca6565b6018810361208857506102c2600a612ca6565b601903612099576102c26064612ca6565b60405162461bcd60e51b81526020600482015260116024820152702ab735b737bbb71031b430b4b71034b21760791b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a1d5b9cdd5c1c1bdc9d195960aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152602c60248201527f74686520576f726d686f6c6520636f6e747261637420646f6573206e6f74206160448201526b63636570742061737365747360a01b6064820152608490fd5b6040519061016082018281106001600160401b0382111761021e57604052816101406000918281528260208201528260408201528260608201528260808201528260a08201528260c0820152606060e08201528261010082015260606101208201520152565b6107dc906121dd926121d561215f565b5036916102df565b906121e782612325565b9091565b94929060339796949263ffffffff60e01b809260e01b16875260e01b16600486015261ffff60f01b9060f01b166008850152600a8401526001600160401b0360c01b9060c01b16602a83015260ff60f81b9060f81b1660328201526122598251809360208685019101610aef565b010190565b6040519061226b82610223565b601a82527f766d2e6861736820646f65736e2774206d6174636820626f64790000000000006020830152565b604051906122a482610223565b60148252731a5b9d985b1a590819dd585c991a585b881cd95d60621b6020830152565b604051906122d482610223565b601882527f677561726469616e2073657420686173206578706972656400000000000000006020830152565b6040519061230d82610223565b60098252686e6f2071756f72756d60b81b6020830152565b610100810161233b6112bc825163ffffffff1690565b90815151156123eb575163ffffffff1661235d61089860035463ffffffff1690565b63ffffffff809216141590816123ce575b506123c1576101208201805151612386835151612ac1565b116123b35761014061239c93015190519061268d565b90156123ae57506001906103366115eb565b600091565b505050600090610336612300565b50506000906103366122c7565b90506123e1602083015163ffffffff1690565b429116103861236e565b505050600090610336612297565b6101008101906124106112bc835163ffffffff1690565b90612422602082015163ffffffff1690565b604082015163ffffffff169061243d606084015161ffff1690565b9161247a608085015161245a60a08701516001600160401b031690565b60c087015160ff169060e0880151926040519788966020880198896121eb565b039161248e601f1993848101835282610274565b519020906124b860405191826124ac60208201958660209181520190565b03908101835282610274565b5190209261014082019384510361255e578251511561254f575163ffffffff166124ea61089860035463ffffffff1690565b63ffffffff80921614159081612532575b506125245761012001805151612512835151612ac1565b116123b35761239c925190519061268d565b5050506000906103366122c7565b9050612545602084015163ffffffff1690565b42911610386124fb565b50505050600090610336612297565b5050505060009061033661225e565b1561257457565b60405162461bcd60e51b815260206004820152601f60248201527f65637265636f766572206661696c65642077697468207369676e6174757265006044820152606490fd5b156125c057565b60405162461bcd60e51b815260206004820152602360248201527f7369676e617475726520696e6469636573206d75737420626520617363656e64604482015262696e6760e81b6064820152608490fd5b1561261857565b60405162461bcd60e51b815260206004820152601c60248201527f677561726469616e20696e646578206f7574206f6620626f756e6473000000006044820152606490fd5b6040519061266a82610223565b60148252731593481cda59db985d1d5c99481a5b9d985b1a5960621b6020830152565b825151919260009291835b85518110156127b2576126ab8187611b75565b51604060006126bd8284015160ff1690565b8351602080860151945188815260ff93909316838201526040830191909152606082019390935281805260809060015afa15610d215760005160609190612723906001600160a01b03169761271389151561256d565b8415908115612795575b506125b9565b0194612771610d00612764612739895160ff1690565b986127488960ff8c1610612611565b61275e6127588951925160ff1690565b60ff1690565b90611b75565b516001600160a01b031690565b036127845761277f90611b66565b612698565b50505050505060009061033661265d565b90506127a48484015160ff1690565b60ff9182169116113861271d565b5050505050506001906103366115eb565b156127ca57565b60405162461bcd60e51b815260206004820152601760248201527f564d2076657273696f6e20696e636f6d70617469626c650000000000000000006044820152606490fd5b9061281982610a34565b6128266040519182610274565b8281528092612837601f1991610a34565b019060005b82811061284857505050565b60209061285361192c565b8282850101520161283c565b60ff601b9116019060ff821161106f57565b9190820391821161106f57565b9061288761215f565b9161289b61289482612e9c565b60ff168452565b6128b4600160ff6128ad865160ff1690565b16146127c3565b6128ce6128c082612f60565b63ffffffff16610100850152565b6128da61275882612eac565b6006906128e68161280f565b9061012086019182526000915b818310612a205750505090612a086129ec6129ca6129b661299961297f87612929612922612a199a8a51612871565b828a612d69565b602081519101206040516129578161294960208201948560209181520190565b03601f198101835282610274565b5190206101408c015261297a61296d828a612fbc565b63ffffffff1660208d0152565b61197b565b61297a61298c8289612fbc565b63ffffffff1660408c0152565b6129b16129a68288612f44565b61ffff1660608b0152565b61196d565b6129c08186613050565b6080890152611951565b6129e76129d78286612fd8565b6001600160401b031660a0890152565b611997565b612a036129f98285612ecc565b60ff1660c0880152565b61195f565b612a13818351612871565b91612d69565b60e0830152565b909192612ab4612a92612a73612a5784612a03612a40612aba978c612ecc565b6060612a4d8c8b51611b75565b51019060ff169052565b612a61818a613050565b612a6c898851611b75565b5152611951565b612a7d8189613050565b6020612a8a898851611b75565b510152611951565b612a03612aa7612aa2838a612ecc565b61285f565b6040612a4d898851611b75565b93611b66565b91906128f3565b610100811015612aea578060011b908082046002149015171561106f576003610336910461195f565b60405162461bcd60e51b8152602060048201526012602482015271746f6f206d616e7920677561726469616e7360701b6044820152606490fd5b63ffffffff62015180814216019080821161106f576102c29216600052600260205260016040600020019063ffffffff1663ffffffff19825416179055565b9080519081516001600160401b03811161021e5768010000000000000000811161021e578354818555808210612bf2575b506020809301612ba985600052602060002090565b60005b838110612bd7575050505001516001909101805463ffffffff191663ffffffff909216919091179055565b82516001600160a01b03168282015591850191600101612bac565b6000858152826020822092830192015b828110612c10575050612b94565b818155600101612c02565b9081515160005b818110612c485750509063ffffffff6102c2921660005260026020526040600020612b63565b83516001600160a01b0390612c5e908390611b75565b511615612c7357612c6e90611b66565b612c22565b60405162461bcd60e51b815260206004820152600b60248201526a496e76616c6964206b657960a81b6044820152606490fd5b468103612cb257600855565b60405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a5908195d9b50da185a5b925960721b6044820152606490fd5b15612cf357565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b15612d3057565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b91612d7e81612d77816119a5565b1015612cec565b612d948351612d8d83856119b3565b1115612d29565b80612dad57505050604051600081526020810160405290565b60405192601f821692831560051b80858701019484860193010101905b808410612de25750508252601f01601f191660405290565b9092835181526020809101930190612dca565b908151601482019081831161106f5710612e1457016020015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6021815110612e61576021015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6001815110612e61576001015190565b6006815110612e61576006015190565b6028815110612e61576028015190565b908151600182019081831161106f5710612e6157016001015190565b6023815110612ef8576023015190565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b6044820152606490fd5b6043815110612ef8576043015190565b908151600282019081831161106f5710612ef857016002015190565b6005815110612f70576005015190565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7433325f6f75744f66426f756e647360601b6044820152606490fd5b6027815110612f70576027015190565b908151600482019081831161106f5710612f7057016004015190565b908151600882019081831161106f5710612ff457016008015190565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b6020815110611a79576020015190565b6063815110611a79576063015190565b908151602082019081831161106f5710611a795701602001519056fea2646970667358221220e01f3fc19a7b6f650a08aafb55409b8aa16f0ebf4a5804ec4ce7df76358d349364736f6c63430008130033",isSuperArgs$6=t=>t.length>1;class Implementation__factory extends ContractFactory{constructor(...e){isSuperArgs$6(e)?super(...e):super(_abi$6,_bytecode$6,e[0])}getDeployTransaction(e){return super.getDeployTransaction(e||{})}deploy(e){return super.deploy(e||{})}connect(e){return super.connect(e)}static createInterface(){return new Interface(_abi$6)}static connect(e,s){return new Contract(e,_abi$6,s)}}Ae(Implementation__factory,"bytecode",_bytecode$6),Ae(Implementation__factory,"abi",_abi$6);const index$4=Object.freeze(Object.defineProperty({__proto__:null,Implementation__factory},Symbol.toStringTag,{value:"Module"}));registerProtocol(_platform$1,"WormholeCore",EvmWormholeCore);const index$3=Object.freeze(Object.defineProperty({__proto__:null,EvmWormholeCore,ethers_contracts:index$4},Symbol.toStringTag,{value:"Module"})),_abi$5=[{type:"constructor",inputs:[{name:"_token",type:"address",internalType:"address"},{name:"_mode",type:"uint8",internalType:"enum IManagerBase.Mode"},{name:"_chainId",type:"uint16",internalType:"uint16"},{name:"_rateLimitDuration",type:"uint64",internalType:"uint64"},{name:"_skipRateLimiting",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"NTT_MANAGER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"attestationReceived",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"cancelOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"chainId",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"completeInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"completeOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"executeMsg",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"message",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getCurrentInboundCapacity",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getCurrentOutboundCapacity",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getInboundLimitParams",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"view"},{type:"function",name:"getInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.InboundQueuedTransfer",components:[{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipient",type:"address",internalType:"address"}]}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getMode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getOutboundLimitParams",inputs:[],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"pure"},{type:"function",name:"getOutboundQueuedTransfer",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.OutboundQueuedTransfer",components:[{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"sender",type:"address",internalType:"address"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}]}],stateMutability:"view"},{type:"function",name:"getPeer",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct INttManager.NttManagerPeer",components:[{name:"peerAddress",type:"bytes32",internalType:"bytes32"},{name:"tokenDecimals",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getThreshold",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getTransceivers",inputs:[],outputs:[{name:"result",type:"address[]",internalType:"address[]"}],stateMutability:"pure"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"isMessageApproved",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isMessageExecuted",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"messageAttestations",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"count",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"mode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"enum IManagerBase.Mode"}],stateMutability:"view"},{type:"function",name:"nextMessageSequence",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"},{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"rateLimitDuration",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"removeTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setInboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"},{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setOutboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"},{name:"decimals",type:"uint8",internalType:"uint8"},{name:"inboundLimit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setThreshold",inputs:[{name:"threshold",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"token",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"tokenDecimals",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"transceiverAttestedToMessage",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"shouldQueue",type:"bool",internalType:"bool"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unpause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"InboundTransferQueued",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"MessageAlreadyExecuted",inputs:[{name:"sourceNttManager",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"msgHash",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"MessageAttestedTo",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"index",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OutboundTransferCancelled",inputs:[{name:"sequence",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipient",type:"address",indexed:!1,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OutboundTransferQueued",inputs:[{name:"queueSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"OutboundTransferRateLimited",inputs:[{name:"sender",type:"address",indexed:!0,internalType:"address"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"currentCapacity",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"PeerUpdated",inputs:[{name:"chainId_",type:"uint16",indexed:!0,internalType:"uint16"},{name:"oldPeerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"oldPeerDecimals",type:"uint8",indexed:!1,internalType:"uint8"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"peerDecimals",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"ThresholdChanged",inputs:[{name:"oldThreshold",type:"uint8",indexed:!1,internalType:"uint8"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverAdded",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"transceiversNum",type:"uint256",indexed:!1,internalType:"uint256"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverRemoved",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransferRedeemed",inputs:[{name:"digest",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"TransferSent",inputs:[{name:"recipient",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"msgSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"BurnAmountDifferentThanBalanceDiff",inputs:[{name:"burnAmount",type:"uint256",internalType:"uint256"},{name:"balanceDiff",type:"uint256",internalType:"uint256"}]},{type:"error",name:"CallerNotTransceiver",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CancellerNotSender",inputs:[{name:"canceller",type:"address",internalType:"address"},{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"CapacityCannotExceedLimit",inputs:[{name:"newCurrentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"newLimit",type:"uint72",internalType:"TrimmedAmount"}]},{type:"error",name:"DeliveryPaymentTooLow",inputs:[{name:"requiredPayment",type:"uint256",internalType:"uint256"},{name:"providedPayment",type:"uint256",internalType:"uint256"}]},{type:"error",name:"DisabledTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"InboundQueuedTransferNotFound",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InboundQueuedTransferStillQueued",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidMode",inputs:[{name:"mode",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidPeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidPeerChainIdZero",inputs:[]},{type:"error",name:"InvalidPeerDecimals",inputs:[]},{type:"error",name:"InvalidPeerZeroAddress",inputs:[]},{type:"error",name:"InvalidRecipient",inputs:[]},{type:"error",name:"InvalidRefundAddress",inputs:[]},{type:"error",name:"InvalidTargetChain",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"thisChain",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidTransceiverZeroAddress",inputs:[]},{type:"error",name:"MessageNotApproved",inputs:[{name:"msgHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NoEnabledTransceivers",inputs:[]},{type:"error",name:"NonRegisteredTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotEnoughCapacity",inputs:[{name:"currentCapacity",type:"uint256",internalType:"uint256"},{name:"amount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"NumberOfDecimalsNotEqual",inputs:[{name:"decimals",type:"uint8",internalType:"uint8"},{name:"decimalsOther",type:"uint8",internalType:"uint8"}]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OutboundQueuedTransferNotFound",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}]},{type:"error",name:"OutboundQueuedTransferStillQueued",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerNotRegistered",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RefundFailed",inputs:[{name:"refundAmount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"RetrievedIncorrectRegisteredTransceivers",inputs:[{name:"retrieved",type:"uint256",internalType:"uint256"},{name:"registered",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ThresholdTooHigh",inputs:[{name:"threshold",type:"uint256",internalType:"uint256"},{name:"transceivers",type:"uint256",internalType:"uint256"}]},{type:"error",name:"TooManyTransceivers",inputs:[]},{type:"error",name:"TransceiverAlreadyAttestedToMessage",inputs:[{name:"nttManagerMessageHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"TransceiverAlreadyEnabled",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"TransferAmountHasDust",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"dust",type:"uint256",internalType:"uint256"}]},{type:"error",name:"UndefinedRateLimiting",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"expectedOwner",type:"address",internalType:"address"},{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"ZeroAmount",inputs:[]},{type:"error",name:"ZeroThreshold",inputs:[]}],_bytecode$5="0x61016034620005a857601f620062e138819003918201601f19168301916001600160401b038311848410176200055b5780849260a094604052833981010312620005a8578051906001600160a01b0382168203620005a8576020810151916002831015620005a85760408201519161ffff83168303620005a8576060810151906001600160401b03821690818303620005a8576080015180159182158203620005a857158092816200059f575b50821562000583575b505062000571576080527f8561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d8954620001147e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e15460ff8360081c1614620005ad565b7ffd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f5460005b60ff8360081c168110620003ce57505060005b60ff8260081c1681106200033a5750604060ff6200016d92161115620005ad565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c1662000328576002600160401b03196001600160401b03821601620002dc575b50503060a05260c0526101009182526101209081526101404681523360e05260405191615cb693846200062b85396080518481816112ee0152818161192e01528181611d7f015281816127c501528181613241015281816137e701528181613e3a015281816152ca015281816153dd0152818161549d015281816155bc0152615684015260a05184614cf1015260c051848181610285015281816104e00152818161052d015281816126b10152818161365701528181613cb8015281816145240152818161494301526149f3015260e05184611a7801525183818161047701528181611df801528181611f3e015281816126ff015281816136d901528181613d3501526148cb0152518281816111960152818161276801526131cb0152518161312d0152f35b6001600160401b0319166001600160401b039081179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880620001b6565b60405163f92ee8a960e01b8152600490fd5b60018101808211620003b8575b60ff8360081c1681106200036757506200036190620005cb565b6200014c565b620003b290620003ac6200037b84620005db565b90546200038884620005db565b9054600391821b1c6001600160a01b039081169390911b9190911c161415620005ad565b620005cb565b62000347565b634e487b7160e01b600052601160045260246000fd5b620003d981620005db565b9054600382901b81901c6001600160a01b031660009081527f49bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f602052604090819020905192906001600160401b0360608501908111908511176200055b5760608401604052546200047b60ff821615801592838752602087019360ff808360081c1615928315875260101c16908160408a0152926200053e575b5050620005ad565b60018060401b03600160ff6040870151161b87161615159051151592600092835b60ff8a60081c168110620004ec575b50505082620004e6959492620004cb620003ac95620004d49414620005ad565b151514620005ad565b60ff60408188169201511610620005ad565b62000139565b620004f781620005db565b9054600391821b1c6001600160a01b039081169184901b85901c161462000529576200052390620005cb565b6200049c565b5060019350849150829050620004cb620004ab565b9091508162000551575b50388062000473565b9050153862000548565b634e487b7160e01b600052604160045260246000fd5b60405163e543ef0560e01b8152600490fd5b1591508162000596575b503880620000b5565b9050386200058d565b925038620000ac565b600080fd5b15620005b557565b634e487b7160e01b600052600160045260246000fd5b6000198114620003b85760010190565b7e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e18054821015620006145760005260206000200190600090565b634e487b7160e01b600052603260045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c80630271725014612a42578063036de8af146129b75780630677df54146129985780630900f01014612531578063186ce612146124dc57806319017175146124a65780631f97c9a8146122b4578063203e4a9b14611fb657806323d75e3114611f82578063295a521214611f28578063396c16b714611eec5780633b97e85614611ed15780633f4ba83a14611e435780634b4fd03b14611de5578063689f90c314611da357806374aa7bfc14611d5f5780637c91863414611c0a5780638129fc1c146119e75780638413bcba146118cb5780638456cb591461184e57806386e11ffa1461182957806389c619dd146117c95780638da5cb5b146117935780638e3ba8c91461175c5780638fd3ab801461161d5780639057412d146114a0578063961b94d01461144257806397c35146146111ba5780639a8a05921461117b5780639d78245414610f405780639f86029c14610c2f5780639fd0506d14610bf9578063b187bd2614610bcb578063b293f97f14610b35578063b4d591bb14610a74578063c0b07bde14610a2e578063c128d170146109b2578063d788c14714610927578063da4856a1146108f4578063e5a9860314610848578063e75235b81461081a578063f2fde38b146106d5578063f5cfec18146106b2578063f7514fbc146102b4578063fc0c546a1461026f5763fd96063c1461021757600080fd5b3461026c57602036600319011261026c576060610235600435615228565b6040805182516001600160481b031681526020808401516001600160401b031690820152918101516001600160a01b031690820152f35b80fd5b503461026c578060031936011261026c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461026c57602036600319011261026c576004356001600160401b03811681036106ae576102e1615a50565b6002600080516020615b21833981519152541461069c576001600160401b038116600052600080516020615c0183398151915260205260406000206040519061032982612b1a565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a083015260405190818560048301549261039084613587565b808452936001811690811561067a5750600114610636575b506103b592500382612ba1565b60c08201526001600160401b03606082015116156106155760a08101516001600160a01b03163381036105e85750606061045860407ff80e572ae1b63e2449629b6c7d783add85c36473926f216077f17ee002bcfd07936001600160401b038616600052600080516020615c01833981519152602052610437826000206135d8565b01516104416149cd565b906001600160401b0360ff82169160081c166158bf565b926001600160401b0360405191168152336020820152836040820152a17f000000000000000000000000000000000000000000000000000000000000000060028110156105d25780610522575060405163a9059cbb60e01b6020820152336024820152604481019190915261050d906104de81606481015b03601f198101835282612ba1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316614218565b6001600080516020615c218339815191525580f35b600181036105b657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156105b1576040516340c10f1960e01b815233600482015260248101929092526000908290604490829084905af180156105a557610596575b5061050d565b61059f90612b07565b38610590565b6040513d6000823e3d90fd5b600080fd5b6040516366001a8960e01b815260ff9091166004820152602490fd5b634e487b7160e01b600052602160045260246000fd5b60405163ceb40a8560e01b81523360048201526001600160a01b03919091166024820152604490fd5b0390fd5b604051635feafa3160e11b81526001600160401b0383166004820152602490fd5b60040187525060208620909186915b81831061065e5750509060206103b592820101386103a8565b6020919350806001915483858801015201910190918392610645565b9050602092506103b594915060ff191682840152151560051b820101386103a8565b6040516309e3d0f360e11b8152600490fd5b5080fd5b503461026c578060031936011261026c5760206106cd615211565b604051908152f35b503461026c57602036600319011261026c576001600160a01b03600435818116908181036107e55761071690610709615a17565b610711615a17565b6159a3565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed97891825460ff600080516020615ba183398151915254168082036107fc575050908391825b84548110156107f8578460005281817f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd1015416803b156107f457848091602460405180948193632c7b84dd60e11b83528960048401525af19081156107e95785916107d1575b50506107cc90612de1565b61075b565b6107da90612b07565b6107e55783386107c1565b8380fd5b6040513d87823e3d90fd5b8480fd5b8380f35b604492506040519163d2a13a2960e01b835260048301526024820152fd5b503461026c578060031936011261026c57602060ff600080516020615aa18339815191525416604051908152f35b503461026c57602036600319011261026c5760043560ff8116908181036105b157610871615a17565b81156108e2577f2a855b929b9a53c6fb5b5ed248b27e502b709c088e036a5aa17620c8fc5085a9916108dc60ff92600080516020615aa1833981519152805493851985161790556108c0613060565b6040805160ff9490951684168552921660208401528291820190565b0390a180f35b60405163831761d760e01b8152600490fd5b503461026c5761090336612c24565b906002600080516020615b21833981519152541461069c5761092492613129565b80f35b503461026c57602036600319011261026c5761ffff610944612a9d565b61094c6151f2565b5016600052600080516020615bc18339815191526020526109ae6109736040600020614dcd565b6040519182918291909160406001600160401b038160608401956001600160481b038082511686526020820151166020860152015116910152565b0390f35b503461026c57602036600319011261026c5761ffff906109d0612a9d565b9060206040516109df81612b50565b828152015216600052600080516020615a8183398151915260205260408060002060ff8251610a0d81612b50565b60208260018554958685520154169101908152835192835251166020820152f35b503461026c578060031936011261026c576109ae604051610a4e81612b50565b60058152640302e312e360dc1b6020820152604051918291602083526020830190612ae2565b503461026c578060031936011261026c576040518091600080516020615b6183398151915290815480845260208094019081938352600080516020615ac183398151915290835b818110610b185750505084610ad1910385612ba1565b60405193838594850191818652518092526040850193925b828110610af857505050500390f35b83516001600160a01b031685528695509381019392810192600101610ae9565b82546001600160a01b031684529286019260019283019201610abb565b5060c036600319011261026c57610b4a612aae565b906084359182151583036106ae5760a4356001600160401b039283821161026c5750610b7a903690600401612bdd565b610b82615a50565b6002600080516020615b21833981519152541461069c57602093610bb0926064359060443590600435613c9c565b6001600080516020615c218339815191525560405191168152f35b503461026c578060031936011261026c5760206002600080516020615b218339815191525414604051908152f35b503461026c578060031936011261026c57600080516020615c41833981519152546040516001600160a01b039091168152602090f35b503461026c576020806003193601126106ae576001600160a01b039060043582811691908281036107f457610c62615a17565b8215610f2e5782600052600080516020615be183398151915280835260ff91826040600020541615610f1557846000528184528260406000205460081c1615610efc5784600052818452604060002061ff001990818154169055600080516020615ba1833981519152928354858160081c16928315610ee85761ff0060001980950160081b169116178455600080516020615b418339815191528054918860005287526001600160401b03600192610d2f82858a60406000205460101c161b198316169282168310614a9f565b6001600160401b0319161790558897600080516020615b618339815191528054938b5b858110610de2575b505050505050918091610da26040969594610d957f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f99614a9f565b610d9d614abc565b614ba7565b5460081c16600080516020615aa18339815191529081548381168210610dd4575b50505416908351928352820152a180f35b60ff19161781553880610dc3565b838b610ded8361302f565b929054600393841b1c1614610e0b5750610e0690612de1565b610d52565b9590918093959798999a9b9c508101908111610ed45790610e3f84610e32610e5e9461302f565b905490891b1c169161302f565b90919082549060031b9160018060a01b03809116831b921b1916179055565b82548015610ec057946040999794610da2948a9894610d95947f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f9e9c990192610ea68461302f565b81939154921b1b1916905555998496979899839650610d5a565b634e487b7160e01b8c52603160045260248cfd5b634e487b7160e01b8d52601160045260248dfd5b634e487b7160e01b8b52601160045260248bfd5b6040516307d86e9160e21b815260048101869052602490fd5b604051630d583f4760e41b815260048101869052602490fd5b604051632f44bd7760e01b8152600490fd5b503461026c57610f4f36612c24565b9033600052600080516020615be183398151915260209080825260ff60406000205460081c161561116357600080516020615b2183398151915291600283541461069c5761ffff861680600052600080516020615a8183398151915282528460406000205403611145575060405163b3f07bbd60e01b815291818380610fd9898b600484016130ff565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af492831561113a57889361110b575b503360005280825261101d60ff60406000205460101c1684612ff9565b6110f25760606110d193927f35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e592336000528082528a6001600160401b03610100600160481b03604082600160ff836000205460101c161b1693898152600080516020615ae1833981519152875220928354928360081c161760081b1690610100600160481b03191617905533600052815260ff60406000205460101c166040519185835233908301526040820152a1612f8c565b6110d9578480f35b5460021461069c576110ea92613129565b388080808480f35b604051631089c4a160e11b815260048101849052602490fd5b9092508181813d8311611133575b6111238183612ba1565b810103126105b157519138611000565b503d611119565b6040513d8a823e3d90fd5b6044908560405191635788c0fd60e11b835260048301526024820152fd5b60405163a0ae911d60e01b8152336004820152602490fd5b503461026c578060031936011261026c57602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50602036600319011261026c576001600160401b036004351690816004350361026c576111e5615a50565b6002600080516020615b21833981519152541461069c5781600052600080516020615c018339815191526020526040600020916040519261122584612b1a565b805484526001810154602085015261ffff60028201546001600160481b03811660408701526001600160401b038160481c16606087015260881c16608085015260018060a01b0360038201541660a08501526040518381949060048401549361128d85613587565b808552946001811690811561141e57506001146113d9575b50506112b392500383612ba1565b60c083019182526001600160401b03606084015116156113c1576112e46001600160401b0360608501511642612f7f565b6001600160401b037f00000000000000000000000000000000000000000000000000000000000000001611611396579161137391602093600052600080516020615c01833981519152845261133c60406000206135d8565b6001600160481b036040830151169161ffff608082015116815190868301519260a0600180821b0391015116935194600435614412565b6001600080516020615c21833981519152556001600160401b0360405191168152f35b6044906001600160401b036060850151166040519163c06cf05f60e01b835260048301526024820152fd5b60249060405190635feafa3160e11b82526004820152fd5b60049193949250018252602082205b8183106114025750509060206112b39282010138806112a5565b60209193508060019154838589010152019101909184926113e8565b915050602092506112b394915060ff191682840152151560051b82010138806112a5565b50606036600319011261026c57611457612aae565b604435611462615a50565b6002600080516020615b21833981519152541461069c5760209181611373926040519261148e84612b50565b6001845285368186013760043561363a565b503461026c57604036600319011261026c576114ba612a9d565b6024356001600160401b038111611619576114d9903690600401612bdd565b91604051918290600080516020615b61833981519152828154918287526020809701908652600080516020615ac183398151915292865b888282106115fa5750505061152792500383612ba1565b826115518351966040519788928392635b10743960e11b8452604060048501526044840190612ae2565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156115ef5783949561158a94926115cb575b50612e24565b604051926040840160408552835180915285606086019401915b8181106115b75750505082938301520390f35b8251855293860193918601916001016115a4565b6115e89192503d8087833e6115e08183612ba1565b810190612d0f565b9038611584565b6040513d85823e3d90fd5b85546001600160a01b0316845260019586019588955093019201611510565b8280fd5b503461026c578060031936011261026c57611636614cee565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b038082169060018201918183116117465760ff8460401c16908115611739575b5061172757600160401b911680926001600160481b03191617179081835560ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e541615611715577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2926020926116f5613060565b6116fd614abc565b68ff000000000000000019169055604051908152a180f35b604051632866815360e11b8152600490fd5b60405163f92ee8a960e01b8152600490fd5b9050818316111538611680565b634e487b7160e01b600052601160045260246000fd5b503461026c57604036600319011261026c5760243560ff811681036105b157611789602091600435612ff9565b6040519015158152f35b503461026c578060031936011261026c57600080516020615b01833981519152546040516001600160a01b039091168152602090f35b503461026c57602036600319011261026c5761181e6001600160401b036020926040600080516020615b4183398151915254916004358152600080516020615ae18339815191528652205460081c16166157e1565b60ff60405191168152f35b503461026c578060031936011261026c576118426151f2565b506109ae610973614d85565b503461026c578060031936011261026c57600080516020615b0183398151915254611881906001600160a01b0316614d32565b600080516020615b21833981519152600281541461069c57600290557f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd2602060405160018152a180f35b503461026c57602036600319011261026c576004356118e8615a50565b6002600080516020615b21833981519152541461069c5761190881615228565b602081016001600160401b039081815116156119ce5761192b8282511642612f7f565b827f000000000000000000000000000000000000000000000000000000000000000016116119ac578385527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b860205260408086208681556001018690558301518351869161050d916001600160481b0316906001600160a01b031687614893565b516040516301cb739d60e71b8152600481019490945216602483015250604490fd5b604051630301bcaf60e61b815260048101859052602490fd5b503461026c578060031936011261026c57611a00614cee565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c1615906001600160401b03811680159081611c02575b6001149081611bf8575b159081611bef575b506117275767ffffffffffffffff198116600117835581611bd0575b50611a76615962565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381163303611ba75750611ab0615962565b611ab8615962565b611ac0615962565b6001600080516020615b2183398151915255600080516020615c4183398151915280546001600160a01b03191633179055611af9615962565b611b01615962565b611b0a336159a3565b611b12615962565b611b1a615962565b6001600080516020615c2183398151915255611b51610100600160481b0360ff611b4a611b456149cd565b615888565b1617614e2d565b611b59613060565b611b61614abc565b611b69575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b604051636345072160e11b81526001600160a01b03919091166004820152336024820152604490fd5b68ffffffffffffffffff19166801000000000000000117825538611a6d565b90501538611a51565b303b159150611a49565b839150611a3f565b503461026c57608036600319011261026c57611c24612a9d565b6024356044359160ff83168093036105b15761ffff90611c42615a17565b16918215611d4d578115611d3b578015611d29577f1456404e7f41f35c3daac941bb50bad417a66275c3040061b4287d787719599d9160809184600052600080516020615a81833981519152918260205260ff604060002081600160405192611caa84612b50565b805484520154169460208201958652886000526020526001604060002084815501848319825416179055611d0c611ceb611ce26149cd565b8060643561591a565b89600052600080516020615bc183398151915260205260406000209061502b565b51935116604051938452602084015260408301526060820152a280f35b60405163ade64f0b60e01b8152600490fd5b60405163f839a0cb60e01b8152600490fd5b60405163100b0f2760e11b8152600490fd5b503461026c578060031936011261026c5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461026c578060031936011261026c57602060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb54166040519015158152f35b503461026c578060031936011261026c577f0000000000000000000000000000000000000000000000000000000000000000906002821015611e2f5760208260ff60405191168152f35b634e487b7160e01b81526021600452602490fd5b503461026c578060031936011261026c57600080516020615b0183398151915254611e76906001600160a01b0316614d32565b600080516020615b218339815191526002815403611ebf57600190557fe11c2112add17fb763d3bd59f63b10429c3e11373da4fb8ef6725107a2fdc4b06020604051838152a180f35b604051637e38d1d360e11b8152600490fd5b503461026c578060031936011261026c57602061181e6149cd565b503461026c57602036600319011261026c5760ff60406020926004358152600080516020615ae183398151915284522054166040519015158152f35b503461026c578060031936011261026c576040517f00000000000000000000000000000000000000000000000000000000000000006002811015611f6e57602092508152f35b634e487b7160e01b83526021600452602483fd5b503461026c578060031936011261026c5760206001600160401b03600080516020615b818339815191525416604051908152f35b503461026c576020806003193601126106ae576004356001600160a01b038116918282036107e557611fe6615a17565b8215610f2e5782600052600080516020615be18339815191529182825260ff90816040600020541660001461218a5784600052838352604060002061010061ff00198254161790555b600080516020615b6183398151915290815491600160401b8310156121745782610e3f9160016120619501905561302f565b600080516020615ba183398151915292835461ff00612084848360081c16614a8e565b60081b169061ff00191617809455600080516020615b4183398151915280546001600160401b0390818116918860005284875260018660406000205460101c161b16821791821461215b5767ffffffffffffffff19161790557ff05962b5774c658e85ed80c91a75af9d66d2af2253dda480f90bce78aff5eda594606094909390929091612110614abc565b84600052825280600080516020615aa183398151915280548281161561214c575b5054169260405194855260081c16908301526040820152a180f35b60ff1916600117815538612131565b604051638d68f84d60e01b815260048101899052602490fd5b634e487b7160e01b600052604160045260246000fd5b600080516020615ba18339815191528281541660408110156122a257604051906121b382612b35565b6001825285820190600182526040830190815288600052878752604060002092511515918662ff000061ff0086549351151560081b16935160101b1693169062ffffff1916171717905580548361220b818316614a8e565b169060ff19161790557f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed978805490600160401b821015612174576001820180825582101561228c576000527f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd10180546001600160a01b0319168617905561202f565b634e487b7160e01b600052603260045260246000fd5b60405163891684c360e01b8152600490fd5b503461026c57602036600319011261026c576004356001600160401b0381168091036106ae57606060c06040516122ea81612b1a565b84815284602082015284604082015284838201528460808201528460a08201520152600052600080516020615c0183398151915260205260406000206040519061233382612b1a565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a08301526040518381949060048401549361239b85613587565b8085529460018116908115612482575060011461243d575b50506123c192500383612ba1565b60c081019182526109ae6040519283926020845280516020850152602081015160408501526001600160481b0360408201511660608501526001600160401b03606082015116608085015261ffff60808201511660a085015260a0600180821b039101511660c08401525160e080840152610100830190612ae2565b60049193949250018252602082205b8183106124665750509060206123c19282010138806123b3565b602091935080600191548385890101520191019091849261244c565b915050602092506123c194915060ff191682840152151560051b82010138806123b3565b503461026c57602036600319011261026c576124c0615a17565b6109246124d76124ce6149cd565b8060043561591a565b614e2d565b503461026c57604036600319011261026c576109246124f9612aae565b612501615a17565b61ffff61250f6124ce6149cd565b9116600052600080516020615bc183398151915260205260406000209061502b565b503461026c576020806003193601126106ae576001600160a01b03600435818116908181036107f457612562615a17565b61256a614cee565b3b1561293d577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e918254916125f760ff841615614a9f565b60ff199283166001178455303b156107f45760405163011fa75760e71b8152858160048183305af180156128f25761292a575b5060405163689f90c360e01b81528281600481305afa9081156128f25786916128fd575b5015612686575b50507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b604051637e062a3560e11b81528281600481305afa9081156128f25786916128b4575b50816126d9927f000000000000000000000000000000000000000000000000000000000000000016911614614a9f565b6040516314ad290960e11b81528181600481305afa9081156107e957859161287e575b507f000000000000000000000000000000000000000000000000000000000000000090600282101561286a57600281101561286a5761273b9114614a9f565b604051634d4502c960e11b81528181600481305afa80156107e9578590612834575b612790915061ffff807f000000000000000000000000000000000000000000000000000000000000000016911614614a9f565b604051631d2a9eff60e21b8152908082600481305afa9081156107e95785916127f4575b506127ed91506001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016911614614a9f565b3880612655565b905081813d831161282d575b61280a8183612ba1565b810103126107e557516001600160401b03811681036107e5576127ed90386127b4565b503d612800565b508181813d8311612863575b61284a8183612ba1565b810103126107f45761285e6127909161311a565b61275d565b503d612840565b634e487b7160e01b86526021600452602486fd5b90508181813d83116128ad575b6128958183612ba1565b810103126107f4575160028110156107f457386126fc565b503d61288b565b90508281813d83116128eb575b6128cb8183612ba1565b810103126128e757519080821682036128e757906126d96126a9565b8580fd5b503d6128c1565b6040513d88823e3d90fd5b61291d9150833d8511612923575b6129158183612ba1565b810190614200565b3861264e565b503d61290b565b61293690959195612b07565b933861262a565b60405162461bcd60e51b815260048101849052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b503461026c57602036600319011261026c576020611789600435612f8c565b503461026c57602036600319011261026c576004356001600160a01b0381811691829003611619576129f981600080516020615b018339815191525416614d32565b600080516020615c4183398151915280546001600160a01b031981168417909155167f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b503461026c57602036600319011261026c576106cd612a95612a90604060209461ffff612a6d612a9d565b612a756151f2565b50168152600080516020615bc1833981519152865220614dcd565b6152be565b6104416149cd565b6004359061ffff821682036105b157565b6024359061ffff821682036105b157565b60005b838110612ad25750506000910152565b8181015183820152602001612ac2565b90602091612afb81518092818552858086019101612abf565b601f01601f1916010190565b6001600160401b03811161217457604052565b60e081019081106001600160401b0382111761217457604052565b606081019081106001600160401b0382111761217457604052565b604081019081106001600160401b0382111761217457604052565b608081019081106001600160401b0382111761217457604052565b60a081019081106001600160401b0382111761217457604052565b90601f801991011681019081106001600160401b0382111761217457604052565b6001600160401b03811161217457601f01601f191660200190565b81601f820112156105b157803590612bf482612bc2565b92612c026040519485612ba1565b828452602083830101116105b157816000926020809301838601378301015290565b90600319906060828401126105b15760043561ffff811681036105b1579260243592604435916001600160401b03918284116105b15760609084830301126105b15760405192612c7384612b35565b806004013584526024810135602085015260448101359283116105b157612c9d9201600401612bdd565b604082015290565b6001600160401b0381116121745760051b60200190565b519060ff821682036105b157565b81601f820112156105b1578051612ce081612bc2565b92612cee6040519485612ba1565b818452602082840101116105b157612d0c9160208085019101612abf565b90565b9060209081838203126105b15782516001600160401b03938482116105b157019080601f830112156105b1578151612d4681612ca5565b94604090612d5682519788612ba1565b828752858088019360051b860101948486116105b157868101935b868510612d8357505050505050505090565b84518381116105b15782019084601f1983890301126105b157845190612da882612b50565b612db38a8401612cbc565b825285830151918583116105b157612dd2898c80969581960101612cca565b83820152815201940193612d71565b60001981146117465760010190565b805182101561228c5760209160051b010190565b9060406020612d0c9360ff81511684520151918160208201520190612ae2565b909291805191612e3383612ca5565b92604091612e4383519586612ba1565b818552601f19612e5283612ca5565b01602090368288013760009788955b848710612e7357505050505050509190565b909192939495988685612eec868d612e9260018060a01b039188612df0565b511680600052600080516020615be18339815191528252612ebd60ff866000205460101c1689612df0565b51908551808095819463b5634c7360e01b835261ffff60049916898401526024998a8401526044830190612e04565b03915afa908115612f7457908d91600091612f42575b50612f0e81928d612df0565b528301809311612f2f575050612f249099612de1565b959493929190612e61565b601190634e487b7160e01b600052526000fd5b91508782813d8311612f6d575b612f598183612ba1565b8101031261026c5750518c90612f0e612f02565b503d612f4f565b8a513d6000823e3d90fd5b9190820391821161174657565b6001600160401b039060ff612fe581600080516020615aa18339815191525416938493600080516020615b418339815191525490600052600080516020615ae183398151915260205260406000205460081c16166157e1565b1610159081612ff2575090565b9050151590565b906001600160401b0391600052600080516020615ae1833981519152602052600160ff60406000205460081c92161b1616151590565b600080516020615b61833981519152805482101561228c57600052600080516020615ac18339815191520190600090565b60ff600080516020615aa1833981519152541660405161307f81612b50565b60ff600080516020615ba183398151915254818116835260081c168060208301528083116130ba57505160ff166130b35750565b156108e257565b82604491604051916313c3d1b160e01b835260048301526024820152fd5b9060606040612d0c9380518452602081015160208501520151918160408201520190612ae2565b60409061ffff612d0c949316815281602082015201906130d8565b519061ffff821682036105b157565b91907f000000000000000000000000000000000000000000000000000000000000000046810361344957508161315f9184613467565b9190916134445760408091015191815192635399ded560e11b8452608084806131946020948560048401526024830190612ae2565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415613439576000946133c4575b5061ffff9283606086015116847f0000000000000000000000000000000000000000000000000000000000000000168082036133a95750506131fc6149cd565b8161322587519280613220816001600160401b03968760ff82169160081c166158bf565b61591a565b960151908160a01c613392576001600160a01b039182169560007f000000000000000000000000000000000000000000000000000000000000000083161561338b57506132706151f2565b508816600052600080516020615bc18339815191528452613296612a9084600020614dcd565b6132a08882615853565b81808960081c169160081c16105b6132d357505050506132c36132d194846155b1565b6132cc83615491565b614893565b565b7f7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f316297509561336f839596949760019394519261330e84612b35565b6001600160481b038091168452898401908242168252888501978852896000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b88b52886000209451166001600160481b03198554161784555116826157a0565b019151166001600160601b0360a01b82541617905551908152a1565b90506132ae565b50602491519063033b960d60e41b82526004820152fd5b6044925191631ee5902560e11b835260048301526024820152fd5b6080949194813d8211613431575b816133df60809383612ba1565b810103126106ae578351916133f383612b6b565b8151906001600160481b038216820361026c57508252848101518583015283810151848301526134259060600161311a565b606082015292386131bc565b3d91506133d2565b83513d6000823e3d90fd5b505050565b604490604051906377d879fb60e01b82526004820152466024820152fd5b60405163b3f07bbd60e01b81529193926020918391829161348c9190600484016130ff565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105a55760009161351d575b506134be81612f8c565b15613505576134cc8161354e565b92836134da57509150600090565b7f4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef2600080a360009190565b60249060405190630451c4fb60e41b82526004820152fd5b906020823d8211613546575b8161353660209383612ba1565b8101031261026c575051386134b4565b3d9150613529565b600052600080516020615ae18339815191526020526040600020805460ff81166135805760ff19166001179055600090565b5050600190565b90600182811c921680156135b7575b60208310146135a157565b634e487b7160e01b600052602260045260246000fd5b91607f1691613596565b8181106135cc575050565b600081556001016135c1565b6004600091828155826001820155826002820155826003820155016135fd8154613587565b8061360757505050565b82601f821160011461361857505055565b9091808252613636601f60208420940160051c8401600185016135c1565b5555565b9194939290946000958315613c8a578115613c78578215613c66577f00000000000000000000000000000000000000000000000000000000000000006136803082614a36565b906136c360018060a01b03821696604051906323b872dd60e01b60208301523360248301523060448301526064820152606481526136bd81612b86565b87614218565b6136d6826136d13084614a36565b612f7f565b957f00000000000000000000000000000000000000000000000000000000000000006002811015613c52579060018b9214613bcb575b5050505061ffff8116600052600080516020615a8183398151915260205260ff600160406000200154168015611d295761374f6137476149cd565b91828761591a565b906001600160401b038260081c1661376c60ff84169283836158bf565b808803613ba4575061378e61379391613786611b456149cd565b9384916158bf565b615369565b98600080516020615b8183398151915254966001600160401b0380891614613b905767ffffffffffffffff1988166001600160401b03898116600101811691909117600080516020615b81833981519152557f00000000000000000000000000000000000000000000000000000000000000001615613b8a576138146151f2565b50613820612a90614d85565b61383d8c610100600160481b0360ff87169160081b161782615853565b6001600160401b03808d610100600160481b0360ff88169160081b161760081c169160081c16105b613b64578180613b5c575b6138b957505082612d0c9899610100600160481b0360ff8461389d826138a99716848660081b16176153d1565b169160081b1617615679565b6001600160401b03339516614412565b61ffff95979896919a506001600160481b039392506138d6615211565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a26040519661392388612b1a565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615c0183398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b03198254161781556139be6001600160401b03606087015116826157a0565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613b4857613a1f8354613587565b601f8111613b0d575b50602090601f8311600114613aa157906001600160401b03959683613a96575b50508160011b916000199060031b1c19161790555b7f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613a92346143bb565b1690565b015190503880613a48565b95601f19831684885260208820975b818110613af55750916001600160401b03969791846001959410613adc575b505050811b019055613a5d565b015160001960f88460031b161c19169055388080613acf565b83830151895560019098019760209384019301613ab0565b613b389084835260208320601f850160051c81019160208610613b3e575b601f0160051c01906135c1565b38613a28565b9091508190613b2b565b634e487b7160e01b81526041600452602490fd5b506000613870565b604490613b6f615211565b90604051916326fb55dd60e01b835260048301526024820152fd5b81613865565b634e487b7160e01b82526011600452602482fd5b87613bb160449282612f7f565b604051916338f831a560e11b835260048301526024820152fd5b803b156106ae578190602460405180948193630852cd8d60e31b83528c60048401525af18015613c4757613c32575b50613c06903090614a36565b808203613c1457888161370c565b60449250604051916302156a8f60e01b835260048301526024820152fd5b98613c40613c06929a612b07565b9890613bfa565b6040513d8c823e3d90fd5b634e487b7160e01b8b52602160045260248bfd5b60405163717f139360e11b8152600490fd5b604051634e46966960e11b8152600490fd5b604051631f2a200560e01b8152600490fd5b95949392919060008715613c8a578215613c78578315613c66577f0000000000000000000000000000000000000000000000000000000000000000613ce13082614a36565b90613d2460018060a01b0382169a604051906323b872dd60e01b6020830152336024830152306044830152606482015260648152613d1e81612b86565b8b614218565b613d32826136d13084614a36565b997f000000000000000000000000000000000000000000000000000000000000000060028110156141ec57600114614182575b50505061ffff8216600052600080516020615a8183398151915260205260ff600160406000200154168015611d2957613da7613d9f6149cd565b91828b61591a565b916001600160401b038360081c16613dc460ff85169384836158bf565b808c03614175575061378e613de691613dde611b456149cd565b9485916158bf565b99600080516020615b8183398151915254976001600160401b03808a16146141615767ffffffffffffffff1989166001600160401b038a8116600101811691909117600080516020615b81833981519152557f0000000000000000000000000000000000000000000000000000000000000000161561415b57613e676151f2565b508b6001600160401b0380613e7d612a90614d85565b9260081b610100600160481b031660ff881617613e9a8185615853565b60081c169160081c16105b811580614154575b6141495781614141575b50613ee857505082612d0c9899610100600160481b0360ff6138a994169160081b1617613ee3816153d1565b615679565b61ffff95979896919a506001600160481b03939250613f05615211565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a260405196613f5288612b1a565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615c0183398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b0319825416178155613fed6001600160401b03606087015116826157a0565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613b485761404e8354613587565b601f8111614111575b50602090601f83116001146140bf57906001600160401b03959683613a965750508160011b916000199060031b1c19161790557f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613a92346143bb565b95601f19831684885260208820975b8181106140f95750916001600160401b03969791846001959410613adc57505050811b019055613a5d565b838301518955600190980197602093840193016140ce565b61413b9084835260208320601f850160051c81019160208610613b3e57601f0160051c01906135c1565b38614057565b905038613eb7565b604483613b6f615211565b5080613ead565b82613ea5565b634e487b7160e01b83526011600452602483fd5b8b613bb160449282612f7f565b803b156107e55783809160248d6040519485938492630852cd8d60e31b845260048401525af180156141e1576141cc575b506141bf903090614a36565b808203613c145780613d65565b926141da6141bf9294612b07565b92906141b3565b6040513d86823e3d90fd5b634e487b7160e01b85526021600452602485fd5b908160209103126105b1575180151581036105b15790565b604051614276916001600160a01b031661423182612b50565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af16142706142f2565b91614322565b8051908161428357505050565b8280614293938301019101614200565b1561429b5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d1561431d573d9061430382612bc2565b916143116040519384612ba1565b82523d6000602084013e565b606090565b919290156143845750815115614336575090565b3b1561433f5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156143975750805190602001fd5b60405162461bcd60e51b815260206004820152908190610611906024830190612ae2565b600080808084335af16143cc6142f2565b50156143d55750565b60249060405190630b288dc560e21b82526004820152fd5b906020828203126105b15781516001600160401b0381116105b157612d0c9201612cca565b959492949391936040518081600080516020615b6183398151915260208154938481520190600052600080516020615ac18339815191529260005b81811061487157505061446292500382612ba1565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed978549181511561485f576144b56000916040519485928392635b10743960e11b8452604060048501526044840190612ae2565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105a557600092614842575b506144ef818388612e24565b95863410614823576145018734612f7f565b80614814575b506040519061451582612b6b565b6001600160481b0386811683527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020840190815260408085018d815261ffff8d81166060880190815292516315cfa3cb60e11b81529651909416600487015291516024860152905160448501525116606483015260008260848173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105a557614614926000928d9284926147f8575b506001600160401b03604051936145dd85612b35565b16835260018060a01b031660208301526040820152604051809381926311692f3760e31b83526020600484015260248301906130d8565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105a5576000916147d5575b5061ffff8816600052600080516020615a818339815191526020526040600020549383519385156147b95760005b8581106146dd5750505050505050927fe54e51e42099622516fa3b48e9733581c9dbdcb771cafb093f745a0532a35982949261ffff926146ae60c0966104416149cd565b906040519586526020860152604085015260608401521660808201526001600160401b03841660a0820152a190565b6001600160a01b036146ef8284612df0565b5116906146fc8187612df0565b5182600052600080516020615be183398151915260205261472860ff60406000205460101c1686612df0565b51833b156105b15761476e9361ffff8f936000948f8e906147808d6040519b8c998a988997634b5b050560e01b895216600488015260a0602488015260a4870190612e04565b85810360031901604487015290612ae2565b916064840152608483015203925af19182156105a5576147a5926147aa575b50612de1565b61466a565b6147b390612b07565b3861479f565b604051630ebc95af60e21b815261ffff8b166004820152602490fd5b6147f291503d806000833e6147ea8183612ba1565b8101906143ed565b3861463c565b61480d9192503d8086833e6147ea8183612ba1565b90386145c7565b61481d906143bb565b38614507565b6040516306a91e3760e51b815260048101889052346024820152604490fd5b6148589192503d806000833e6115e08183612ba1565b90386144e3565b6040516334e7b19560e11b8152600490fd5b84546001600160a01b031683526001948501948694506020909301920161444d565b92916148a1906104416149cd565b906000937f504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a918580a27f0000000000000000000000000000000000000000000000000000000000000000936002851015611e2f5784614936575060405163a9059cbb60e01b60208201526001600160a01b03909116602482015260448101919091529091506132d1906104de81606481016104d0565b9193600181036105b657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b15611619576040516340c10f1960e01b81526001600160a01b03919091166004820152602481019490945291929181908390604490829084905af19081156149c157506149b85750565b6132d190612b07565b604051903d90823e3d90fd5b600080604051602081019063313ce56760e01b8252600481526149ef81612b50565b51907f00000000000000000000000000000000000000000000000000000000000000005afa50614a1d6142f2565b6020818051810103126105b1576020612d0c9101612cbc565b6040516370a0823160e01b602082019081526001600160a01b039093166024808301919091528152600092839291614a6d81612b35565b51915afa50614a7a6142f2565b6020818051810103126105b1576020015190565b60ff1660ff81146117465760010190565b15614aa657565b634e487b7160e01b600052600160045260246000fd5b600080516020615ba18339815191525460ff8160081c16614aed600080516020615b61833981519152548214614a9f565b60005b818110614b7b575060005b818110614b14575050604060ff6132d192161115614a9f565b60018101808211611746575b828110614b365750614b3190612de1565b614afb565b614b7690614b71614b468461302f565b905490614b528461302f565b92909160018060a01b03809354600395861b1c16931b1c161415614a9f565b612de1565b614b20565b80614b71614b8b614ba29361302f565b905460039190911b1c6001600160a01b0316614ba7565b614af0565b6001600160a01b039081166000818152600080516020615be18339815191526020526040908190209051929190614bdd84612b35565b5460ff91614c19838316158015938488526020880197604087808460081c16159384158c5260101c1691019581875292614cd4575b5050614a9f565b600080516020615b4183398151915254946001600160401b0360019687868651161b1616151590511515916000968791600080516020615ba18339815191525497878960081c16935b848110614c96575b5050505050816132d196614c84869594614c8c9414614a9f565b151514614a9f565b5116911611614a9f565b8282614ca18361302f565b90549060031b1c1614614cbc57614cb790612de1565b614c62565b50919850849250839150614c849050826132d1614c6a565b90915081614ce5575b503880614c12565b90501538614cdd565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614614d2057565b604051633c64f99360e21b8152600490fd5b600080516020615c4183398151915254336001600160a01b039182161415919082614d78575b5050614d6057565b60405163e2a08e5d60e01b8152336004820152602490fd5b1633141590503880614d58565b60405190614d9282612b35565b8160406001600160401b03600080516020615c61833981519152546001600160481b0380821685528160481c16602085015260901c16910152565b90604051614dda81612b35565b60406001600160401b038294546001600160481b0380821685528160481c16602085015260901c16910152565b90600160481b600160901b0382549160481b1690600160481b600160901b031916179055565b600080516020615c618339815191529081546001600160481b03908181166001600160401b036008918184841c16801580615020575b15614ed1575050855471ffffffffffffffffff0000000000000000001916604886901b600160481b600160901b03161786555050505b825479ffffffffffffffff000000000000000000ffffffffffffffffff19169116174260901b67ffffffffffffffff60901b16179055565b86614edd612a90614d85565b926000614eea8383615831565b15614fb65750614f099291614efe91615853565b8388861c16906157c8565b610100600160481b039290841b831660ff861617614f278184615831565b15614fa8578160ff9282614f3e614f4b9487615853565b871c169084871c166157c8565b9116921b16175b614f5c8482615831565b614f8657600160481b600160901b039060481b1690600160481b600160901b031916178355614e99565b604051631e74e8fb60e31b815290831660048201528383166024820152604490fd5b5050905060ff915016614f52565b9493959290614fc890614fd293615853565b8389841c166157c8565b9260ff881694838087610100600160481b038098871b1617614ff48185615853565b851c1691841c160192831161500c57501b1617614f52565b634e487b7160e01b81526011600452602490fd5b5060ff851615614e63565b919080546001600160481b03808216916001600160401b03926008908483831c168015806151e7575b156150ba57505050508461506c6132d1959685614e07565b835467ffffffffffffffff60901b19919092161679ffffffffffffffff000000000000000000ffffffffffffffffff1990911617429190911660901b67ffffffffffffffff60901b16179055565b8590896150c9612a908a614dcd565b9360006150d68383615831565b156151915750916150ee6150f99260ff979894615853565b838c881c16906157c8565b610100600160481b039490861b85169116176151158184615831565b156151835760ff918161512b6151389386615853565b861c168784871c166157c8565b9116921b16175b6151498682615831565b615161579461515c6132d1959685614e07565b61506c565b604051631e74e8fb60e31b815290821660048201529085166024820152604490fd5b5050905060ff91501661513f565b9496506151ac93506151a291615853565b868a851c166157c8565b9160ff891693868086610100600160481b038097861b16176151ce8185615853565b841c1691831c16019186831161500c57501b161761513f565b5060ff841615615054565b604051906151ff82612b35565b60006040838281528260208201520152565b6152196151f2565b50612d0c612a95612a90614d85565b6152306151f2565b506000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b860205260406000206040519061526a82612b35565b80546001600160481b038116835260481c6001600160401b03166020830152600101546001600160a01b0316604082015290565b81156152a8570490565b634e487b7160e01b600052601260045260246000fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000169182156153525761533f828260ff936040610100600160481b0396015116420381615323602085019889519383875160081c160261529e565b9160081c1601915160081c1680821060001461534b5750615369565b9251169160081b161790565b9050615369565b506020015160ff16610100600160481b0317919050565b6001600160401b039081811161537d571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608490fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000161561548d5761540a6151f2565b50600160481b600160901b03615421612a90614d85565b610100600160481b0360ff61545c600080516020615c61833981519152968088549761544d8188615853565b60081c16908560081c166157c8565b92169160081b161760481b16906001600160401b0360901b4260901b1690600160481b600160d01b03191617179055565b5050565b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000161561548d576154ca6151f2565b506154d6612a90614d85565b90600160481b600160901b03600080516020615c6183398151915293845493816001600160401b0360901b4260901b16946155118184615853565b60081c16828260081c160182811160001461559d5750610100600160481b0360ff61553b84615369565b92169160081b1617906001600160481b038516906155598284615853565b80856001600160401b0360901b1988161760081c16908360081c161060001461559657505b60481b1691600160481b600160d01b03191617179055565b905061557e565b60ff61553b610100600160481b0392615369565b6001600160401b03807f0000000000000000000000000000000000000000000000000000000000000000161561344457610100600160481b0360ff61566b61ffff6132d1966155fe6151f2565b50169384600052600080516020615bc183398151915280602052615628612a906040600020614dcd565b60009687526020919091526040909520805467ffffffffffffffff60901b191642831660901b67ffffffffffffffff60901b1617815595819061544d8188615853565b92169160081b161790614e07565b6001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016156134445761ffff6132d1936156b86151f2565b5016600090808252600080516020615bc1833981519152806020526156e2612a9060408520614dcd565b91835260205260408220805467ffffffffffffffff60901b191642851660901b67ffffffffffffffff60901b1617815593839061571f8184615853565b60081c16838260081c160183811160001461578c5750610100600160481b0360ff61574985615369565b92169160081b1617918084546001600160481b0381169361576a8587615853565b5060081c16908360081c1610600014615784575090614e07565b905090614e07565b60ff615749610100600160481b0392615369565b9067ffffffffffffffff60481b82549160481b169067ffffffffffffffff60481b1916179055565b6001600160401b03918216908216039190821161174657565b60009182915b6001600160401b03908181168015615829576000190191821161581557169161580f90614a8e565b916157e7565b634e487b7160e01b85526011600452602485fd5b505050915090565b9061583c8183615853565b6001600160401b03809160081c169160081c161190565b60ff9182169116818103615865575050565b604051635ce6db6160e11b815260ff918216600482015291166024820152604490fd5b60ff811660081015612d0c5750600890565b9060ff8091169116039060ff821161174657565b60ff16604d811161174657600a0a90565b919060ff821660ff82168181146159135711156158f2576158e7612d0c93926158ec9261589a565b6158ae565b9061529e565b6158e7906158ff9261589a565b908181029181830414901517156117465790565b5050505090565b61594d61378e60ff92610100600160481b03949561593787615888565b90858116868316101561595857509586916158bf565b92169160081b161790565b90509586916158bf565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561599157565b604051631afcd79f60e31b8152600490fd5b6001600160a01b039081169081156159fe57600080516020615b0183398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020615b01833981519152546001600160a01b03163303615a3857565b60405163118cdaa760e01b8152336004820152602490fd5b600080516020615c218339815191526002815414615a6e5760029055565b604051633ee5aeb560e01b8152600490fdfeebcc9f646b0f459ff8f387587d536b0af3484cf442e1577400f322334e7d1ef047028352a8b3feae1a85fba43bc13f990568bb1637dce33d3dbfd791a0808b7f6c3cb3f3ae91330f31ba2bc0ff8855fc834fb66dc27e8e0b1a398617dabaa5a668dfeeddfa5e4e9adceec01a3aba274bdcbab3f6ac9956417a4332f2b08abdda9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930064bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022fd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f00758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e1ad78307a8b51804c575f26039dcb87c58925afb3b7c08732f3b21b942aed7a768561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d89efb21dcaedea63b55c44882f329622e13a8d0f5b947b3a372826208a9003da1549bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f852fa0677fef8612c6c15b518c9fa56761e9ed15cfd5c6e5399e5467985ac7ed9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00bfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12497c25289a27ec8c9be54d4a154cf80490d69bda989cdb8328232e08fea9220420a2646970667358221220ff24bb6218d11a60fad2e17b2c54e55dfe3f8155f61d7f10dfd1f2886b23efbc64736f6c63430008130033",isSuperArgs$5=t=>typeof t[0]=="string"||Array.isArray(t[0])||"_isInterface"in t[0];var jn;let NttManager__factory$2=(jn=class extends ContractFactory{constructor(...e){if(isSuperArgs$5(e))super(...e);else{const[s,l]=e;super(_abi$5,jn.linkBytecode(s),l)}}static linkBytecode(e){let s=_bytecode$5;return s=s.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),s}getDeployTransaction(e,s,l,d,u,p){return super.getDeployTransaction(e,s,l,d,u,p||{})}deploy(e,s,l,d,u,p){return super.deploy(e,s,l,d,u,p||{})}connect(e){return super.connect(e)}static createInterface(){return new Interface(_abi$5)}static connect(e,s){return new Contract(e,_abi$5,s)}},Ae(jn,"bytecode",_bytecode$5),Ae(jn,"abi",_abi$5),jn);const _abi$4=[{type:"constructor",inputs:[{name:"nttManager",type:"address",internalType:"address"},{name:"wormholeCoreBridge",type:"address",internalType:"address"},{name:"wormholeRelayerAddr",type:"address",internalType:"address"},{name:"specialRelayerAddr",type:"address",internalType:"address"},{name:"_consistencyLevel",type:"uint8",internalType:"uint8"},{name:"_gasLimit",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"WORMHOLE_TRANSCEIVER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"consistencyLevel",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"encodeWormholeTransceiverInstruction",inputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],outputs:[{name:"",type:"bytes",internalType:"bytes"}],stateMutability:"pure"},{type:"function",name:"gasLimit",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getNttManagerOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getNttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isVAAConsumed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"nttManager",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"nttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"parseWormholeTransceiverInstruction",inputs:[{name:"encoded",type:"bytes",internalType:"bytes"}],outputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],stateMutability:"pure"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"receiveMessage",inputs:[{name:"encodedMessage",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"receiveWormholeMessages",inputs:[{name:"payload",type:"bytes",internalType:"bytes"},{name:"additionalMessages",type:"bytes[]",internalType:"bytes[]"},{name:"sourceAddress",type:"bytes32",internalType:"bytes32"},{name:"sourceChain",type:"uint16",internalType:"uint16"},{name:"deliveryHash",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"sendMessage",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]},{name:"nttManagerMessage",type:"bytes",internalType:"bytes"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"setIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEvm",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setWormholePeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"specialRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ISpecialRelayer"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferTransceiverOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"wormhole",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormhole"}],stateMutability:"view"},{type:"function",name:"wormholeRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormholeRelayer"}],stateMutability:"view"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ReceivedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"ReceivedRelayedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"RelayingInfo",inputs:[{name:"relayingType",type:"uint8",indexed:!1,internalType:"uint8"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"deliveryPayment",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"SendTransceiverMessage",inputs:[{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"message",type:"tuple",indexed:!1,internalType:"struct TransceiverStructs.TransceiverMessage",components:[{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"nttManagerPayload",type:"bytes",internalType:"bytes"},{name:"transceiverPayload",type:"bytes",internalType:"bytes"}]}],anonymous:!1},{type:"event",name:"SetIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isEvm",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetWormholePeer",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"CallerNotNttManager",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CallerNotRelayer",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CannotRenounceTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"}]},{type:"error",name:"CannotTransferTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"},{name:"newOwner",type:"address",internalType:"address"}]},{type:"error",name:"InvalidBoolVal",inputs:[{name:"val",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidBoolValue",inputs:[{name:"value",type:"uint256",internalType:"BooleanFlag"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidRelayingConfig",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidVaa",inputs:[{name:"reason",type:"string",internalType:"string"}]},{type:"error",name:"InvalidWormholeChainIdZero",inputs:[]},{type:"error",name:"InvalidWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidWormholePeerZeroAddress",inputs:[]},{type:"error",name:"LengthMismatch",inputs:[{name:"encodedLength",type:"uint256",internalType:"uint256"},{name:"expectedLength",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerAlreadySet",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"TransferAlreadyCompleted",inputs:[{name:"vaaHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"UnexpectedAdditionalMessages",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"deployer",type:"address",internalType:"address"},{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedRecipientNttManagerAddress",inputs:[{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"expectedRecipientNttManagerAddress",type:"bytes32",internalType:"bytes32"}]}],_bytecode$4="0x6101c06040818152346200031d5760c082620036f8803803809162000025828562000322565b8339810103126200031d576200003b826200035c565b906020906200004c8285016200035c565b926200005a8286016200035c565b62000068606087016200035c565b9160808701519660ff881688036200031d5760a00151947ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080549060ff82881c166200030c5782906001600160401b03906002600160401b031984831601620002c9575b50505050306080528160a052845190637e062a3560e11b8252808260048160018060a01b038097165afa908115620002be576000916200027f575b50905060c0523360e0528061012096168652806101409216825261016092168252610180924684526101009687526101a094855251946133869687620003728839608051876130f1015260a051878181610dc201528181611503015281816118860152818161200b015281816121ba015281816128960152612a9a015260c051878181610e4d01528181611c490152818161220c015281816126430152612d32015260e05187610cca01525186818161076301528181610f000152818161122a01528181611bb401528181611da701526123510152518581816101fd01528181610bbe01528181610f2b0152818161125601528181611b5c01528181611dd40152818161225c01528181612db801528181612e980152612f3601525184818161079c015281816115ec01528181611a00015281816122ac0152612c7b015251838181610a1e01528181611bf2015281816122fc0152612d6f015251826102410152518181816106a1015281816119cb0152612c500152f35b82813d8311620002b6575b62000296818362000322565b81010312620002b35750620002ab906200035c565b803862000107565b80fd5b503d6200028a565b86513d6000823e3d90fd5b6001600160401b0319909316811790925586519182527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291a138818180620000cc565b865163f92ee8a960e01b8152600490fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200034657604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200031d5756fe6080604081815260048036101561001557600080fd5b600092833560e01c908163036de8af14612561575080630900f0101461203a5780630b4a1e891461139157806324fb21db14611ff6578063320d0d8e14611fb357806348b330d614611f6d5780634b5b0505146117f55780634b795b2114611754578063529dca321461154a57806358f709ba146114db578063657b3b2f1461143a57806366152efc146113d9578063689f90c314611396578063694977d7146113915780637ab564031461113157806380eb3239146110f55780638129fc1c14610c3657806381e8ec7f14610bed57806384acd1bb14610ba95780638da5cb5b14610b735780638fd3ab8014610a4d57806390ea542814610a09578063935dec07146109c757806396dddc63146109125780639fd0506d146108ca578063b187bd2614610889578063b5634c731461083c578063bc7f6d37146107f9578063d8d28418146107cb578063da25b72514610787578063e8dfd50814610749578063f2fde38b14610714578063f48066a8146106c8578063f68016b7146106895763f953cec7146101a457600080fd5b346106855760209081600319360112610681578035906001600160401b038581841161067e576101da6101f99436908501612754565b86518095819263607ec5ef60e11b83528887840152602483019061283d565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156106745786938790889261046f575b501561044c57507f000000000000000000000000000000000000000000000000000000000000000046810361043057506060830161ffff918282511660005260008051602061327183398151915286528660002054608086019081518091036103ff575061014086016102c7815160005260008051602061329183398151915260205260ff6040600020541690565b6103e657927ff6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0608060e0948b8a8e9996896103286103799d9b516000526000805160206132918339815191526020526040600020600160ff19825416179055565b519360a08989511692519301511692519384528d8401528d8301526060820152a15116940151906103576128f9565b5061036061291f565b508651630453806b60e11b815293849283928301612a78565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156103dc576103b39450859186946103b6575b50815191015191612a97565b80f35b9093506103d591503d8087833e6103cd8183612718565b8101906129fa565b92386103a7565b84513d87823e3d90fd5b518851632d30ec0360e21b815280870191909152602490fd5b83518951633cd8e72b60e11b815290861661ffff1687820190815260208101929092529081900360400190fd5b0390fd5b826044918751916377d879fb60e01b8352820152466024820152fd5b8551634771719b60e11b815280840186905290819061042c90602483019061283d565b945050503d8087853e6104828185612718565b830160609081858203126106705784518381116105f45785016101609283828403126105f85788519384018481108682111761065b5789526104c382613009565b84526104d0888301613017565b888501526104df898301613017565b898501528082015161ffff8116810361065757818501526080808301518186015261050c60a08401612fa1565b60a086015261051d60c08401613009565b60c086015260e0830151868111610653578461053a918501612977565b60e086015261010061054d818501613017565b90860152610120908184015187811161064f57840185601f8201121561064f5780518c9461058661057d83612803565b96519687612718565b8186528c8087019260071b8401019288841161064b578d01915b8383106105fc57505050505084015261014080910151908301526105c5868601613028565b9487810151908482116105f857019080601f830112156105f45781516105ec928801612940565b909338610238565b8880fd5b8980fd5b84838a031261064b578d8f918287935190610616826126e2565b86518252838701518483015261062d818801613009565b9082015261063c858701613009565b858201528152019201916105a0565b8f80fd5b8c80fd5b8b80fd5b8a80fd5b604187634e487b7160e01b6000525260246000fd5b8780fd5b85513d88823e3d90fd5b80fd5b8380fd5b8280fd5b5050346106c457816003193601126106c457602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5080fd5b5050346106c45760203660031901126106c45760209061ffff6106e9612672565b166000526000805160206132b1833981519152825261070b81600020546130ad565b90519015158152f35b8382346106c45760203660031901126106c457356001600160a01b03811681036106c4576103b3906107446131c1565b613190565b5050346106c457816003193601126106c4576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106c457816003193601126106c4576020906107e8612881565b90516001600160a01b039091168152f35b5050346106c45760203660031901126106c45760209061ffff61081a612672565b16600052600080516020613251833981519152825261070b81600020546130ad565b5034610685578160031936011261068557610855612672565b92602435906001600160401b03821161067e57509261087c6108829260209536910161279b565b90612bda565b9051908152f35b5050346106c457816003193601126106c45760209060027f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b825802254149051908152f35b5050346106c457816003193601126106c4577fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12495490516001600160a01b039091168152602090f35b508290346106c457826003193601126106c45761092d612672565b6109356127f4565b9161093e6131c1565b61ffff82169081156109b957507f4add57d97a7bf5035340ea1212aeeb3d4d3887eb1faf3821a8224c3a6956a10c93946109b39161097b856130df565b906000526000805160206132b18339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b0390a180f35b8551630f7662c960e21b8152fd5b5050346106c45760203660031901126106c45760209061ffff6109e8612672565b16600052600080516020613271833981519152825280600020549051908152f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b509034610685578260031936011261068557610a676130ee565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b038082166001810190828211610b605760ff84871c16908115610b53575b50610b4357169360ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e541615610b35575068ffffffffffffffffff19168317680100000000000000001768ff000000000000000019169055519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a180f35b8351632866815360e11b8152fd5b845163f92ee8a960e01b81528690fd5b9050828216111538610aaf565b634e487b7160e01b885260118752602488fd5b5050346106c457816003193601126106c4576000805160206132f18339815191525490516001600160a01b039091168152602090f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106c457816003193601126106c4578051610c3291610c0e826126fd565b60058252640302e312e360dc1b60208301525191829160208352602083019061283d565b0390f35b5034610685578260031936011261068557610c4f6130ee565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549160ff83831c1615906001600160401b0393848116801590816110ed575b60011490816110e3575b1590816110da575b506110cb5767ffffffffffffffff1981166001178655826110ac575b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116338190036110905750610cfc61314f565b610d0461314f565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055610db0610d33612881565b610d3b61314f565b610d4361314f565b610d4b61314f565b60017f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022557fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124980546001600160a01b03191633179055610da861314f565b61074461314f565b8351634b4fd03b60e01b8152602095907f0000000000000000000000000000000000000000000000000000000000000000831687828681845afa918215611086578a9261104f575b508651631dcbf42b60e11b81529188838781855afa928315611045578b9361100e575b5087519360a085019081118582101761065b578852639c23bd3b60e01b845288840191825260ff9081168489019081527f00000000000000000000000000000000000000000000000000000000000000008616606086019081529382166080860190815289516301529f6160e21b815295516001600160e01b031916888701529251602486015251811660448501529151606484015251166084820152878160a48173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156110045791610f27939187938a91610fe2575b508987518096819582946358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fb5565b03927f0000000000000000000000000000000000000000000000000000000000000000165af18015610fd857610fa0575b50610f61578380f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29268ff00000000000000001981541690555160018152a13880808380f35b8381813d8311610fd1575b610fb58183612718565b81010312610fcd57610fc690612fa1565b5038610f58565b8580fd5b503d610fab565b83513d88823e3d90fd5b610ffe91503d808c833e610ff68183612718565b810190613035565b38610eea565b85513d8a823e3d90fd5b9092508881813d831161103e575b6110268183612718565b810103126106575761103790613009565b9138610e1b565b503d61101c565b88513d8d823e3d90fd5b9091508781813d831161107f575b6110678183612718565b810103126105f85761107890613009565b9038610df8565b503d61105d565b87513d8c823e3d90fd5b82604491865191636345072160e11b8352820152336024820152fd5b68ffffffffffffffffff19166801000000000000000117855538610cbf565b50825163f92ee8a960e01b8152fd5b90501538610ca3565b303b159150610c9b565b849150610c91565b50913461067e57602036600319011261067e575061070b6020923560005260008051602061329183398151915260205260ff6040600020541690565b503461068557816003193601126106855761114a612672565b602435916111566131c1565b61ffff80831690811561138157841561137157816000526000805160206132718339815191529160209280845287600020548061134857508160005283528587600020558651916111a6836126c7565b630c7e33e160e11b8352838301918252878301878152885163077650fb60e51b815293516001600160e01b031916868501529151166024830152516044820152868160648173__$93083e246e55d56d98f3df2872cd16bfd0$__5af492831561133e576112519383928991611324575b5087516358cd21bf60e11b815294859283927f0000000000000000000000000000000000000000000000000000000000000000918401612fb5565b0381897f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610674576112c8575b5050915161ffff909216825260208201527fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d3264669080604081016109b3565b81813d831161131d575b6112dc8183612718565b81010312611319577fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d326466936113126109b392612fa1565b509361128b565b8480fd5b503d6112d2565b61133891503d808b833e610ff68183612718565b38611216565b86513d89823e3d90fd5b885163b55eeae960e01b815261ffff881681880190815260208101929092529081906040010390fd5b855163137063ef60e11b81528390fd5b8551630f7662c960e21b81528390fd5b61262d565b5050346106c457816003193601126106c45760209060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb541690519015158152f35b50913461067e57602036600319011261067e57508051916113f9836126ac565b35908115159182810361143557610c32935280519160f81b602083015260018252611423826126fd565b5191829160208352602083019061283d565b600080fd5b508290346106c457826003193601126106c457611455612672565b61145d6127f4565b916114666131c1565b61ffff82169081156109b957507f528b18a533e892b5401d1fb63597275df9d2bb45b13e7695c3147cd07b9746c393946109b3916114a3856130df565b906000526000805160206132d18339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b5034610685576020366003190112610685578035916001600160a01b038084168403611319577f000000000000000000000000000000000000000000000000000000000000000016330361153357836103b3846131fa565b60249250519063c5aa615360e01b82523390820152fd5b5060a0366003190112610685576001600160401b038135818111611319576115759036908401612754565b602492833593838511611750573660238601121561175057848201359361159b85612803565b946115a888519687612718565b808652602096838888019260051b8201019236841161065757848201925b84841061172a5750505050506044356064359461ffff86169081870361143557608435937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361171757826000526000805160206132718339815191528952838a60002054036116f057848b52600080516020613291833981519152895260ff8a8c2054166116dc5750611685846000526000805160206132918339815191526020526040600020600160ff19825416179055565b516116cc57606061037995938a95937ff557dbbb087662f52c815f6c7ee350628a37a51eae9608ff840d996b65f87475938b519283528a8301528a820152a16103576128f9565b875163c504ea2960e01b81528490fd5b8951632d30ec0360e21b8152808701869052fd5b8951633cd8e72b60e11b815261ffff89168188019081526020810186905281906040010390fd5b8951631c26958960e01b81523381880152fd5b833582811161064f578a916117458392893691880101612754565b8152019301926115c6565b8680fd5b508290346106c457826003193601126106c45761176f612672565b6117776127f4565b916117806131c1565b61ffff82169081156109b957507f0fe301480713b2c2072ee91b3bcfcbf2c0014f0447c89046f020f0f80727003c93946109b3916117bd856130df565b906000526000805160206132518339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b509060031960a0368201126106815761180c612672565b9060249283356001600160401b03908181116106705761182f903690880161279b565b906044358181116105f4576118479036908901612754565b90608435977f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00976002895414611f5e57600289556001600160a01b03937f000000000000000000000000000000000000000000000000000000000000000085163303611f4857908b61190181936119108a519b6118c38d6126ac565b848d528b516304616c8f60e21b81526309945ff160e41b89820152338782015260648035604483015260a0908201529c8d94859460a486019061283d565b9184830301608485015261283d565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415611f3e5782988395611eec575b50611948602080980151612b5f565b80511580611edd575b15611b34575050928a928592838989976119c361ffff8f16968792836000526000805160206132718339815191528c526119976119918660002054612fdd565b9b612fdd565b94519c8d9b8c9a8b9a6312d729bd60e21b8c528b0152169088015260e0604488015260e487019061283d565b9360648601527f0000000000000000000000000000000000000000000000000000000000000000608486015260a48501521660c4830152039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611b2a57611ab9575b5061ffff926060611a9e84611ab2946000805160206133318339815191528460019c6000805160206133118339815191529b99519060008252848201523485820152a15b815197889716875281818801528451828801528401518387015283015160808087015260c086019061283d565b910151838203603f190160a085015261283d565b0390a15580f35b9391928185813d8311611b23575b611ad18183612718565b81010312610670576060611a9e61ffff95611ab2946000805160206133318339815191528460019c611b116000805160206133118339815191529c612fa1565b509c5050509450949650505092611a2d565b503d611ac7565b83513d8a823e3d90fd5b919394959250959697989a50511580611eb1575b15611d87578651631a90a21960e01b8152937f000000000000000000000000000000000000000000000000000000000000000082169087868681855afa958d8715611d7c57908993929197611d49575b50869291611bdc918b519889809481936358cd21bf60e11b83527f0000000000000000000000000000000000000000000000000000000000000000908c8401612fb5565b03925af1948515611d3f578c95611d08575b50817f00000000000000000000000000000000000000000000000000000000000000001690340390348211611cf45790818d9796959493923b15610670578c96889660849561ffff8d519a8b998a98630b5624e160e11b8a527f0000000000000000000000000000000000000000000000000000000000000000169089015216908601528760448601521660648401525af18015611cea57611cd2575b50600080516020613311833981519152936060611a9e856001999560008051602061333183398151915284611ab29761ffff9a51908e8252848201523485820152a1611a71565b611cde90969296612683565b610fcd57938538611c8b565b84513d84823e3d90fd5b83601186634e487b7160e01b600052526000fd5b9094508681813d8311611d38575b611d208183612718565b8101031261065357611d3190612fa1565b9338611bee565b503d611d16565b88513d8e823e3d90fd5b9196509181813d8111611d75575b611d618183612718565b810103126114355751948791611bdc611b98565b503d611d57565b8a51903d90823e3d90fd5b9050611dce9350849286999799518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fb5565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611ea757611e49575b5091611ab26001956060611a9e8560008051602061331183398151915297600080516020613331833981519152848d61ffff9a519060028252848201523485820152a1611a71565b9181838195933d8311611ea0575b611e618183612718565b81010312611750576001956060611a9e611ab29360008051602061331183398151915297611e9161ffff98612fa1565b50959750955050509550611e01565b503d611e57565b83513d89823e3d90fd5b5061ffff8a166000526000805160206132518339815191528652611ed887600020546130ad565b611b48565b50611ee78b61305a565b611951565b985093503d80838a3e611eff818a612718565b88019787818a03126106855780518581116106815789611f20918301612991565b98602082015186811161131957611f379201612977565b9338611939565b87513d84823e3d90fd5b509085519063c5aa615360e01b82523390820152fd5b508451633ee5aeb560e01b8152fd5b50913461067e57602036600319011261067e578235906001600160401b03821161067e5750611fa4602093611fa992369101612754565b612b5f565b9051905115158152f35b5050346106c45760203660031901126106c45760209061ffff611fd4612672565b166000526000805160206132d1833981519152825261070b81600020546130ad565b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5090346106855760209182600319360112610681576001600160a01b03918135838116908181036117505761206d6131c1565b6120756130ee565b3b15612508577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e9384549361210260ff861615613132565b60ff199485166001178655303b1561175057825163011fa75760e71b81528781868183305af180156123fc576124f5575b50825163689f90c360e01b815282818681305afa9081156123fc5788916124c0575b501561218f575b505050507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b82516324fb21db60e01b815282818681305afa9081156123fc57906121e19189916124a3575b5082167f0000000000000000000000000000000000000000000000000000000000000000831614613132565b8251630b4a1e8960e01b815282818681305afa9081156123fc5790612233918991612476575b5082167f0000000000000000000000000000000000000000000000000000000000000000831614613132565b82516384acd1bb60e01b815282818681305afa80156123fc57889061243e575b612283915082167f0000000000000000000000000000000000000000000000000000000000000000831614613132565b825163da25b72560e01b815282818681305afa80156123fc578890612406575b6122d3915082167f0000000000000000000000000000000000000000000000000000000000000000831614613132565b825163121d4a8560e31b815282818681305afa9081156123fc5788916123c2575b5081612324927f000000000000000000000000000000000000000000000000000000000000000016911614613132565b8082518094631d1bfaa160e31b825281305afa9182156123b957508591612382575b50612379915060ff807f000000000000000000000000000000000000000000000000000000000000000016911614613132565b3880808061215c565b905081813d83116123b2575b6123988183612718565b81010312610681576123ac61237991613009565b38612346565b503d61238e565b513d87823e3d90fd5b90508281813d83116123f5575b6123d98183612718565b81010312610670575190808216820361067057906123246122f4565b503d6123cf565b84513d8a823e3d90fd5b508281813d8311612437575b61241c8183612718565b8101031261067057518181168103610670576122d3906122a3565b503d612412565b508281813d831161246f575b6124548183612718565b81010312610670575181811681036106705761228390612253565b503d61244a565b6124969150843d861161249c575b61248e8183612718565b810190612862565b38612207565b503d612484565b6124ba9150843d861161249c5761248e8183612718565b386121b5565b90508281813d83116124ee575b6124d78183612718565b81010312610670576124e890613028565b38612155565b503d6124cd565b61250190979197612683565b9538612133565b815162461bcd60e51b8152808401869052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b828591346106855760203660031901126106855781356001600160a01b03818116939184900361131957806000805160206132f18339815191525416927fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124992835492831694338614159081612622575b5061260d5750506001600160a01b031916831790557f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b63e2a08e5d60e01b8252339082015260249150fd5b9050331415886125d1565b34611435576000366003190112611435576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6004359061ffff8216820361143557565b6001600160401b03811161269657604052565b634e487b7160e01b600052604160045260246000fd5b602081019081106001600160401b0382111761269657604052565b606081019081106001600160401b0382111761269657604052565b608081019081106001600160401b0382111761269657604052565b604081019081106001600160401b0382111761269657604052565b90601f801991011681019081106001600160401b0382111761269657604052565b6001600160401b03811161269657601f01601f191660200190565b81601f820112156114355780359061276b82612739565b926127796040519485612718565b8284526020838301011161143557816000926020809301838601378301015290565b9190916040818403126114355760408051916001600160401b0391830182811184821017612696576040528294813560ff811681036114355784526020820135928311611435576020926127ef9201612754565b910152565b60243590811515820361143557565b6001600160401b0381116126965760051b60200190565b60005b83811061282d5750506000910152565b818101518382015260200161281d565b906020916128568151809281855285808601910161281a565b601f01601f1916010190565b9081602091031261143557516001600160a01b03811681036114355790565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156128ed576000916128d2575090565b6128ea915060203d811161249c5761248e8183612718565b90565b6040513d6000823e3d90fd5b60405190612906826126e2565b6060808360008152600060208201528160408201520152565b6040519061292c826126c7565b606060408360008152600060208201520152565b9092919261294d81612739565b9161295b6040519384612718565b82948284528282011161143557602061297593019061281a565b565b9080601f830112156114355781516128ea92602001612940565b919060808382031261143557604051906129aa826126e2565b819380518352602081015160208401526040810151916001600160401b039283811161143557816129dc918401612977565b60408501526060820151928311611435576060926127ef9201612977565b9190604083820312611435578251906001600160401b03918281116114355781612a25918601612991565b936020810151908382116114355701906060828203126114355760405192612a4c846126c7565b8251845260208301516020850152604083015190811161143557612a709201612977565b604082015290565b6309945ff160e41b81526040602082018190526128ea9291019061283d565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690818103612b415750803b156114355761ffff60008094612b27604080519889978896879563275e091560e21b875216600486015260248501526060604485015280516064850152602081015160848501520151606060a484015260c483019061283d565b03925af180156128ed57612b385750565b61297590612683565b60449250604051916339dee99160e11b835260048301526024820152fd5b9060405191612b6d836126ac565b6000835282815115612bd55750600181015160fe8116612bb95760ff16151583525160018103612b9a5750565b604490604051906355c5b3e360e11b8252600482015260016024820152fd5b60405163f7a37b0760e01b815260ff9091166004820152602490fd5b925050565b90612be9602080920151612b5f565b51612f205761ffff8216906000908282526000805160206132d18339815191528152604093612c1a858420546130ad565b80612ef9575b612ee157612c2d9061305a565b15612cf45750825163c23ee3c360e01b81526004810192909252602482018190527f0000000000000000000000000000000000000000000000000000000000000000604483015282826064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315612cea578193612cb9575b50505090565b9091809350813d8311612ce3575b612cd18183612718565b8101031261067e575051388080612cb3565b503d612cc7565b51903d90823e3d90fd5b8282939492526000805160206132518339815191528152612d17828420546130ad565b15612e7f57815163209d173960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820195909552604481018490529381856064817f000000000000000000000000000000000000000000000000000000000000000085165afa948515612e72578495612e43575b509080600492845193848092631a90a21960e01b82527f0000000000000000000000000000000000000000000000000000000000000000165afa928315612e3a57508392612e0c575b50508201809211612df8575090565b634e487b7160e01b81526011600452602490fd5b90809250813d8311612e33575b612e238183612718565b810103126106c457513880612de9565b503d612e19565b513d85823e3d90fd5b9094508181813d8311612e6b575b612e5b8183612718565b8101031261068157519381612da0565b503d612e51565b50505051903d90823e3d90fd5b8151631a90a21960e01b815291935090919080836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa938415612ed657508193612cb95750505090565b51913d9150823e3d90fd5b845163251268db60e21b815260048101859052602490fd5b508383526000805160206132b18339815191528252612f1a858420546130ad565b15612c20565b604051631a90a21960e01b8152915080826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156128ed57600091612f75575b50905090565b82813d8311612f9a575b612f898183612718565b8101031261067e5750518038612f6f565b503d612f7f565b51906001600160401b038216820361143557565b9060ff612fd66040929594956000855260606020860152606085019061283d565b9416910152565b8060a01c612ff1576001600160a01b031690565b6024906040519063033b960d60e41b82526004820152fd5b519060ff8216820361143557565b519063ffffffff8216820361143557565b5190811515820361143557565b906020828203126114355781516001600160401b038111611435576128ea9201612977565b61ffff16806000526000805160206132d18339815191526020526130826040600020546130ad565b908161308c575090565b90506000526000805160206132b18339815191526020526128ea6040600020545b80156130d957600181146130d3576024906040519063b998bad560e01b82526004820152fd5b50600190565b50600090565b156130e957600190565b600090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461312057565b604051633c64f99360e21b8152600490fd5b1561313957565b634e487b7160e01b600052600160045260246000fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561317e57565b604051631afcd79f60e31b8152600490fd5b6001600160a01b038116156131a857612975906131fa565b604051631e4fbdf760e01b815260006004820152602490fd5b6000805160206132f1833981519152546001600160a01b031633036131e257565b60405163118cdaa760e01b8152336004820152602490fd5b6000805160206132f183398151915280546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a356fed4cbc7742a1e11dcc33209ac33862ef146cfcb6d7f860df12df42105dfedb1c948c66ef0992b4bcc14f2551075db9459fc23bf706abb76034f1c66c1ba2846845e6aacb3f16e5b01c8b072a0ab4c38e919266014a45db863ee64a4580fb3e7e2e79d2e5e46f62be2ac831294e423b664f30320fb9ebaefd78a978cafe07c0f8c16ee6ac6bf7a8d7c37112a9426e00852b215ac4f5c50536beb6c95f1ba47b4af9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930079376a0dc6cbfe6f6f8f89ad24c262a8c6233f8df181d3fe5abb2e2442e8c738c3192e083c87c556db539f071d8a298869f487e951327b5616a6f85ae3da958ea264697066735822122034563781985a1b9124e36fffc44a6c32ed3932670b1c579b553016e6928c9abb64736f6c63430008130033",isSuperArgs$4=t=>typeof t[0]=="string"||Array.isArray(t[0])||"_isInterface"in t[0];var Fn;let WormholeTransceiver__factory$2=(Fn=class extends ContractFactory{constructor(...e){if(isSuperArgs$4(e))super(...e);else{const[s,l]=e;super(_abi$4,Fn.linkBytecode(s),l)}}static linkBytecode(e){let s=_bytecode$4;return s=s.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),s}getDeployTransaction(e,s,l,d,u,p,m){return super.getDeployTransaction(e,s,l,d,u,p,m||{})}deploy(e,s,l,d,u,p,m){return super.deploy(e,s,l,d,u,p,m||{})}connect(e){return super.connect(e)}static createInterface(){return new Interface(_abi$4)}static connect(e,s){return new Contract(e,_abi$4,s)}},Ae(Fn,"bytecode",_bytecode$4),Ae(Fn,"abi",_abi$4),Fn);const _abi$3=[{type:"constructor",inputs:[{name:"_token",type:"address",internalType:"address"},{name:"_mode",type:"uint8",internalType:"enum IManagerBase.Mode"},{name:"_chainId",type:"uint16",internalType:"uint16"},{name:"_rateLimitDuration",type:"uint64",internalType:"uint64"},{name:"_skipRateLimiting",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"NTT_MANAGER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"attestationReceived",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"cancelOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"chainId",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"completeInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"completeOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"executeMsg",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"message",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getCurrentInboundCapacity",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getCurrentOutboundCapacity",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getInboundLimitParams",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"view"},{type:"function",name:"getInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.InboundQueuedTransfer",components:[{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipient",type:"address",internalType:"address"}]}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getMode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getOutboundLimitParams",inputs:[],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"pure"},{type:"function",name:"getOutboundQueuedTransfer",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.OutboundQueuedTransfer",components:[{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"sender",type:"address",internalType:"address"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}]}],stateMutability:"view"},{type:"function",name:"getPeer",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct INttManager.NttManagerPeer",components:[{name:"peerAddress",type:"bytes32",internalType:"bytes32"},{name:"tokenDecimals",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getThreshold",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getTransceiverInfo",inputs:[],outputs:[{name:"",type:"tuple[]",internalType:"struct TransceiverRegistry.TransceiverInfo[]",components:[{name:"registered",type:"bool",internalType:"bool"},{name:"enabled",type:"bool",internalType:"bool"},{name:"index",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getTransceivers",inputs:[],outputs:[{name:"result",type:"address[]",internalType:"address[]"}],stateMutability:"pure"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"payable"},{type:"function",name:"isMessageApproved",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isMessageExecuted",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"messageAttestations",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"count",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"mode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"enum IManagerBase.Mode"}],stateMutability:"view"},{type:"function",name:"nextMessageSequence",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"},{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"rateLimitDuration",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"removeTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setInboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"},{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setOutboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"},{name:"decimals",type:"uint8",internalType:"uint8"},{name:"inboundLimit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setThreshold",inputs:[{name:"threshold",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"token",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"tokenDecimals",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"transceiverAttestedToMessage",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"shouldQueue",type:"bool",internalType:"bool"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unpause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"InboundTransferQueued",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"MessageAlreadyExecuted",inputs:[{name:"sourceNttManager",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"msgHash",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"MessageAttestedTo",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"index",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OutboundTransferCancelled",inputs:[{name:"sequence",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipient",type:"address",indexed:!1,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OutboundTransferQueued",inputs:[{name:"queueSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"OutboundTransferRateLimited",inputs:[{name:"sender",type:"address",indexed:!0,internalType:"address"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"currentCapacity",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"PeerUpdated",inputs:[{name:"chainId_",type:"uint16",indexed:!0,internalType:"uint16"},{name:"oldPeerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"oldPeerDecimals",type:"uint8",indexed:!1,internalType:"uint8"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"peerDecimals",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"ThresholdChanged",inputs:[{name:"oldThreshold",type:"uint8",indexed:!1,internalType:"uint8"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverAdded",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"transceiversNum",type:"uint256",indexed:!1,internalType:"uint256"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverRemoved",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransferRedeemed",inputs:[{name:"digest",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"TransferSent",inputs:[{name:"recipient",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"msgSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"BurnAmountDifferentThanBalanceDiff",inputs:[{name:"burnAmount",type:"uint256",internalType:"uint256"},{name:"balanceDiff",type:"uint256",internalType:"uint256"}]},{type:"error",name:"CallerNotTransceiver",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CancellerNotSender",inputs:[{name:"canceller",type:"address",internalType:"address"},{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"CapacityCannotExceedLimit",inputs:[{name:"newCurrentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"newLimit",type:"uint72",internalType:"TrimmedAmount"}]},{type:"error",name:"DeliveryPaymentTooLow",inputs:[{name:"requiredPayment",type:"uint256",internalType:"uint256"},{name:"providedPayment",type:"uint256",internalType:"uint256"}]},{type:"error",name:"DisabledTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"InboundQueuedTransferNotFound",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InboundQueuedTransferStillQueued",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidMode",inputs:[{name:"mode",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidPeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidPeerChainIdZero",inputs:[]},{type:"error",name:"InvalidPeerDecimals",inputs:[]},{type:"error",name:"InvalidPeerSameChainId",inputs:[]},{type:"error",name:"InvalidPeerZeroAddress",inputs:[]},{type:"error",name:"InvalidRecipient",inputs:[]},{type:"error",name:"InvalidRefundAddress",inputs:[]},{type:"error",name:"InvalidTargetChain",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"thisChain",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidTransceiverZeroAddress",inputs:[]},{type:"error",name:"MessageNotApproved",inputs:[{name:"msgHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NoEnabledTransceivers",inputs:[]},{type:"error",name:"NonRegisteredTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotEnoughCapacity",inputs:[{name:"currentCapacity",type:"uint256",internalType:"uint256"},{name:"amount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"NumberOfDecimalsNotEqual",inputs:[{name:"decimals",type:"uint8",internalType:"uint8"},{name:"decimalsOther",type:"uint8",internalType:"uint8"}]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OutboundQueuedTransferNotFound",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}]},{type:"error",name:"OutboundQueuedTransferStillQueued",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerNotRegistered",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RefundFailed",inputs:[{name:"refundAmount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"RetrievedIncorrectRegisteredTransceivers",inputs:[{name:"retrieved",type:"uint256",internalType:"uint256"},{name:"registered",type:"uint256",internalType:"uint256"}]},{type:"error",name:"StaticcallFailed",inputs:[]},{type:"error",name:"ThresholdTooHigh",inputs:[{name:"threshold",type:"uint256",internalType:"uint256"},{name:"transceivers",type:"uint256",internalType:"uint256"}]},{type:"error",name:"TooManyTransceivers",inputs:[]},{type:"error",name:"TransceiverAlreadyAttestedToMessage",inputs:[{name:"nttManagerMessageHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"TransceiverAlreadyEnabled",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"TransferAmountHasDust",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"dust",type:"uint256",internalType:"uint256"}]},{type:"error",name:"UndefinedRateLimiting",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"expectedOwner",type:"address",internalType:"address"},{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedMsgValue",inputs:[]},{type:"error",name:"ZeroAmount",inputs:[]},{type:"error",name:"ZeroThreshold",inputs:[]}],_bytecode$3="0x61016034620005cb57601f620065cb38819003918201601f19168301916001600160401b038311848410176200057e5780849260a094604052833981010312620005cb578051906001600160a01b0382168203620005cb576020810151916002831015620005cb5760408201519161ffff83168303620005cb576060810151906001600160401b03821690818303620005cb576080015180159182158203620005cb5715809281620005c2575b508215620005a6575b505062000594576080527f8561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d8954620001147e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e15460ff8360081c1614620005d0565b7ffd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f5460005b60ff8360081c168110620003f157505060005b60ff8260081c1681106200035d5750604060ff6200016d92161115620005d0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c166200034b576002600160401b03196001600160401b03821601620002ff575b50503060a05260c0526101009182526101209081526101404681523360e05260405191615f7d93846200064e85396080518481816114d401528181611b1401528181611fb1015281816129fc01528181613447015281816139cf0152818161404b015281816155690152818161567c0152818161573c0152818161585b0152615923015260a05184614faf015260c0518481816102900152818161051401528181610561015281816128e80152818161383f01528181613ec90152818161478701528181614bc60152614c76015260e05184611c590152518381816104ab0152818161202a0152818161217001528181612936015281816138c101528181613f460152614b4e01525182818161137c01528181611e500152818161299f01526133d101525181818161044901528181613abb01528181614113015281816146580152614b000152f35b6001600160401b0319166001600160401b039081179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880620001b6565b60405163f92ee8a960e01b8152600490fd5b60018101808211620003db575b60ff8360081c1681106200038a57506200038490620005ee565b6200014c565b620003d590620003cf6200039e84620005fe565b9054620003ab84620005fe565b9054600391821b1c6001600160a01b039081169390911b9190911c161415620005d0565b620005ee565b6200036a565b634e487b7160e01b600052601160045260246000fd5b620003fc81620005fe565b9054600382901b81901c6001600160a01b031660009081527f49bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f602052604090819020905192906001600160401b0360608501908111908511176200057e5760608401604052546200049e60ff821615801592838752602087019360ff808360081c1615928315875260101c16908160408a01529262000561575b5050620005d0565b60018060401b03600160ff6040870151161b87161615159051151592600092835b60ff8a60081c1681106200050f575b5050508262000509959492620004ee620003cf95620004f79414620005d0565b151514620005d0565b60ff60408188169201511610620005d0565b62000139565b6200051a81620005fe565b9054600391821b1c6001600160a01b039081169184901b85901c16146200054c576200054690620005ee565b620004bf565b5060019350849150829050620004ee620004ce565b9091508162000574575b50388062000496565b905015386200056b565b634e487b7160e01b600052604160045260246000fd5b60405163e543ef0560e01b8152600490fd5b15915081620005b9575b503880620000b5565b905038620005b0565b925038620000ac565b600080fd5b15620005d857565b634e487b7160e01b600052600160045260246000fd5b6000198114620003db5760010190565b7e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e18054821015620006375760005260206000200190600090565b634e487b7160e01b600052603260045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c80630271725014612c79578063036de8af14612bee5780630677df5414612bcf5780630900f01014612768578063186ce6121461271357806319017175146126dd5780631f97c9a8146124eb578063203e4a9b146121e857806323d75e31146121b4578063295a52121461215a578063396c16b71461211e5780633b97e856146121035780633f4ba83a146120755780634b4fd03b14612017578063689f90c314611fd557806374aa7bfc14611f915780637c91863414611e025780638129fc1c14611bcd5780638413bcba14611ab15780638456cb5914611a3457806386e11ffa14611a0f57806389c619dd146119af5780638da5cb5b146119795780638e3ba8c9146119425780638fd3ab80146118035780639057412d14611686578063961b94d01461162857806397c35146146113a05780639a8a0592146113615780639d782454146111265780639f86029c14610e105780639fd0506d14610dda578063b150fc5514610c2d578063b187bd2614610bff578063b293f97f14610b69578063b4d591bb14610aa8578063c0b07bde14610a62578063c128d170146109e6578063d788c1471461095b578063da4856a114610928578063e5a986031461087c578063e75235b81461084e578063f2fde38b14610709578063f5cfec18146106e6578063f7514fbc146102bf578063fc0c546a1461027a5763fd96063c1461022257600080fd5b346102775760203660031901126102775760606102406004356154c7565b6040805182516001600160481b031681526020808401516001600160401b031690820152918101516001600160a01b031690820152f35b80fd5b50346102775780600319360112610277576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610277576020366003190112610277576004356001600160401b03811681036106e2576102ec615d17565b6002600080516020615de883398151915254146106d0576001600160401b038116600052600080516020615ec883398151915260205260406000206040519061033482612d49565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a083015260405190818560048301549261039b8461376f565b80845293600181169081156106ae575060011461066a575b506103c092500382612dd0565b60c08201526001600160401b03606082015116156106495760a08101516001600160a01b031633810361061c5750606061048c60407ff80e572ae1b63e2449629b6c7d783add85c36473926f216077f17ee002bcfd07936001600160401b038616600052600080516020615ec8833981519152602052610442826000206137c0565b015161046d7f0000000000000000000000000000000000000000000000000000000000000000615a67565b610475614c50565b906001600160401b0360ff82169160081c16615b86565b926001600160401b0360405191168152336020820152836040820152a17f000000000000000000000000000000000000000000000000000000000000000060028110156106065780610556575060405163a9059cbb60e01b602082015233602482015260448101919091526105419061051281606481015b03601f198101835282612dd0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316614452565b6001600080516020615ee88339815191525580f35b600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156105e5576040516340c10f1960e01b815233600482015260248101929092526000908290604490829084905af180156105d9576105ca575b50610541565b6105d390612d36565b386105c4565b6040513d6000823e3d90fd5b600080fd5b6040516366001a8960e01b815260ff9091166004820152602490fd5b634e487b7160e01b600052602160045260246000fd5b60405163ceb40a8560e01b81523360048201526001600160a01b03919091166024820152604490fd5b0390fd5b604051635feafa3160e11b81526001600160401b0383166004820152602490fd5b60040187525060208620909186915b8183106106925750509060206103c092820101386103b3565b6020919350806001915483858801015201910190918392610679565b9050602092506103c094915060ff191682840152151560051b820101386103b3565b6040516309e3d0f360e11b8152600490fd5b5080fd5b503461027757806003193601126102775760206107016154b0565b604051908152f35b5034610277576020366003190112610277576001600160a01b03600435818116908181036108195761074a9061073d615cde565b610745615cde565b615c6a565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed97891825460ff600080516020615e688339815191525416808203610830575050908391825b845481101561082c578460005281817f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd1015416803b1561082857848091602460405180948193632c7b84dd60e11b83528960048401525af190811561081d578591610805575b505061080090613010565b61078f565b61080e90612d36565b6108195783386107f5565b8380fd5b6040513d87823e3d90fd5b8480fd5b8380f35b604492506040519163d2a13a2960e01b835260048301526024820152fd5b5034610277578060031936011261027757602060ff600080516020615d688339815191525416604051908152f35b50346102775760203660031901126102775760043560ff8116908181036105e5576108a5615cde565b8115610916577f2a855b929b9a53c6fb5b5ed248b27e502b709c088e036a5aa17620c8fc5085a99161091060ff92600080516020615d68833981519152805493851985161790556108f461328f565b6040805160ff9490951684168552921660208401528291820190565b0390a180f35b60405163831761d760e01b8152600490fd5b50346102775761093736612e53565b906002600080516020615de883398151915254146106d05761095892613358565b80f35b50346102775760203660031901126102775761ffff610978612ccc565b610980614d5b565b5016600052600080516020615e888339815191526020526109e26109a7604060002061508b565b6040519182918291909160406001600160401b038160608401956001600160481b038082511686526020820151166020860152015116910152565b0390f35b50346102775760203660031901126102775761ffff90610a04612ccc565b906020604051610a1381612d7f565b828152015216600052600080516020615d4883398151915260205260408060002060ff8251610a4181612d7f565b60208260018554958685520154169101908152835192835251166020820152f35b50346102775780600319360112610277576109e2604051610a8281612d7f565b60058152640312e302e360dc1b6020820152604051918291602083526020830190612d11565b50346102775780600319360112610277576040518091600080516020615e2883398151915290815480845260208094019081938352600080516020615d8883398151915290835b818110610b4c5750505084610b05910385612dd0565b60405193838594850191818652518092526040850193925b828110610b2c57505050500390f35b83516001600160a01b031685528695509381019392810192600101610b1d565b82546001600160a01b031684529286019260019283019201610aef565b5060c036600319011261027757610b7e612cdd565b906084359182151583036106e25760a4356001600160401b03928382116102775750610bae903690600401612e0c565b610bb6615d17565b6002600080516020615de883398151915254146106d057602093610be4926064359060443590600435613ead565b6001600080516020615ee88339815191525560405191168152f35b503461027757806003193601126102775760206002600080516020615de88339815191525414604051908152f35b503461027757806003193601126102775760405180600080516020615e2883398151915280548084526020809401918552600080516020615d8883398151915290855b818110610dbd5750505081610c86910382612dd0565b8051610c9181612ed4565b91610c9f6040519384612dd0565b818352601f19610cae83612ed4565b01855b818110610da1575050845b828110610d1d575050506040519180830190808452825180925280604085019301945b828110610cec5784840385f35b85518051151585528083015115158584015260409081015160ff169085015294810194606090930192600101610cdf565b929492610d99906001600160a01b03610d36828561301f565b5116600052600080516020615ea88339815191528652604060002060405190610d5e82612d64565b5460ff9081811615158352818160081c1615158984015260101c166040820152610d88828961301f565b52610d93818861301f565b50613010565b949294610cbc565b8590610dae979597614d5b565b82828a01015201959395610cb1565b82546001600160a01b031684529285019260019283019201610c70565b5034610277578060031936011261027757600080516020615f08833981519152546040516001600160a01b039091168152602090f35b5034610277576020806003193601126106e2576001600160a01b0390600435828116919082810361082857610e43615cde565b82156111145782600052600080516020615ea883398151915280835260ff918260406000205416156110fb57846000528184528260406000205460081c16156110e25784600052818452604060002061ff001990818154169055600080516020615e68833981519152928354858160081c169283156110ce5761ff0060001980950160081b169116178455600080516020615e088339815191528054918860005287526001600160401b03600192610f1082858a60406000205460101c161b198316169282168310614d3e565b6001600160401b0319161790558897600080516020615e288339815191528054938b5b858110610fc8575b505050505050918091610f836040969594610f767f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f99614d3e565b610f7e614d7a565b614e65565b5460081c16600080516020615d688339815191529081548381168210610fba575b50505416908351928352820152a161095861328f565b60ff19161781553880610fa4565b838b610fd38361325e565b929054600393841b1c1614610ff15750610fec90613010565b610f33565b9590918093959798999a9b9c5081019081116110ba5790611025846110186110449461325e565b905490891b1c169161325e565b90919082549060031b9160018060a01b03809116831b921b1916179055565b825480156110a657946040999794610f83948a9894610f76947f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f9e9c99019261108c8461325e565b81939154921b1b1916905555998496979899839650610f3b565b634e487b7160e01b8c52603160045260248cfd5b634e487b7160e01b8d52601160045260248dfd5b634e487b7160e01b8b52601160045260248bfd5b6040516307d86e9160e21b815260048101869052602490fd5b604051630d583f4760e41b815260048101869052602490fd5b604051632f44bd7760e01b8152600490fd5b50346102775761113536612e53565b9033600052600080516020615ea883398151915260209080825260ff60406000205460081c161561134957600080516020615de88339815191529160028354146106d05761ffff861680600052600080516020615d488339815191528252846040600020540361132b575060405163b3f07bbd60e01b8152918183806111bf898b6004840161332e565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156113205788936112f1575b503360005280825261120360ff60406000205460101c1684613228565b6112d85760606112b793927f35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e592336000528082528a6001600160401b03610100600160481b03604082600160ff836000205460101c161b1693898152600080516020615da8833981519152875220928354928360081c161760081b1690610100600160481b03191617905533600052815260ff60406000205460101c166040519185835233908301526040820152a16131bb565b6112bf578480f35b546002146106d0576112d092613358565b388080808480f35b604051631089c4a160e11b815260048101849052602490fd5b9092508181813d8311611319575b6113098183612dd0565b810103126105e5575191386111e6565b503d6112ff565b6040513d8a823e3d90fd5b6044908560405191635788c0fd60e11b835260048301526024820152fd5b60405163a0ae911d60e01b8152336004820152602490fd5b5034610277578060031936011261027757602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b506020366003190112610277576001600160401b0360043516908160043503610277576113cb615d17565b6002600080516020615de883398151915254146106d05781600052600080516020615ec88339815191526020526040600020916040519261140b84612d49565b805484526001810154602085015261ffff60028201546001600160481b03811660408701526001600160401b038160481c16606087015260881c16608085015260018060a01b0360038201541660a0850152604051838194906004840154936114738561376f565b808552946001811690811561160457506001146115bf575b505061149992500383612dd0565b60c083019182526001600160401b03606084015116156115a7576114ca6001600160401b03606085015116426131ae565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000161161157c579161155991602093600052600080516020615ec8833981519152845261152260406000206137c0565b6001600160481b036040830151169161ffff608082015116815190868301519260a0600180821b039101511693519460043561464c565b6001600080516020615ee8833981519152556001600160401b0360405191168152f35b6044906001600160401b036060850151166040519163c06cf05f60e01b835260048301526024820152fd5b60249060405190635feafa3160e11b82526004820152fd5b60049193949250018252602082205b8183106115e857505090602061149992820101388061148b565b60209193508060019154838589010152019101909184926115ce565b9150506020925061149994915060ff191682840152151560051b820101388061148b565b5060603660031901126102775761163d612cdd565b604435611648615d17565b6002600080516020615de883398151915254146106d05760209181611559926040519261167484612d7f565b60018452853681860137600435613822565b5034610277576040366003190112610277576116a0612ccc565b6024356001600160401b0381116117ff576116bf903690600401612e0c565b91604051918290600080516020615e28833981519152828154918287526020809701908652600080516020615d8883398151915292865b888282106117e05750505061170d92500383612dd0565b826117378351966040519788928392635b10743960e11b8452604060048501526044840190612d11565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156117d55783949561177094926117b1575b50613053565b604051926040840160408552835180915285606086019401915b81811061179d5750505082938301520390f35b82518552938601939186019160010161178a565b6117ce9192503d8087833e6117c68183612dd0565b810190612f3e565b903861176a565b6040513d85823e3d90fd5b85546001600160a01b03168452600195860195889550930192016116f6565b8280fd5b503461027757806003193601126102775761181c614fac565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b0380821690600182019181831161192c5760ff8460401c1690811561191f575b5061190d57600160401b911680926001600160481b03191617179081835560ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e5416156118fb577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2926020926118db61328f565b6118e3614d7a565b68ff000000000000000019169055604051908152a180f35b604051632866815360e11b8152600490fd5b60405163f92ee8a960e01b8152600490fd5b9050818316111538611866565b634e487b7160e01b600052601160045260246000fd5b50346102775760403660031901126102775760243560ff811681036105e55761196f602091600435613228565b6040519015158152f35b5034610277578060031936011261027757600080516020615dc8833981519152546040516001600160a01b039091168152602090f35b503461027757602036600319011261027757611a046001600160401b036020926040600080516020615e0883398151915254916004358152600080516020615da88339815191528652205460081c1616615aa8565b60ff60405191168152f35b5034610277578060031936011261027757611a28614d5b565b506109e26109a7615043565b5034610277578060031936011261027757600080516020615dc883398151915254611a67906001600160a01b0316614ff0565b600080516020615de883398151915260028154146106d057600290557f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd2602060405160018152a180f35b503461027757602036600319011261027757600435611ace615d17565b6002600080516020615de883398151915254146106d057611aee816154c7565b602081016001600160401b03908181511615611bb457611b1182825116426131ae565b827f00000000000000000000000000000000000000000000000000000000000000001611611b92578385527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b8602052604080862086815560010186905583015183518691610541916001600160481b0316906001600160a01b031687614af5565b516040516301cb739d60e71b8152600481019490945216602483015250604490fd5b604051630301bcaf60e61b815260048101859052602490fd5b508060031936011261027757611be1614fac565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c1615906001600160401b03811680159081611dfa575b6001149081611df0575b159081611de7575b5061190d5767ffffffffffffffff198116600117835581611dc8575b50611c57615c29565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381163303611d9f575034611d8d57611c96615c29565b611c9e615c29565b611ca6615c29565b6001600080516020615de883398151915255600080516020615f0883398151915280546001600160a01b03191633179055611cdf615c29565b611ce7615c29565b611cf033615c6a565b611cf8615c29565b611d00615c29565b6001600080516020615ee883398151915255611d37610100600160481b0360ff611d30611d2b614c50565b615b4f565b16176150eb565b611d3f61328f565b611d47614d7a565b611d4f575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b60405163bd28e88960e01b8152600490fd5b604051636345072160e11b81526001600160a01b03919091166004820152336024820152604490fd5b68ffffffffffffffffff19166801000000000000000117825538611c4e565b90501538611c32565b303b159150611c2a565b839150611c20565b503461027757608036600319011261027757611e1c612ccc565b60243560443560ff81168091036105e557611e35615cde565b61ffff809316928315611f7f578215611f6d578115611f5b577f0000000000000000000000000000000000000000000000000000000000000000168314611f49577f1456404e7f41f35c3daac941bb50bad417a66275c3040061b4287d787719599d9160809184600052600080516020615d48833981519152918260205260ff604060002081600160405192611eca84612d7f565b805484520154169460208201958652886000526020526001604060002084815501848319825416179055611f2c611f0b611f02614c50565b80606435615be1565b89600052600080516020615e888339815191526020526040600020906152e9565b51935116604051938452602084015260408301526060820152a280f35b60405163101b8f9560e11b8152600490fd5b60405163ade64f0b60e01b8152600490fd5b60405163f839a0cb60e01b8152600490fd5b60405163100b0f2760e11b8152600490fd5b503461027757806003193601126102775760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034610277578060031936011261027757602060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb54166040519015158152f35b50346102775780600319360112610277577f00000000000000000000000000000000000000000000000000000000000000009060028210156120615760208260ff60405191168152f35b634e487b7160e01b81526021600452602490fd5b5034610277578060031936011261027757600080516020615dc8833981519152546120a8906001600160a01b0316614ff0565b600080516020615de883398151915260028154036120f157600190557fe11c2112add17fb763d3bd59f63b10429c3e11373da4fb8ef6725107a2fdc4b06020604051838152a180f35b604051637e38d1d360e11b8152600490fd5b50346102775780600319360112610277576020611a04614c50565b50346102775760203660031901126102775760ff60406020926004358152600080516020615da883398151915284522054166040519015158152f35b50346102775780600319360112610277576040517f000000000000000000000000000000000000000000000000000000000000000060028110156121a057602092508152f35b634e487b7160e01b83526021600452602483fd5b503461027757806003193601126102775760206001600160401b03600080516020615e488339815191525416604051908152f35b5034610277576020806003193601126106e2576004356001600160a01b0381169182820361081957612218615cde565b82156111145782600052600080516020615ea88339815191529182825260ff9081604060002054166000146123c15784600052838352604060002061010061ff00198254161790555b600080516020615e2883398151915290815491600160401b8310156123ab57826110259160016122939501905561325e565b600080516020615e6883398151915292835461ff006122b6848360081c16614d2d565b60081b169061ff00191617809455600080516020615e0883398151915280546001600160401b0390818116918860005284875260018660406000205460101c161b1682179182146123925767ffffffffffffffff19161790557ff05962b5774c658e85ed80c91a75af9d66d2af2253dda480f90bce78aff5eda594606094909390929091612342614d7a565b84600052825280600080516020615d68833981519152805482811615612383575b5054169260405194855260081c16908301526040820152a161095861328f565b60ff1916600117815538612363565b604051638d68f84d60e01b815260048101899052602490fd5b634e487b7160e01b600052604160045260246000fd5b600080516020615e688339815191528281541660408110156124d957604051906123ea82612d64565b6001825285820190600182526040830190815288600052878752604060002092511515918662ff000061ff0086549351151560081b16935160101b1693169062ffffff19161717179055805483612442818316614d2d565b169060ff19161790557f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed978805490600160401b8210156123ab57600182018082558210156124c3576000527f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd10180546001600160a01b03191686179055612261565b634e487b7160e01b600052603260045260246000fd5b60405163891684c360e01b8152600490fd5b5034610277576020366003190112610277576004356001600160401b0381168091036106e257606060c060405161252181612d49565b84815284602082015284604082015284838201528460808201528460a08201520152600052600080516020615ec883398151915260205260406000206040519061256a82612d49565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a0830152604051838194906004840154936125d28561376f565b80855294600181169081156126b95750600114612674575b50506125f892500383612dd0565b60c081019182526109e26040519283926020845280516020850152602081015160408501526001600160481b0360408201511660608501526001600160401b03606082015116608085015261ffff60808201511660a085015260a0600180821b039101511660c08401525160e080840152610100830190612d11565b60049193949250018252602082205b81831061269d5750509060206125f89282010138806125ea565b6020919350806001915483858901015201910190918492612683565b915050602092506125f894915060ff191682840152151560051b82010138806125ea565b5034610277576020366003190112610277576126f7615cde565b61095861270e612705614c50565b80600435615be1565b6150eb565b503461027757604036600319011261027757610958612730612cdd565b612738615cde565b61ffff612746612705614c50565b9116600052600080516020615e888339815191526020526040600020906152e9565b5034610277576020806003193601126106e2576001600160a01b036004358181169081810361082857612799615cde565b6127a1614fac565b3b15612b74577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e9182549161282e60ff841615614d3e565b60ff199283166001178455303b156108285760405163011fa75760e71b8152858160048183305af18015612b2957612b61575b5060405163689f90c360e01b81528281600481305afa908115612b29578691612b34575b50156128bd575b50507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b604051637e062a3560e11b81528281600481305afa908115612b29578691612aeb575b5081612910927f000000000000000000000000000000000000000000000000000000000000000016911614614d3e565b6040516314ad290960e11b81528181600481305afa90811561081d578591612ab5575b507f0000000000000000000000000000000000000000000000000000000000000000906002821015612aa1576002811015612aa1576129729114614d3e565b604051634d4502c960e11b81528181600481305afa801561081d578590612a6b575b6129c7915061ffff807f000000000000000000000000000000000000000000000000000000000000000016911614614d3e565b604051631d2a9eff60e21b8152908082600481305afa90811561081d578591612a2b575b50612a2491506001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016911614614d3e565b388061288c565b905081813d8311612a64575b612a418183612dd0565b8101031261081957516001600160401b038116810361081957612a2490386129eb565b503d612a37565b508181813d8311612a9a575b612a818183612dd0565b8101031261082857612a956129c791613349565b612994565b503d612a77565b634e487b7160e01b86526021600452602486fd5b90508181813d8311612ae4575b612acc8183612dd0565b81010312610828575160028110156108285738612933565b503d612ac2565b90508281813d8311612b22575b612b028183612dd0565b81010312612b1e5751908082168203612b1e57906129106128e0565b8580fd5b503d612af8565b6040513d88823e3d90fd5b612b549150833d8511612b5a575b612b4c8183612dd0565b81019061443a565b38612885565b503d612b42565b612b6d90959195612d36565b9338612861565b60405162461bcd60e51b815260048101849052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b503461027757602036600319011261027757602061196f6004356131bb565b5034610277576020366003190112610277576004356001600160a01b03818116918290036117ff57612c3081600080516020615dc88339815191525416614ff0565b600080516020615f0883398151915280546001600160a01b031981168417909155167f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b50346102775760203660031901126102775761070161046d612cc7604060209461ffff612ca4612ccc565b612cac614d5b565b50168152600080516020615e8883398151915286522061508b565b61555d565b6004359061ffff821682036105e557565b6024359061ffff821682036105e557565b60005b838110612d015750506000910152565b8181015183820152602001612cf1565b90602091612d2a81518092818552858086019101612cee565b601f01601f1916010190565b6001600160401b0381116123ab57604052565b60e081019081106001600160401b038211176123ab57604052565b606081019081106001600160401b038211176123ab57604052565b604081019081106001600160401b038211176123ab57604052565b608081019081106001600160401b038211176123ab57604052565b60a081019081106001600160401b038211176123ab57604052565b90601f801991011681019081106001600160401b038211176123ab57604052565b6001600160401b0381116123ab57601f01601f191660200190565b81601f820112156105e557803590612e2382612df1565b92612e316040519485612dd0565b828452602083830101116105e557816000926020809301838601378301015290565b90600319906060828401126105e55760043561ffff811681036105e5579260243592604435916001600160401b03918284116105e55760609084830301126105e55760405192612ea284612d64565b806004013584526024810135602085015260448101359283116105e557612ecc9201600401612e0c565b604082015290565b6001600160401b0381116123ab5760051b60200190565b519060ff821682036105e557565b81601f820112156105e5578051612f0f81612df1565b92612f1d6040519485612dd0565b818452602082840101116105e557612f3b9160208085019101612cee565b90565b9060209081838203126105e55782516001600160401b03938482116105e557019080601f830112156105e5578151612f7581612ed4565b94604090612f8582519788612dd0565b828752858088019360051b860101948486116105e557868101935b868510612fb257505050505050505090565b84518381116105e55782019084601f1983890301126105e557845190612fd782612d7f565b612fe28a8401612eeb565b825285830151918583116105e557613001898c80969581960101612ef9565b83820152815201940193612fa0565b600019811461192c5760010190565b80518210156124c35760209160051b010190565b9060406020612f3b9360ff81511684520151918160208201520190612d11565b90929180519161306283612ed4565b9260409161307283519586612dd0565b818552601f1961308183612ed4565b01602090368288013760009788955b8487106130a257505050505050509190565b90919293949598868561311b868d6130c160018060a01b03918861301f565b511680600052600080516020615ea883398151915282526130ec60ff866000205460101c168961301f565b51908551808095819463b5634c7360e01b835261ffff60049916898401526024998a8401526044830190613033565b03915afa9081156131a357908d91600091613171575b5061313d81928d61301f565b52830180931161315e5750506131539099613010565b959493929190613090565b601190634e487b7160e01b600052526000fd5b91508782813d831161319c575b6131888183612dd0565b810103126102775750518c9061313d613131565b503d61317e565b8a513d6000823e3d90fd5b9190820391821161192c57565b6001600160401b039060ff61321481600080516020615d688339815191525416938493600080516020615e088339815191525490600052600080516020615da883398151915260205260406000205460081c1616615aa8565b1610159081613221575090565b9050151590565b906001600160401b0391600052600080516020615da8833981519152602052600160ff60406000205460081c92161b1616151590565b600080516020615e2883398151915280548210156124c357600052600080516020615d888339815191520190600090565b60ff600080516020615d6883398151915254166040516132ae81612d7f565b60ff600080516020615e6883398151915254818116835260081c168060208301528083116132e957505160ff166132e25750565b1561091657565b82604491604051916313c3d1b160e01b835260048301526024820152fd5b9060606040612f3b9380518452602081015160208501520151918160408201520190612d11565b60409061ffff612f3b94931681528160208201520190613307565b519061ffff821682036105e557565b919081613365918461364f565b91909161364a5760408091015191815192635399ded560e11b84526080848061339a6020948560048401526024830190612d11565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af493841561363f576000946135ca575b5061ffff9283606086015116847f0000000000000000000000000000000000000000000000000000000000000000168082036135af575050613402614c50565b8161342b87519280613426816001600160401b03968760ff82169160081c16615b86565b615be1565b960151908160a01c613598576001600160a01b039182169560007f00000000000000000000000000000000000000000000000000000000000000008316156135915750613476614d5b565b508816600052600080516020615e88833981519152845261349c612cc78460002061508b565b6134a68882615b1a565b81808960081c169160081c16105b6134d957505050506134c96134d79484615850565b6134d283615730565b614af5565b565b7f7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f3162975095613575839596949760019394519261351484612d64565b6001600160481b038091168452898401908242168252888501978852896000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b88b52886000209451166001600160481b0319855416178455511682615a3f565b019151166001600160601b0360a01b82541617905551908152a1565b90506134b4565b50602491519063033b960d60e41b82526004820152fd5b6044925191631ee5902560e11b835260048301526024820152fd5b6080949194813d8211613637575b816135e560809383612dd0565b810103126106e2578351916135f983612d9a565b8151906001600160481b0382168203610277575082528481015185830152838101518483015261362b90606001613349565b606082015292386133c2565b3d91506135d8565b83513d6000823e3d90fd5b505050565b60405163b3f07bbd60e01b81529193926020918391829161367491906004840161332e565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d957600091613705575b506136a6816131bb565b156136ed576136b481613736565b92836136c257509150600090565b7f4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef2600080a360009190565b60249060405190630451c4fb60e41b82526004820152fd5b906020823d821161372e575b8161371e60209383612dd0565b810103126102775750513861369c565b3d9150613711565b600052600080516020615da88339815191526020526040600020805460ff81166137685760ff19166001179055600090565b5050600190565b90600182811c9216801561379f575b602083101461378957565b634e487b7160e01b600052602260045260246000fd5b91607f169161377e565b8181106137b4575050565b600081556001016137a9565b6004600091828155826001820155826002820155826003820155016137e5815461376f565b806137ef57505050565b82601f821160011461380057505055565b909180825261381e601f60208420940160051c8401600185016137a9565b5555565b9194939290946000958315613e9b578115613e89578215613e77577f00000000000000000000000000000000000000000000000000000000000000006138683082614cd0565b906138ab60018060a01b03821696604051906323b872dd60e01b60208301523360248301523060448301526064820152606481526138a581612db5565b87614452565b6138be826138b93084614cd0565b6131ae565b957f00000000000000000000000000000000000000000000000000000000000000006002811015613e63579060018b9214613ddc575b5050505061ffff8116600052600080516020615d4883398151915260205260ff600160406000200154168015611f5b5761393761392f614c50565b918287615be1565b906001600160401b038260081c1661395460ff8416928383615b86565b808803613db5575061397661397b9161396e611d2b614c50565b938491615b86565b615608565b98600080516020615e4883398151915254966001600160401b0380891614613da15767ffffffffffffffff1988166001600160401b03898116600101811691909117600080516020615e48833981519152557f00000000000000000000000000000000000000000000000000000000000000001615613d9b576139fc614d5b565b50613a08612cc7615043565b613a258c610100600160481b0360ff87169160081b161782615b1a565b6001600160401b03808d610100600160481b0360ff88169160081b161760081c169160081c16105b613d75578180613d6d575b613aa157505082612f3b9899610100600160481b0360ff84613a8582613a919716848660081b1617615670565b169160081b1617615918565b6001600160401b0333951661464c565b61ffff95979896919a506001600160481b03939250613adf7f0000000000000000000000000000000000000000000000000000000000000000615a67565b613ae76154b0565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a260405196613b3488612d49565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615ec883398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b0319825416178155613bcf6001600160401b0360608701511682615a3f565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d5957613c30835461376f565b601f8111613d1e575b50602090601f8311600114613cb257906001600160401b03959683613ca7575b50508160011b916000199060031b1c19161790555b7f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613ca3346145f5565b1690565b015190503880613c59565b95601f19831684885260208820975b818110613d065750916001600160401b03969791846001959410613ced575b505050811b019055613c6e565b015160001960f88460031b161c19169055388080613ce0565b83830151895560019098019760209384019301613cc1565b613d499084835260208320601f850160051c81019160208610613d4f575b601f0160051c01906137a9565b38613c39565b9091508190613d3c565b634e487b7160e01b81526041600452602490fd5b506000613a58565b604490613d806154b0565b90604051916326fb55dd60e01b835260048301526024820152fd5b81613a4d565b634e487b7160e01b82526011600452602482fd5b87613dc2604492826131ae565b604051916338f831a560e11b835260048301526024820152fd5b803b156106e2578190602460405180948193630852cd8d60e31b83528c60048401525af18015613e5857613e43575b50613e17903090614cd0565b808203613e255788816138f4565b60449250604051916302156a8f60e01b835260048301526024820152fd5b98613e51613e17929a612d36565b9890613e0b565b6040513d8c823e3d90fd5b634e487b7160e01b8b52602160045260248bfd5b60405163717f139360e11b8152600490fd5b604051634e46966960e11b8152600490fd5b604051631f2a200560e01b8152600490fd5b95949392919060008715613e9b578215613e89578315613e77577f0000000000000000000000000000000000000000000000000000000000000000613ef23082614cd0565b90613f3560018060a01b0382169a604051906323b872dd60e01b6020830152336024830152306044830152606482015260648152613f2f81612db5565b8b614452565b613f43826138b93084614cd0565b997f00000000000000000000000000000000000000000000000000000000000000006002811015614426576001146143bc575b50505061ffff8216600052600080516020615d4883398151915260205260ff600160406000200154168015611f5b57613fb8613fb0614c50565b91828b615be1565b916001600160401b038360081c16613fd560ff8516938483615b86565b808c036143af5750613976613ff791613fef611d2b614c50565b948591615b86565b99600080516020615e4883398151915254976001600160401b03808a161461439b5767ffffffffffffffff1989166001600160401b038a8116600101811691909117600080516020615e48833981519152557f0000000000000000000000000000000000000000000000000000000000000000161561439557614078614d5b565b508b6001600160401b038061408e612cc7615043565b9260081b610100600160481b031660ff8816176140ab8185615b1a565b60081c169160081c16105b81158061438e575b614383578161437b575b506140f957505082612f3b9899610100600160481b0360ff613a9194169160081b16176140f481615670565b615918565b61ffff95979896919a506001600160481b039392506141377f0000000000000000000000000000000000000000000000000000000000000000615a67565b61413f6154b0565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a26040519661418c88612d49565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615ec883398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b03198254161781556142276001600160401b0360608701511682615a3f565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d5957614288835461376f565b601f811161434b575b50602090601f83116001146142f957906001600160401b03959683613ca75750508160011b916000199060031b1c19161790557f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613ca3346145f5565b95601f19831684885260208820975b8181106143335750916001600160401b03969791846001959410613ced57505050811b019055613c6e565b83830151895560019098019760209384019301614308565b6143759084835260208320601f850160051c81019160208610613d4f57601f0160051c01906137a9565b38614291565b9050386140c8565b604483613d806154b0565b50806140be565b826140b6565b634e487b7160e01b83526011600452602483fd5b8b613dc2604492826131ae565b803b156108195783809160248d6040519485938492630852cd8d60e31b845260048401525af1801561441b57614406575b506143f9903090614cd0565b808203613e255780613f76565b926144146143f99294612d36565b92906143ed565b6040513d86823e3d90fd5b634e487b7160e01b85526021600452602485fd5b908160209103126105e5575180151581036105e55790565b6040516144b0916001600160a01b031661446b82612d7f565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af16144aa61452c565b9161455c565b805190816144bd57505050565b82806144cd93830101910161443a565b156144d55750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d15614557573d9061453d82612df1565b9161454b6040519384612dd0565b82523d6000602084013e565b606090565b919290156145be5750815115614570575090565b3b156145795790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156145d15750805190602001fd5b60405162461bcd60e51b815260206004820152908190610645906024830190612d11565b600080808084335af161460661452c565b501561460f5750565b60249060405190630b288dc560e21b82526004820152fd5b906020828203126105e55781516001600160401b0381116105e557612f3b9201612ef9565b9594929493919361467c7f0000000000000000000000000000000000000000000000000000000000000000615a67565b6040518081600080516020615e2883398151915260208154938481520190600052600080516020615d888339815191529260005b818110614ad35750506146c592500382612dd0565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed9785491815115614ac1576147186000916040519485928392635b10743960e11b8452604060048501526044840190612d11565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d957600092614aa4575b50614752818388613053565b95863410614a855761476487346131ae565b80614a76575b506040519061477882612d9a565b6001600160481b0386811683527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020840190815260408085018d815261ffff8d81166060880190815292516315cfa3cb60e11b81529651909416600487015291516024860152905160448501525116606483015260008260848173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d957614877926000928d928492614a5a575b506001600160401b036040519361484085612d64565b16835260018060a01b031660208301526040820152604051809381926311692f3760e31b8352602060048401526024830190613307565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d957600091614a37575b5061ffff8816600052600080516020615d48833981519152602052604060002054938351938515614a1b5760005b8581106149405750505050505050927fe54e51e42099622516fa3b48e9733581c9dbdcb771cafb093f745a0532a35982949261ffff9261491160c096610475614c50565b906040519586526020860152604085015260608401521660808201526001600160401b03841660a0820152a190565b6001600160a01b03614952828461301f565b51169061495f818761301f565b5182600052600080516020615ea883398151915260205261498b60ff60406000205460101c168661301f565b51833b156105e5576149d19361ffff8f936000948f8e906149e38d6040519b8c998a988997634b5b050560e01b895216600488015260a0602488015260a4870190613033565b85810360031901604487015290612d11565b916064840152608483015203925af19182156105d957614a0792614a0c5750613010565b6148cd565b614a1590612d36565b38610d93565b604051630ebc95af60e21b815261ffff8b166004820152602490fd5b614a5491503d806000833e614a4c8183612dd0565b810190614627565b3861489f565b614a6f9192503d8086833e614a4c8183612dd0565b903861482a565b614a7f906145f5565b3861476a565b6040516306a91e3760e51b815260048101889052346024820152604490fd5b614aba9192503d806000833e6117c68183612dd0565b9038614746565b6040516334e7b19560e11b8152600490fd5b84546001600160a01b03168352600194850194869450602090930192016146b0565b9291614b249061046d7f0000000000000000000000000000000000000000000000000000000000000000615a67565b906000937f504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a918580a27f00000000000000000000000000000000000000000000000000000000000000009360028510156120615784614bb9575060405163a9059cbb60e01b60208201526001600160a01b03909116602482015260448101919091529091506134d7906105128160648101610504565b9193600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156117ff576040516340c10f1960e01b81526001600160a01b03919091166004820152602481019490945291929181908390604490829084905af1908115614c445750614c3b5750565b6134d790612d36565b604051903d90823e3d90fd5b600080604051602081019063313ce56760e01b825260048152614c7281612d7f565b51907f00000000000000000000000000000000000000000000000000000000000000005afa614c9f61452c565b9015614cbe576020818051810103126105e5576020612f3b9101612eeb565b604051631222cd8360e01b8152600490fd5b6040516370a0823160e01b602082019081526001600160a01b039093166024808301919091528152600092839291614d0781612d64565b51915afa614d1361452c565b9015614cbe576020818051810103126105e5576020015190565b60ff1660ff811461192c5760010190565b15614d4557565b634e487b7160e01b600052600160045260246000fd5b60405190614d6882612d64565b60006040838281528260208201520152565b600080516020615e688339815191525460ff8160081c16614dab600080516020615e28833981519152548214614d3e565b60005b818110614e39575060005b818110614dd2575050604060ff6134d792161115614d3e565b6001810180821161192c575b828110614df45750614def90613010565b614db9565b614e3490614e2f614e048461325e565b905490614e108461325e565b92909160018060a01b03809354600395861b1c16931b1c161415614d3e565b613010565b614dde565b80614e2f614e49614e609361325e565b905460039190911b1c6001600160a01b0316614e65565b614dae565b6001600160a01b039081166000818152600080516020615ea88339815191526020526040908190209051929190614e9b84612d64565b5460ff91614ed7838316158015938488526020880197604087808460081c16159384158c5260101c1691019581875292614f92575b5050614d3e565b600080516020615e0883398151915254946001600160401b0360019687868651161b1616151590511515916000968791600080516020615e688339815191525497878960081c16935b848110614f54575b5050505050816134d796614f42869594614f4a9414614d3e565b151514614d3e565b5116911611614d3e565b8282614f5f8361325e565b90549060031b1c1614614f7a57614f7590613010565b614f20565b50919850849250839150614f429050826134d7614f28565b90915081614fa3575b503880614ed0565b90501538614f9b565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614614fde57565b604051633c64f99360e21b8152600490fd5b600080516020615f0883398151915254336001600160a01b039182161415919082615036575b505061501e57565b60405163e2a08e5d60e01b8152336004820152602490fd5b1633141590503880615016565b6040519061505082612d64565b8160406001600160401b03600080516020615f28833981519152546001600160481b0380821685528160481c16602085015260901c16910152565b9060405161509881612d64565b60406001600160401b038294546001600160481b0380821685528160481c16602085015260901c16910152565b90600160481b600160901b0382549160481b1690600160481b600160901b031916179055565b600080516020615f288339815191529081546001600160481b03908181166001600160401b036008918184841c168015806152de575b1561518f575050855471ffffffffffffffffff0000000000000000001916604886901b600160481b600160901b03161786555050505b825479ffffffffffffffff000000000000000000ffffffffffffffffff19169116174260901b67ffffffffffffffff60901b16179055565b8661519b612cc7615043565b9260006151a88383615af8565b1561527457506151c792916151bc91615b1a565b8388861c1690615a8f565b610100600160481b039290841b831660ff8616176151e58184615af8565b15615266578160ff92826151fc6152099487615b1a565b871c169084871c16615a8f565b9116921b16175b61521a8482615af8565b61524457600160481b600160901b039060481b1690600160481b600160901b031916178355615157565b604051631e74e8fb60e31b815290831660048201528383166024820152604490fd5b5050905060ff915016615210565b94939592906152869061529093615b1a565b8389841c16615a8f565b9260ff881694838087610100600160481b038098871b16176152b28185615b1a565b851c1691841c16019283116152ca57501b1617615210565b634e487b7160e01b81526011600452602490fd5b5060ff851615615121565b919080546001600160481b03808216916001600160401b03926008908483831c168015806154a5575b1561537857505050508461532a6134d79596856150c5565b835467ffffffffffffffff60901b19919092161679ffffffffffffffff000000000000000000ffffffffffffffffff1990911617429190911660901b67ffffffffffffffff60901b16179055565b859089615387612cc78a61508b565b9360006153948383615af8565b1561544f5750916153ac6153b79260ff979894615b1a565b838c881c1690615a8f565b610100600160481b039490861b85169116176153d38184615af8565b156154415760ff91816153e96153f69386615b1a565b861c168784871c16615a8f565b9116921b16175b6154078682615af8565b61541f579461541a6134d79596856150c5565b61532a565b604051631e74e8fb60e31b815290821660048201529085166024820152604490fd5b5050905060ff9150166153fd565b94965061546a935061546091615b1a565b868a851c16615a8f565b9160ff891693868086610100600160481b038097861b161761548c8185615b1a565b841c1691831c1601918683116152ca57501b16176153fd565b5060ff841615615312565b6154b8614d5b565b50612f3b61046d612cc7615043565b6154cf614d5b565b506000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b860205260406000206040519061550982612d64565b80546001600160481b038116835260481c6001600160401b03166020830152600101546001600160a01b0316604082015290565b8115615547570490565b634e487b7160e01b600052601260045260246000fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000169182156155f1576155de828260ff936040610100600160481b03960151164203816155c2602085019889519383875160081c160261553d565b9160081c1601915160081c168082106000146155ea5750615608565b9251169160081b161790565b9050615608565b506020015160ff16610100600160481b0317919050565b6001600160401b039081811161561c571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608490fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000161561572c576156a9614d5b565b50600160481b600160901b036156c0612cc7615043565b610100600160481b0360ff6156fb600080516020615f2883398151915296808854976156ec8188615b1a565b60081c16908560081c16615a8f565b92169160081b161760481b16906001600160401b0360901b4260901b1690600160481b600160d01b03191617179055565b5050565b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000161561572c57615769614d5b565b50615775612cc7615043565b90600160481b600160901b03600080516020615f2883398151915293845493816001600160401b0360901b4260901b16946157b08184615b1a565b60081c16828260081c160182811160001461583c5750610100600160481b0360ff6157da84615608565b92169160081b1617906001600160481b038516906157f88284615b1a565b80856001600160401b0360901b1988161760081c16908360081c161060001461583557505b60481b1691600160481b600160d01b03191617179055565b905061581d565b60ff6157da610100600160481b0392615608565b6001600160401b03807f0000000000000000000000000000000000000000000000000000000000000000161561364a57610100600160481b0360ff61590a61ffff6134d79661589d614d5b565b50169384600052600080516020615e88833981519152806020526158c7612cc7604060002061508b565b60009687526020919091526040909520805467ffffffffffffffff60901b191642831660901b67ffffffffffffffff60901b161781559581906156ec8188615b1a565b92169160081b1617906150c5565b6001600160401b03807f0000000000000000000000000000000000000000000000000000000000000000161561364a5761ffff6134d793615957614d5b565b5016600090808252600080516020615e8883398151915280602052615981612cc76040852061508b565b91835260205260408220805467ffffffffffffffff60901b191642851660901b67ffffffffffffffff60901b161781559383906159be8184615b1a565b60081c16838260081c1601838111600014615a2b5750610100600160481b0360ff6159e885615608565b92169160081b1617918084546001600160481b03811693615a098587615b1a565b5060081c16908360081c1610600014615a235750906150c5565b9050906150c5565b60ff6159e8610100600160481b0392615608565b9067ffffffffffffffff60481b82549160481b169067ffffffffffffffff60481b1916179055565b468103615a715750565b604490604051906377d879fb60e01b82526004820152466024820152fd5b6001600160401b03918216908216039190821161192c57565b60009182915b6001600160401b03908181168015615af05760001901918211615adc571691615ad690614d2d565b91615aae565b634e487b7160e01b85526011600452602485fd5b505050915090565b90615b038183615b1a565b6001600160401b03809160081c169160081c161190565b60ff9182169116818103615b2c575050565b604051635ce6db6160e11b815260ff918216600482015291166024820152604490fd5b60ff811660081015612f3b5750600890565b9060ff8091169116039060ff821161192c57565b60ff16604d811161192c57600a0a90565b919060ff821660ff8216818114615bda571115615bb957615bae612f3b9392615bb392615b61565b615b75565b9061553d565b615bae90615bc692615b61565b9081810291818304149015171561192c5790565b5050505090565b615c1461397660ff92610100600160481b039495615bfe87615b4f565b908581168683161015615c1f5750958691615b86565b92169160081b161790565b9050958691615b86565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615615c5857565b604051631afcd79f60e31b8152600490fd5b6001600160a01b03908116908115615cc557600080516020615dc883398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020615dc8833981519152546001600160a01b03163303615cff57565b60405163118cdaa760e01b8152336004820152602490fd5b600080516020615ee88339815191526002815414615d355760029055565b604051633ee5aeb560e01b8152600490fdfeebcc9f646b0f459ff8f387587d536b0af3484cf442e1577400f322334e7d1ef047028352a8b3feae1a85fba43bc13f990568bb1637dce33d3dbfd791a0808b7f6c3cb3f3ae91330f31ba2bc0ff8855fc834fb66dc27e8e0b1a398617dabaa5a668dfeeddfa5e4e9adceec01a3aba274bdcbab3f6ac9956417a4332f2b08abdda9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930064bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022fd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f00758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e1ad78307a8b51804c575f26039dcb87c58925afb3b7c08732f3b21b942aed7a768561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d89efb21dcaedea63b55c44882f329622e13a8d0f5b947b3a372826208a9003da1549bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f852fa0677fef8612c6c15b518c9fa56761e9ed15cfd5c6e5399e5467985ac7ed9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00bfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12497c25289a27ec8c9be54d4a154cf80490d69bda989cdb8328232e08fea9220420a26469706673582212207ed5e889b9f55b8e46c735a86c62e208aeae9aa95f45c30245d74d8a7fdad80c64736f6c63430008130033",isSuperArgs$3=t=>typeof t[0]=="string"||Array.isArray(t[0])||"_isInterface"in t[0];var Un;let NttManager__factory$1=(Un=class extends ContractFactory{constructor(...e){if(isSuperArgs$3(e))super(...e);else{const[s,l]=e;super(_abi$3,Un.linkBytecode(s),l)}}static linkBytecode(e){let s=_bytecode$3;return s=s.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),s}getDeployTransaction(e,s,l,d,u,p){return super.getDeployTransaction(e,s,l,d,u,p||{})}deploy(e,s,l,d,u,p){return super.deploy(e,s,l,d,u,p||{})}connect(e){return super.connect(e)}static createInterface(){return new Interface(_abi$3)}static connect(e,s){return new Contract(e,_abi$3,s)}},Ae(Un,"bytecode",_bytecode$3),Ae(Un,"abi",_abi$3),Un);const _abi$2=[{type:"constructor",inputs:[{name:"nttManager",type:"address",internalType:"address"},{name:"wormholeCoreBridge",type:"address",internalType:"address"},{name:"wormholeRelayerAddr",type:"address",internalType:"address"},{name:"specialRelayerAddr",type:"address",internalType:"address"},{name:"_consistencyLevel",type:"uint8",internalType:"uint8"},{name:"_gasLimit",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"WORMHOLE_TRANSCEIVER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"consistencyLevel",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"encodeWormholeTransceiverInstruction",inputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],outputs:[{name:"",type:"bytes",internalType:"bytes"}],stateMutability:"pure"},{type:"function",name:"gasLimit",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getNttManagerOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getNttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"payable"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isVAAConsumed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"nttManager",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"nttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"parseWormholeTransceiverInstruction",inputs:[{name:"encoded",type:"bytes",internalType:"bytes"}],outputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],stateMutability:"pure"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"receiveMessage",inputs:[{name:"encodedMessage",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"receiveWormholeMessages",inputs:[{name:"payload",type:"bytes",internalType:"bytes"},{name:"additionalMessages",type:"bytes[]",internalType:"bytes[]"},{name:"sourceAddress",type:"bytes32",internalType:"bytes32"},{name:"sourceChain",type:"uint16",internalType:"uint16"},{name:"deliveryHash",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"sendMessage",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]},{name:"nttManagerMessage",type:"bytes",internalType:"bytes"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"setIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEvm",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setWormholePeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"specialRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ISpecialRelayer"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferTransceiverOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"wormhole",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormhole"}],stateMutability:"view"},{type:"function",name:"wormholeRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormholeRelayer"}],stateMutability:"view"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ReceivedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"ReceivedRelayedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"RelayingInfo",inputs:[{name:"relayingType",type:"uint8",indexed:!1,internalType:"uint8"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"deliveryPayment",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"SendTransceiverMessage",inputs:[{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"message",type:"tuple",indexed:!1,internalType:"struct TransceiverStructs.TransceiverMessage",components:[{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"nttManagerPayload",type:"bytes",internalType:"bytes"},{name:"transceiverPayload",type:"bytes",internalType:"bytes"}]}],anonymous:!1},{type:"event",name:"SetIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isEvm",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetWormholePeer",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"CallerNotNttManager",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CallerNotRelayer",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CannotRenounceTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"}]},{type:"error",name:"CannotTransferTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"},{name:"newOwner",type:"address",internalType:"address"}]},{type:"error",name:"InvalidBoolVal",inputs:[{name:"val",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidBoolValue",inputs:[{name:"value",type:"uint256",internalType:"BooleanFlag"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidRelayingConfig",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidVaa",inputs:[{name:"reason",type:"string",internalType:"string"}]},{type:"error",name:"InvalidWormholeChainIdZero",inputs:[]},{type:"error",name:"InvalidWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidWormholePeerZeroAddress",inputs:[]},{type:"error",name:"LengthMismatch",inputs:[{name:"encodedLength",type:"uint256",internalType:"uint256"},{name:"expectedLength",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerAlreadySet",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"TransferAlreadyCompleted",inputs:[{name:"vaaHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"UnexpectedAdditionalMessages",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"deployer",type:"address",internalType:"address"},{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedRecipientNttManagerAddress",inputs:[{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"expectedRecipientNttManagerAddress",type:"bytes32",internalType:"bytes32"}]}],_bytecode$2="0x6101c06040818152346200031d5760c082620036ef803803809162000025828562000322565b8339810103126200031d576200003b826200035c565b906020906200004c8285016200035c565b926200005a8286016200035c565b62000068606087016200035c565b9160808701519660ff881688036200031d5760a00151947ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080549060ff82881c166200030c5782906001600160401b03906002600160401b031984831601620002c9575b50505050306080528160a052845190637e062a3560e11b8252808260048160018060a01b038097165afa908115620002be576000916200027f575b50905060c0523360e0528061012096168652806101409216825261016092168252610180924684526101009687526101a0948552519461337d9687620003728839608051876130e8015260a051878181610dbd015281816114fa0152818161187d01528181612002015281816121b10152818161288d0152612a91015260c051878181610e4801528181611c40015281816122030152818161263a0152612d29015260e05187610cc501525186818161076301528181610efa0152818161122101528181611bab01528181611d9e01526123480152518581816101fd01528181610bbe01528181610f270152818161124d01528181611b5301528181611dcb0152818161225301528181612daf01528181612e8f0152612f2d01525184818161079c015281816115e3015281816119f7015281816122a30152612c72015251838181610a1e01528181611be9015281816122f30152612d66015251826102410152518181816106a1015281816119c20152612c470152f35b82813d8311620002b6575b62000296818362000322565b81010312620002b35750620002ab906200035c565b803862000107565b80fd5b503d6200028a565b86513d6000823e3d90fd5b6001600160401b0319909316811790925586519182527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291a138818180620000cc565b865163f92ee8a960e01b8152600490fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200034657604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200031d5756fe6080604081815260048036101561001557600080fd5b600092833560e01c908163036de8af14612558575080630900f010146120315780630b4a1e891461138857806324fb21db14611fed578063320d0d8e14611faa57806348b330d614611f645780634b5b0505146117ec5780634b795b211461174b578063529dca321461154157806358f709ba146114d2578063657b3b2f1461143157806366152efc146113d0578063689f90c31461138d578063694977d7146113885780637ab564031461112d57806380eb3239146110f15780638129fc1c14610c3657806381e8ec7f14610bed57806384acd1bb14610ba95780638da5cb5b14610b735780638fd3ab8014610a4d57806390ea542814610a09578063935dec07146109c757806396dddc63146109125780639fd0506d146108ca578063b187bd2614610889578063b5634c731461083c578063bc7f6d37146107f9578063d8d28418146107cb578063da25b72514610787578063e8dfd50814610749578063f2fde38b14610714578063f48066a8146106c8578063f68016b7146106895763f953cec7146101a457600080fd5b346106855760209081600319360112610681578035906001600160401b038581841161067e576101da6101f9943690850161274b565b86518095819263607ec5ef60e11b835288878401526024830190612834565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156106745786938790889261046f575b501561044c57507f000000000000000000000000000000000000000000000000000000000000000046810361043057506060830161ffff918282511660005260008051602061326883398151915286528660002054608086019081518091036103ff575061014086016102c7815160005260008051602061328883398151915260205260ff6040600020541690565b6103e657927ff6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0608060e0948b8a8e9996896103286103799d9b516000526000805160206132888339815191526020526040600020600160ff19825416179055565b519360a08989511692519301511692519384528d8401528d8301526060820152a15116940151906103576128f0565b50610360612916565b508651630453806b60e11b815293849283928301612a6f565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156103dc576103b39450859186946103b6575b50815191015191612a8e565b80f35b9093506103d591503d8087833e6103cd818361270f565b8101906129f1565b92386103a7565b84513d87823e3d90fd5b518851632d30ec0360e21b815280870191909152602490fd5b83518951633cd8e72b60e11b815290861661ffff1687820190815260208101929092529081900360400190fd5b0390fd5b826044918751916377d879fb60e01b8352820152466024820152fd5b8551634771719b60e11b815280840186905290819061042c906024830190612834565b945050503d8087853e610482818561270f565b830160609081858203126106705784518381116105f45785016101609283828403126105f85788519384018481108682111761065b5789526104c382613000565b84526104d088830161300e565b888501526104df89830161300e565b898501528082015161ffff8116810361065757818501526080808301518186015261050c60a08401612f98565b60a086015261051d60c08401613000565b60c086015260e0830151868111610653578461053a91850161296e565b60e086015261010061054d81850161300e565b90860152610120908184015187811161064f57840185601f8201121561064f5780518c9461058661057d836127fa565b9651968761270f565b8186528c8087019260071b8401019288841161064b578d01915b8383106105fc57505050505084015261014080910151908301526105c586860161301f565b9487810151908482116105f857019080601f830112156105f45781516105ec928801612937565b909338610238565b8880fd5b8980fd5b84838a031261064b578d8f918287935190610616826126d9565b86518252838701518483015261062d818801613000565b9082015261063c858701613000565b858201528152019201916105a0565b8f80fd5b8c80fd5b8b80fd5b8a80fd5b604187634e487b7160e01b6000525260246000fd5b8780fd5b85513d88823e3d90fd5b80fd5b8380fd5b8280fd5b5050346106c457816003193601126106c457602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5080fd5b5050346106c45760203660031901126106c45760209061ffff6106e9612669565b166000526000805160206132a8833981519152825261070b81600020546130a4565b90519015158152f35b8382346106c45760203660031901126106c457356001600160a01b03811681036106c4576103b3906107446131b8565b613187565b5050346106c457816003193601126106c4576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106c457816003193601126106c4576020906107e8612878565b90516001600160a01b039091168152f35b5050346106c45760203660031901126106c45760209061ffff61081a612669565b16600052600080516020613248833981519152825261070b81600020546130a4565b5034610685578160031936011261068557610855612669565b92602435906001600160401b03821161067e57509261087c61088292602095369101612792565b90612bd1565b9051908152f35b5050346106c457816003193601126106c45760209060027f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b825802254149051908152f35b5050346106c457816003193601126106c4577fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12495490516001600160a01b039091168152602090f35b508290346106c457826003193601126106c45761092d612669565b6109356127eb565b9161093e6131b8565b61ffff82169081156109b957507f4add57d97a7bf5035340ea1212aeeb3d4d3887eb1faf3821a8224c3a6956a10c93946109b39161097b856130d6565b906000526000805160206132a88339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b0390a180f35b8551630f7662c960e21b8152fd5b5050346106c45760203660031901126106c45760209061ffff6109e8612669565b16600052600080516020613268833981519152825280600020549051908152f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b509034610685578260031936011261068557610a676130e5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b038082166001810190828211610b605760ff84871c16908115610b53575b50610b4357169360ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e541615610b35575068ffffffffffffffffff19168317680100000000000000001768ff000000000000000019169055519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a180f35b8351632866815360e11b8152fd5b845163f92ee8a960e01b81528690fd5b9050828216111538610aaf565b634e487b7160e01b885260118752602488fd5b5050346106c457816003193601126106c4576000805160206132e88339815191525490516001600160a01b039091168152602090f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106c457816003193601126106c4578051610c3291610c0e826126f4565b60058252640312e302e360dc1b602083015251918291602083526020830190612834565b0390f35b508260031936011261068557610c4a6130e5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549160ff83831c1615906001600160401b0393848116801590816110e9575b60011490816110df575b1590816110d6575b506110c75767ffffffffffffffff1981166001178655826110a8575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081163381900361108c5750610cf7613146565b610cff613146565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055610dab610d2e612878565b610d36613146565b610d3e613146565b610d46613146565b60017f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022557fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124980546001600160a01b03191633179055610da3613146565b610744613146565b8351634b4fd03b60e01b8152602095907f0000000000000000000000000000000000000000000000000000000000000000831687828681845afa918215611082578a9261104b575b508651631dcbf42b60e11b81529188838781855afa928315611041578b9361100a575b5087519360a085019081118582101761065b578852639c23bd3b60e01b845288840191825260ff9081168489019081527f00000000000000000000000000000000000000000000000000000000000000008616606086019081529382166080860190815289516301529f6160e21b815295516001600160e01b031916888701529251602486015251811660448501529151606484015251166084820152878160a48173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156110005791610f21939187938a91610fde575b5086518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fac565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015610fd457610f9c575b50610f5d578380f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29268ff00000000000000001981541690555160018152a13880808380f35b8381813d8311610fcd575b610fb1818361270f565b81010312610fc957610fc290612f98565b5038610f54565b8580fd5b503d610fa7565b83513d88823e3d90fd5b610ffa91503d808c833e610ff2818361270f565b81019061302c565b38610ee5565b85513d8a823e3d90fd5b9092508881813d831161103a575b611022818361270f565b810103126106575761103390613000565b9138610e16565b503d611018565b88513d8d823e3d90fd5b9091508781813d831161107b575b611063818361270f565b810103126105f85761107490613000565b9038610df3565b503d611059565b87513d8c823e3d90fd5b82604491865191636345072160e11b8352820152336024820152fd5b68ffffffffffffffffff19166801000000000000000117855538610cba565b50825163f92ee8a960e01b8152fd5b90501538610c9e565b303b159150610c96565b849150610c8c565b50913461067e57602036600319011261067e575061070b6020923560005260008051602061328883398151915260205260ff6040600020541690565b508160031936011261068557611141612669565b6024359161114d6131b8565b61ffff80831690811561137857841561136857816000526000805160206132688339815191529160209280845287600020548061133f575081600052835285876000205586519161119d836126be565b630c7e33e160e11b8352838301918252878301878152885163077650fb60e51b815293516001600160e01b031916868501529151166024830152516044820152868160648173__$93083e246e55d56d98f3df2872cd16bfd0$__5af492831561133557611248938392899161131b575b5087516358cd21bf60e11b815294859283927f0000000000000000000000000000000000000000000000000000000000000000918401612fac565b0381347f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610674576112bf575b5050915161ffff909216825260208201527fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d3264669080604081016109b3565b81813d8311611314575b6112d3818361270f565b81010312611310577fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d326466936113096109b392612f98565b5093611282565b8480fd5b503d6112c9565b61132f91503d808b833e610ff2818361270f565b3861120d565b86513d89823e3d90fd5b885163b55eeae960e01b815261ffff881681880190815260208101929092529081906040010390fd5b855163137063ef60e11b81528390fd5b8551630f7662c960e21b81528390fd5b612624565b5050346106c457816003193601126106c45760209060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb541690519015158152f35b50913461067e57602036600319011261067e57508051916113f0836126a3565b35908115159182810361142c57610c32935280519160f81b60208301526001825261141a826126f4565b51918291602083526020830190612834565b600080fd5b508290346106c457826003193601126106c45761144c612669565b6114546127eb565b9161145d6131b8565b61ffff82169081156109b957507f528b18a533e892b5401d1fb63597275df9d2bb45b13e7695c3147cd07b9746c393946109b39161149a856130d6565b906000526000805160206132c88339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b5034610685576020366003190112610685578035916001600160a01b038084168403611310577f000000000000000000000000000000000000000000000000000000000000000016330361152a57836103b3846131f1565b60249250519063c5aa615360e01b82523390820152fd5b5060a0366003190112610685576001600160401b0381358181116113105761156c903690840161274b565b6024928335938385116117475736602386011215611747578482013593611592856127fa565b9461159f8851968761270f565b808652602096838888019260051b8201019236841161065757848201925b8484106117215750505050506044356064359461ffff86169081870361142c57608435937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361170e57826000526000805160206132688339815191528952838a60002054036116e757848b52600080516020613288833981519152895260ff8a8c2054166116d3575061167c846000526000805160206132888339815191526020526040600020600160ff19825416179055565b516116c357606061037995938a95937ff557dbbb087662f52c815f6c7ee350628a37a51eae9608ff840d996b65f87475938b519283528a8301528a820152a16103576128f0565b875163c504ea2960e01b81528490fd5b8951632d30ec0360e21b8152808701869052fd5b8951633cd8e72b60e11b815261ffff89168188019081526020810186905281906040010390fd5b8951631c26958960e01b81523381880152fd5b833582811161064f578a9161173c839289369188010161274b565b8152019301926115bd565b8680fd5b508290346106c457826003193601126106c457611766612669565b61176e6127eb565b916117776131b8565b61ffff82169081156109b957507f0fe301480713b2c2072ee91b3bcfcbf2c0014f0447c89046f020f0f80727003c93946109b3916117b4856130d6565b906000526000805160206132488339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b509060031960a03682011261068157611803612669565b9060249283356001600160401b0390818111610670576118269036908801612792565b906044358181116105f45761183e903690890161274b565b90608435977f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00976002895414611f5557600289556001600160a01b03937f000000000000000000000000000000000000000000000000000000000000000085163303611f3f57908b6118f881936119078a519b6118ba8d6126a3565b848d528b516304616c8f60e21b81526309945ff160e41b89820152338782015260648035604483015260a0908201529c8d94859460a4860190612834565b91848303016084850152612834565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415611f355782988395611ee3575b5061193f602080980151612b56565b80511580611ed4575b15611b2b575050928a928592838989976119ba61ffff8f16968792836000526000805160206132688339815191528c5261198e6119888660002054612fd4565b9b612fd4565b94519c8d9b8c9a8b9a6312d729bd60e21b8c528b0152169088015260e0604488015260e4870190612834565b9360648601527f0000000000000000000000000000000000000000000000000000000000000000608486015260a48501521660c4830152039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611b2157611ab0575b5061ffff926060611a9584611aa9946000805160206133288339815191528460019c6000805160206133088339815191529b99519060008252848201523485820152a15b815197889716875281818801528451828801528401518387015283015160808087015260c0860190612834565b910151838203603f190160a0850152612834565b0390a15580f35b9391928185813d8311611b1a575b611ac8818361270f565b81010312610670576060611a9561ffff95611aa9946000805160206133288339815191528460019c611b086000805160206133088339815191529c612f98565b509c5050509450949650505092611a24565b503d611abe565b83513d8a823e3d90fd5b919394959250959697989a50511580611ea8575b15611d7e578651631a90a21960e01b8152937f000000000000000000000000000000000000000000000000000000000000000082169087868681855afa958d8715611d7357908993929197611d40575b50869291611bd3918b519889809481936358cd21bf60e11b83527f0000000000000000000000000000000000000000000000000000000000000000908c8401612fac565b03925af1948515611d36578c95611cff575b50817f00000000000000000000000000000000000000000000000000000000000000001690340390348211611ceb5790818d9796959493923b15610670578c96889660849561ffff8d519a8b998a98630b5624e160e11b8a527f0000000000000000000000000000000000000000000000000000000000000000169089015216908601528760448601521660648401525af18015611ce157611cc9575b50600080516020613308833981519152936060611a95856001999560008051602061332883398151915284611aa99761ffff9a51908e8252848201523485820152a1611a68565b611cd59096929661267a565b610fc957938538611c82565b84513d84823e3d90fd5b83601186634e487b7160e01b600052526000fd5b9094508681813d8311611d2f575b611d17818361270f565b8101031261065357611d2890612f98565b9338611be5565b503d611d0d565b88513d8e823e3d90fd5b9196509181813d8111611d6c575b611d58818361270f565b8101031261142c5751948791611bd3611b8f565b503d611d4e565b8a51903d90823e3d90fd5b9050611dc59350849286999799518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fac565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611e9e57611e40575b5091611aa96001956060611a958560008051602061330883398151915297600080516020613328833981519152848d61ffff9a519060028252848201523485820152a1611a68565b9181838195933d8311611e97575b611e58818361270f565b81010312611747576001956060611a95611aa99360008051602061330883398151915297611e8861ffff98612f98565b50959750955050509550611df8565b503d611e4e565b83513d89823e3d90fd5b5061ffff8a166000526000805160206132488339815191528652611ecf87600020546130a4565b611b3f565b50611ede8b613051565b611948565b985093503d80838a3e611ef6818a61270f565b88019787818a03126106855780518581116106815789611f17918301612988565b98602082015186811161131057611f2e920161296e565b9338611930565b87513d84823e3d90fd5b509085519063c5aa615360e01b82523390820152fd5b508451633ee5aeb560e01b8152fd5b50913461067e57602036600319011261067e578235906001600160401b03821161067e5750611f9b602093611fa09236910161274b565b612b56565b9051905115158152f35b5050346106c45760203660031901126106c45760209061ffff611fcb612669565b166000526000805160206132c8833981519152825261070b81600020546130a4565b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5090346106855760209182600319360112610681576001600160a01b0391813583811690818103611747576120646131b8565b61206c6130e5565b3b156124ff577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e938454936120f960ff861615613129565b60ff199485166001178655303b1561174757825163011fa75760e71b81528781868183305af180156123f3576124ec575b50825163689f90c360e01b815282818681305afa9081156123f35788916124b7575b5015612186575b505050507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b82516324fb21db60e01b815282818681305afa9081156123f357906121d891899161249a575b5082167f0000000000000000000000000000000000000000000000000000000000000000831614613129565b8251630b4a1e8960e01b815282818681305afa9081156123f3579061222a91899161246d575b5082167f0000000000000000000000000000000000000000000000000000000000000000831614613129565b82516384acd1bb60e01b815282818681305afa80156123f3578890612435575b61227a915082167f0000000000000000000000000000000000000000000000000000000000000000831614613129565b825163da25b72560e01b815282818681305afa80156123f35788906123fd575b6122ca915082167f0000000000000000000000000000000000000000000000000000000000000000831614613129565b825163121d4a8560e31b815282818681305afa9081156123f35788916123b9575b508161231b927f000000000000000000000000000000000000000000000000000000000000000016911614613129565b8082518094631d1bfaa160e31b825281305afa9182156123b057508591612379575b50612370915060ff807f000000000000000000000000000000000000000000000000000000000000000016911614613129565b38808080612153565b905081813d83116123a9575b61238f818361270f565b81010312610681576123a361237091613000565b3861233d565b503d612385565b513d87823e3d90fd5b90508281813d83116123ec575b6123d0818361270f565b810103126106705751908082168203610670579061231b6122eb565b503d6123c6565b84513d8a823e3d90fd5b508281813d831161242e575b612413818361270f565b8101031261067057518181168103610670576122ca9061229a565b503d612409565b508281813d8311612466575b61244b818361270f565b81010312610670575181811681036106705761227a9061224a565b503d612441565b61248d9150843d8611612493575b612485818361270f565b810190612859565b386121fe565b503d61247b565b6124b19150843d861161249357612485818361270f565b386121ac565b90508281813d83116124e5575b6124ce818361270f565b81010312610670576124df9061301f565b3861214c565b503d6124c4565b6124f89097919761267a565b953861212a565b815162461bcd60e51b8152808401869052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b828591346106855760203660031901126106855781356001600160a01b03818116939184900361131057806000805160206132e88339815191525416927fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124992835492831694338614159081612619575b506126045750506001600160a01b031916831790557f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b63e2a08e5d60e01b8252339082015260249150fd5b9050331415886125c8565b3461142c57600036600319011261142c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6004359061ffff8216820361142c57565b6001600160401b03811161268d57604052565b634e487b7160e01b600052604160045260246000fd5b602081019081106001600160401b0382111761268d57604052565b606081019081106001600160401b0382111761268d57604052565b608081019081106001600160401b0382111761268d57604052565b604081019081106001600160401b0382111761268d57604052565b90601f801991011681019081106001600160401b0382111761268d57604052565b6001600160401b03811161268d57601f01601f191660200190565b81601f8201121561142c5780359061276282612730565b92612770604051948561270f565b8284526020838301011161142c57816000926020809301838601378301015290565b91909160408184031261142c5760408051916001600160401b039183018281118482101761268d576040528294813560ff8116810361142c578452602082013592831161142c576020926127e6920161274b565b910152565b60243590811515820361142c57565b6001600160401b03811161268d5760051b60200190565b60005b8381106128245750506000910152565b8181015183820152602001612814565b9060209161284d81518092818552858086019101612811565b601f01601f1916010190565b9081602091031261142c57516001600160a01b038116810361142c5790565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156128e4576000916128c9575090565b6128e1915060203d811161249357612485818361270f565b90565b6040513d6000823e3d90fd5b604051906128fd826126d9565b6060808360008152600060208201528160408201520152565b60405190612923826126be565b606060408360008152600060208201520152565b9092919261294481612730565b91612952604051938461270f565b82948284528282011161142c57602061296c930190612811565b565b9080601f8301121561142c5781516128e192602001612937565b919060808382031261142c57604051906129a1826126d9565b819380518352602081015160208401526040810151916001600160401b039283811161142c57816129d391840161296e565b6040850152606082015192831161142c576060926127e6920161296e565b919060408382031261142c578251906001600160401b039182811161142c5781612a1c918601612988565b9360208101519083821161142c57019060608282031261142c5760405192612a43846126be565b8251845260208301516020850152604083015190811161142c57612a67920161296e565b604082015290565b6309945ff160e41b81526040602082018190526128e192910190612834565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690818103612b385750803b1561142c5761ffff60008094612b1e604080519889978896879563275e091560e21b875216600486015260248501526060604485015280516064850152602081015160848501520151606060a484015260c4830190612834565b03925af180156128e457612b2f5750565b61296c9061267a565b60449250604051916339dee99160e11b835260048301526024820152fd5b9060405191612b64836126a3565b6000835282815115612bcc5750600181015160fe8116612bb05760ff16151583525160018103612b915750565b604490604051906355c5b3e360e11b8252600482015260016024820152fd5b60405163f7a37b0760e01b815260ff9091166004820152602490fd5b925050565b90612be0602080920151612b56565b51612f175761ffff8216906000908282526000805160206132c88339815191528152604093612c11858420546130a4565b80612ef0575b612ed857612c2490613051565b15612ceb5750825163c23ee3c360e01b81526004810192909252602482018190527f0000000000000000000000000000000000000000000000000000000000000000604483015282826064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315612ce1578193612cb0575b50505090565b9091809350813d8311612cda575b612cc8818361270f565b8101031261067e575051388080612caa565b503d612cbe565b51903d90823e3d90fd5b8282939492526000805160206132488339815191528152612d0e828420546130a4565b15612e7657815163209d173960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820195909552604481018490529381856064817f000000000000000000000000000000000000000000000000000000000000000085165afa948515612e69578495612e3a575b509080600492845193848092631a90a21960e01b82527f0000000000000000000000000000000000000000000000000000000000000000165afa928315612e3157508392612e03575b50508201809211612def575090565b634e487b7160e01b81526011600452602490fd5b90809250813d8311612e2a575b612e1a818361270f565b810103126106c457513880612de0565b503d612e10565b513d85823e3d90fd5b9094508181813d8311612e62575b612e52818361270f565b8101031261068157519381612d97565b503d612e48565b50505051903d90823e3d90fd5b8151631a90a21960e01b815291935090919080836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa938415612ecd57508193612cb05750505090565b51913d9150823e3d90fd5b845163251268db60e21b815260048101859052602490fd5b508383526000805160206132a88339815191528252612f11858420546130a4565b15612c17565b604051631a90a21960e01b8152915080826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156128e457600091612f6c575b50905090565b82813d8311612f91575b612f80818361270f565b8101031261067e5750518038612f66565b503d612f76565b51906001600160401b038216820361142c57565b9060ff612fcd60409295949560008552606060208601526060850190612834565b9416910152565b8060a01c612fe8576001600160a01b031690565b6024906040519063033b960d60e41b82526004820152fd5b519060ff8216820361142c57565b519063ffffffff8216820361142c57565b5190811515820361142c57565b9060208282031261142c5781516001600160401b03811161142c576128e1920161296e565b61ffff16806000526000805160206132c88339815191526020526130796040600020546130a4565b9081613083575090565b90506000526000805160206132a88339815191526020526128e16040600020545b80156130d057600181146130ca576024906040519063b998bad560e01b82526004820152fd5b50600190565b50600090565b156130e057600190565b600090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461311757565b604051633c64f99360e21b8152600490fd5b1561313057565b634e487b7160e01b600052600160045260246000fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561317557565b604051631afcd79f60e31b8152600490fd5b6001600160a01b0381161561319f5761296c906131f1565b604051631e4fbdf760e01b815260006004820152602490fd5b6000805160206132e8833981519152546001600160a01b031633036131d957565b60405163118cdaa760e01b8152336004820152602490fd5b6000805160206132e883398151915280546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a356fed4cbc7742a1e11dcc33209ac33862ef146cfcb6d7f860df12df42105dfedb1c948c66ef0992b4bcc14f2551075db9459fc23bf706abb76034f1c66c1ba2846845e6aacb3f16e5b01c8b072a0ab4c38e919266014a45db863ee64a4580fb3e7e2e79d2e5e46f62be2ac831294e423b664f30320fb9ebaefd78a978cafe07c0f8c16ee6ac6bf7a8d7c37112a9426e00852b215ac4f5c50536beb6c95f1ba47b4af9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930079376a0dc6cbfe6f6f8f89ad24c262a8c6233f8df181d3fe5abb2e2442e8c738c3192e083c87c556db539f071d8a298869f487e951327b5616a6f85ae3da958ea264697066735822122059bdad9542fb301c5a401dc5ec7c26dca547abf82e0e0ca3cc87aced2c37698b64736f6c63430008130033",isSuperArgs$2=t=>typeof t[0]=="string"||Array.isArray(t[0])||"_isInterface"in t[0];var Wn;let WormholeTransceiver__factory$1=(Wn=class extends ContractFactory{constructor(...e){if(isSuperArgs$2(e))super(...e);else{const[s,l]=e;super(_abi$2,Wn.linkBytecode(s),l)}}static linkBytecode(e){let s=_bytecode$2;return s=s.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),s}getDeployTransaction(e,s,l,d,u,p,m){return super.getDeployTransaction(e,s,l,d,u,p,m||{})}deploy(e,s,l,d,u,p,m){return super.deploy(e,s,l,d,u,p,m||{})}connect(e){return super.connect(e)}static createInterface(){return new Interface(_abi$2)}static connect(e,s){return new Contract(e,_abi$2,s)}},Ae(Wn,"bytecode",_bytecode$2),Ae(Wn,"abi",_abi$2),Wn);const _abi$1=[{type:"constructor",inputs:[{name:"_token",type:"address",internalType:"address"},{name:"_mode",type:"uint8",internalType:"enum IManagerBase.Mode"},{name:"_chainId",type:"uint16",internalType:"uint16"},{name:"_rateLimitDuration",type:"uint64",internalType:"uint64"},{name:"_skipRateLimiting",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"NTT_MANAGER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"attestationReceived",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"cancelOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"chainId",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"completeInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"completeOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"executeMsg",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"message",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getCurrentInboundCapacity",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getCurrentOutboundCapacity",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getInboundLimitParams",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"view"},{type:"function",name:"getInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.InboundQueuedTransfer",components:[{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipient",type:"address",internalType:"address"}]}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getMode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getOutboundLimitParams",inputs:[],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"pure"},{type:"function",name:"getOutboundQueuedTransfer",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.OutboundQueuedTransfer",components:[{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"sender",type:"address",internalType:"address"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}]}],stateMutability:"view"},{type:"function",name:"getPeer",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct INttManager.NttManagerPeer",components:[{name:"peerAddress",type:"bytes32",internalType:"bytes32"},{name:"tokenDecimals",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getThreshold",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getTransceiverInfo",inputs:[],outputs:[{name:"",type:"tuple[]",internalType:"struct TransceiverRegistry.TransceiverInfo[]",components:[{name:"registered",type:"bool",internalType:"bool"},{name:"enabled",type:"bool",internalType:"bool"},{name:"index",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getTransceivers",inputs:[],outputs:[{name:"result",type:"address[]",internalType:"address[]"}],stateMutability:"pure"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"payable"},{type:"function",name:"isMessageApproved",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isMessageExecuted",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"messageAttestations",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"count",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"mode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"enum IManagerBase.Mode"}],stateMutability:"view"},{type:"function",name:"nextMessageSequence",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"},{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"rateLimitDuration",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"removeTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setInboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"},{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setOutboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"},{name:"decimals",type:"uint8",internalType:"uint8"},{name:"inboundLimit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setThreshold",inputs:[{name:"threshold",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"token",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"tokenDecimals",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"transceiverAttestedToMessage",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"shouldQueue",type:"bool",internalType:"bool"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unpause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"InboundTransferQueued",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"MessageAlreadyExecuted",inputs:[{name:"sourceNttManager",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"msgHash",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"MessageAttestedTo",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"index",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OutboundTransferCancelled",inputs:[{name:"sequence",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipient",type:"address",indexed:!1,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OutboundTransferQueued",inputs:[{name:"queueSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"OutboundTransferRateLimited",inputs:[{name:"sender",type:"address",indexed:!0,internalType:"address"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"currentCapacity",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"PeerUpdated",inputs:[{name:"chainId_",type:"uint16",indexed:!0,internalType:"uint16"},{name:"oldPeerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"oldPeerDecimals",type:"uint8",indexed:!1,internalType:"uint8"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"peerDecimals",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"ThresholdChanged",inputs:[{name:"oldThreshold",type:"uint8",indexed:!1,internalType:"uint8"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverAdded",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"transceiversNum",type:"uint256",indexed:!1,internalType:"uint256"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverRemoved",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransferRedeemed",inputs:[{name:"digest",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"TransferSent",inputs:[{name:"recipient",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"msgSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"BurnAmountDifferentThanBalanceDiff",inputs:[{name:"burnAmount",type:"uint256",internalType:"uint256"},{name:"balanceDiff",type:"uint256",internalType:"uint256"}]},{type:"error",name:"CallerNotTransceiver",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CancellerNotSender",inputs:[{name:"canceller",type:"address",internalType:"address"},{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"CapacityCannotExceedLimit",inputs:[{name:"newCurrentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"newLimit",type:"uint72",internalType:"TrimmedAmount"}]},{type:"error",name:"DeliveryPaymentTooLow",inputs:[{name:"requiredPayment",type:"uint256",internalType:"uint256"},{name:"providedPayment",type:"uint256",internalType:"uint256"}]},{type:"error",name:"DisabledTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"InboundQueuedTransferNotFound",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InboundQueuedTransferStillQueued",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidMode",inputs:[{name:"mode",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidPeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidPeerChainIdZero",inputs:[]},{type:"error",name:"InvalidPeerDecimals",inputs:[]},{type:"error",name:"InvalidPeerSameChainId",inputs:[]},{type:"error",name:"InvalidPeerZeroAddress",inputs:[]},{type:"error",name:"InvalidRecipient",inputs:[]},{type:"error",name:"InvalidRefundAddress",inputs:[]},{type:"error",name:"InvalidTargetChain",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"thisChain",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidTransceiverZeroAddress",inputs:[]},{type:"error",name:"MessageNotApproved",inputs:[{name:"msgHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NoEnabledTransceivers",inputs:[]},{type:"error",name:"NonRegisteredTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotEnoughCapacity",inputs:[{name:"currentCapacity",type:"uint256",internalType:"uint256"},{name:"amount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"NumberOfDecimalsNotEqual",inputs:[{name:"decimals",type:"uint8",internalType:"uint8"},{name:"decimalsOther",type:"uint8",internalType:"uint8"}]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OutboundQueuedTransferNotFound",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}]},{type:"error",name:"OutboundQueuedTransferStillQueued",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerNotRegistered",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RefundFailed",inputs:[{name:"refundAmount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"RetrievedIncorrectRegisteredTransceivers",inputs:[{name:"retrieved",type:"uint256",internalType:"uint256"},{name:"registered",type:"uint256",internalType:"uint256"}]},{type:"error",name:"StaticcallFailed",inputs:[]},{type:"error",name:"ThresholdTooHigh",inputs:[{name:"threshold",type:"uint256",internalType:"uint256"},{name:"transceivers",type:"uint256",internalType:"uint256"}]},{type:"error",name:"TooManyTransceivers",inputs:[]},{type:"error",name:"TransceiverAlreadyAttestedToMessage",inputs:[{name:"nttManagerMessageHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"TransceiverAlreadyEnabled",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"TransferAmountHasDust",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"dust",type:"uint256",internalType:"uint256"}]},{type:"error",name:"UndefinedRateLimiting",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"expectedOwner",type:"address",internalType:"address"},{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedMsgValue",inputs:[]},{type:"error",name:"ZeroAmount",inputs:[]},{type:"error",name:"ZeroThreshold",inputs:[]}],_bytecode$1="0x61016034620005cb57601f620065b138819003918201601f19168301916001600160401b038311848410176200057e5780849260a094604052833981010312620005cb578051906001600160a01b0382168203620005cb576020810151916002831015620005cb5760408201519161ffff83168303620005cb576060810151906001600160401b03821690818303620005cb576080015180159182158203620005cb5715809281620005c2575b508215620005a6575b505062000594576080527f8561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d8954620001147e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e15460ff8360081c1614620005d0565b7ffd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f5460005b60ff8360081c168110620003f157505060005b60ff8260081c1681106200035d5750604060ff6200016d92161115620005d0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c166200034b576002600160401b03196001600160401b03821601620002ff575b50503060a05260c0526101009182526101209081526101404681523360e05260405191615f6393846200064e85396080518481816114d401528181611b1401528181611fb1015281816129e20152818161342d015281816139b5015281816140310152818161554f0152818161566201528181615722015281816158410152615909015260a05184614f95015260c0518481816102900152818161051401528181610561015281816128ce0152818161382501528181613eaf0152818161476d01528181614bac0152614c5c015260e05184611c590152518381816104ab0152818161202a015281816121560152818161291c015281816138a701528181613f2c0152614b3401525182818161137c01528181611e500152818161298501526133b701525181818161044901528181613aa1015281816140f90152818161463e0152614ae60152f35b6001600160401b0319166001600160401b039081179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880620001b6565b60405163f92ee8a960e01b8152600490fd5b60018101808211620003db575b60ff8360081c1681106200038a57506200038490620005ee565b6200014c565b620003d590620003cf6200039e84620005fe565b9054620003ab84620005fe565b9054600391821b1c6001600160a01b039081169390911b9190911c161415620005d0565b620005ee565b6200036a565b634e487b7160e01b600052601160045260246000fd5b620003fc81620005fe565b9054600382901b81901c6001600160a01b031660009081527f49bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f602052604090819020905192906001600160401b0360608501908111908511176200057e5760608401604052546200049e60ff821615801592838752602087019360ff808360081c1615928315875260101c16908160408a01529262000561575b5050620005d0565b60018060401b03600160ff6040870151161b87161615159051151592600092835b60ff8a60081c1681106200050f575b5050508262000509959492620004ee620003cf95620004f79414620005d0565b151514620005d0565b60ff60408188169201511610620005d0565b62000139565b6200051a81620005fe565b9054600391821b1c6001600160a01b039081169184901b85901c16146200054c576200054690620005ee565b620004bf565b5060019350849150829050620004ee620004ce565b9091508162000574575b50388062000496565b905015386200056b565b634e487b7160e01b600052604160045260246000fd5b60405163e543ef0560e01b8152600490fd5b15915081620005b9575b503880620000b5565b905038620005b0565b925038620000ac565b600080fd5b15620005d857565b634e487b7160e01b600052600160045260246000fd5b6000198114620003db5760010190565b7e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e18054821015620006375760005260206000200190600090565b634e487b7160e01b600052603260045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c80630271725014612c5f578063036de8af14612bd45780630677df5414612bb55780630900f0101461274e578063186ce612146126f957806319017175146126c35780631f97c9a8146124d1578063203e4a9b146121ce57806323d75e311461219a578063295a521214612140578063396c16b7146121045780633b97e856146120e95780633f4ba83a146120755780634b4fd03b14612017578063689f90c314611fd557806374aa7bfc14611f915780637c91863414611e025780638129fc1c14611bcd5780638413bcba14611ab15780638456cb5914611a3457806386e11ffa14611a0f57806389c619dd146119af5780638da5cb5b146119795780638e3ba8c9146119425780638fd3ab80146118035780639057412d14611686578063961b94d01461162857806397c35146146113a05780639a8a0592146113615780639d782454146111265780639f86029c14610e105780639fd0506d14610dda578063b150fc5514610c2d578063b187bd2614610bff578063b293f97f14610b69578063b4d591bb14610aa8578063c0b07bde14610a62578063c128d170146109e6578063d788c1471461095b578063da4856a114610928578063e5a986031461087c578063e75235b81461084e578063f2fde38b14610709578063f5cfec18146106e6578063f7514fbc146102bf578063fc0c546a1461027a5763fd96063c1461022257600080fd5b346102775760203660031901126102775760606102406004356154ad565b6040805182516001600160481b031681526020808401516001600160401b031690820152918101516001600160a01b031690820152f35b80fd5b50346102775780600319360112610277576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610277576020366003190112610277576004356001600160401b03811681036106e2576102ec615cfd565b6002600080516020615dce83398151915254146106d0576001600160401b038116600052600080516020615eae83398151915260205260406000206040519061033482612d2f565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a083015260405190818560048301549261039b84613755565b80845293600181169081156106ae575060011461066a575b506103c092500382612db6565b60c08201526001600160401b03606082015116156106495760a08101516001600160a01b031633810361061c5750606061048c60407ff80e572ae1b63e2449629b6c7d783add85c36473926f216077f17ee002bcfd07936001600160401b038616600052600080516020615eae833981519152602052610442826000206137a6565b015161046d7f0000000000000000000000000000000000000000000000000000000000000000615a4d565b610475614c36565b906001600160401b0360ff82169160081c16615b6c565b926001600160401b0360405191168152336020820152836040820152a17f000000000000000000000000000000000000000000000000000000000000000060028110156106065780610556575060405163a9059cbb60e01b602082015233602482015260448101919091526105419061051281606481015b03601f198101835282612db6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316614438565b6001600080516020615ece8339815191525580f35b600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156105e5576040516340c10f1960e01b815233600482015260248101929092526000908290604490829084905af180156105d9576105ca575b50610541565b6105d390612d1c565b386105c4565b6040513d6000823e3d90fd5b600080fd5b6040516366001a8960e01b815260ff9091166004820152602490fd5b634e487b7160e01b600052602160045260246000fd5b60405163ceb40a8560e01b81523360048201526001600160a01b03919091166024820152604490fd5b0390fd5b604051635feafa3160e11b81526001600160401b0383166004820152602490fd5b60040187525060208620909186915b8183106106925750509060206103c092820101386103b3565b6020919350806001915483858801015201910190918392610679565b9050602092506103c094915060ff191682840152151560051b820101386103b3565b6040516309e3d0f360e11b8152600490fd5b5080fd5b50346102775780600319360112610277576020610701615496565b604051908152f35b5034610277576020366003190112610277576001600160a01b03600435818116908181036108195761074a9061073d615cc4565b610745615cc4565b615c50565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed97891825460ff600080516020615e4e8339815191525416808203610830575050908391825b845481101561082c578460005281817f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd1015416803b1561082857848091602460405180948193632c7b84dd60e11b83528960048401525af190811561081d578591610805575b505061080090612ff6565b61078f565b61080e90612d1c565b6108195783386107f5565b8380fd5b6040513d87823e3d90fd5b8480fd5b8380f35b604492506040519163d2a13a2960e01b835260048301526024820152fd5b5034610277578060031936011261027757602060ff600080516020615d4e8339815191525416604051908152f35b50346102775760203660031901126102775760043560ff8116908181036105e5576108a5615cc4565b8115610916577f2a855b929b9a53c6fb5b5ed248b27e502b709c088e036a5aa17620c8fc5085a99161091060ff92600080516020615d4e833981519152805493851985161790556108f4613275565b6040805160ff9490951684168552921660208401528291820190565b0390a180f35b60405163831761d760e01b8152600490fd5b50346102775761093736612e39565b906002600080516020615dce83398151915254146106d0576109589261333e565b80f35b50346102775760203660031901126102775761ffff610978612cb2565b610980614d41565b5016600052600080516020615e6e8339815191526020526109e26109a76040600020615071565b6040519182918291909160406001600160401b038160608401956001600160481b038082511686526020820151166020860152015116910152565b0390f35b50346102775760203660031901126102775761ffff90610a04612cb2565b906020604051610a1381612d65565b828152015216600052600080516020615d2e83398151915260205260408060002060ff8251610a4181612d65565b60208260018554958685520154169101908152835192835251166020820152f35b50346102775780600319360112610277576109e2604051610a8281612d65565b60058152640312e312e360dc1b6020820152604051918291602083526020830190612cf7565b50346102775780600319360112610277576040518091600080516020615e0e83398151915290815480845260208094019081938352600080516020615d6e83398151915290835b818110610b4c5750505084610b05910385612db6565b60405193838594850191818652518092526040850193925b828110610b2c57505050500390f35b83516001600160a01b031685528695509381019392810192600101610b1d565b82546001600160a01b031684529286019260019283019201610aef565b5060c036600319011261027757610b7e612cc3565b906084359182151583036106e25760a4356001600160401b03928382116102775750610bae903690600401612df2565b610bb6615cfd565b6002600080516020615dce83398151915254146106d057602093610be4926064359060443590600435613e93565b6001600080516020615ece8339815191525560405191168152f35b503461027757806003193601126102775760206002600080516020615dce8339815191525414604051908152f35b503461027757806003193601126102775760405180600080516020615e0e83398151915280548084526020809401918552600080516020615d6e83398151915290855b818110610dbd5750505081610c86910382612db6565b8051610c9181612eba565b91610c9f6040519384612db6565b818352601f19610cae83612eba565b01855b818110610da1575050845b828110610d1d575050506040519180830190808452825180925280604085019301945b828110610cec5784840385f35b85518051151585528083015115158584015260409081015160ff169085015294810194606090930192600101610cdf565b929492610d99906001600160a01b03610d368285613005565b5116600052600080516020615e8e8339815191528652604060002060405190610d5e82612d4a565b5460ff9081811615158352818160081c1615158984015260101c166040820152610d888289613005565b52610d938188613005565b50612ff6565b949294610cbc565b8590610dae979597614d41565b82828a01015201959395610cb1565b82546001600160a01b031684529285019260019283019201610c70565b5034610277578060031936011261027757600080516020615eee833981519152546040516001600160a01b039091168152602090f35b5034610277576020806003193601126106e2576001600160a01b0390600435828116919082810361082857610e43615cc4565b82156111145782600052600080516020615e8e83398151915280835260ff918260406000205416156110fb57846000528184528260406000205460081c16156110e25784600052818452604060002061ff001990818154169055600080516020615e4e833981519152928354858160081c169283156110ce5761ff0060001980950160081b169116178455600080516020615dee8339815191528054918860005287526001600160401b03600192610f1082858a60406000205460101c161b198316169282168310614d24565b6001600160401b0319161790558897600080516020615e0e8339815191528054938b5b858110610fc8575b505050505050918091610f836040969594610f767f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f99614d24565b610f7e614d60565b614e4b565b5460081c16600080516020615d4e8339815191529081548381168210610fba575b50505416908351928352820152a1610958613275565b60ff19161781553880610fa4565b838b610fd383613244565b929054600393841b1c1614610ff15750610fec90612ff6565b610f33565b9590918093959798999a9b9c5081019081116110ba57906110258461101861104494613244565b905490891b1c1691613244565b90919082549060031b9160018060a01b03809116831b921b1916179055565b825480156110a657946040999794610f83948a9894610f76947f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f9e9c99019261108c84613244565b81939154921b1b1916905555998496979899839650610f3b565b634e487b7160e01b8c52603160045260248cfd5b634e487b7160e01b8d52601160045260248dfd5b634e487b7160e01b8b52601160045260248bfd5b6040516307d86e9160e21b815260048101869052602490fd5b604051630d583f4760e41b815260048101869052602490fd5b604051632f44bd7760e01b8152600490fd5b50346102775761113536612e39565b9033600052600080516020615e8e83398151915260209080825260ff60406000205460081c161561134957600080516020615dce8339815191529160028354146106d05761ffff861680600052600080516020615d2e8339815191528252846040600020540361132b575060405163b3f07bbd60e01b8152918183806111bf898b60048401613314565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156113205788936112f1575b503360005280825261120360ff60406000205460101c168461320e565b6112d85760606112b793927f35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e592336000528082528a6001600160401b03610100600160481b03604082600160ff836000205460101c161b1693898152600080516020615d8e833981519152875220928354928360081c161760081b1690610100600160481b03191617905533600052815260ff60406000205460101c166040519185835233908301526040820152a16131a1565b6112bf578480f35b546002146106d0576112d09261333e565b388080808480f35b604051631089c4a160e11b815260048101849052602490fd5b9092508181813d8311611319575b6113098183612db6565b810103126105e5575191386111e6565b503d6112ff565b6040513d8a823e3d90fd5b6044908560405191635788c0fd60e11b835260048301526024820152fd5b60405163a0ae911d60e01b8152336004820152602490fd5b5034610277578060031936011261027757602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b506020366003190112610277576001600160401b0360043516908160043503610277576113cb615cfd565b6002600080516020615dce83398151915254146106d05781600052600080516020615eae8339815191526020526040600020916040519261140b84612d2f565b805484526001810154602085015261ffff60028201546001600160481b03811660408701526001600160401b038160481c16606087015260881c16608085015260018060a01b0360038201541660a08501526040518381949060048401549361147385613755565b808552946001811690811561160457506001146115bf575b505061149992500383612db6565b60c083019182526001600160401b03606084015116156115a7576114ca6001600160401b0360608501511642613194565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000161161157c579161155991602093600052600080516020615eae833981519152845261152260406000206137a6565b6001600160481b036040830151169161ffff608082015116815190868301519260a0600180821b0391015116935194600435614632565b6001600080516020615ece833981519152556001600160401b0360405191168152f35b6044906001600160401b036060850151166040519163c06cf05f60e01b835260048301526024820152fd5b60249060405190635feafa3160e11b82526004820152fd5b60049193949250018252602082205b8183106115e857505090602061149992820101388061148b565b60209193508060019154838589010152019101909184926115ce565b9150506020925061149994915060ff191682840152151560051b820101388061148b565b5060603660031901126102775761163d612cc3565b604435611648615cfd565b6002600080516020615dce83398151915254146106d05760209181611559926040519261167484612d65565b60018452853681860137600435613808565b5034610277576040366003190112610277576116a0612cb2565b6024356001600160401b0381116117ff576116bf903690600401612df2565b91604051918290600080516020615e0e833981519152828154918287526020809701908652600080516020615d6e83398151915292865b888282106117e05750505061170d92500383612db6565b826117378351966040519788928392635b10743960e11b8452604060048501526044840190612cf7565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156117d55783949561177094926117b1575b50613039565b604051926040840160408552835180915285606086019401915b81811061179d5750505082938301520390f35b82518552938601939186019160010161178a565b6117ce9192503d8087833e6117c68183612db6565b810190612f24565b903861176a565b6040513d85823e3d90fd5b85546001600160a01b03168452600195860195889550930192016116f6565b8280fd5b503461027757806003193601126102775761181c614f92565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b0380821690600182019181831161192c5760ff8460401c1690811561191f575b5061190d57600160401b911680926001600160481b03191617179081835560ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e5416156118fb577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2926020926118db613275565b6118e3614d60565b68ff000000000000000019169055604051908152a180f35b604051632866815360e11b8152600490fd5b60405163f92ee8a960e01b8152600490fd5b9050818316111538611866565b634e487b7160e01b600052601160045260246000fd5b50346102775760403660031901126102775760243560ff811681036105e55761196f60209160043561320e565b6040519015158152f35b5034610277578060031936011261027757600080516020615dae833981519152546040516001600160a01b039091168152602090f35b503461027757602036600319011261027757611a046001600160401b036020926040600080516020615dee83398151915254916004358152600080516020615d8e8339815191528652205460081c1616615a8e565b60ff60405191168152f35b5034610277578060031936011261027757611a28614d41565b506109e26109a7615029565b5034610277578060031936011261027757600080516020615dae83398151915254611a67906001600160a01b0316614fd6565b600080516020615dce83398151915260028154146106d057600290557f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd2602060405160018152a180f35b503461027757602036600319011261027757600435611ace615cfd565b6002600080516020615dce83398151915254146106d057611aee816154ad565b602081016001600160401b03908181511615611bb457611b118282511642613194565b827f00000000000000000000000000000000000000000000000000000000000000001611611b92578385527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b8602052604080862086815560010186905583015183518691610541916001600160481b0316906001600160a01b031687614adb565b516040516301cb739d60e71b8152600481019490945216602483015250604490fd5b604051630301bcaf60e61b815260048101859052602490fd5b508060031936011261027757611be1614f92565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c1615906001600160401b03811680159081611dfa575b6001149081611df0575b159081611de7575b5061190d5767ffffffffffffffff198116600117835581611dc8575b50611c57615c0f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381163303611d9f575034611d8d57611c96615c0f565b611c9e615c0f565b611ca6615c0f565b6001600080516020615dce83398151915255600080516020615eee83398151915280546001600160a01b03191633179055611cdf615c0f565b611ce7615c0f565b611cf033615c50565b611cf8615c0f565b611d00615c0f565b6001600080516020615ece83398151915255611d37610100600160481b0360ff611d30611d2b614c36565b615b35565b16176150d1565b611d3f613275565b611d47614d60565b611d4f575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b60405163bd28e88960e01b8152600490fd5b604051636345072160e11b81526001600160a01b03919091166004820152336024820152604490fd5b68ffffffffffffffffff19166801000000000000000117825538611c4e565b90501538611c32565b303b159150611c2a565b839150611c20565b503461027757608036600319011261027757611e1c612cb2565b60243560443560ff81168091036105e557611e35615cc4565b61ffff809316928315611f7f578215611f6d578115611f5b577f0000000000000000000000000000000000000000000000000000000000000000168314611f49577f1456404e7f41f35c3daac941bb50bad417a66275c3040061b4287d787719599d9160809184600052600080516020615d2e833981519152918260205260ff604060002081600160405192611eca84612d65565b805484520154169460208201958652886000526020526001604060002084815501848319825416179055611f2c611f0b611f02614c36565b80606435615bc7565b89600052600080516020615e6e8339815191526020526040600020906152cf565b51935116604051938452602084015260408301526060820152a280f35b60405163101b8f9560e11b8152600490fd5b60405163ade64f0b60e01b8152600490fd5b60405163f839a0cb60e01b8152600490fd5b60405163100b0f2760e11b8152600490fd5b503461027757806003193601126102775760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034610277578060031936011261027757602060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb54166040519015158152f35b50346102775780600319360112610277577f00000000000000000000000000000000000000000000000000000000000000009060028210156120615760208260ff60405191168152f35b634e487b7160e01b81526021600452602490fd5b503461027757806003193601126102775761208e615cc4565b600080516020615dce83398151915260028154036120d757600190557fe11c2112add17fb763d3bd59f63b10429c3e11373da4fb8ef6725107a2fdc4b06020604051838152a180f35b604051637e38d1d360e11b8152600490fd5b50346102775780600319360112610277576020611a04614c36565b50346102775760203660031901126102775760ff60406020926004358152600080516020615d8e83398151915284522054166040519015158152f35b50346102775780600319360112610277576040517f0000000000000000000000000000000000000000000000000000000000000000600281101561218657602092508152f35b634e487b7160e01b83526021600452602483fd5b503461027757806003193601126102775760206001600160401b03600080516020615e2e8339815191525416604051908152f35b5034610277576020806003193601126106e2576004356001600160a01b03811691828203610819576121fe615cc4565b82156111145782600052600080516020615e8e8339815191529182825260ff9081604060002054166000146123a75784600052838352604060002061010061ff00198254161790555b600080516020615e0e83398151915290815491600160401b831015612391578261102591600161227995019055613244565b600080516020615e4e83398151915292835461ff0061229c848360081c16614d13565b60081b169061ff00191617809455600080516020615dee83398151915280546001600160401b0390818116918860005284875260018660406000205460101c161b1682179182146123785767ffffffffffffffff19161790557ff05962b5774c658e85ed80c91a75af9d66d2af2253dda480f90bce78aff5eda594606094909390929091612328614d60565b84600052825280600080516020615d4e833981519152805482811615612369575b5054169260405194855260081c16908301526040820152a1610958613275565b60ff1916600117815538612349565b604051638d68f84d60e01b815260048101899052602490fd5b634e487b7160e01b600052604160045260246000fd5b600080516020615e4e8339815191528281541660408110156124bf57604051906123d082612d4a565b6001825285820190600182526040830190815288600052878752604060002092511515918662ff000061ff0086549351151560081b16935160101b1693169062ffffff19161717179055805483612428818316614d13565b169060ff19161790557f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed978805490600160401b82101561239157600182018082558210156124a9576000527f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd10180546001600160a01b03191686179055612247565b634e487b7160e01b600052603260045260246000fd5b60405163891684c360e01b8152600490fd5b5034610277576020366003190112610277576004356001600160401b0381168091036106e257606060c060405161250781612d2f565b84815284602082015284604082015284838201528460808201528460a08201520152600052600080516020615eae83398151915260205260406000206040519061255082612d2f565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a0830152604051838194906004840154936125b885613755565b808552946001811690811561269f575060011461265a575b50506125de92500383612db6565b60c081019182526109e26040519283926020845280516020850152602081015160408501526001600160481b0360408201511660608501526001600160401b03606082015116608085015261ffff60808201511660a085015260a0600180821b039101511660c08401525160e080840152610100830190612cf7565b60049193949250018252602082205b8183106126835750509060206125de9282010138806125d0565b6020919350806001915483858901015201910190918492612669565b915050602092506125de94915060ff191682840152151560051b82010138806125d0565b5034610277576020366003190112610277576126dd615cc4565b6109586126f46126eb614c36565b80600435615bc7565b6150d1565b503461027757604036600319011261027757610958612716612cc3565b61271e615cc4565b61ffff61272c6126eb614c36565b9116600052600080516020615e6e8339815191526020526040600020906152cf565b5034610277576020806003193601126106e2576001600160a01b03600435818116908181036108285761277f615cc4565b612787614f92565b3b15612b5a577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e9182549161281460ff841615614d24565b60ff199283166001178455303b156108285760405163011fa75760e71b8152858160048183305af18015612b0f57612b47575b5060405163689f90c360e01b81528281600481305afa908115612b0f578691612b1a575b50156128a3575b50507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b604051637e062a3560e11b81528281600481305afa908115612b0f578691612ad1575b50816128f6927f000000000000000000000000000000000000000000000000000000000000000016911614614d24565b6040516314ad290960e11b81528181600481305afa90811561081d578591612a9b575b507f0000000000000000000000000000000000000000000000000000000000000000906002821015612a87576002811015612a87576129589114614d24565b604051634d4502c960e11b81528181600481305afa801561081d578590612a51575b6129ad915061ffff807f000000000000000000000000000000000000000000000000000000000000000016911614614d24565b604051631d2a9eff60e21b8152908082600481305afa90811561081d578591612a11575b50612a0a91506001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016911614614d24565b3880612872565b905081813d8311612a4a575b612a278183612db6565b8101031261081957516001600160401b038116810361081957612a0a90386129d1565b503d612a1d565b508181813d8311612a80575b612a678183612db6565b8101031261082857612a7b6129ad9161332f565b61297a565b503d612a5d565b634e487b7160e01b86526021600452602486fd5b90508181813d8311612aca575b612ab28183612db6565b81010312610828575160028110156108285738612919565b503d612aa8565b90508281813d8311612b08575b612ae88183612db6565b81010312612b045751908082168203612b0457906128f66128c6565b8580fd5b503d612ade565b6040513d88823e3d90fd5b612b3a9150833d8511612b40575b612b328183612db6565b810190614420565b3861286b565b503d612b28565b612b5390959195612d1c565b9338612847565b60405162461bcd60e51b815260048101849052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b503461027757602036600319011261027757602061196f6004356131a1565b5034610277576020366003190112610277576004356001600160a01b03818116918290036117ff57612c1681600080516020615dae8339815191525416614fd6565b600080516020615eee83398151915280546001600160a01b031981168417909155167f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b50346102775760203660031901126102775761070161046d612cad604060209461ffff612c8a612cb2565b612c92614d41565b50168152600080516020615e6e833981519152865220615071565b615543565b6004359061ffff821682036105e557565b6024359061ffff821682036105e557565b60005b838110612ce75750506000910152565b8181015183820152602001612cd7565b90602091612d1081518092818552858086019101612cd4565b601f01601f1916010190565b6001600160401b03811161239157604052565b60e081019081106001600160401b0382111761239157604052565b606081019081106001600160401b0382111761239157604052565b604081019081106001600160401b0382111761239157604052565b608081019081106001600160401b0382111761239157604052565b60a081019081106001600160401b0382111761239157604052565b90601f801991011681019081106001600160401b0382111761239157604052565b6001600160401b03811161239157601f01601f191660200190565b81601f820112156105e557803590612e0982612dd7565b92612e176040519485612db6565b828452602083830101116105e557816000926020809301838601378301015290565b90600319906060828401126105e55760043561ffff811681036105e5579260243592604435916001600160401b03918284116105e55760609084830301126105e55760405192612e8884612d4a565b806004013584526024810135602085015260448101359283116105e557612eb29201600401612df2565b604082015290565b6001600160401b0381116123915760051b60200190565b519060ff821682036105e557565b81601f820112156105e5578051612ef581612dd7565b92612f036040519485612db6565b818452602082840101116105e557612f219160208085019101612cd4565b90565b9060209081838203126105e55782516001600160401b03938482116105e557019080601f830112156105e5578151612f5b81612eba565b94604090612f6b82519788612db6565b828752858088019360051b860101948486116105e557868101935b868510612f9857505050505050505090565b84518381116105e55782019084601f1983890301126105e557845190612fbd82612d65565b612fc88a8401612ed1565b825285830151918583116105e557612fe7898c80969581960101612edf565b83820152815201940193612f86565b600019811461192c5760010190565b80518210156124a95760209160051b010190565b9060406020612f219360ff81511684520151918160208201520190612cf7565b90929180519161304883612eba565b9260409161305883519586612db6565b818552601f1961306783612eba565b01602090368288013760009788955b84871061308857505050505050509190565b909192939495988685613101868d6130a760018060a01b039188613005565b511680600052600080516020615e8e83398151915282526130d260ff866000205460101c1689613005565b51908551808095819463b5634c7360e01b835261ffff60049916898401526024998a8401526044830190613019565b03915afa90811561318957908d91600091613157575b5061312381928d613005565b5283018093116131445750506131399099612ff6565b959493929190613076565b601190634e487b7160e01b600052526000fd5b91508782813d8311613182575b61316e8183612db6565b810103126102775750518c90613123613117565b503d613164565b8a513d6000823e3d90fd5b9190820391821161192c57565b6001600160401b039060ff6131fa81600080516020615d4e8339815191525416938493600080516020615dee8339815191525490600052600080516020615d8e83398151915260205260406000205460081c1616615a8e565b1610159081613207575090565b9050151590565b906001600160401b0391600052600080516020615d8e833981519152602052600160ff60406000205460081c92161b1616151590565b600080516020615e0e83398151915280548210156124a957600052600080516020615d6e8339815191520190600090565b60ff600080516020615d4e833981519152541660405161329481612d65565b60ff600080516020615e4e83398151915254818116835260081c168060208301528083116132cf57505160ff166132c85750565b1561091657565b82604491604051916313c3d1b160e01b835260048301526024820152fd5b9060606040612f219380518452602081015160208501520151918160408201520190612cf7565b60409061ffff612f21949316815281602082015201906132ed565b519061ffff821682036105e557565b91908161334b9184613635565b9190916136305760408091015191815192635399ded560e11b8452608084806133806020948560048401526024830190612cf7565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415613625576000946135b0575b5061ffff9283606086015116847f0000000000000000000000000000000000000000000000000000000000000000168082036135955750506133e8614c36565b816134118751928061340c816001600160401b03968760ff82169160081c16615b6c565b615bc7565b960151908160a01c61357e576001600160a01b039182169560007f0000000000000000000000000000000000000000000000000000000000000000831615613577575061345c614d41565b508816600052600080516020615e6e8339815191528452613482612cad84600020615071565b61348c8882615b00565b81808960081c169160081c16105b6134bf57505050506134af6134bd9484615836565b6134b883615716565b614adb565b565b7f7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f316297509561355b83959694976001939451926134fa84612d4a565b6001600160481b038091168452898401908242168252888501978852896000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b88b52886000209451166001600160481b0319855416178455511682615a25565b019151166001600160601b0360a01b82541617905551908152a1565b905061349a565b50602491519063033b960d60e41b82526004820152fd5b6044925191631ee5902560e11b835260048301526024820152fd5b6080949194813d821161361d575b816135cb60809383612db6565b810103126106e2578351916135df83612d80565b8151906001600160481b038216820361027757508252848101518583015283810151848301526136119060600161332f565b606082015292386133a8565b3d91506135be565b83513d6000823e3d90fd5b505050565b60405163b3f07bbd60e01b81529193926020918391829161365a919060048401613314565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d9576000916136eb575b5061368c816131a1565b156136d35761369a8161371c565b92836136a857509150600090565b7f4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef2600080a360009190565b60249060405190630451c4fb60e41b82526004820152fd5b906020823d8211613714575b8161370460209383612db6565b8101031261027757505138613682565b3d91506136f7565b600052600080516020615d8e8339815191526020526040600020805460ff811661374e5760ff19166001179055600090565b5050600190565b90600182811c92168015613785575b602083101461376f57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613764565b81811061379a575050565b6000815560010161378f565b6004600091828155826001820155826002820155826003820155016137cb8154613755565b806137d557505050565b82601f82116001146137e657505055565b9091808252613804601f60208420940160051c84016001850161378f565b5555565b9194939290946000958315613e81578115613e6f578215613e5d577f000000000000000000000000000000000000000000000000000000000000000061384e3082614cb6565b9061389160018060a01b03821696604051906323b872dd60e01b602083015233602483015230604483015260648201526064815261388b81612d9b565b87614438565b6138a48261389f3084614cb6565b613194565b957f00000000000000000000000000000000000000000000000000000000000000006002811015613e49579060018b9214613dc2575b5050505061ffff8116600052600080516020615d2e83398151915260205260ff600160406000200154168015611f5b5761391d613915614c36565b918287615bc7565b906001600160401b038260081c1661393a60ff8416928383615b6c565b808803613d9b575061395c61396191613954611d2b614c36565b938491615b6c565b6155ee565b98600080516020615e2e83398151915254966001600160401b0380891614613d875767ffffffffffffffff1988166001600160401b03898116600101811691909117600080516020615e2e833981519152557f00000000000000000000000000000000000000000000000000000000000000001615613d81576139e2614d41565b506139ee612cad615029565b613a0b8c610100600160481b0360ff87169160081b161782615b00565b6001600160401b03808d610100600160481b0360ff88169160081b161760081c169160081c16105b613d5b578180613d53575b613a8757505082612f219899610100600160481b0360ff84613a6b82613a779716848660081b1617615656565b169160081b16176158fe565b6001600160401b03339516614632565b61ffff95979896919a506001600160481b03939250613ac57f0000000000000000000000000000000000000000000000000000000000000000615a4d565b613acd615496565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a260405196613b1a88612d2f565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615eae83398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b0319825416178155613bb56001600160401b0360608701511682615a25565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d3f57613c168354613755565b601f8111613d04575b50602090601f8311600114613c9857906001600160401b03959683613c8d575b50508160011b916000199060031b1c19161790555b7f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613c89346145db565b1690565b015190503880613c3f565b95601f19831684885260208820975b818110613cec5750916001600160401b03969791846001959410613cd3575b505050811b019055613c54565b015160001960f88460031b161c19169055388080613cc6565b83830151895560019098019760209384019301613ca7565b613d2f9084835260208320601f850160051c81019160208610613d35575b601f0160051c019061378f565b38613c1f565b9091508190613d22565b634e487b7160e01b81526041600452602490fd5b506000613a3e565b604490613d66615496565b90604051916326fb55dd60e01b835260048301526024820152fd5b81613a33565b634e487b7160e01b82526011600452602482fd5b87613da860449282613194565b604051916338f831a560e11b835260048301526024820152fd5b803b156106e2578190602460405180948193630852cd8d60e31b83528c60048401525af18015613e3e57613e29575b50613dfd903090614cb6565b808203613e0b5788816138da565b60449250604051916302156a8f60e01b835260048301526024820152fd5b98613e37613dfd929a612d1c565b9890613df1565b6040513d8c823e3d90fd5b634e487b7160e01b8b52602160045260248bfd5b60405163717f139360e11b8152600490fd5b604051634e46966960e11b8152600490fd5b604051631f2a200560e01b8152600490fd5b95949392919060008715613e81578215613e6f578315613e5d577f0000000000000000000000000000000000000000000000000000000000000000613ed83082614cb6565b90613f1b60018060a01b0382169a604051906323b872dd60e01b6020830152336024830152306044830152606482015260648152613f1581612d9b565b8b614438565b613f298261389f3084614cb6565b997f0000000000000000000000000000000000000000000000000000000000000000600281101561440c576001146143a2575b50505061ffff8216600052600080516020615d2e83398151915260205260ff600160406000200154168015611f5b57613f9e613f96614c36565b91828b615bc7565b916001600160401b038360081c16613fbb60ff8516938483615b6c565b808c03614395575061395c613fdd91613fd5611d2b614c36565b948591615b6c565b99600080516020615e2e83398151915254976001600160401b03808a16146143815767ffffffffffffffff1989166001600160401b038a8116600101811691909117600080516020615e2e833981519152557f0000000000000000000000000000000000000000000000000000000000000000161561437b5761405e614d41565b508b6001600160401b0380614074612cad615029565b9260081b610100600160481b031660ff8816176140918185615b00565b60081c169160081c16105b811580614374575b6143695781614361575b506140df57505082612f219899610100600160481b0360ff613a7794169160081b16176140da81615656565b6158fe565b61ffff95979896919a506001600160481b0393925061411d7f0000000000000000000000000000000000000000000000000000000000000000615a4d565b614125615496565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a26040519661417288612d2f565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615eae83398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b031982541617815561420d6001600160401b0360608701511682615a25565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d3f5761426e8354613755565b601f8111614331575b50602090601f83116001146142df57906001600160401b03959683613c8d5750508160011b916000199060031b1c19161790557f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613c89346145db565b95601f19831684885260208820975b8181106143195750916001600160401b03969791846001959410613cd357505050811b019055613c54565b838301518955600190980197602093840193016142ee565b61435b9084835260208320601f850160051c81019160208610613d3557601f0160051c019061378f565b38614277565b9050386140ae565b604483613d66615496565b50806140a4565b8261409c565b634e487b7160e01b83526011600452602483fd5b8b613da860449282613194565b803b156108195783809160248d6040519485938492630852cd8d60e31b845260048401525af18015614401576143ec575b506143df903090614cb6565b808203613e0b5780613f5c565b926143fa6143df9294612d1c565b92906143d3565b6040513d86823e3d90fd5b634e487b7160e01b85526021600452602485fd5b908160209103126105e5575180151581036105e55790565b604051614496916001600160a01b031661445182612d65565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1614490614512565b91614542565b805190816144a357505050565b82806144b3938301019101614420565b156144bb5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d1561453d573d9061452382612dd7565b916145316040519384612db6565b82523d6000602084013e565b606090565b919290156145a45750815115614556575090565b3b1561455f5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156145b75750805190602001fd5b60405162461bcd60e51b815260206004820152908190610645906024830190612cf7565b600080808084335af16145ec614512565b50156145f55750565b60249060405190630b288dc560e21b82526004820152fd5b906020828203126105e55781516001600160401b0381116105e557612f219201612edf565b959492949391936146627f0000000000000000000000000000000000000000000000000000000000000000615a4d565b6040518081600080516020615e0e83398151915260208154938481520190600052600080516020615d6e8339815191529260005b818110614ab95750506146ab92500382612db6565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed9785491815115614aa7576146fe6000916040519485928392635b10743960e11b8452604060048501526044840190612cf7565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d957600092614a8a575b50614738818388613039565b95863410614a6b5761474a8734613194565b80614a5c575b506040519061475e82612d80565b6001600160481b0386811683527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020840190815260408085018d815261ffff8d81166060880190815292516315cfa3cb60e11b81529651909416600487015291516024860152905160448501525116606483015260008260848173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d95761485d926000928d928492614a40575b506001600160401b036040519361482685612d4a565b16835260018060a01b031660208301526040820152604051809381926311692f3760e31b83526020600484015260248301906132ed565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d957600091614a1d575b5061ffff8816600052600080516020615d2e833981519152602052604060002054938351938515614a015760005b8581106149265750505050505050927fe54e51e42099622516fa3b48e9733581c9dbdcb771cafb093f745a0532a35982949261ffff926148f760c096610475614c36565b906040519586526020860152604085015260608401521660808201526001600160401b03841660a0820152a190565b6001600160a01b036149388284613005565b5116906149458187613005565b5182600052600080516020615e8e83398151915260205261497160ff60406000205460101c1686613005565b51833b156105e5576149b79361ffff8f936000948f8e906149c98d6040519b8c998a988997634b5b050560e01b895216600488015260a0602488015260a4870190613019565b85810360031901604487015290612cf7565b916064840152608483015203925af19182156105d9576149ed926149f25750612ff6565b6148b3565b6149fb90612d1c565b38610d93565b604051630ebc95af60e21b815261ffff8b166004820152602490fd5b614a3a91503d806000833e614a328183612db6565b81019061460d565b38614885565b614a559192503d8086833e614a328183612db6565b9038614810565b614a65906145db565b38614750565b6040516306a91e3760e51b815260048101889052346024820152604490fd5b614aa09192503d806000833e6117c68183612db6565b903861472c565b6040516334e7b19560e11b8152600490fd5b84546001600160a01b0316835260019485019486945060209093019201614696565b9291614b0a9061046d7f0000000000000000000000000000000000000000000000000000000000000000615a4d565b906000937f504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a918580a27f00000000000000000000000000000000000000000000000000000000000000009360028510156120615784614b9f575060405163a9059cbb60e01b60208201526001600160a01b03909116602482015260448101919091529091506134bd906105128160648101610504565b9193600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156117ff576040516340c10f1960e01b81526001600160a01b03919091166004820152602481019490945291929181908390604490829084905af1908115614c2a5750614c215750565b6134bd90612d1c565b604051903d90823e3d90fd5b600080604051602081019063313ce56760e01b825260048152614c5881612d65565b51907f00000000000000000000000000000000000000000000000000000000000000005afa614c85614512565b9015614ca4576020818051810103126105e5576020612f219101612ed1565b604051631222cd8360e01b8152600490fd5b6040516370a0823160e01b602082019081526001600160a01b039093166024808301919091528152600092839291614ced81612d4a565b51915afa614cf9614512565b9015614ca4576020818051810103126105e5576020015190565b60ff1660ff811461192c5760010190565b15614d2b57565b634e487b7160e01b600052600160045260246000fd5b60405190614d4e82612d4a565b60006040838281528260208201520152565b600080516020615e4e8339815191525460ff8160081c16614d91600080516020615e0e833981519152548214614d24565b60005b818110614e1f575060005b818110614db8575050604060ff6134bd92161115614d24565b6001810180821161192c575b828110614dda5750614dd590612ff6565b614d9f565b614e1a90614e15614dea84613244565b905490614df684613244565b92909160018060a01b03809354600395861b1c16931b1c161415614d24565b612ff6565b614dc4565b80614e15614e2f614e4693613244565b905460039190911b1c6001600160a01b0316614e4b565b614d94565b6001600160a01b039081166000818152600080516020615e8e8339815191526020526040908190209051929190614e8184612d4a565b5460ff91614ebd838316158015938488526020880197604087808460081c16159384158c5260101c1691019581875292614f78575b5050614d24565b600080516020615dee83398151915254946001600160401b0360019687868651161b1616151590511515916000968791600080516020615e4e8339815191525497878960081c16935b848110614f3a575b5050505050816134bd96614f28869594614f309414614d24565b151514614d24565b5116911611614d24565b8282614f4583613244565b90549060031b1c1614614f6057614f5b90612ff6565b614f06565b50919850849250839150614f289050826134bd614f0e565b90915081614f89575b503880614eb6565b90501538614f81565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614614fc457565b604051633c64f99360e21b8152600490fd5b600080516020615eee83398151915254336001600160a01b03918216141591908261501c575b505061500457565b60405163e2a08e5d60e01b8152336004820152602490fd5b1633141590503880614ffc565b6040519061503682612d4a565b8160406001600160401b03600080516020615f0e833981519152546001600160481b0380821685528160481c16602085015260901c16910152565b9060405161507e81612d4a565b60406001600160401b038294546001600160481b0380821685528160481c16602085015260901c16910152565b90600160481b600160901b0382549160481b1690600160481b600160901b031916179055565b600080516020615f0e8339815191529081546001600160481b03908181166001600160401b036008918184841c168015806152c4575b15615175575050855471ffffffffffffffffff0000000000000000001916604886901b600160481b600160901b03161786555050505b825479ffffffffffffffff000000000000000000ffffffffffffffffff19169116174260901b67ffffffffffffffff60901b16179055565b86615181612cad615029565b92600061518e8383615ade565b1561525a57506151ad92916151a291615b00565b8388861c1690615a75565b610100600160481b039290841b831660ff8616176151cb8184615ade565b1561524c578160ff92826151e26151ef9487615b00565b871c169084871c16615a75565b9116921b16175b6152008482615ade565b61522a57600160481b600160901b039060481b1690600160481b600160901b03191617835561513d565b604051631e74e8fb60e31b815290831660048201528383166024820152604490fd5b5050905060ff9150166151f6565b949395929061526c9061527693615b00565b8389841c16615a75565b9260ff881694838087610100600160481b038098871b16176152988185615b00565b851c1691841c16019283116152b057501b16176151f6565b634e487b7160e01b81526011600452602490fd5b5060ff851615615107565b919080546001600160481b03808216916001600160401b03926008908483831c1680158061548b575b1561535e5750505050846153106134bd9596856150ab565b835467ffffffffffffffff60901b19919092161679ffffffffffffffff000000000000000000ffffffffffffffffff1990911617429190911660901b67ffffffffffffffff60901b16179055565b85908961536d612cad8a615071565b93600061537a8383615ade565b1561543557509161539261539d9260ff979894615b00565b838c881c1690615a75565b610100600160481b039490861b85169116176153b98184615ade565b156154275760ff91816153cf6153dc9386615b00565b861c168784871c16615a75565b9116921b16175b6153ed8682615ade565b61540557946154006134bd9596856150ab565b615310565b604051631e74e8fb60e31b815290821660048201529085166024820152604490fd5b5050905060ff9150166153e3565b949650615450935061544691615b00565b868a851c16615a75565b9160ff891693868086610100600160481b038097861b16176154728185615b00565b841c1691831c1601918683116152b057501b16176153e3565b5060ff8416156152f8565b61549e614d41565b50612f2161046d612cad615029565b6154b5614d41565b506000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b86020526040600020604051906154ef82612d4a565b80546001600160481b038116835260481c6001600160401b03166020830152600101546001600160a01b0316604082015290565b811561552d570490565b634e487b7160e01b600052601260045260246000fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000169182156155d7576155c4828260ff936040610100600160481b03960151164203816155a8602085019889519383875160081c1602615523565b9160081c1601915160081c168082106000146155d057506155ee565b9251169160081b161790565b90506155ee565b506020015160ff16610100600160481b0317919050565b6001600160401b0390818111615602571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608490fd5b6001600160401b0390817f000000000000000000000000000000000000000000000000000000000000000016156157125761568f614d41565b50600160481b600160901b036156a6612cad615029565b610100600160481b0360ff6156e1600080516020615f0e83398151915296808854976156d28188615b00565b60081c16908560081c16615a75565b92169160081b161760481b16906001600160401b0360901b4260901b1690600160481b600160d01b03191617179055565b5050565b6001600160401b0390817f000000000000000000000000000000000000000000000000000000000000000016156157125761574f614d41565b5061575b612cad615029565b90600160481b600160901b03600080516020615f0e83398151915293845493816001600160401b0360901b4260901b16946157968184615b00565b60081c16828260081c16018281116000146158225750610100600160481b0360ff6157c0846155ee565b92169160081b1617906001600160481b038516906157de8284615b00565b80856001600160401b0360901b1988161760081c16908360081c161060001461581b57505b60481b1691600160481b600160d01b03191617179055565b9050615803565b60ff6157c0610100600160481b03926155ee565b6001600160401b03807f0000000000000000000000000000000000000000000000000000000000000000161561363057610100600160481b0360ff6158f061ffff6134bd96615883614d41565b50169384600052600080516020615e6e833981519152806020526158ad612cad6040600020615071565b60009687526020919091526040909520805467ffffffffffffffff60901b191642831660901b67ffffffffffffffff60901b161781559581906156d28188615b00565b92169160081b1617906150ab565b6001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016156136305761ffff6134bd9361593d614d41565b5016600090808252600080516020615e6e83398151915280602052615967612cad60408520615071565b91835260205260408220805467ffffffffffffffff60901b191642851660901b67ffffffffffffffff60901b161781559383906159a48184615b00565b60081c16838260081c1601838111600014615a115750610100600160481b0360ff6159ce856155ee565b92169160081b1617918084546001600160481b038116936159ef8587615b00565b5060081c16908360081c1610600014615a095750906150ab565b9050906150ab565b60ff6159ce610100600160481b03926155ee565b9067ffffffffffffffff60481b82549160481b169067ffffffffffffffff60481b1916179055565b468103615a575750565b604490604051906377d879fb60e01b82526004820152466024820152fd5b6001600160401b03918216908216039190821161192c57565b60009182915b6001600160401b03908181168015615ad65760001901918211615ac2571691615abc90614d13565b91615a94565b634e487b7160e01b85526011600452602485fd5b505050915090565b90615ae98183615b00565b6001600160401b03809160081c169160081c161190565b60ff9182169116818103615b12575050565b604051635ce6db6160e11b815260ff918216600482015291166024820152604490fd5b60ff811660081015612f215750600890565b9060ff8091169116039060ff821161192c57565b60ff16604d811161192c57600a0a90565b919060ff821660ff8216818114615bc0571115615b9f57615b94612f219392615b9992615b47565b615b5b565b90615523565b615b9490615bac92615b47565b9081810291818304149015171561192c5790565b5050505090565b615bfa61395c60ff92610100600160481b039495615be487615b35565b908581168683161015615c055750958691615b6c565b92169160081b161790565b9050958691615b6c565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615615c3e57565b604051631afcd79f60e31b8152600490fd5b6001600160a01b03908116908115615cab57600080516020615dae83398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020615dae833981519152546001600160a01b03163303615ce557565b60405163118cdaa760e01b8152336004820152602490fd5b600080516020615ece8339815191526002815414615d1b5760029055565b604051633ee5aeb560e01b8152600490fdfeebcc9f646b0f459ff8f387587d536b0af3484cf442e1577400f322334e7d1ef047028352a8b3feae1a85fba43bc13f990568bb1637dce33d3dbfd791a0808b7f6c3cb3f3ae91330f31ba2bc0ff8855fc834fb66dc27e8e0b1a398617dabaa5a668dfeeddfa5e4e9adceec01a3aba274bdcbab3f6ac9956417a4332f2b08abdda9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930064bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022fd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f00758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e1ad78307a8b51804c575f26039dcb87c58925afb3b7c08732f3b21b942aed7a768561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d89efb21dcaedea63b55c44882f329622e13a8d0f5b947b3a372826208a9003da1549bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f852fa0677fef8612c6c15b518c9fa56761e9ed15cfd5c6e5399e5467985ac7ed9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00bfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12497c25289a27ec8c9be54d4a154cf80490d69bda989cdb8328232e08fea9220420a2646970667358221220f05bfca11e4f4e6b5c38d73a662c13522a3f5f5988d02259aab20e583604ccb064736f6c63430008130033",isSuperArgs$1=t=>typeof t[0]=="string"||Array.isArray(t[0])||"_isInterface"in t[0],Mi=class Mi extends ContractFactory{constructor(...e){if(isSuperArgs$1(e))super(...e);else{const[s,l]=e;super(_abi$1,Mi.linkBytecode(s),l)}}static linkBytecode(e){let s=_bytecode$1;return s=s.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),s}getDeployTransaction(e,s,l,d,u,p){return super.getDeployTransaction(e,s,l,d,u,p||{})}deploy(e,s,l,d,u,p){return super.deploy(e,s,l,d,u,p||{})}connect(e){return super.connect(e)}static createInterface(){return new Interface(_abi$1)}static connect(e,s){return new Contract(e,_abi$1,s)}};Ae(Mi,"bytecode",_bytecode$1),Ae(Mi,"abi",_abi$1);let NttManager__factory=Mi;const _abi=[{type:"constructor",inputs:[{name:"nttManager",type:"address",internalType:"address"},{name:"wormholeCoreBridge",type:"address",internalType:"address"},{name:"wormholeRelayerAddr",type:"address",internalType:"address"},{name:"specialRelayerAddr",type:"address",internalType:"address"},{name:"_consistencyLevel",type:"uint8",internalType:"uint8"},{name:"_gasLimit",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"WORMHOLE_TRANSCEIVER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"consistencyLevel",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"encodeWormholeTransceiverInstruction",inputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],outputs:[{name:"",type:"bytes",internalType:"bytes"}],stateMutability:"pure"},{type:"function",name:"gasLimit",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getNttManagerOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getNttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getTransceiverType",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"pure"},{type:"function",name:"getWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"payable"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isVAAConsumed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"nttManager",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"nttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"parseWormholeTransceiverInstruction",inputs:[{name:"encoded",type:"bytes",internalType:"bytes"}],outputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],stateMutability:"pure"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"receiveMessage",inputs:[{name:"encodedMessage",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"receiveWormholeMessages",inputs:[{name:"payload",type:"bytes",internalType:"bytes"},{name:"additionalMessages",type:"bytes[]",internalType:"bytes[]"},{name:"sourceAddress",type:"bytes32",internalType:"bytes32"},{name:"sourceChain",type:"uint16",internalType:"uint16"},{name:"deliveryHash",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"sendMessage",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]},{name:"nttManagerMessage",type:"bytes",internalType:"bytes"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"setIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEvm",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setWormholePeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"specialRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ISpecialRelayer"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferTransceiverOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"wormhole",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormhole"}],stateMutability:"view"},{type:"function",name:"wormholeRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormholeRelayer"}],stateMutability:"view"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ReceivedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"ReceivedRelayedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"RelayingInfo",inputs:[{name:"relayingType",type:"uint8",indexed:!1,internalType:"uint8"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"deliveryPayment",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"SendTransceiverMessage",inputs:[{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"message",type:"tuple",indexed:!1,internalType:"struct TransceiverStructs.TransceiverMessage",components:[{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"nttManagerPayload",type:"bytes",internalType:"bytes"},{name:"transceiverPayload",type:"bytes",internalType:"bytes"}]}],anonymous:!1},{type:"event",name:"SetIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isEvm",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetWormholePeer",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"CallerNotNttManager",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CallerNotRelayer",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CannotRenounceTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"}]},{type:"error",name:"CannotTransferTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"},{name:"newOwner",type:"address",internalType:"address"}]},{type:"error",name:"InvalidBoolVal",inputs:[{name:"val",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidBoolValue",inputs:[{name:"value",type:"uint256",internalType:"BooleanFlag"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidRelayingConfig",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidVaa",inputs:[{name:"reason",type:"string",internalType:"string"}]},{type:"error",name:"InvalidWormholeChainIdZero",inputs:[]},{type:"error",name:"InvalidWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidWormholePeerZeroAddress",inputs:[]},{type:"error",name:"LengthMismatch",inputs:[{name:"encodedLength",type:"uint256",internalType:"uint256"},{name:"expectedLength",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerAlreadySet",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"TransferAlreadyCompleted",inputs:[{name:"vaaHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"UnexpectedAdditionalMessages",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"deployer",type:"address",internalType:"address"},{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedRecipientNttManagerAddress",inputs:[{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"expectedRecipientNttManagerAddress",type:"bytes32",internalType:"bytes32"}]}],_bytecode="0x6101c06040818152346200031d5760c08262003742803803809162000025828562000322565b8339810103126200031d576200003b826200035c565b906020906200004c8285016200035c565b926200005a8286016200035c565b62000068606087016200035c565b9160808701519660ff881688036200031d5760a00151947ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080549060ff82881c166200030c5782906001600160401b03906002600160401b031984831601620002c9575b50505050306080528160a052845190637e062a3560e11b8252808260048160018060a01b038097165afa908115620002be576000916200027f575b50905060c0523360e0528061012096168652806101409216825261016092168252610180924684526101009687526101a094855251946133d096876200037288396080518761313b015260a051878181610e100152818161154d015281816118d00152818161205501528181612204015281816128e00152612ae4015260c051878181610e9b01528181611c93015281816122560152818161268d0152612d7c015260e05187610d1801525186818161076e01528181610f4d0152818161127401528181611bfe01528181611df1015261239b01525185818161020801528181610c1501528181610f7a015281816112a001528181611ba601528181611e1e015281816122a601528181612e0201528181612ee20152612f800152518481816107a70152818161163601528181611a4a015281816122f60152612cc5015251838181610a7501528181611c3c015281816123460152612db90152518261024c0152518181816106ac01528181611a150152612c9a0152f35b82813d8311620002b6575b62000296818362000322565b81010312620002b35750620002ab906200035c565b803862000107565b80fd5b503d6200028a565b86513d6000823e3d90fd5b6001600160401b0319909316811790925586519182527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291a138818180620000cc565b865163f92ee8a960e01b8152600490fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200034657604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200031d5756fe6080604081815260048036101561001557600080fd5b600092833560e01c908163036de8af146125ab575080630900f010146120845780630b4a1e89146113db57806324fb21db14612040578063320d0d8e14611ffd57806348b330d614611fb75780634b5b05051461183f5780634b795b211461179e578063529dca321461159457806358f709ba14611525578063657b3b2f1461148457806366152efc14611423578063689f90c3146113e0578063694977d7146113db5780637ab564031461118057806380eb3239146111445780638129fc1c14610c8957806381e8ec7f14610c4457806384acd1bb14610c005780638da5cb5b14610bca5780638fd3ab8014610aa457806390ea542814610a60578063935dec0714610a1e57806396dddc63146109695780639fd0506d14610921578063a0926b2a146108d5578063b187bd2614610894578063b5634c7314610847578063bc7f6d3714610804578063d8d28418146107d6578063da25b72514610792578063e8dfd50814610754578063f2fde38b1461071f578063f48066a8146106d3578063f68016b7146106945763f953cec7146101af57600080fd5b34610690576020908160031936011261068c578035906001600160401b0385818411610689576101e5610204943690850161279e565b86518095819263607ec5ef60e11b835288878401526024830190612887565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561067f5786938790889261047a575b501561045757507f000000000000000000000000000000000000000000000000000000000000000046810361043b57506060830161ffff91828251166000526000805160206132bb833981519152865286600020546080860190815180910361040a575061014086016102d281516000526000805160206132db83398151915260205260ff6040600020541690565b6103f157927ff6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0608060e0948b8a8e9996896103336103849d9b516000526000805160206132db8339815191526020526040600020600160ff19825416179055565b519360a08989511692519301511692519384528d8401528d8301526060820152a1511694015190610362612943565b5061036b612969565b508651630453806b60e11b815293849283928301612ac2565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156103e7576103be9450859186946103c1575b50815191015191612ae1565b80f35b9093506103e091503d8087833e6103d88183612762565b810190612a44565b92386103b2565b84513d87823e3d90fd5b518851632d30ec0360e21b815280870191909152602490fd5b83518951633cd8e72b60e11b815290861661ffff1687820190815260208101929092529081900360400190fd5b0390fd5b826044918751916377d879fb60e01b8352820152466024820152fd5b8551634771719b60e11b8152808401869052908190610437906024830190612887565b945050503d8087853e61048d8185612762565b8301606090818582031261067b5784518381116105ff578501610160928382840312610603578851938401848110868211176106665789526104ce82613053565b84526104db888301613061565b888501526104ea898301613061565b898501528082015161ffff8116810361066257818501526080808301518186015261051760a08401612feb565b60a086015261052860c08401613053565b60c086015260e083015186811161065e57846105459185016129c1565b60e0860152610100610558818501613061565b90860152610120908184015187811161065a57840185601f8201121561065a5780518c946105916105888361284d565b96519687612762565b8186528c8087019260071b84010192888411610656578d01915b83831061060757505050505084015261014080910151908301526105d0868601613072565b94878101519084821161060357019080601f830112156105ff5781516105f792880161298a565b909338610243565b8880fd5b8980fd5b84838a0312610656578d8f9182879351906106218261272c565b865182528387015184830152610638818801613053565b90820152610647858701613053565b858201528152019201916105ab565b8f80fd5b8c80fd5b8b80fd5b8a80fd5b604187634e487b7160e01b6000525260246000fd5b8780fd5b85513d88823e3d90fd5b80fd5b8380fd5b8280fd5b5050346106cf57816003193601126106cf57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5080fd5b5050346106cf5760203660031901126106cf5760209061ffff6106f46126bc565b166000526000805160206132fb833981519152825261071681600020546130f7565b90519015158152f35b8382346106cf5760203660031901126106cf57356001600160a01b03811681036106cf576103be9061074f61320b565b6131da565b5050346106cf57816003193601126106cf576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5050346106cf57816003193601126106cf57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106cf57816003193601126106cf576020906107f36128cb565b90516001600160a01b039091168152f35b5050346106cf5760203660031901126106cf5760209061ffff6108256126bc565b1660005260008051602061329b833981519152825261071681600020546130f7565b50346106905781600319360112610690576108606126bc565b92602435906001600160401b03821161068957509261088761088d926020953691016127e5565b90612c24565b9051908152f35b5050346106cf57816003193601126106cf5760209060027f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b825802254149051908152f35b5050346106cf57816003193601126106cf57805161091d916108f682612747565b6008825267776f726d686f6c6560c01b602083015251918291602083526020830190612887565b0390f35b5050346106cf57816003193601126106cf577fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12495490516001600160a01b039091168152602090f35b508290346106cf57826003193601126106cf576109846126bc565b61098c61283e565b9161099561320b565b61ffff8216908115610a1057507f4add57d97a7bf5035340ea1212aeeb3d4d3887eb1faf3821a8224c3a6956a10c9394610a0a916109d285613129565b906000526000805160206132fb8339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b0390a180f35b8551630f7662c960e21b8152fd5b5050346106cf5760203660031901126106cf5760209061ffff610a3f6126bc565b166000526000805160206132bb833981519152825280600020549051908152f35b5050346106cf57816003193601126106cf57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b509034610690578260031936011261069057610abe613138565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b038082166001810190828211610bb75760ff84871c16908115610baa575b50610b9a57169360ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e541615610b8c575068ffffffffffffffffff19168317680100000000000000001768ff000000000000000019169055519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a180f35b8351632866815360e11b8152fd5b845163f92ee8a960e01b81528690fd5b9050828216111538610b06565b634e487b7160e01b885260118752602488fd5b5050346106cf57816003193601126106cf5760008051602061333b8339815191525490516001600160a01b039091168152602090f35b5050346106cf57816003193601126106cf57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106cf57816003193601126106cf57805161091d91610c6582612747565b60058252640312e312e360dc1b602083015251918291602083526020830190612887565b508260031936011261069057610c9d613138565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549160ff83831c1615906001600160401b03938481168015908161113c575b6001149081611132575b159081611129575b5061111a5767ffffffffffffffff1981166001178655826110fb575b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116338190036110df5750610d4a613199565b610d52613199565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055610dfe610d816128cb565b610d89613199565b610d91613199565b610d99613199565b60017f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022557fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124980546001600160a01b03191633179055610df6613199565b61074f613199565b8351634b4fd03b60e01b8152602095907f0000000000000000000000000000000000000000000000000000000000000000831687828681845afa9182156110d5578a9261109e575b508651631dcbf42b60e11b81529188838781855afa928315611094578b9361105d575b5087519360a0850190811185821017610666578852639c23bd3b60e01b845288840191825260ff9081168489019081527f00000000000000000000000000000000000000000000000000000000000000008616606086019081529382166080860190815289516301529f6160e21b815295516001600160e01b031916888701529251602486015251811660448501529151606484015251166084820152878160a48173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156110535791610f74939187938a91611031575b5086518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fff565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af1801561102757610fef575b50610fb0578380f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29268ff00000000000000001981541690555160018152a13880808380f35b8381813d8311611020575b6110048183612762565b8101031261101c5761101590612feb565b5038610fa7565b8580fd5b503d610ffa565b83513d88823e3d90fd5b61104d91503d808c833e6110458183612762565b81019061307f565b38610f38565b85513d8a823e3d90fd5b9092508881813d831161108d575b6110758183612762565b810103126106625761108690613053565b9138610e69565b503d61106b565b88513d8d823e3d90fd5b9091508781813d83116110ce575b6110b68183612762565b81010312610603576110c790613053565b9038610e46565b503d6110ac565b87513d8c823e3d90fd5b82604491865191636345072160e11b8352820152336024820152fd5b68ffffffffffffffffff19166801000000000000000117855538610d0d565b50825163f92ee8a960e01b8152fd5b90501538610cf1565b303b159150610ce9565b849150610cdf565b5091346106895760203660031901126106895750610716602092356000526000805160206132db83398151915260205260ff6040600020541690565b5081600319360112610690576111946126bc565b602435916111a061320b565b61ffff8083169081156113cb5784156113bb57816000526000805160206132bb8339815191529160209280845287600020548061139257508160005283528587600020558651916111f083612711565b630c7e33e160e11b8352838301918252878301878152885163077650fb60e51b815293516001600160e01b031916868501529151166024830152516044820152868160648173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156113885761129b938392899161136e575b5087516358cd21bf60e11b815294859283927f0000000000000000000000000000000000000000000000000000000000000000918401612fff565b0381347f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561067f57611312575b5050915161ffff909216825260208201527fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d326466908060408101610a0a565b81813d8311611367575b6113268183612762565b81010312611363577fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d3264669361135c610a0a92612feb565b50936112d5565b8480fd5b503d61131c565b61138291503d808b833e6110458183612762565b38611260565b86513d89823e3d90fd5b885163b55eeae960e01b815261ffff881681880190815260208101929092529081906040010390fd5b855163137063ef60e11b81528390fd5b8551630f7662c960e21b81528390fd5b612677565b5050346106cf57816003193601126106cf5760209060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb541690519015158152f35b5091346106895760203660031901126106895750805191611443836126f6565b35908115159182810361147f5761091d935280519160f81b60208301526001825261146d82612747565b51918291602083526020830190612887565b600080fd5b508290346106cf57826003193601126106cf5761149f6126bc565b6114a761283e565b916114b061320b565b61ffff8216908115610a1057507f528b18a533e892b5401d1fb63597275df9d2bb45b13e7695c3147cd07b9746c39394610a0a916114ed85613129565b9060005260008051602061331b8339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b5034610690576020366003190112610690578035916001600160a01b038084168403611363577f000000000000000000000000000000000000000000000000000000000000000016330361157d57836103be84613244565b60249250519063c5aa615360e01b82523390820152fd5b5060a0366003190112610690576001600160401b038135818111611363576115bf903690840161279e565b60249283359383851161179a573660238601121561179a5784820135936115e58561284d565b946115f288519687612762565b808652602096838888019260051b8201019236841161066257848201925b8484106117745750505050506044356064359461ffff86169081870361147f57608435937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361176157826000526000805160206132bb8339815191528952838a600020540361173a57848b526000805160206132db833981519152895260ff8a8c20541661172657506116cf846000526000805160206132db8339815191526020526040600020600160ff19825416179055565b5161171657606061038495938a95937ff557dbbb087662f52c815f6c7ee350628a37a51eae9608ff840d996b65f87475938b519283528a8301528a820152a1610362612943565b875163c504ea2960e01b81528490fd5b8951632d30ec0360e21b8152808701869052fd5b8951633cd8e72b60e11b815261ffff89168188019081526020810186905281906040010390fd5b8951631c26958960e01b81523381880152fd5b833582811161065a578a9161178f839289369188010161279e565b815201930192611610565b8680fd5b508290346106cf57826003193601126106cf576117b96126bc565b6117c161283e565b916117ca61320b565b61ffff8216908115610a1057507f0fe301480713b2c2072ee91b3bcfcbf2c0014f0447c89046f020f0f80727003c9394610a0a9161180785613129565b9060005260008051602061329b8339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b509060031960a03682011261068c576118566126bc565b9060249283356001600160401b039081811161067b5761187990369088016127e5565b906044358181116105ff57611891903690890161279e565b90608435977f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00976002895414611fa857600289556001600160a01b03937f000000000000000000000000000000000000000000000000000000000000000085163303611f9257908b61194b819361195a8a519b61190d8d6126f6565b848d528b516304616c8f60e21b81526309945ff160e41b89820152338782015260648035604483015260a0908201529c8d94859460a4860190612887565b91848303016084850152612887565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415611f885782988395611f36575b50611992602080980151612ba9565b80511580611f27575b15611b7e575050928a92859283898997611a0d61ffff8f16968792836000526000805160206132bb8339815191528c526119e16119db8660002054613027565b9b613027565b94519c8d9b8c9a8b9a6312d729bd60e21b8c528b0152169088015260e0604488015260e4870190612887565b9360648601527f0000000000000000000000000000000000000000000000000000000000000000608486015260a48501521660c4830152039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611b7457611b03575b5061ffff926060611ae884611afc9460008051602061337b8339815191528460019c60008051602061335b8339815191529b99519060008252848201523485820152a15b815197889716875281818801528451828801528401518387015283015160808087015260c0860190612887565b910151838203603f190160a0850152612887565b0390a15580f35b9391928185813d8311611b6d575b611b1b8183612762565b8101031261067b576060611ae861ffff95611afc9460008051602061337b8339815191528460019c611b5b60008051602061335b8339815191529c612feb565b509c5050509450949650505092611a77565b503d611b11565b83513d8a823e3d90fd5b919394959250959697989a50511580611efb575b15611dd1578651631a90a21960e01b8152937f000000000000000000000000000000000000000000000000000000000000000082169087868681855afa958d8715611dc657908993929197611d93575b50869291611c26918b519889809481936358cd21bf60e11b83527f0000000000000000000000000000000000000000000000000000000000000000908c8401612fff565b03925af1948515611d89578c95611d52575b50817f00000000000000000000000000000000000000000000000000000000000000001690340390348211611d3e5790818d9796959493923b1561067b578c96889660849561ffff8d519a8b998a98630b5624e160e11b8a527f0000000000000000000000000000000000000000000000000000000000000000169089015216908601528760448601521660648401525af18015611d3457611d1c575b5060008051602061335b833981519152936060611ae8856001999560008051602061337b83398151915284611afc9761ffff9a51908e8252848201523485820152a1611abb565b611d28909692966126cd565b61101c57938538611cd5565b84513d84823e3d90fd5b83601186634e487b7160e01b600052526000fd5b9094508681813d8311611d82575b611d6a8183612762565b8101031261065e57611d7b90612feb565b9338611c38565b503d611d60565b88513d8e823e3d90fd5b9196509181813d8111611dbf575b611dab8183612762565b8101031261147f5751948791611c26611be2565b503d611da1565b8a51903d90823e3d90fd5b9050611e189350849286999799518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fff565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611ef157611e93575b5091611afc6001956060611ae88560008051602061335b8339815191529760008051602061337b833981519152848d61ffff9a519060028252848201523485820152a1611abb565b9181838195933d8311611eea575b611eab8183612762565b8101031261179a576001956060611ae8611afc9360008051602061335b83398151915297611edb61ffff98612feb565b50959750955050509550611e4b565b503d611ea1565b83513d89823e3d90fd5b5061ffff8a1660005260008051602061329b8339815191528652611f2287600020546130f7565b611b92565b50611f318b6130a4565b61199b565b985093503d80838a3e611f49818a612762565b88019787818a031261069057805185811161068c5789611f6a9183016129db565b98602082015186811161136357611f8192016129c1565b9338611983565b87513d84823e3d90fd5b509085519063c5aa615360e01b82523390820152fd5b508451633ee5aeb560e01b8152fd5b509134610689576020366003190112610689578235906001600160401b0382116106895750611fee602093611ff39236910161279e565b612ba9565b9051905115158152f35b5050346106cf5760203660031901126106cf5760209061ffff61201e6126bc565b1660005260008051602061331b833981519152825261071681600020546130f7565b5050346106cf57816003193601126106cf57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b509034610690576020918260031936011261068c576001600160a01b039181358381169081810361179a576120b761320b565b6120bf613138565b3b15612552577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e9384549361214c60ff86161561317c565b60ff199485166001178655303b1561179a57825163011fa75760e71b81528781868183305af180156124465761253f575b50825163689f90c360e01b815282818681305afa90811561244657889161250a575b50156121d9575b505050507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b82516324fb21db60e01b815282818681305afa908115612446579061222b9189916124ed575b5082167f000000000000000000000000000000000000000000000000000000000000000083161461317c565b8251630b4a1e8960e01b815282818681305afa908115612446579061227d9189916124c0575b5082167f000000000000000000000000000000000000000000000000000000000000000083161461317c565b82516384acd1bb60e01b815282818681305afa8015612446578890612488575b6122cd915082167f000000000000000000000000000000000000000000000000000000000000000083161461317c565b825163da25b72560e01b815282818681305afa8015612446578890612450575b61231d915082167f000000000000000000000000000000000000000000000000000000000000000083161461317c565b825163121d4a8560e31b815282818681305afa90811561244657889161240c575b508161236e927f00000000000000000000000000000000000000000000000000000000000000001691161461317c565b8082518094631d1bfaa160e31b825281305afa918215612403575085916123cc575b506123c3915060ff807f00000000000000000000000000000000000000000000000000000000000000001691161461317c565b388080806121a6565b905081813d83116123fc575b6123e28183612762565b8101031261068c576123f66123c391613053565b38612390565b503d6123d8565b513d87823e3d90fd5b90508281813d831161243f575b6124238183612762565b8101031261067b575190808216820361067b579061236e61233e565b503d612419565b84513d8a823e3d90fd5b508281813d8311612481575b6124668183612762565b8101031261067b5751818116810361067b5761231d906122ed565b503d61245c565b508281813d83116124b9575b61249e8183612762565b8101031261067b5751818116810361067b576122cd9061229d565b503d612494565b6124e09150843d86116124e6575b6124d88183612762565b8101906128ac565b38612251565b503d6124ce565b6125049150843d86116124e6576124d88183612762565b386121ff565b90508281813d8311612538575b6125218183612762565b8101031261067b5761253290613072565b3861219f565b503d612517565b61254b909791976126cd565b953861217d565b815162461bcd60e51b8152808401869052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b828591346106905760203660031901126106905781356001600160a01b038181169391849003611363578060008051602061333b8339815191525416927fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12499283549283169433861415908161266c575b506126575750506001600160a01b031916831790557f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b63e2a08e5d60e01b8252339082015260249150fd5b90503314158861261b565b3461147f57600036600319011261147f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6004359061ffff8216820361147f57565b6001600160401b0381116126e057604052565b634e487b7160e01b600052604160045260246000fd5b602081019081106001600160401b038211176126e057604052565b606081019081106001600160401b038211176126e057604052565b608081019081106001600160401b038211176126e057604052565b604081019081106001600160401b038211176126e057604052565b90601f801991011681019081106001600160401b038211176126e057604052565b6001600160401b0381116126e057601f01601f191660200190565b81601f8201121561147f578035906127b582612783565b926127c36040519485612762565b8284526020838301011161147f57816000926020809301838601378301015290565b91909160408184031261147f5760408051916001600160401b03918301828111848210176126e0576040528294813560ff8116810361147f578452602082013592831161147f57602092612839920161279e565b910152565b60243590811515820361147f57565b6001600160401b0381116126e05760051b60200190565b60005b8381106128775750506000910152565b8181015183820152602001612867565b906020916128a081518092818552858086019101612864565b601f01601f1916010190565b9081602091031261147f57516001600160a01b038116810361147f5790565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156129375760009161291c575090565b612934915060203d81116124e6576124d88183612762565b90565b6040513d6000823e3d90fd5b604051906129508261272c565b6060808360008152600060208201528160408201520152565b6040519061297682612711565b606060408360008152600060208201520152565b9092919261299781612783565b916129a56040519384612762565b82948284528282011161147f5760206129bf930190612864565b565b9080601f8301121561147f5781516129349260200161298a565b919060808382031261147f57604051906129f48261272c565b819380518352602081015160208401526040810151916001600160401b039283811161147f5781612a269184016129c1565b6040850152606082015192831161147f5760609261283992016129c1565b919060408382031261147f578251906001600160401b039182811161147f5781612a6f9186016129db565b9360208101519083821161147f57019060608282031261147f5760405192612a9684612711565b8251845260208301516020850152604083015190811161147f57612aba92016129c1565b604082015290565b6309945ff160e41b815260406020820181905261293492910190612887565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690818103612b8b5750803b1561147f5761ffff60008094612b71604080519889978896879563275e091560e21b875216600486015260248501526060604485015280516064850152602081015160848501520151606060a484015260c4830190612887565b03925af1801561293757612b825750565b6129bf906126cd565b60449250604051916339dee99160e11b835260048301526024820152fd5b9060405191612bb7836126f6565b6000835282815115612c1f5750600181015160fe8116612c035760ff16151583525160018103612be45750565b604490604051906355c5b3e360e11b8252600482015260016024820152fd5b60405163f7a37b0760e01b815260ff9091166004820152602490fd5b925050565b90612c33602080920151612ba9565b51612f6a5761ffff82169060009082825260008051602061331b8339815191528152604093612c64858420546130f7565b80612f43575b612f2b57612c77906130a4565b15612d3e5750825163c23ee3c360e01b81526004810192909252602482018190527f0000000000000000000000000000000000000000000000000000000000000000604483015282826064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315612d34578193612d03575b50505090565b9091809350813d8311612d2d575b612d1b8183612762565b81010312610689575051388080612cfd565b503d612d11565b51903d90823e3d90fd5b82829394925260008051602061329b8339815191528152612d61828420546130f7565b15612ec957815163209d173960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820195909552604481018490529381856064817f000000000000000000000000000000000000000000000000000000000000000085165afa948515612ebc578495612e8d575b509080600492845193848092631a90a21960e01b82527f0000000000000000000000000000000000000000000000000000000000000000165afa928315612e8457508392612e56575b50508201809211612e42575090565b634e487b7160e01b81526011600452602490fd5b90809250813d8311612e7d575b612e6d8183612762565b810103126106cf57513880612e33565b503d612e63565b513d85823e3d90fd5b9094508181813d8311612eb5575b612ea58183612762565b8101031261068c57519381612dea565b503d612e9b565b50505051903d90823e3d90fd5b8151631a90a21960e01b815291935090919080836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa938415612f2057508193612d035750505090565b51913d9150823e3d90fd5b845163251268db60e21b815260048101859052602490fd5b508383526000805160206132fb8339815191528252612f64858420546130f7565b15612c6a565b604051631a90a21960e01b8152915080826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561293757600091612fbf575b50905090565b82813d8311612fe4575b612fd38183612762565b810103126106895750518038612fb9565b503d612fc9565b51906001600160401b038216820361147f57565b9060ff61302060409295949560008552606060208601526060850190612887565b9416910152565b8060a01c61303b576001600160a01b031690565b6024906040519063033b960d60e41b82526004820152fd5b519060ff8216820361147f57565b519063ffffffff8216820361147f57565b5190811515820361147f57565b9060208282031261147f5781516001600160401b03811161147f5761293492016129c1565b61ffff168060005260008051602061331b8339815191526020526130cc6040600020546130f7565b90816130d6575090565b90506000526000805160206132fb8339815191526020526129346040600020545b8015613123576001811461311d576024906040519063b998bad560e01b82526004820152fd5b50600190565b50600090565b1561313357600190565b600090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461316a57565b604051633c64f99360e21b8152600490fd5b1561318357565b634e487b7160e01b600052600160045260246000fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c16156131c857565b604051631afcd79f60e31b8152600490fd5b6001600160a01b038116156131f2576129bf90613244565b604051631e4fbdf760e01b815260006004820152602490fd5b60008051602061333b833981519152546001600160a01b0316330361322c57565b60405163118cdaa760e01b8152336004820152602490fd5b60008051602061333b83398151915280546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a356fed4cbc7742a1e11dcc33209ac33862ef146cfcb6d7f860df12df42105dfedb1c948c66ef0992b4bcc14f2551075db9459fc23bf706abb76034f1c66c1ba2846845e6aacb3f16e5b01c8b072a0ab4c38e919266014a45db863ee64a4580fb3e7e2e79d2e5e46f62be2ac831294e423b664f30320fb9ebaefd78a978cafe07c0f8c16ee6ac6bf7a8d7c37112a9426e00852b215ac4f5c50536beb6c95f1ba47b4af9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930079376a0dc6cbfe6f6f8f89ad24c262a8c6233f8df181d3fe5abb2e2442e8c738c3192e083c87c556db539f071d8a298869f487e951327b5616a6f85ae3da958ea26469706673582212207bc4f63809fac595a807d3db7f0b018f2f37e2fc46722017fb19171aab94e8f964736f6c63430008130033",isSuperArgs=t=>typeof t[0]=="string"||Array.isArray(t[0])||"_isInterface"in t[0],Ei=class Ei extends ContractFactory{constructor(...e){if(isSuperArgs(e))super(...e);else{const[s,l]=e;super(_abi,Ei.linkBytecode(s),l)}}static linkBytecode(e){let s=_bytecode;return s=s.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),s}getDeployTransaction(e,s,l,d,u,p,m){return super.getDeployTransaction(e,s,l,d,u,p,m||{})}deploy(e,s,l,d,u,p,m){return super.deploy(e,s,l,d,u,p,m||{})}connect(e){return super.connect(e)}static createInterface(){return new Interface(_abi)}static connect(e,s){return new Contract(e,_abi,s)}};Ae(Ei,"bytecode",_bytecode),Ae(Ei,"abi",_abi);let WormholeTransceiver__factory=Ei;const _0_1_0={NttManager:{connect:NttManager__factory$2.connect},NttTransceiver:{connect:WormholeTransceiver__factory$2.connect}},_1_0_0$1={NttManager:{connect:NttManager__factory$1.connect},NttTransceiver:{connect:WormholeTransceiver__factory$1.connect}},_1_1_0={NttManager:{connect:NttManager__factory.connect},NttTransceiver:{connect:WormholeTransceiver__factory.connect}},abiVersions=[["1.1.0",_1_1_0],["1.0.0",_1_0_0$1],["0.1.0",_0_1_0]];function loadAbiVersion(t){for(const[e,s]of abiVersions)if(Ntt.abiVersionMatches(t,e))return s;throw new Error(`Unknown ABI version: ${t}`)}class EvmNttWormholeTranceiver{constructor(e,s,l){Ae(this,"manager");Ae(this,"address");Ae(this,"transceiver");this.manager=e,this.address=s,this.transceiver=l.NttTransceiver.connect(s,e.provider)}async getTransceiverType(){return"wormhole"}getAddress(){return{chain:this.manager.chain,address:toUniversal(this.manager.chain,this.address)}}encodeFlags(e){return new Uint8Array([e.skipRelay?1:0])}async*setPeer(e){const s=await this.transceiver.setWormholePeer.populateTransaction(toChainId(e.chain),universalAddress(e));yield this.manager.createUnsignedTx(s,"WormholeTransceiver.registerPeer")}async getPauser(){const e=await this.transceiver.pauser();return new EvmAddress(e)}async*setPauser(e){const s=canonicalAddress({chain:this.manager.chain,address:e}),l=await this.transceiver.transferPauserCapability.populateTransaction(s);yield this.manager.createUnsignedTx(l,"WormholeTransceiver.setPauser")}async getPeer(e){const s=await this.transceiver.getWormholePeer(toChainId(e)),l=hex$1.decode(s),d=new Uint8Array(32);return bytes$1.equals(d,l)?null:{chain:e,address:toUniversal(e,l)}}async isEvmChain(e){return await this.transceiver.isWormholeEvmChain(toChainId(e))}async*setIsEvmChain(e,s){const l=await this.transceiver.setIsWormholeEvmChain.populateTransaction(toChainId(e),s);yield this.manager.createUnsignedTx(l,"WormholeTransceiver.setIsEvmChain")}async*receive(e){const s=await this.transceiver.receiveMessage.populateTransaction(serialize$1(e));yield this.manager.createUnsignedTx(s,"WormholeTransceiver.receiveMessage")}async isWormholeRelayingEnabled(e){return await this.transceiver.isWormholeRelayingEnabled(toChainId(e))}async*setIsWormholeRelayingEnabled(e,s){const l=await this.transceiver.setIsWormholeRelayingEnabled.populateTransaction(toChainId(e),s);yield this.manager.createUnsignedTx(l,"WormholeTransceiver.setWormholeRelayingEnabled")}async isSpecialRelayingEnabled(e){return await this.transceiver.isSpecialRelayingEnabled(toChainId(e))}async*setIsSpecialRelayingEnabled(e,s){const l=await this.transceiver.setIsSpecialRelayingEnabled.populateTransaction(toChainId(e),s);yield this.manager.createUnsignedTx(l,"WormholeTransceiver.setSpecialRelayingEnabled")}}class EvmNtt{constructor(e,s,l,d,u="1.0.0"){Ae(this,"network");Ae(this,"chain");Ae(this,"provider");Ae(this,"contracts");Ae(this,"version");Ae(this,"tokenAddress");Ae(this,"chainId");Ae(this,"manager");Ae(this,"xcvrs");Ae(this,"managerAddress");if(this.network=e,this.chain=s,this.provider=l,this.contracts=d,this.version=u,!d.ntt)throw new Error("No Ntt Contracts provided");this.chainId=networkChainToNativeChainId.get(e,s),this.tokenAddress=d.ntt.token,this.managerAddress=d.ntt.manager;const p=loadAbiVersion(this.version);this.manager=p.NttManager.connect(d.ntt.manager,this.provider),this.xcvrs=[],"wormhole"in d.ntt.transceiver&&d.ntt.transceiver.wormhole&&["wormhole",...Object.keys(d.ntt.transceiver).filter(y=>{})].map(y=>{if(y!=="wormhole")throw new Error(`Unsupported transceiver type: ${y}`);this.xcvrs.push(new EvmNttWormholeTranceiver(this,d.ntt.transceiver[y],p))})}async getTransceiver(e){return this.xcvrs[e]||null}async getMode(){return await this.manager.getMode()===0n?"locking":"burning"}async isPaused(){return await this.manager.isPaused()}async*pause(){const e=await this.manager.pause.populateTransaction();yield this.createUnsignedTx(e,"Ntt.pause")}async*unpause(){const e=await this.manager.unpause.populateTransaction();yield this.createUnsignedTx(e,"Ntt.unpause")}async getOwner(){return new EvmAddress(await this.manager.owner())}async getPauser(){return new EvmAddress(await this.manager.pauser())}async*setOwner(e){const s=new EvmAddress(e).toString(),l=await this.manager.transferOwnership.populateTransaction(s);yield this.createUnsignedTx(l,"Ntt.setOwner")}async*setPauser(e){const s=new EvmAddress(e).toString(),l=await this.manager.transferPauserCapability.populateTransaction(s);yield this.createUnsignedTx(l,"Ntt.setPauser")}async getThreshold(){return Number(await this.manager.getThreshold())}async isRelayingAvailable(e){return(await Promise.all(this.xcvrs.map(async l=>{const[d,u]=await Promise.all([l.isWormholeRelayingEnabled(e),l.isSpecialRelayingEnabled(e)]);return d||u}))).filter(l=>l).length>0}async getIsExecuted(e){const s=e.payloadName==="WormholeTransfer"?e.payload:e.payload.payload;return await this.manager.isMessageExecuted(Ntt.messageDigest(e.emitterChain,s.nttManagerPayload))?!await this.getIsTransferInboundQueued(e):!1}async getIsTransferInboundQueued(e){const s=e.payloadName==="WormholeTransfer"?e.payload:e.payload.payload;return await this.getInboundQueuedTransfer(e.emitterChain,s.nttManagerPayload)!==null}getIsApproved(e){const s=e.payloadName==="WormholeTransfer"?e.payload:e.payload.payload;return this.manager.isMessageApproved(Ntt.messageDigest(e.emitterChain,s.nttManagerPayload))}async getTokenDecimals(){return await EvmPlatform.getDecimals(this.chain,this.provider,this.tokenAddress)}async getPeer(e){const s=await this.manager.getPeer(toChainId(e)),l=hex$1.decode(s.peerAddress),d=new Uint8Array(32);return bytes$1.equals(d,l)?null:{address:{chain:e,address:toUniversal(e,l)},tokenDecimals:Number(s.tokenDecimals),inboundLimit:await this.getInboundLimit(e)}}static async fromRpc(e,s){const[l,d]=await EvmPlatform.chainFromRpc(e),u=s[d];if(u.network!==l)throw new Error(`Network mismatch: ${u.network} != ${l}`);const p=await EvmNtt.getVersion(e,u.contracts);return new EvmNtt(l,d,e,u.contracts,p)}encodeOptions(e){const s=[];return s.push({index:0,payload:this.xcvrs[0].encodeFlags({skipRelay:!e.automatic})}),s}static async getVersion(e,s){var d;const l=new Contract(s.ntt.manager,["function NTT_MANAGER_VERSION() public view returns (string)"],e);try{const u=await l.getFunction("NTT_MANAGER_VERSION").staticCall();if(!u)throw new Error("NTT_MANAGER_VERSION not found");return u}catch(u){throw console.error(`Failed to get NTT_MANAGER_VERSION from contract ${(d=s.ntt)==null?void 0:d.manager}`),u}}async getCustodyAddress(){return this.managerAddress}async quoteDeliveryPrice(e,s){const[,l]=await this.manager.quoteDeliveryPrice(toChainId(e),Ntt.encodeTransceiverInstructions(this.encodeOptions(s)));return l}async*setPeer(e,s,l){const d=await this.manager.setPeer.populateTransaction(toChainId(e.chain),universalAddress(e),s,l);yield this.createUnsignedTx(d,"Ntt.setPeer")}async*setWormholeTransceiverPeer(e){yield*this.setTransceiverPeer(0,e)}async*setTransceiverPeer(e,s){if(e>=this.xcvrs.length)throw new Error("Transceiver not found");yield*this.xcvrs[e].setPeer(s)}async*transfer(e,s,l,d){const u=new EvmAddress(e).toString(),p=await this.quoteDeliveryPrice(l.chain,d),m=EvmPlatform.getTokenImplementation(this.provider,this.tokenAddress);if(await m.allowance(u,this.managerAddress)<s){const A=await m.approve.populateTransaction(this.managerAddress,s);yield this.createUnsignedTx(addFrom(A,u),"Ntt.Approve")}const h=universalAddress(l),v=await this.manager.getFunction("transfer(uint256,uint16,bytes32,bytes32,bool,bytes)").populateTransaction(s,toChainId(l.chain),h,h,d.queue,Ntt.encodeTransceiverInstructions(this.encodeOptions(d)),{value:p});yield this.createUnsignedTx(addFrom(v,u),"Ntt.transfer")}async*redeem(e){if(e.length!==this.xcvrs.length)throw new Error("Not enough attestations for the registered Transceivers");for(const s in this.xcvrs){const l=this.xcvrs[s],d=e[s];if((d==null?void 0:d.payloadName)!=="WormholeTransfer")throw new Error("Invalid attestation type for redeem");yield*l.receive(d)}}async getCurrentOutboundCapacity(){return await this.manager.getCurrentOutboundCapacity()}async getOutboundLimit(){const e=(await this.manager.getOutboundLimitParams()).limit,s=decodeTrimmedAmount(e),l=await this.getTokenDecimals();return untrim(s,l)}async*setOutboundLimit(e){const s=await this.manager.setOutboundLimit.populateTransaction(e);yield this.createUnsignedTx(s,"Ntt.setOutboundLimit")}async getCurrentInboundCapacity(e){return await this.manager.getCurrentInboundCapacity(toChainId(e))}async getInboundLimit(e){const s=(await this.manager.getInboundLimitParams(toChainId(e))).limit,l=decodeTrimmedAmount(s),d=await this.getTokenDecimals();return untrim(l,d)}async*setInboundLimit(e,s){const l=await this.manager.setInboundLimit.populateTransaction(s,toChainId(e));yield this.createUnsignedTx(l,"Ntt.setInboundLimit")}async getRateLimitDuration(){return await this.manager.rateLimitDuration()}async getInboundQueuedTransfer(e,s){const l=await this.manager.getInboundQueuedTransfer(Ntt.messageDigest(e,s));if(l.txTimestamp>0n){const{recipient:d,amount:u,txTimestamp:p}=l,m=await this.getRateLimitDuration();return{recipient:new EvmAddress(d),amount:u,rateLimitExpiryTimestamp:Number(p+m)}}return null}async*completeInboundQueuedTransfer(e,s,l){const d=await this.manager.completeInboundQueuedTransfer.populateTransaction(Ntt.messageDigest(e,s));yield this.createUnsignedTx(d,"Ntt.completeInboundQueuedTransfer")}async verifyAddresses(){const e={manager:this.managerAddress,token:this.tokenAddress,transceiver:{...this.xcvrs.length>0&&{wormhole:this.xcvrs[0].address}}},s={manager:this.managerAddress,token:await this.manager.token(),transceiver:{wormhole:(await this.manager.getTransceivers())[0]}},l=(d,u)=>{for(const p in d)typeof d[p]=="object"?(l(d[p],u[p]),Object.keys(d[p]).length===0&&delete d[p]):d[p]===u[p]&&delete d[p]};return l(s,e),Object.keys(s).length>0?s:null}createUnsignedTx(e,s,l=!1){return new EvmUnsignedTransaction(addChainId(e,this.chainId),this.network,this.chain,s,l)}}function decodeTrimmedAmount(t){const e=Number(t&0xffn);return{amount:t>>8n,decimals:e}}function untrim(t,e){const{amount:s,decimals:l}=t;return scale(s,l,e)}function scale(t,e,s){return e==s?t:e>s?t/10n**BigInt(e-s):t*10n**BigInt(s-e)}registerProtocol(_platform$1,"Ntt",EvmNtt);class SolanaChain extends ChainContext{async getTokenAccount(e,s){const{getAssociatedTokenAddress:l}=await Promise.resolve().then(()=>require("./index-1EgmRX-a.js")),d=new SolanaAddress(s).unwrap(),u=new SolanaAddress(e).unwrap(),p=await l(d,u);return{chain:this.chain,address:new SolanaAddress(p.toString())}}}const TOKEN_PROGRAM_ID$3=new PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),TOKEN_2022_PROGRAM_ID$1=new PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"),ASSOCIATED_TOKEN_PROGRAM_ID$2=new PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new PublicKey("So11111111111111111111111111111111111111112");new PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");const encodeDecode=t=>{const e=t.decode.bind(t),s=t.encode.bind(t);return{decode:e,encode:s}},bigInt=t=>e=>{const s=exports.blob(t,e),{encode:l,decode:d}=encodeDecode(s),u=s;return u.decode=(p,m)=>{const y=d(p,m);return toBigIntLE_1(dist$2.Buffer.from(y))},u.encode=(p,m,y)=>{const h=toBufferLE_1(p,t);return l(h,m,y)},u},u64$1=bigInt(8),bool=t=>{const e=exports.u8(t),{encode:s,decode:l}=encodeDecode(e),d=e;return d.decode=(u,p)=>!!l(u,p),d.encode=(u,p,m)=>{const y=Number(u);return s(y,p,m)},d},publicKey$3=t=>{const e=exports.blob(32,t),{encode:s,decode:l}=encodeDecode(e),d=e;return d.decode=(u,p)=>{const m=l(u,p);return new PublicKey(m)},d.encode=(u,p,m)=>{const y=u.toBuffer();return s(y,p,m)},d},rn=class rn extends PlatformContext{constructor(e,s){super(e,s??networkPlatformConfigs(e,rn._platform))}getRpc(e,s={commitment:"confirmed",disableRetryOnRateLimit:!0}){if(e in this.config)return new Connection$1(this.config[e].rpc,s);throw new Error("No configuration available for chain: "+e)}getChain(e,s){if(e in this.config)return new SolanaChain(e,this,s);throw new Error("No configuration available for chain: "+e)}static nativeTokenId(e,s){if(!rn.isSupportedChain(s))throw new Error(`invalid chain: ${s}`);return Wormhole.chainAddress(s,SolanaZeroAddress)}static isNativeTokenId(e,s,l){return!this.isSupportedChain(s)||l.chain!==s?!1:this.nativeTokenId(e,s)==l}static isSupportedChain(e){return chainToPlatform(e)===rn._platform}static async getDecimals(e,s,l){if(isNative(l))return nativeDecimals(rn._platform);let d=await s.getParsedAccountInfo(new SolanaAddress(l).unwrap());if(!d||!d.value)throw new Error("could not fetch token details");const{decimals:u}=d.value.data.parsed.info;return u}static async getBalance(e,s,l,d){const u=new PublicKey(l);if(isNative(d))return BigInt(await s.getBalance(u));const p=await s.getTokenAccountsByOwner(u,{mint:new SolanaAddress(d).unwrap()}),m=p.value.length>0?p.value[0].pubkey:u,y=await s.getTokenAccountBalance(m);return BigInt(y.value.amount)}static async getBalances(e,s,l,d){let u;d.includes("native")&&(u=BigInt(await s.getBalance(new PublicKey(l))));const p=(await Promise.all([TOKEN_PROGRAM_ID$3,TOKEN_2022_PROGRAM_ID$1].map(y=>new PublicKey(y)).map(y=>s.getParsedTokenAccountsByOwner(new PublicKey(l),{programId:y})))).reduce((y,h)=>y.concat(h.value),[]);return d.map(y=>{var A,w,I,k;if(isNative(y))return{native:u};const h=new SolanaAddress(y).toString(),v=(k=(I=(w=(A=p.find($=>{var P,z;return((z=(P=$==null?void 0:$.account.data.parsed)==null?void 0:P.info)==null?void 0:z.mint)===y.toString()}))==null?void 0:A.account.data.parsed)==null?void 0:w.info)==null?void 0:I.tokenAmount)==null?void 0:k.amount;return v?{[h]:BigInt(v)}:{[h]:null}}).reduce((y,h)=>Object.assign(y,h),{})}static async sendWait(e,s,l,d){const u=await Promise.all(l.map(y=>this.sendTxWithRetry(s,y,d))),p=u.map(y=>y.signature),m=u.filter(y=>y.response.value.err).map(y=>y.response.value.err);if(m.length>0)throw new Error(`Failed to confirm transaction: ${m}`);return p}static async sendTxWithRetry(e,s,l={},d=5e3){const u=l.preflightCommitment??e.commitment,p=await e.sendRawTransaction(s,{...l,skipPreflight:!1,maxRetries:0,preflightCommitment:u}),{blockhash:m,lastValidBlockHeight:y}=await e.getLatestBlockhash(),h=e.confirmTransaction({signature:p,blockhash:m,lastValidBlockHeight:y},u);let v=null;for(;!v&&(v=await Promise.race([h,new Promise(A=>setTimeout(()=>{A(null)},d))]),!v);)await e.sendRawTransaction(s,{...l,skipPreflight:!0,maxRetries:0,preflightCommitment:u});return{signature:p,response:v}}static async latestBlock(e,s){return e.getLatestBlockhash(s??e.commitment)}static async getLatestBlock(e){return await e.getSlot()}static async getLatestFinalizedBlock(e){const{lastValidBlockHeight:s}=await this.latestBlock(e,"finalized");return s}static chainFromChainId(e){const s=platformNativeChainIdToNetworkChain(rn._platform,e);if(!s)throw new Error(`No matching genesis hash to determine network and chain: ${e}`);const[l,d]=s;return[l,d]}static async chainFromRpc(e){try{const s=await e.getGenesisHash();return rn.chainFromChainId(s)}catch(s){if(e.rpcEndpoint.includes("http://127")||e.rpcEndpoint.includes("http://localhost")||e.rpcEndpoint==="http://solana-devnet:8899")return["Devnet","Solana"];throw s}}};Ae(rn,"_platform",_platform);let SolanaPlatform=rn;class SolanaUnsignedTransaction{constructor(e,s,l,d,u=!1){Ae(this,"transaction");Ae(this,"network");Ae(this,"chain");Ae(this,"description");Ae(this,"parallelizable");this.transaction=e,this.network=s,this.chain=l,this.description=d,this.parallelizable=u}}function isVersionedTransaction$1(t){return t.signatures!==void 0&&t.message!==void 0}const toBytes=t=>typeof t=="string"?dist$2.Buffer.from(t):t;function deriveAddress(t,e){return PublicKey.findProgramAddressSync(Array.isArray(t)?t.map(toBytes):[toBytes(t)],new PublicKey(e))[0]}function newAccountMeta(t,e){return{pubkey:new PublicKey(t),isWritable:!0,isSigner:e}}function newReadOnlyAccountMeta(t,e){return{pubkey:new PublicKey(t),isWritable:!1,isSigner:e}}function getAccountData(t){if(t===null)throw Error("account info is null");return t.data}const BPF_LOADER_UPGRADEABLE_PROGRAM_ID$1=new PublicKey("BPFLoaderUpgradeab1e11111111111111111111111");function deriveProgramDataAddress(t){return deriveAddress([new PublicKey(t).toBuffer()],BPF_LOADER_UPGRADEABLE_PROGRAM_ID$1)}function createReadOnlyProvider(t){if(t!==void 0)return{connection:t}}let IdlError$1=class extends Error{constructor(e){super(e),this.name="IdlError"}};var dist$1={},Layout$2={};let Layout$1=class{constructor(e,s){if(!Number.isInteger(e))throw new TypeError("span must be an integer");this.span=e,this.property=s}makeDestinationObject(){return{}}decode(e,s){throw new Error("Layout is abstract")}encode(e,s,l){throw new Error("Layout is abstract")}getSpan(e,s){if(0>this.span)throw new RangeError("indeterminate span");return this.span}replicate(e){const s=Object.create(this.constructor.prototype);return Object.assign(s,this),s.property=e,s}fromArray(e){}};Layout$2.Layout=Layout$1;function nameWithProperty$1(t,e){return e.property?t+"["+e.property+"]":t}Layout$2.nameWithProperty=nameWithProperty$1;function bindConstructorLayout(t,e){if(typeof t!="function")throw new TypeError("Class must be constructor");if(t.hasOwnProperty("layout_"))throw new Error("Class is already bound to a layout");if(!(e&&e instanceof Layout$1))throw new TypeError("layout must be a Layout");if(e.hasOwnProperty("boundConstructor_"))throw new Error("layout is already bound to a constructor");t.layout_=e,e.boundConstructor_=t,e.makeDestinationObject=()=>new t,Object.defineProperty(t.prototype,"encode",{value:function(s,l){return e.encode(this,s,l)},writable:!0}),Object.defineProperty(t,"decode",{value:function(s,l){return e.decode(s,l)},writable:!0})}Layout$2.bindConstructorLayout=bindConstructorLayout;let ExternalLayout$1=class extends Layout$1{isCount(){throw new Error("ExternalLayout is abstract")}};class GreedyCount extends ExternalLayout$1{constructor(e,s){if(e===void 0&&(e=1),!Number.isInteger(e)||0>=e)throw new TypeError("elementSpan must be a (positive) integer");super(-1,s),this.elementSpan=e}isCount(){return!0}decode(e,s){s===void 0&&(s=0);const l=e.length-s;return Math.floor(l/this.elementSpan)}encode(e,s,l){return 0}}let OffsetLayout$1=class extends ExternalLayout$1{constructor(e,s,l){if(!(e instanceof Layout$1))throw new TypeError("layout must be a Layout");if(s===void 0)s=0;else if(!Number.isInteger(s))throw new TypeError("offset must be integer or undefined");super(e.span,l||e.property),this.layout=e,this.offset=s}isCount(){return this.layout instanceof UInt$1||this.layout instanceof UIntBE$1}decode(e,s){return s===void 0&&(s=0),this.layout.decode(e,s+this.offset)}encode(e,s,l){return l===void 0&&(l=0),this.layout.encode(e,s,l+this.offset)}},UInt$1=class extends Layout$1{constructor(e,s){if(super(e,s),6<this.span)throw new RangeError("span must not exceed 6 bytes")}decode(e,s){return s===void 0&&(s=0),e.readUIntLE(s,this.span)}encode(e,s,l){return l===void 0&&(l=0),s.writeUIntLE(e,l,this.span),this.span}},UIntBE$1=class extends Layout$1{constructor(e,s){if(super(e,s),6<this.span)throw new RangeError("span must not exceed 6 bytes")}decode(e,s){return s===void 0&&(s=0),e.readUIntBE(s,this.span)}encode(e,s,l){return l===void 0&&(l=0),s.writeUIntBE(e,l,this.span),this.span}};class Int extends Layout$1{constructor(e,s){if(super(e,s),6<this.span)throw new RangeError("span must not exceed 6 bytes")}decode(e,s){return s===void 0&&(s=0),e.readIntLE(s,this.span)}encode(e,s,l){return l===void 0&&(l=0),s.writeIntLE(e,l,this.span),this.span}}class IntBE extends Layout$1{constructor(e,s){if(super(e,s),6<this.span)throw new RangeError("span must not exceed 6 bytes")}decode(e,s){return s===void 0&&(s=0),e.readIntBE(s,this.span)}encode(e,s,l){return l===void 0&&(l=0),s.writeIntBE(e,l,this.span),this.span}}const V2E32$1=Math.pow(2,32);function divmodInt64$1(t){const e=Math.floor(t/V2E32$1),s=t-e*V2E32$1;return{hi32:e,lo32:s}}function roundedInt64$1(t,e){return t*V2E32$1+e}let NearUInt64$1=class extends Layout$1{constructor(e){super(8,e)}decode(e,s){s===void 0&&(s=0);const l=e.readUInt32LE(s),d=e.readUInt32LE(s+4);return roundedInt64$1(d,l)}encode(e,s,l){l===void 0&&(l=0);const d=divmodInt64$1(e);return s.writeUInt32LE(d.lo32,l),s.writeUInt32LE(d.hi32,l+4),8}};class NearUInt64BE extends Layout$1{constructor(e){super(8,e)}decode(e,s){s===void 0&&(s=0);const l=e.readUInt32BE(s),d=e.readUInt32BE(s+4);return roundedInt64$1(l,d)}encode(e,s,l){l===void 0&&(l=0);const d=divmodInt64$1(e);return s.writeUInt32BE(d.hi32,l),s.writeUInt32BE(d.lo32,l+4),8}}let NearInt64$1=class extends Layout$1{constructor(e){super(8,e)}decode(e,s){s===void 0&&(s=0);const l=e.readUInt32LE(s),d=e.readInt32LE(s+4);return roundedInt64$1(d,l)}encode(e,s,l){l===void 0&&(l=0);const d=divmodInt64$1(e);return s.writeUInt32LE(d.lo32,l),s.writeInt32LE(d.hi32,l+4),8}};class NearInt64BE extends Layout$1{constructor(e){super(8,e)}decode(e,s){s===void 0&&(s=0);const l=e.readInt32BE(s),d=e.readUInt32BE(s+4);return roundedInt64$1(l,d)}encode(e,s,l){l===void 0&&(l=0);const d=divmodInt64$1(e);return s.writeInt32BE(d.hi32,l),s.writeUInt32BE(d.lo32,l+4),8}}class Float extends Layout$1{constructor(e){super(4,e)}decode(e,s){return s===void 0&&(s=0),e.readFloatLE(s)}encode(e,s,l){return l===void 0&&(l=0),s.writeFloatLE(e,l),4}}class FloatBE extends Layout$1{constructor(e){super(4,e)}decode(e,s){return s===void 0&&(s=0),e.readFloatBE(s)}encode(e,s,l){return l===void 0&&(l=0),s.writeFloatBE(e,l),4}}class Double extends Layout$1{constructor(e){super(8,e)}decode(e,s){return s===void 0&&(s=0),e.readDoubleLE(s)}encode(e,s,l){return l===void 0&&(l=0),s.writeDoubleLE(e,l),8}}class DoubleBE extends Layout$1{constructor(e){super(8,e)}decode(e,s){return s===void 0&&(s=0),e.readDoubleBE(s)}encode(e,s,l){return l===void 0&&(l=0),s.writeDoubleBE(e,l),8}}class Sequence extends Layout$1{constructor(e,s,l){if(!(e instanceof Layout$1))throw new TypeError("elementLayout must be a Layout");if(!(s instanceof ExternalLayout$1&&s.isCount()||Number.isInteger(s)&&0<=s))throw new TypeError("count must be non-negative integer or an unsigned integer ExternalLayout");let d=-1;!(s instanceof ExternalLayout$1)&&0<e.span&&(d=s*e.span),super(d,l),this.elementLayout=e,this.count=s}getSpan(e,s){if(0<=this.span)return this.span;s===void 0&&(s=0);let l=0,d=this.count;if(d instanceof ExternalLayout$1&&(d=d.decode(e,s)),0<this.elementLayout.span)l=d*this.elementLayout.span;else{let u=0;for(;u<d;)l+=this.elementLayout.getSpan(e,s+l),++u}return l}decode(e,s){s===void 0&&(s=0);const l=[];let d=0,u=this.count;for(u instanceof ExternalLayout$1&&(u=u.decode(e,s));d<u;)l.push(this.elementLayout.decode(e,s)),s+=this.elementLayout.getSpan(e,s),d+=1;return l}encode(e,s,l){l===void 0&&(l=0);const d=this.elementLayout,u=e.reduce((p,m)=>p+d.encode(m,s,l+p),0);return this.count instanceof ExternalLayout$1&&this.count.encode(e.length,s,l),u}}let Structure$1=class extends Layout$1{constructor(e,s,l){if(!(Array.isArray(e)&&e.reduce((u,p)=>u&&p instanceof Layout$1,!0)))throw new TypeError("fields must be array of Layout instances");typeof s=="boolean"&&l===void 0&&(l=s,s=void 0);for(const u of e)if(0>u.span&&u.property===void 0)throw new Error("fields cannot contain unnamed variable-length layout");let d=-1;try{d=e.reduce((u,p)=>u+p.getSpan(),0)}catch{}super(d,s),this.fields=e,this.decodePrefixes=!!l}getSpan(e,s){if(0<=this.span)return this.span;s===void 0&&(s=0);let l=0;try{l=this.fields.reduce((d,u)=>{const p=u.getSpan(e,s);return s+=p,d+p},0)}catch{throw new RangeError("indeterminate span")}return l}decode(e,s){s===void 0&&(s=0);const l=this.makeDestinationObject();for(const d of this.fields)if(d.property!==void 0&&(l[d.property]=d.decode(e,s)),s+=d.getSpan(e,s),this.decodePrefixes&&e.length===s)break;return l}encode(e,s,l){l===void 0&&(l=0);const d=l;let u=0,p=0;for(const m of this.fields){let y=m.span;if(p=0<y?y:0,m.property!==void 0){const h=e[m.property];h!==void 0&&(p=m.encode(h,s,l),0>y&&(y=m.getSpan(s,l)))}u=l,l+=y}return u+p-d}fromArray(e){const s=this.makeDestinationObject();for(const l of this.fields)l.property!==void 0&&0<e.length&&(s[l.property]=e.shift());return s}layoutFor(e){if(typeof e!="string")throw new TypeError("property must be string");for(const s of this.fields)if(s.property===e)return s}offsetOf(e){if(typeof e!="string")throw new TypeError("property must be string");let s=0;for(const l of this.fields){if(l.property===e)return s;0>l.span?s=-1:0<=s&&(s+=l.span)}}},UnionDiscriminator$1=class{constructor(e){this.property=e}decode(){throw new Error("UnionDiscriminator is abstract")}encode(){throw new Error("UnionDiscriminator is abstract")}},UnionLayoutDiscriminator$1=class extends UnionDiscriminator$1{constructor(e,s){if(!(e instanceof ExternalLayout$1&&e.isCount()))throw new TypeError("layout must be an unsigned integer ExternalLayout");super(s||e.property||"variant"),this.layout=e}decode(e,s){return this.layout.decode(e,s)}encode(e,s,l){return this.layout.encode(e,s,l)}},Union$1=class extends Layout$1{constructor(e,s,l){const d=e instanceof UInt$1||e instanceof UIntBE$1;if(d)e=new UnionLayoutDiscriminator$1(new OffsetLayout$1(e));else if(e instanceof ExternalLayout$1&&e.isCount())e=new UnionLayoutDiscriminator$1(e);else if(!(e instanceof UnionDiscriminator$1))throw new TypeError("discr must be a UnionDiscriminator or an unsigned integer layout");if(s===void 0&&(s=null),!(s===null||s instanceof Layout$1))throw new TypeError("defaultLayout must be null or a Layout");if(s!==null){if(0>s.span)throw new Error("defaultLayout must have constant span");s.property===void 0&&(s=s.replicate("content"))}let u=-1;s&&(u=s.span,0<=u&&d&&(u+=e.layout.span)),super(u,l),this.discriminator=e,this.usesPrefixDiscriminator=d,this.defaultLayout=s,this.registry={};let p=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(m){return p(m)},this.configGetSourceVariant=function(m){p=m.bind(this)}}getSpan(e,s){if(0<=this.span)return this.span;s===void 0&&(s=0);const l=this.getVariant(e,s);if(!l)throw new Error("unable to determine span for unrecognized variant");return l.getSpan(e,s)}defaultGetSourceVariant(e){if(e.hasOwnProperty(this.discriminator.property)){if(this.defaultLayout&&e.hasOwnProperty(this.defaultLayout.property))return;const s=this.registry[e[this.discriminator.property]];if(s&&(!s.layout||e.hasOwnProperty(s.property)))return s}else for(const s in this.registry){const l=this.registry[s];if(e.hasOwnProperty(l.property))return l}throw new Error("unable to infer src variant")}decode(e,s){s===void 0&&(s=0);let l;const d=this.discriminator,u=d.decode(e,s);let p=this.registry[u];if(p===void 0){let m=0;p=this.defaultLayout,this.usesPrefixDiscriminator&&(m=d.layout.span),l=this.makeDestinationObject(),l[d.property]=u,l[p.property]=this.defaultLayout.decode(e,s+m)}else l=p.decode(e,s);return l}encode(e,s,l){l===void 0&&(l=0);const d=this.getSourceVariant(e);if(d===void 0){const u=this.discriminator,p=this.defaultLayout;let m=0;return this.usesPrefixDiscriminator&&(m=u.layout.span),u.encode(e[u.property],s,l),m+p.encode(e[p.property],s,l+m)}return d.encode(e,s,l)}addVariant(e,s,l){const d=new VariantLayout$1(this,e,s,l);return this.registry[e]=d,d}getVariant(e,s){let l=e;return dist$2.Buffer.isBuffer(e)&&(s===void 0&&(s=0),l=this.discriminator.decode(e,s)),this.registry[l]}},VariantLayout$1=class extends Layout$1{constructor(e,s,l,d){if(!(e instanceof Union$1))throw new TypeError("union must be a Union");if(!Number.isInteger(s)||0>s)throw new TypeError("variant must be a (non-negative) integer");if(typeof l=="string"&&d===void 0&&(d=l,l=null),l){if(!(l instanceof Layout$1))throw new TypeError("layout must be a Layout");if(e.defaultLayout!==null&&0<=l.span&&l.span>e.defaultLayout.span)throw new Error("variant span exceeds span of containing union");if(typeof d!="string")throw new TypeError("variant must have a String property")}let u=e.span;0>e.span&&(u=l?l.span:0,0<=u&&e.usesPrefixDiscriminator&&(u+=e.discriminator.layout.span)),super(u,d),this.union=e,this.variant=s,this.layout=l||null}getSpan(e,s){if(0<=this.span)return this.span;s===void 0&&(s=0);let l=0;return this.union.usesPrefixDiscriminator&&(l=this.union.discriminator.layout.span),l+this.layout.getSpan(e,s+l)}decode(e,s){const l=this.makeDestinationObject();if(s===void 0&&(s=0),this!==this.union.getVariant(e,s))throw new Error("variant mismatch");let d=0;return this.union.usesPrefixDiscriminator&&(d=this.union.discriminator.layout.span),this.layout?l[this.property]=this.layout.decode(e,s+d):this.property?l[this.property]=!0:this.union.usesPrefixDiscriminator&&(l[this.union.discriminator.property]=this.variant),l}encode(e,s,l){l===void 0&&(l=0);let d=0;if(this.union.usesPrefixDiscriminator&&(d=this.union.discriminator.layout.span),this.layout&&!e.hasOwnProperty(this.property))throw new TypeError("variant lacks property "+this.property);this.union.discriminator.encode(this.variant,s,l);let u=d;if(this.layout&&(this.layout.encode(e[this.property],s,l+d),u+=this.layout.getSpan(s,l+d),0<=this.union.span&&u>this.union.span))throw new Error("encoded variant overruns containing union");return u}fromArray(e){if(this.layout)return this.layout.fromArray(e)}};function fixBitwiseResult(t){return 0>t&&(t+=4294967296),t}class BitStructure extends Layout$1{constructor(e,s,l){if(!(e instanceof UInt$1||e instanceof UIntBE$1))throw new TypeError("word must be a UInt or UIntBE layout");if(typeof s=="string"&&l===void 0&&(l=s,s=void 0),4<e.span)throw new RangeError("word cannot exceed 32 bits");super(e.span,l),this.word=e,this.msb=!!s,this.fields=[];let d=0;this._packedSetValue=function(u){return d=fixBitwiseResult(u),this},this._packedGetValue=function(){return d}}decode(e,s){const l=this.makeDestinationObject();s===void 0&&(s=0);const d=this.word.decode(e,s);this._packedSetValue(d);for(const u of this.fields)u.property!==void 0&&(l[u.property]=u.decode(d));return l}encode(e,s,l){l===void 0&&(l=0);const d=this.word.decode(s,l);this._packedSetValue(d);for(const u of this.fields)if(u.property!==void 0){const p=e[u.property];p!==void 0&&u.encode(p)}return this.word.encode(this._packedGetValue(),s,l)}addField(e,s){const l=new BitField(this,e,s);return this.fields.push(l),l}addBoolean(e){const s=new Boolean$1(this,e);return this.fields.push(s),s}fieldFor(e){if(typeof e!="string")throw new TypeError("property must be string");for(const s of this.fields)if(s.property===e)return s}}class BitField{constructor(e,s,l){if(!(e instanceof BitStructure))throw new TypeError("container must be a BitStructure");if(!Number.isInteger(s)||0>=s)throw new TypeError("bits must be positive integer");const d=8*e.span,u=e.fields.reduce((p,m)=>p+m.bits,0);if(s+u>d)throw new Error("bits too long for span remainder ("+(d-u)+" of "+d+" remain)");this.container=e,this.bits=s,this.valueMask=(1<<s)-1,s===32&&(this.valueMask=4294967295),this.start=u,this.container.msb&&(this.start=d-u-s),this.wordMask=fixBitwiseResult(this.valueMask<<this.start),this.property=l}decode(){const e=this.container._packedGetValue();return fixBitwiseResult(e&this.wordMask)>>>this.start}encode(e){if(!Number.isInteger(e)||e!==fixBitwiseResult(e&this.valueMask))throw new TypeError(nameWithProperty$1("BitField.encode",this)+" value must be integer not exceeding "+this.valueMask);const s=this.container._packedGetValue(),l=fixBitwiseResult(e<<this.start);this.container._packedSetValue(fixBitwiseResult(s&~this.wordMask)|l)}}let Boolean$1=class extends BitField{constructor(e,s){super(e,1,s)}decode(e,s){return!!BitField.prototype.decode.call(this,e,s)}encode(e){return typeof e=="boolean"&&(e=+e),BitField.prototype.encode.call(this,e)}},Blob$2=class extends Layout$1{constructor(e,s){if(!(e instanceof ExternalLayout$1&&e.isCount()||Number.isInteger(e)&&0<=e))throw new TypeError("length must be positive integer or an unsigned integer ExternalLayout");let l=-1;e instanceof ExternalLayout$1||(l=e),super(l,s),this.length=e}getSpan(e,s){let l=this.span;return 0>l&&(l=this.length.decode(e,s)),l}decode(e,s){s===void 0&&(s=0);let l=this.span;return 0>l&&(l=this.length.decode(e,s)),e.slice(s,s+l)}encode(e,s,l){let d=this.length;if(this.length instanceof ExternalLayout$1&&(d=e.length),!(dist$2.Buffer.isBuffer(e)&&d===e.length))throw new TypeError(nameWithProperty$1("Blob.encode",this)+" requires (length "+d+") Buffer as src");if(l+d>s.length)throw new RangeError("encoding overruns Buffer");return s.write(e.toString("hex"),l,d,"hex"),this.length instanceof ExternalLayout$1&&this.length.encode(d,s,l),d}};class CString extends Layout$1{constructor(e){super(-1,e)}getSpan(e,s){if(!dist$2.Buffer.isBuffer(e))throw new TypeError("b must be a Buffer");s===void 0&&(s=0);let l=s;for(;l<e.length&&e[l]!==0;)l+=1;return 1+l-s}decode(e,s,l){s===void 0&&(s=0);let d=this.getSpan(e,s);return e.slice(s,s+d-1).toString("utf-8")}encode(e,s,l){l===void 0&&(l=0),typeof e!="string"&&(e=e.toString());const d=new dist$2.Buffer(e,"utf8"),u=d.length;if(l+u>s.length)throw new RangeError("encoding overruns Buffer");return d.copy(s,l),s[l+u]=0,u+1}}class UTF8 extends Layout$1{constructor(e,s){if(typeof e=="string"&&s===void 0&&(s=e,e=void 0),e===void 0)e=-1;else if(!Number.isInteger(e))throw new TypeError("maxSpan must be an integer");super(-1,s),this.maxSpan=e}getSpan(e,s){if(!dist$2.Buffer.isBuffer(e))throw new TypeError("b must be a Buffer");return s===void 0&&(s=0),e.length-s}decode(e,s,l){s===void 0&&(s=0);let d=this.getSpan(e,s);if(0<=this.maxSpan&&this.maxSpan<d)throw new RangeError("text length exceeds maxSpan");return e.slice(s,s+d).toString("utf-8")}encode(e,s,l){l===void 0&&(l=0),typeof e!="string"&&(e=e.toString());const d=new dist$2.Buffer(e,"utf8"),u=d.length;if(0<=this.maxSpan&&this.maxSpan<u)throw new RangeError("text length exceeds maxSpan");if(l+u>s.length)throw new RangeError("encoding overruns Buffer");return d.copy(s,l),u}}class Constant extends Layout$1{constructor(e,s){super(0,s),this.value=e}decode(e,s,l){return this.value}encode(e,s,l){return 0}}Layout$2.ExternalLayout=ExternalLayout$1;Layout$2.GreedyCount=GreedyCount;Layout$2.OffsetLayout=OffsetLayout$1;Layout$2.UInt=UInt$1;Layout$2.UIntBE=UIntBE$1;Layout$2.Int=Int;Layout$2.IntBE=IntBE;Layout$2.Float=Float;Layout$2.FloatBE=FloatBE;Layout$2.Double=Double;Layout$2.DoubleBE=DoubleBE;Layout$2.Sequence=Sequence;Layout$2.Structure=Structure$1;Layout$2.UnionDiscriminator=UnionDiscriminator$1;Layout$2.UnionLayoutDiscriminator=UnionLayoutDiscriminator$1;Layout$2.Union=Union$1;Layout$2.VariantLayout=VariantLayout$1;Layout$2.BitStructure=BitStructure;Layout$2.BitField=BitField;Layout$2.Boolean=Boolean$1;Layout$2.Blob=Blob$2;Layout$2.CString=CString;Layout$2.UTF8=UTF8;Layout$2.Constant=Constant;Layout$2.greedy=(t,e)=>new GreedyCount(t,e);Layout$2.offset=(t,e,s)=>new OffsetLayout$1(t,e,s);Layout$2.u8=t=>new UInt$1(1,t);Layout$2.u16=t=>new UInt$1(2,t);Layout$2.u24=t=>new UInt$1(3,t);Layout$2.u32=t=>new UInt$1(4,t);Layout$2.u40=t=>new UInt$1(5,t);Layout$2.u48=t=>new UInt$1(6,t);Layout$2.nu64=t=>new NearUInt64$1(t);Layout$2.u16be=t=>new UIntBE$1(2,t);Layout$2.u24be=t=>new UIntBE$1(3,t);Layout$2.u32be=t=>new UIntBE$1(4,t);Layout$2.u40be=t=>new UIntBE$1(5,t);Layout$2.u48be=t=>new UIntBE$1(6,t);Layout$2.nu64be=t=>new NearUInt64BE(t);Layout$2.s8=t=>new Int(1,t);Layout$2.s16=t=>new Int(2,t);Layout$2.s24=t=>new Int(3,t);Layout$2.s32=t=>new Int(4,t);Layout$2.s40=t=>new Int(5,t);Layout$2.s48=t=>new Int(6,t);Layout$2.ns64=t=>new NearInt64$1(t);Layout$2.s16be=t=>new IntBE(2,t);Layout$2.s24be=t=>new IntBE(3,t);Layout$2.s32be=t=>new IntBE(4,t);Layout$2.s40be=t=>new IntBE(5,t);Layout$2.s48be=t=>new IntBE(6,t);Layout$2.ns64be=t=>new NearInt64BE(t);Layout$2.f32=t=>new Float(t);Layout$2.f32be=t=>new FloatBE(t);Layout$2.f64=t=>new Double(t);Layout$2.f64be=t=>new DoubleBE(t);Layout$2.struct=(t,e,s)=>new Structure$1(t,e,s);Layout$2.bits=(t,e,s)=>new BitStructure(t,e,s);Layout$2.seq=(t,e,s)=>new Sequence(t,e,s);Layout$2.union=(t,e,s)=>new Union$1(t,e,s);Layout$2.unionLayoutDiscriminator=(t,e)=>new UnionLayoutDiscriminator$1(t,e);Layout$2.blob=(t,e)=>new Blob$2(t,e);Layout$2.cstr=t=>new CString(t);Layout$2.utf8=(t,e)=>new UTF8(t,e);Layout$2.const=(t,e)=>new Constant(t,e);const require$$5=getAugmentedNamespace(index_browser_esm);(function(t){var e=commonjsGlobal$1&&commonjsGlobal$1.__importDefault||function(x){return x&&x.__esModule?x:{default:x}};Object.defineProperty(t,"__esModule",{value:!0}),t.map=t.array=t.rustEnum=t.str=t.vecU8=t.tagged=t.vec=t.bool=t.option=t.publicKey=t.i256=t.u256=t.i128=t.u128=t.i64=t.u64=t.struct=t.f64=t.f32=t.i32=t.u32=t.i16=t.u16=t.i8=t.u8=void 0;const s=Layout$2,l=require$$5,d=e(bnExports);var u=Layout$2;Object.defineProperty(t,"u8",{enumerable:!0,get:function(){return u.u8}}),Object.defineProperty(t,"i8",{enumerable:!0,get:function(){return u.s8}}),Object.defineProperty(t,"u16",{enumerable:!0,get:function(){return u.u16}}),Object.defineProperty(t,"i16",{enumerable:!0,get:function(){return u.s16}}),Object.defineProperty(t,"u32",{enumerable:!0,get:function(){return u.u32}}),Object.defineProperty(t,"i32",{enumerable:!0,get:function(){return u.s32}}),Object.defineProperty(t,"f32",{enumerable:!0,get:function(){return u.f32}}),Object.defineProperty(t,"f64",{enumerable:!0,get:function(){return u.f64}}),Object.defineProperty(t,"struct",{enumerable:!0,get:function(){return u.struct}});class p extends s.Layout{constructor(M,E,C){super(M,C),this.blob=(0,s.blob)(M),this.signed=E}decode(M,E=0){const C=new d.default(this.blob.decode(M,E),10,"le");return this.signed?C.fromTwos(this.span*8).clone():C}encode(M,E,C=0){return this.signed&&(M=M.toTwos(this.span*8)),this.blob.encode(M.toArrayLike(dist$2.Buffer,"le",this.span),E,C)}}function m(x){return new p(8,!1,x)}t.u64=m;function y(x){return new p(8,!0,x)}t.i64=y;function h(x){return new p(16,!1,x)}t.u128=h;function v(x){return new p(16,!0,x)}t.i128=v;function A(x){return new p(32,!1,x)}t.u256=A;function w(x){return new p(32,!0,x)}t.i256=w;class I extends s.Layout{constructor(M,E,C,D){super(M.span,D),this.layout=M,this.decoder=E,this.encoder=C}decode(M,E){return this.decoder(this.layout.decode(M,E))}encode(M,E,C){return this.layout.encode(this.encoder(M),E,C)}getSpan(M,E){return this.layout.getSpan(M,E)}}function k(x){return new I((0,s.blob)(32),M=>new l.PublicKey(M),M=>M.toBuffer(),x)}t.publicKey=k;class $ extends s.Layout{constructor(M,E){super(-1,E),this.layout=M,this.discriminator=(0,s.u8)()}encode(M,E,C=0){return M==null?this.discriminator.encode(0,E,C):(this.discriminator.encode(1,E,C),this.layout.encode(M,E,C+1)+1)}decode(M,E=0){const C=this.discriminator.decode(M,E);if(C===0)return null;if(C===1)return this.layout.decode(M,E+1);throw new Error("Invalid option "+this.property)}getSpan(M,E=0){const C=this.discriminator.decode(M,E);if(C===0)return 1;if(C===1)return this.layout.getSpan(M,E+1)+1;throw new Error("Invalid option "+this.property)}}function P(x,M){return new $(x,M)}t.option=P;function z(x){return new I((0,s.u8)(),U,F,x)}t.bool=z;function U(x){if(x===0)return!1;if(x===1)return!0;throw new Error("Invalid bool: "+x)}function F(x){return x?1:0}function q(x,M){const E=(0,s.u32)("length"),C=(0,s.struct)([E,(0,s.seq)(x,(0,s.offset)(E,-E.span),"values")]);return new I(C,({values:D})=>D,D=>({values:D}),M)}t.vec=q;function V(x,M,E){const C=(0,s.struct)([m("tag"),M.replicate("data")]);function D({tag:L,data:W}){if(!L.eq(x))throw new Error("Invalid tag, expected: "+x.toString("hex")+", got: "+L.toString("hex"));return W}return new I(C,D,L=>({tag:x,data:L}),E)}t.tagged=V;function H(x){const M=(0,s.u32)("length"),E=(0,s.struct)([M,(0,s.blob)((0,s.offset)(M,-M.span),"data")]);return new I(E,({data:C})=>C,C=>({data:C}),x)}t.vecU8=H;function Z(x){return new I(H(),M=>M.toString("utf-8"),M=>dist$2.Buffer.from(M,"utf-8"),x)}t.str=Z;function ne(x,M,E){const C=(0,s.union)(E??(0,s.u8)(),M);return x.forEach((D,L)=>C.addVariant(L,D,D.property)),C}t.rustEnum=ne;function ee(x,M,E){const C=(0,s.struct)([(0,s.seq)(x,M,"values")]);return new I(C,({values:D})=>D,D=>({values:D}),E)}t.array=ee;class le extends s.Layout{constructor(M,E,C){super(M.span+E.span,C),this.keyLayout=M,this.valueLayout=E}decode(M,E){E=E||0;const C=this.keyLayout.decode(M,E),D=this.valueLayout.decode(M,E+this.keyLayout.getSpan(M,E));return[C,D]}encode(M,E,C){C=C||0;const D=this.keyLayout.encode(M[0],E,C),L=this.valueLayout.encode(M[1],E,C+D);return D+L}getSpan(M,E){return this.keyLayout.getSpan(M,E)+this.valueLayout.getSpan(M,E)}}function j(x,M,E){const C=(0,s.u32)("length"),D=(0,s.struct)([C,(0,s.seq)(new le(x,M),(0,s.offset)(C,-C.span),"values")]);return new I(D,({values:L})=>new Map(L),L=>({values:Array.from(L.entries())}),E)}t.map=j})(dist$1);function accountSize$1(t,e){switch(e.type.kind){case"struct":return e.type.fields.map(s=>typeSize$1(t,s.type)).reduce((s,l)=>s+l,0);case"enum":{const s=e.type.variants.map(l=>l.fields?l.fields.map(d=>typeof d=="object"&&"name"in d?typeSize$1(t,d.type):typeSize$1(t,d)).reduce((d,u)=>d+u,0):0);return Math.max(...s)+1}case"alias":return typeSize$1(t,e.type.value)}}function typeSize$1(t,e){var s;switch(e){case"bool":return 1;case"u8":return 1;case"i8":return 1;case"i16":return 2;case"u16":return 2;case"u32":return 4;case"i32":return 4;case"f32":return 4;case"u64":return 8;case"i64":return 8;case"f64":return 8;case"u128":return 16;case"i128":return 16;case"u256":return 32;case"i256":return 32;case"bytes":return 1;case"string":return 1;case"publicKey":return 32;default:if("vec"in e)return 1;if("option"in e)return 1+typeSize$1(t,e.option);if("coption"in e)return 4+typeSize$1(t,e.coption);if("defined"in e){const l=((s=t.types)==null?void 0:s.filter(u=>u.name===e.defined))??[];if(l.length!==1)throw new IdlError$1(`Type not found: ${JSON.stringify(e)}`);let d=l[0];return accountSize$1(t,d)}if("array"in e){let l=e.array[0],d=e.array[1];return typeSize$1(t,l)*d}throw new Error(`Invalid type ${JSON.stringify(e)}`)}}function camelCase$2(t){return t.replace(/(?:^\w|[A-Z]|\b\w)/g,function(e,s){return s===0?e.toLowerCase():e.toUpperCase()}).replace(/[\s\-_]+/g,"")}function upperFirst(t){return t.charAt(0).toUpperCase()+t.slice(1)}var camelcase={exports:{}};const UPPERCASE=/[\p{Lu}]/u,LOWERCASE=/[\p{Ll}]/u,LEADING_CAPITAL=/^[\p{Lu}](?![\p{Lu}])/gu,IDENTIFIER=/([\p{Alpha}\p{N}_]|$)/u,SEPARATORS=/[_.\- ]+/,LEADING_SEPARATORS=new RegExp("^"+SEPARATORS.source),SEPARATORS_AND_IDENTIFIER=new RegExp(SEPARATORS.source+IDENTIFIER.source,"gu"),NUMBERS_AND_IDENTIFIER=new RegExp("\\d+"+IDENTIFIER.source,"gu"),preserveCamelCase=(t,e,s)=>{let l=!1,d=!1,u=!1;for(let p=0;p<t.length;p++){const m=t[p];l&&UPPERCASE.test(m)?(t=t.slice(0,p)+"-"+t.slice(p),l=!1,u=d,d=!0,p++):d&&u&&LOWERCASE.test(m)?(t=t.slice(0,p-1)+"-"+t.slice(p-1),u=d,d=!1,l=!0):(l=e(m)===m&&s(m)!==m,u=d,d=s(m)===m&&e(m)!==m)}return t},preserveConsecutiveUppercase=(t,e)=>(LEADING_CAPITAL.lastIndex=0,t.replace(LEADING_CAPITAL,s=>e(s))),postProcess=(t,e)=>(SEPARATORS_AND_IDENTIFIER.lastIndex=0,NUMBERS_AND_IDENTIFIER.lastIndex=0,t.replace(SEPARATORS_AND_IDENTIFIER,(s,l)=>e(l)).replace(NUMBERS_AND_IDENTIFIER,s=>e(s))),camelCase=(t,e)=>{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");if(e={pascalCase:!1,preserveConsecutiveUppercase:!1,...e},Array.isArray(t)?t=t.map(u=>u.trim()).filter(u=>u.length).join("-"):t=t.trim(),t.length===0)return"";const s=e.locale===!1?u=>u.toLowerCase():u=>u.toLocaleLowerCase(e.locale),l=e.locale===!1?u=>u.toUpperCase():u=>u.toLocaleUpperCase(e.locale);return t.length===1?e.pascalCase?l(t):s(t):(t!==s(t)&&(t=preserveCamelCase(t,s,l)),t=t.replace(LEADING_SEPARATORS,""),e.preserveConsecutiveUppercase?t=preserveConsecutiveUppercase(t,s):t=s(t),e.pascalCase&&(t=l(t.charAt(0))+t.slice(1)),postProcess(t,l))};camelcase.exports=camelCase;camelcase.exports.default=camelCase;var camelcaseExports=camelcase.exports;const camelCase$1=getDefaultExportFromCjs$2(camelcaseExports);function zero$1(t){let e=t.length;for(;--e>=0;)t[e]=0}const MIN_MATCH$1=3,MAX_MATCH$1=258,LENGTH_CODES$1=29,LITERALS$1=256,L_CODES$1=LITERALS$1+1+LENGTH_CODES$1,D_CODES$1=30,DIST_CODE_LEN=512,static_ltree=new Array((L_CODES$1+2)*2);zero$1(static_ltree);const static_dtree=new Array(D_CODES$1*2);zero$1(static_dtree);const _dist_code=new Array(DIST_CODE_LEN);zero$1(_dist_code);const _length_code=new Array(MAX_MATCH$1-MIN_MATCH$1+1);zero$1(_length_code);const base_length=new Array(LENGTH_CODES$1);zero$1(base_length);const base_dist=new Array(D_CODES$1);zero$1(base_dist);const adler32=(t,e,s,l)=>{let d=t&65535|0,u=t>>>16&65535|0,p=0;for(;s!==0;){p=s>2e3?2e3:s,s-=p;do d=d+e[l++]|0,u=u+d|0;while(--p);d%=65521,u%=65521}return d|u<<16|0};var adler32_1=adler32;const makeTable=()=>{let t,e=[];for(var s=0;s<256;s++){t=s;for(var l=0;l<8;l++)t=t&1?3988292384^t>>>1:t>>>1;e[s]=t}return e},crcTable=new Uint32Array(makeTable()),crc32=(t,e,s,l)=>{const d=crcTable,u=l+s;t^=-1;for(let p=l;p<u;p++)t=t>>>8^d[(t^e[p])&255];return t^-1};var crc32_1=crc32,messages={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},constants$2={Z_NO_FLUSH:0,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_DEFLATED:8};const _has=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var assign=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const s=e.shift();if(s){if(typeof s!="object")throw new TypeError(s+"must be non-object");for(const l in s)_has(s,l)&&(t[l]=s[l])}}return t},flattenChunks=t=>{let e=0;for(let l=0,d=t.length;l<d;l++)e+=t[l].length;const s=new Uint8Array(e);for(let l=0,d=0,u=t.length;l<u;l++){let p=t[l];s.set(p,d),d+=p.length}return s},common={assign,flattenChunks};let STR_APPLY_UIA_OK=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{STR_APPLY_UIA_OK=!1}const _utf8len=new Uint8Array(256);for(let t=0;t<256;t++)_utf8len[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;_utf8len[254]=_utf8len[254]=1;var string2buf=t=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(t);let e,s,l,d,u,p=t.length,m=0;for(d=0;d<p;d++)s=t.charCodeAt(d),(s&64512)===55296&&d+1<p&&(l=t.charCodeAt(d+1),(l&64512)===56320&&(s=65536+(s-55296<<10)+(l-56320),d++)),m+=s<128?1:s<2048?2:s<65536?3:4;for(e=new Uint8Array(m),u=0,d=0;u<m;d++)s=t.charCodeAt(d),(s&64512)===55296&&d+1<p&&(l=t.charCodeAt(d+1),(l&64512)===56320&&(s=65536+(s-55296<<10)+(l-56320),d++)),s<128?e[u++]=s:s<2048?(e[u++]=192|s>>>6,e[u++]=128|s&63):s<65536?(e[u++]=224|s>>>12,e[u++]=128|s>>>6&63,e[u++]=128|s&63):(e[u++]=240|s>>>18,e[u++]=128|s>>>12&63,e[u++]=128|s>>>6&63,e[u++]=128|s&63);return e};const buf2binstring=(t,e)=>{if(e<65534&&t.subarray&&STR_APPLY_UIA_OK)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let s="";for(let l=0;l<e;l++)s+=String.fromCharCode(t[l]);return s};var buf2string=(t,e)=>{const s=e||t.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(t.subarray(0,e));let l,d;const u=new Array(s*2);for(d=0,l=0;l<s;){let p=t[l++];if(p<128){u[d++]=p;continue}let m=_utf8len[p];if(m>4){u[d++]=65533,l+=m-1;continue}for(p&=m===2?31:m===3?15:7;m>1&&l<s;)p=p<<6|t[l++]&63,m--;if(m>1){u[d++]=65533;continue}p<65536?u[d++]=p:(p-=65536,u[d++]=55296|p>>10&1023,u[d++]=56320|p&1023)}return buf2binstring(u,d)},utf8border=(t,e)=>{e=e||t.length,e>t.length&&(e=t.length);let s=e-1;for(;s>=0&&(t[s]&192)===128;)s--;return s<0||s===0?e:s+_utf8len[t[s]]>e?s:e},strings={string2buf,buf2string,utf8border};function ZStream(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var zstream=ZStream;const BAD$1=16209,TYPE$1=16191;var inffast=function(e,s){let l,d,u,p,m,y,h,v,A,w,I,k,$,P,z,U,F,q,V,H,Z,ne,ee,le;const j=e.state;l=e.next_in,ee=e.input,d=l+(e.avail_in-5),u=e.next_out,le=e.output,p=u-(s-e.avail_out),m=u+(e.avail_out-257),y=j.dmax,h=j.wsize,v=j.whave,A=j.wnext,w=j.window,I=j.hold,k=j.bits,$=j.lencode,P=j.distcode,z=(1<<j.lenbits)-1,U=(1<<j.distbits)-1;e:do{k<15&&(I+=ee[l++]<<k,k+=8,I+=ee[l++]<<k,k+=8),F=$[I&z];t:for(;;){if(q=F>>>24,I>>>=q,k-=q,q=F>>>16&255,q===0)le[u++]=F&65535;else if(q&16){V=F&65535,q&=15,q&&(k<q&&(I+=ee[l++]<<k,k+=8),V+=I&(1<<q)-1,I>>>=q,k-=q),k<15&&(I+=ee[l++]<<k,k+=8,I+=ee[l++]<<k,k+=8),F=P[I&U];r:for(;;){if(q=F>>>24,I>>>=q,k-=q,q=F>>>16&255,q&16){if(H=F&65535,q&=15,k<q&&(I+=ee[l++]<<k,k+=8,k<q&&(I+=ee[l++]<<k,k+=8)),H+=I&(1<<q)-1,H>y){e.msg="invalid distance too far back",j.mode=BAD$1;break e}if(I>>>=q,k-=q,q=u-p,H>q){if(q=H-q,q>v&&j.sane){e.msg="invalid distance too far back",j.mode=BAD$1;break e}if(Z=0,ne=w,A===0){if(Z+=h-q,q<V){V-=q;do le[u++]=w[Z++];while(--q);Z=u-H,ne=le}}else if(A<q){if(Z+=h+A-q,q-=A,q<V){V-=q;do le[u++]=w[Z++];while(--q);if(Z=0,A<V){q=A,V-=q;do le[u++]=w[Z++];while(--q);Z=u-H,ne=le}}}else if(Z+=A-q,q<V){V-=q;do le[u++]=w[Z++];while(--q);Z=u-H,ne=le}for(;V>2;)le[u++]=ne[Z++],le[u++]=ne[Z++],le[u++]=ne[Z++],V-=3;V&&(le[u++]=ne[Z++],V>1&&(le[u++]=ne[Z++]))}else{Z=u-H;do le[u++]=le[Z++],le[u++]=le[Z++],le[u++]=le[Z++],V-=3;while(V>2);V&&(le[u++]=le[Z++],V>1&&(le[u++]=le[Z++]))}}else if(q&64){e.msg="invalid distance code",j.mode=BAD$1;break e}else{F=P[(F&65535)+(I&(1<<q)-1)];continue r}break}}else if(q&64)if(q&32){j.mode=TYPE$1;break e}else{e.msg="invalid literal/length code",j.mode=BAD$1;break e}else{F=$[(F&65535)+(I&(1<<q)-1)];continue t}break}}while(l<d&&u<m);V=k>>3,l-=V,k-=V<<3,I&=(1<<k)-1,e.next_in=l,e.next_out=u,e.avail_in=l<d?5+(d-l):5-(l-d),e.avail_out=u<m?257+(m-u):257-(u-m),j.hold=I,j.bits=k};const MAXBITS=15,ENOUGH_LENS$1=852,ENOUGH_DISTS$1=592,CODES$1=0,LENS$1=1,DISTS$1=2,lbase=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),lext=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),dbase=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),dext=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]),inflate_table=(t,e,s,l,d,u,p,m)=>{const y=m.bits;let h=0,v=0,A=0,w=0,I=0,k=0,$=0,P=0,z=0,U=0,F,q,V,H,Z,ne=null,ee;const le=new Uint16Array(MAXBITS+1),j=new Uint16Array(MAXBITS+1);let x=null,M,E,C;for(h=0;h<=MAXBITS;h++)le[h]=0;for(v=0;v<l;v++)le[e[s+v]]++;for(I=y,w=MAXBITS;w>=1&&le[w]===0;w--);if(I>w&&(I=w),w===0)return d[u++]=1<<24|64<<16|0,d[u++]=1<<24|64<<16|0,m.bits=1,0;for(A=1;A<w&&le[A]===0;A++);for(I<A&&(I=A),P=1,h=1;h<=MAXBITS;h++)if(P<<=1,P-=le[h],P<0)return-1;if(P>0&&(t===CODES$1||w!==1))return-1;for(j[1]=0,h=1;h<MAXBITS;h++)j[h+1]=j[h]+le[h];for(v=0;v<l;v++)e[s+v]!==0&&(p[j[e[s+v]]++]=v);if(t===CODES$1?(ne=x=p,ee=20):t===LENS$1?(ne=lbase,x=lext,ee=257):(ne=dbase,x=dext,ee=0),U=0,v=0,h=A,Z=u,k=I,$=0,V=-1,z=1<<I,H=z-1,t===LENS$1&&z>ENOUGH_LENS$1||t===DISTS$1&&z>ENOUGH_DISTS$1)return 1;for(;;){M=h-$,p[v]+1<ee?(E=0,C=p[v]):p[v]>=ee?(E=x[p[v]-ee],C=ne[p[v]-ee]):(E=96,C=0),F=1<<h-$,q=1<<k,A=q;do q-=F,d[Z+(U>>$)+q]=M<<24|E<<16|C|0;while(q!==0);for(F=1<<h-1;U&F;)F>>=1;if(F!==0?(U&=F-1,U+=F):U=0,v++,--le[h]===0){if(h===w)break;h=e[s+p[v]]}if(h>I&&(U&H)!==V){for($===0&&($=I),Z+=A,k=h-$,P=1<<k;k+$<w&&(P-=le[k+$],!(P<=0));)k++,P<<=1;if(z+=1<<k,t===LENS$1&&z>ENOUGH_LENS$1||t===DISTS$1&&z>ENOUGH_DISTS$1)return 1;V=U&H,d[V]=I<<24|k<<16|Z-u|0}}return U!==0&&(d[Z+U]=h-$<<24|64<<16|0),m.bits=I,0};var inftrees=inflate_table;const CODES=0,LENS=1,DISTS=2,{Z_FINISH:Z_FINISH$1,Z_BLOCK,Z_TREES,Z_OK:Z_OK$1,Z_STREAM_END:Z_STREAM_END$1,Z_NEED_DICT:Z_NEED_DICT$1,Z_STREAM_ERROR:Z_STREAM_ERROR$1,Z_DATA_ERROR:Z_DATA_ERROR$1,Z_MEM_ERROR:Z_MEM_ERROR$1,Z_BUF_ERROR,Z_DEFLATED}=constants$2,HEAD=16180,FLAGS=16181,TIME=16182,OS=16183,EXLEN=16184,EXTRA=16185,NAME=16186,COMMENT=16187,HCRC=16188,DICTID=16189,DICT=16190,TYPE=16191,TYPEDO=16192,STORED=16193,COPY_=16194,COPY=16195,TABLE=16196,LENLENS=16197,CODELENS=16198,LEN_=16199,LEN=16200,LENEXT=16201,DIST=16202,DISTEXT=16203,MATCH=16204,LIT=16205,CHECK=16206,LENGTH=16207,DONE=16208,BAD=16209,MEM=16210,SYNC=16211,ENOUGH_LENS=852,ENOUGH_DISTS=592,MAX_WBITS=15,DEF_WBITS=MAX_WBITS,zswap32=t=>(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24);function InflateState(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const inflateStateCheck=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode<HEAD||e.mode>SYNC?1:0},inflateResetKeep=t=>{if(inflateStateCheck(t))return Z_STREAM_ERROR$1;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=e.wrap&1),e.mode=HEAD,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(ENOUGH_LENS),e.distcode=e.distdyn=new Int32Array(ENOUGH_DISTS),e.sane=1,e.back=-1,Z_OK$1},inflateReset=t=>{if(inflateStateCheck(t))return Z_STREAM_ERROR$1;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,inflateResetKeep(t)},inflateReset2=(t,e)=>{let s;if(inflateStateCheck(t))return Z_STREAM_ERROR$1;const l=t.state;return e<0?(s=0,e=-e):(s=(e>>4)+5,e<48&&(e&=15)),e&&(e<8||e>15)?Z_STREAM_ERROR$1:(l.window!==null&&l.wbits!==e&&(l.window=null),l.wrap=s,l.wbits=e,inflateReset(t))},inflateInit2=(t,e)=>{if(!t)return Z_STREAM_ERROR$1;const s=new InflateState;t.state=s,s.strm=t,s.window=null,s.mode=HEAD;const l=inflateReset2(t,e);return l!==Z_OK$1&&(t.state=null),l},inflateInit=t=>inflateInit2(t,DEF_WBITS);let virgin=!0,lenfix,distfix;const fixedtables=t=>{if(virgin){lenfix=new Int32Array(512),distfix=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(inftrees(LENS,t.lens,0,288,lenfix,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;inftrees(DISTS,t.lens,0,32,distfix,0,t.work,{bits:5}),virgin=!1}t.lencode=lenfix,t.lenbits=9,t.distcode=distfix,t.distbits=5},updatewindow=(t,e,s,l)=>{let d;const u=t.state;return u.window===null&&(u.wsize=1<<u.wbits,u.wnext=0,u.whave=0,u.window=new Uint8Array(u.wsize)),l>=u.wsize?(u.window.set(e.subarray(s-u.wsize,s),0),u.wnext=0,u.whave=u.wsize):(d=u.wsize-u.wnext,d>l&&(d=l),u.window.set(e.subarray(s-l,s-l+d),u.wnext),l-=d,l?(u.window.set(e.subarray(s-l,s),0),u.wnext=l,u.whave=u.wsize):(u.wnext+=d,u.wnext===u.wsize&&(u.wnext=0),u.whave<u.wsize&&(u.whave+=d))),0},inflate$2=(t,e)=>{let s,l,d,u,p,m,y,h,v,A,w,I,k,$,P=0,z,U,F,q,V,H,Z,ne;const ee=new Uint8Array(4);let le,j;const x=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(inflateStateCheck(t)||!t.output||!t.input&&t.avail_in!==0)return Z_STREAM_ERROR$1;s=t.state,s.mode===TYPE&&(s.mode=TYPEDO),p=t.next_out,d=t.output,y=t.avail_out,u=t.next_in,l=t.input,m=t.avail_in,h=s.hold,v=s.bits,A=m,w=y,ne=Z_OK$1;e:for(;;)switch(s.mode){case HEAD:if(s.wrap===0){s.mode=TYPEDO;break}for(;v<16;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(s.wrap&2&&h===35615){s.wbits===0&&(s.wbits=15),s.check=0,ee[0]=h&255,ee[1]=h>>>8&255,s.check=crc32_1(s.check,ee,2,0),h=0,v=0,s.mode=FLAGS;break}if(s.head&&(s.head.done=!1),!(s.wrap&1)||(((h&255)<<8)+(h>>8))%31){t.msg="incorrect header check",s.mode=BAD;break}if((h&15)!==Z_DEFLATED){t.msg="unknown compression method",s.mode=BAD;break}if(h>>>=4,v-=4,Z=(h&15)+8,s.wbits===0&&(s.wbits=Z),Z>15||Z>s.wbits){t.msg="invalid window size",s.mode=BAD;break}s.dmax=1<<s.wbits,s.flags=0,t.adler=s.check=1,s.mode=h&512?DICTID:TYPE,h=0,v=0;break;case FLAGS:for(;v<16;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(s.flags=h,(s.flags&255)!==Z_DEFLATED){t.msg="unknown compression method",s.mode=BAD;break}if(s.flags&57344){t.msg="unknown header flags set",s.mode=BAD;break}s.head&&(s.head.text=h>>8&1),s.flags&512&&s.wrap&4&&(ee[0]=h&255,ee[1]=h>>>8&255,s.check=crc32_1(s.check,ee,2,0)),h=0,v=0,s.mode=TIME;case TIME:for(;v<32;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}s.head&&(s.head.time=h),s.flags&512&&s.wrap&4&&(ee[0]=h&255,ee[1]=h>>>8&255,ee[2]=h>>>16&255,ee[3]=h>>>24&255,s.check=crc32_1(s.check,ee,4,0)),h=0,v=0,s.mode=OS;case OS:for(;v<16;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}s.head&&(s.head.xflags=h&255,s.head.os=h>>8),s.flags&512&&s.wrap&4&&(ee[0]=h&255,ee[1]=h>>>8&255,s.check=crc32_1(s.check,ee,2,0)),h=0,v=0,s.mode=EXLEN;case EXLEN:if(s.flags&1024){for(;v<16;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}s.length=h,s.head&&(s.head.extra_len=h),s.flags&512&&s.wrap&4&&(ee[0]=h&255,ee[1]=h>>>8&255,s.check=crc32_1(s.check,ee,2,0)),h=0,v=0}else s.head&&(s.head.extra=null);s.mode=EXTRA;case EXTRA:if(s.flags&1024&&(I=s.length,I>m&&(I=m),I&&(s.head&&(Z=s.head.extra_len-s.length,s.head.extra||(s.head.extra=new Uint8Array(s.head.extra_len)),s.head.extra.set(l.subarray(u,u+I),Z)),s.flags&512&&s.wrap&4&&(s.check=crc32_1(s.check,l,I,u)),m-=I,u+=I,s.length-=I),s.length))break e;s.length=0,s.mode=NAME;case NAME:if(s.flags&2048){if(m===0)break e;I=0;do Z=l[u+I++],s.head&&Z&&s.length<65536&&(s.head.name+=String.fromCharCode(Z));while(Z&&I<m);if(s.flags&512&&s.wrap&4&&(s.check=crc32_1(s.check,l,I,u)),m-=I,u+=I,Z)break e}else s.head&&(s.head.name=null);s.length=0,s.mode=COMMENT;case COMMENT:if(s.flags&4096){if(m===0)break e;I=0;do Z=l[u+I++],s.head&&Z&&s.length<65536&&(s.head.comment+=String.fromCharCode(Z));while(Z&&I<m);if(s.flags&512&&s.wrap&4&&(s.check=crc32_1(s.check,l,I,u)),m-=I,u+=I,Z)break e}else s.head&&(s.head.comment=null);s.mode=HCRC;case HCRC:if(s.flags&512){for(;v<16;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(s.wrap&4&&h!==(s.check&65535)){t.msg="header crc mismatch",s.mode=BAD;break}h=0,v=0}s.head&&(s.head.hcrc=s.flags>>9&1,s.head.done=!0),t.adler=s.check=0,s.mode=TYPE;break;case DICTID:for(;v<32;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}t.adler=s.check=zswap32(h),h=0,v=0,s.mode=DICT;case DICT:if(s.havedict===0)return t.next_out=p,t.avail_out=y,t.next_in=u,t.avail_in=m,s.hold=h,s.bits=v,Z_NEED_DICT$1;t.adler=s.check=1,s.mode=TYPE;case TYPE:if(e===Z_BLOCK||e===Z_TREES)break e;case TYPEDO:if(s.last){h>>>=v&7,v-=v&7,s.mode=CHECK;break}for(;v<3;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}switch(s.last=h&1,h>>>=1,v-=1,h&3){case 0:s.mode=STORED;break;case 1:if(fixedtables(s),s.mode=LEN_,e===Z_TREES){h>>>=2,v-=2;break e}break;case 2:s.mode=TABLE;break;case 3:t.msg="invalid block type",s.mode=BAD}h>>>=2,v-=2;break;case STORED:for(h>>>=v&7,v-=v&7;v<32;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if((h&65535)!==(h>>>16^65535)){t.msg="invalid stored block lengths",s.mode=BAD;break}if(s.length=h&65535,h=0,v=0,s.mode=COPY_,e===Z_TREES)break e;case COPY_:s.mode=COPY;case COPY:if(I=s.length,I){if(I>m&&(I=m),I>y&&(I=y),I===0)break e;d.set(l.subarray(u,u+I),p),m-=I,u+=I,y-=I,p+=I,s.length-=I;break}s.mode=TYPE;break;case TABLE:for(;v<14;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(s.nlen=(h&31)+257,h>>>=5,v-=5,s.ndist=(h&31)+1,h>>>=5,v-=5,s.ncode=(h&15)+4,h>>>=4,v-=4,s.nlen>286||s.ndist>30){t.msg="too many length or distance symbols",s.mode=BAD;break}s.have=0,s.mode=LENLENS;case LENLENS:for(;s.have<s.ncode;){for(;v<3;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}s.lens[x[s.have++]]=h&7,h>>>=3,v-=3}for(;s.have<19;)s.lens[x[s.have++]]=0;if(s.lencode=s.lendyn,s.lenbits=7,le={bits:s.lenbits},ne=inftrees(CODES,s.lens,0,19,s.lencode,0,s.work,le),s.lenbits=le.bits,ne){t.msg="invalid code lengths set",s.mode=BAD;break}s.have=0,s.mode=CODELENS;case CODELENS:for(;s.have<s.nlen+s.ndist;){for(;P=s.lencode[h&(1<<s.lenbits)-1],z=P>>>24,U=P>>>16&255,F=P&65535,!(z<=v);){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(F<16)h>>>=z,v-=z,s.lens[s.have++]=F;else{if(F===16){for(j=z+2;v<j;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(h>>>=z,v-=z,s.have===0){t.msg="invalid bit length repeat",s.mode=BAD;break}Z=s.lens[s.have-1],I=3+(h&3),h>>>=2,v-=2}else if(F===17){for(j=z+3;v<j;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}h>>>=z,v-=z,Z=0,I=3+(h&7),h>>>=3,v-=3}else{for(j=z+7;v<j;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}h>>>=z,v-=z,Z=0,I=11+(h&127),h>>>=7,v-=7}if(s.have+I>s.nlen+s.ndist){t.msg="invalid bit length repeat",s.mode=BAD;break}for(;I--;)s.lens[s.have++]=Z}}if(s.mode===BAD)break;if(s.lens[256]===0){t.msg="invalid code -- missing end-of-block",s.mode=BAD;break}if(s.lenbits=9,le={bits:s.lenbits},ne=inftrees(LENS,s.lens,0,s.nlen,s.lencode,0,s.work,le),s.lenbits=le.bits,ne){t.msg="invalid literal/lengths set",s.mode=BAD;break}if(s.distbits=6,s.distcode=s.distdyn,le={bits:s.distbits},ne=inftrees(DISTS,s.lens,s.nlen,s.ndist,s.distcode,0,s.work,le),s.distbits=le.bits,ne){t.msg="invalid distances set",s.mode=BAD;break}if(s.mode=LEN_,e===Z_TREES)break e;case LEN_:s.mode=LEN;case LEN:if(m>=6&&y>=258){t.next_out=p,t.avail_out=y,t.next_in=u,t.avail_in=m,s.hold=h,s.bits=v,inffast(t,w),p=t.next_out,d=t.output,y=t.avail_out,u=t.next_in,l=t.input,m=t.avail_in,h=s.hold,v=s.bits,s.mode===TYPE&&(s.back=-1);break}for(s.back=0;P=s.lencode[h&(1<<s.lenbits)-1],z=P>>>24,U=P>>>16&255,F=P&65535,!(z<=v);){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(U&&!(U&240)){for(q=z,V=U,H=F;P=s.lencode[H+((h&(1<<q+V)-1)>>q)],z=P>>>24,U=P>>>16&255,F=P&65535,!(q+z<=v);){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}h>>>=q,v-=q,s.back+=q}if(h>>>=z,v-=z,s.back+=z,s.length=F,U===0){s.mode=LIT;break}if(U&32){s.back=-1,s.mode=TYPE;break}if(U&64){t.msg="invalid literal/length code",s.mode=BAD;break}s.extra=U&15,s.mode=LENEXT;case LENEXT:if(s.extra){for(j=s.extra;v<j;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}s.length+=h&(1<<s.extra)-1,h>>>=s.extra,v-=s.extra,s.back+=s.extra}s.was=s.length,s.mode=DIST;case DIST:for(;P=s.distcode[h&(1<<s.distbits)-1],z=P>>>24,U=P>>>16&255,F=P&65535,!(z<=v);){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(!(U&240)){for(q=z,V=U,H=F;P=s.distcode[H+((h&(1<<q+V)-1)>>q)],z=P>>>24,U=P>>>16&255,F=P&65535,!(q+z<=v);){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}h>>>=q,v-=q,s.back+=q}if(h>>>=z,v-=z,s.back+=z,U&64){t.msg="invalid distance code",s.mode=BAD;break}s.offset=F,s.extra=U&15,s.mode=DISTEXT;case DISTEXT:if(s.extra){for(j=s.extra;v<j;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}s.offset+=h&(1<<s.extra)-1,h>>>=s.extra,v-=s.extra,s.back+=s.extra}if(s.offset>s.dmax){t.msg="invalid distance too far back",s.mode=BAD;break}s.mode=MATCH;case MATCH:if(y===0)break e;if(I=w-y,s.offset>I){if(I=s.offset-I,I>s.whave&&s.sane){t.msg="invalid distance too far back",s.mode=BAD;break}I>s.wnext?(I-=s.wnext,k=s.wsize-I):k=s.wnext-I,I>s.length&&(I=s.length),$=s.window}else $=d,k=p-s.offset,I=s.length;I>y&&(I=y),y-=I,s.length-=I;do d[p++]=$[k++];while(--I);s.length===0&&(s.mode=LEN);break;case LIT:if(y===0)break e;d[p++]=s.length,y--,s.mode=LEN;break;case CHECK:if(s.wrap){for(;v<32;){if(m===0)break e;m--,h|=l[u++]<<v,v+=8}if(w-=y,t.total_out+=w,s.total+=w,s.wrap&4&&w&&(t.adler=s.check=s.flags?crc32_1(s.check,d,w,p-w):adler32_1(s.check,d,w,p-w)),w=y,s.wrap&4&&(s.flags?h:zswap32(h))!==s.check){t.msg="incorrect data check",s.mode=BAD;break}h=0,v=0}s.mode=LENGTH;case LENGTH:if(s.wrap&&s.flags){for(;v<32;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(s.wrap&4&&h!==(s.total&4294967295)){t.msg="incorrect length check",s.mode=BAD;break}h=0,v=0}s.mode=DONE;case DONE:ne=Z_STREAM_END$1;break e;case BAD:ne=Z_DATA_ERROR$1;break e;case MEM:return Z_MEM_ERROR$1;case SYNC:default:return Z_STREAM_ERROR$1}return t.next_out=p,t.avail_out=y,t.next_in=u,t.avail_in=m,s.hold=h,s.bits=v,(s.wsize||w!==t.avail_out&&s.mode<BAD&&(s.mode<CHECK||e!==Z_FINISH$1))&&updatewindow(t,t.output,t.next_out,w-t.avail_out),A-=t.avail_in,w-=t.avail_out,t.total_in+=A,t.total_out+=w,s.total+=w,s.wrap&4&&w&&(t.adler=s.check=s.flags?crc32_1(s.check,d,w,t.next_out-w):adler32_1(s.check,d,w,t.next_out-w)),t.data_type=s.bits+(s.last?64:0)+(s.mode===TYPE?128:0)+(s.mode===LEN_||s.mode===COPY_?256:0),(A===0&&w===0||e===Z_FINISH$1)&&ne===Z_OK$1&&(ne=Z_BUF_ERROR),ne},inflateEnd=t=>{if(inflateStateCheck(t))return Z_STREAM_ERROR$1;let e=t.state;return e.window&&(e.window=null),t.state=null,Z_OK$1},inflateGetHeader=(t,e)=>{if(inflateStateCheck(t))return Z_STREAM_ERROR$1;const s=t.state;return s.wrap&2?(s.head=e,e.done=!1,Z_OK$1):Z_STREAM_ERROR$1},inflateSetDictionary=(t,e)=>{const s=e.length;let l,d,u;return inflateStateCheck(t)||(l=t.state,l.wrap!==0&&l.mode!==DICT)?Z_STREAM_ERROR$1:l.mode===DICT&&(d=1,d=adler32_1(d,e,s,0),d!==l.check)?Z_DATA_ERROR$1:(u=updatewindow(t,e,s,s),u?(l.mode=MEM,Z_MEM_ERROR$1):(l.havedict=1,Z_OK$1))};var inflateReset_1=inflateReset,inflateReset2_1=inflateReset2,inflateResetKeep_1=inflateResetKeep,inflateInit_1=inflateInit,inflateInit2_1=inflateInit2,inflate_2$1=inflate$2,inflateEnd_1=inflateEnd,inflateGetHeader_1=inflateGetHeader,inflateSetDictionary_1=inflateSetDictionary,inflateInfo="pako inflate (from Nodeca project)",inflate_1$2={inflateReset:inflateReset_1,inflateReset2:inflateReset2_1,inflateResetKeep:inflateResetKeep_1,inflateInit:inflateInit_1,inflateInit2:inflateInit2_1,inflate:inflate_2$1,inflateEnd:inflateEnd_1,inflateGetHeader:inflateGetHeader_1,inflateSetDictionary:inflateSetDictionary_1,inflateInfo};function GZheader(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var gzheader=GZheader;const toString=Object.prototype.toString,{Z_NO_FLUSH,Z_FINISH,Z_OK,Z_STREAM_END,Z_NEED_DICT,Z_STREAM_ERROR,Z_DATA_ERROR,Z_MEM_ERROR}=constants$2;function Inflate$1(t){this.options=common.assign({chunkSize:1024*64,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15||(e.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new zstream,this.strm.avail_out=0;let s=inflate_1$2.inflateInit2(this.strm,e.windowBits);if(s!==Z_OK)throw new Error(messages[s]);if(this.header=new gzheader,inflate_1$2.inflateGetHeader(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=strings.string2buf(e.dictionary):toString.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(s=inflate_1$2.inflateSetDictionary(this.strm,e.dictionary),s!==Z_OK)))throw new Error(messages[s])}Inflate$1.prototype.push=function(t,e){const s=this.strm,l=this.options.chunkSize,d=this.options.dictionary;let u,p,m;if(this.ended)return!1;for(e===~~e?p=e:p=e===!0?Z_FINISH:Z_NO_FLUSH,toString.call(t)==="[object ArrayBuffer]"?s.input=new Uint8Array(t):s.input=t,s.next_in=0,s.avail_in=s.input.length;;){for(s.avail_out===0&&(s.output=new Uint8Array(l),s.next_out=0,s.avail_out=l),u=inflate_1$2.inflate(s,p),u===Z_NEED_DICT&&d&&(u=inflate_1$2.inflateSetDictionary(s,d),u===Z_OK?u=inflate_1$2.inflate(s,p):u===Z_DATA_ERROR&&(u=Z_NEED_DICT));s.avail_in>0&&u===Z_STREAM_END&&s.state.wrap>0&&t[s.next_in]!==0;)inflate_1$2.inflateReset(s),u=inflate_1$2.inflate(s,p);switch(u){case Z_STREAM_ERROR:case Z_DATA_ERROR:case Z_NEED_DICT:case Z_MEM_ERROR:return this.onEnd(u),this.ended=!0,!1}if(m=s.avail_out,s.next_out&&(s.avail_out===0||u===Z_STREAM_END))if(this.options.to==="string"){let y=strings.utf8border(s.output,s.next_out),h=s.next_out-y,v=strings.buf2string(s.output,y);s.next_out=h,s.avail_out=l-h,h&&s.output.set(s.output.subarray(y,y+h),0),this.onData(v)}else this.onData(s.output.length===s.next_out?s.output:s.output.subarray(0,s.next_out));if(!(u===Z_OK&&m===0)){if(u===Z_STREAM_END)return u=inflate_1$2.inflateEnd(this.strm),this.onEnd(u),this.ended=!0,!0;if(s.avail_in===0)break}}return!0};Inflate$1.prototype.onData=function(t){this.chunks.push(t)};Inflate$1.prototype.onEnd=function(t){t===Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=common.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function inflate$1(t,e){const s=new Inflate$1(e);if(s.push(t),s.err)throw s.msg||messages[s.err];return s.result}var inflate_2=inflate$1,inflate_1$1={inflate:inflate_2};const{inflate}=inflate_1$1;var inflate_1=inflate,eventemitter3={exports:{}};(function(t){var e=Object.prototype.hasOwnProperty,s="~";function l(){}Object.create&&(l.prototype=Object.create(null),new l().__proto__||(s=!1));function d(y,h,v){this.fn=y,this.context=h,this.once=v||!1}function u(y,h,v,A,w){if(typeof v!="function")throw new TypeError("The listener must be a function");var I=new d(v,A||y,w),k=s?s+h:h;return y._events[k]?y._events[k].fn?y._events[k]=[y._events[k],I]:y._events[k].push(I):(y._events[k]=I,y._eventsCount++),y}function p(y,h){--y._eventsCount===0?y._events=new l:delete y._events[h]}function m(){this._events=new l,this._eventsCount=0}m.prototype.eventNames=function(){var h=[],v,A;if(this._eventsCount===0)return h;for(A in v=this._events)e.call(v,A)&&h.push(s?A.slice(1):A);return Object.getOwnPropertySymbols?h.concat(Object.getOwnPropertySymbols(v)):h},m.prototype.listeners=function(h){var v=s?s+h:h,A=this._events[v];if(!A)return[];if(A.fn)return[A.fn];for(var w=0,I=A.length,k=new Array(I);w<I;w++)k[w]=A[w].fn;return k},m.prototype.listenerCount=function(h){var v=s?s+h:h,A=this._events[v];return A?A.fn?1:A.length:0},m.prototype.emit=function(h,v,A,w,I,k){var $=s?s+h:h;if(!this._events[$])return!1;var P=this._events[$],z=arguments.length,U,F;if(P.fn){switch(P.once&&this.removeListener(h,P.fn,void 0,!0),z){case 1:return P.fn.call(P.context),!0;case 2:return P.fn.call(P.context,v),!0;case 3:return P.fn.call(P.context,v,A),!0;case 4:return P.fn.call(P.context,v,A,w),!0;case 5:return P.fn.call(P.context,v,A,w,I),!0;case 6:return P.fn.call(P.context,v,A,w,I,k),!0}for(F=1,U=new Array(z-1);F<z;F++)U[F-1]=arguments[F];P.fn.apply(P.context,U)}else{var q=P.length,V;for(F=0;F<q;F++)switch(P[F].once&&this.removeListener(h,P[F].fn,void 0,!0),z){case 1:P[F].fn.call(P[F].context);break;case 2:P[F].fn.call(P[F].context,v);break;case 3:P[F].fn.call(P[F].context,v,A);break;case 4:P[F].fn.call(P[F].context,v,A,w);break;default:if(!U)for(V=1,U=new Array(z-1);V<z;V++)U[V-1]=arguments[V];P[F].fn.apply(P[F].context,U)}}return!0},m.prototype.on=function(h,v,A){return u(this,h,v,A,!1)},m.prototype.once=function(h,v,A){return u(this,h,v,A,!0)},m.prototype.removeListener=function(h,v,A,w){var I=s?s+h:h;if(!this._events[I])return this;if(!v)return p(this,I),this;var k=this._events[I];if(k.fn)k.fn===v&&(!w||k.once)&&(!A||k.context===A)&&p(this,I);else{for(var $=0,P=[],z=k.length;$<z;$++)(k[$].fn!==v||w&&!k[$].once||A&&k[$].context!==A)&&P.push(k[$]);P.length?this._events[I]=P.length===1?P[0]:P:p(this,I)}return this},m.prototype.removeAllListeners=function(h){var v;return h?(v=s?s+h:h,this._events[v]&&p(this,v)):(this._events=new l,this._eventsCount=0),this},m.prototype.off=m.prototype.removeListener,m.prototype.addListener=m.prototype.on,m.prefixed=s,m.EventEmitter=m,t.exports=m})(eventemitter3);var eventemitter3Exports=eventemitter3.exports;const EventEmitter=getDefaultExportFromCjs$2(eventemitter3Exports);function chunks(t,e){return Array.apply(0,new Array(Math.ceil(t.length/e))).map((s,l)=>t.slice(l*e,(l+1)*e))}const isVersionedTransaction=t=>"version"in t;function encode$3(t){return t.reduce((e,s)=>e+s.toString(16).padStart(2,"0"),"0x")}function decode$3(t){t.indexOf("0x")===0&&(t=t.substr(2)),t.length%2===1&&(t="0"+t);let e=t.match(/.{2}/g);return e===null?bufferPolyfill.Buffer.from([]):bufferPolyfill.Buffer.from(e.map(s=>parseInt(s,16)))}var hex=Object.freeze({__proto__:null,encode:encode$3,decode:decode$3});function decode$2(t){return new TextDecoder("utf-8").decode(t)}function encode$2(t){return new TextEncoder().encode(t)}var utf8=Object.freeze({__proto__:null,decode:decode$2,encode:encode$2});function encode$1(t){return bs58$6.encode(t)}function decode$1(t){return bs58$6.decode(t)}var bs58=Object.freeze({__proto__:null,encode:encode$1,decode:decode$1});function encode(t){return t.toString("base64")}function decode(t){return bufferPolyfill.Buffer.from(t,"base64")}var base64=Object.freeze({__proto__:null,encode,decode}),index$1$1=Object.freeze({__proto__:null,hex,utf8,bs58,base64});function parseIdlErrors(t){const e=new Map;return t.errors&&t.errors.forEach(s=>{var l;let d=(l=s.msg)!==null&&l!==void 0?l:s.name;e.set(s.code,d)}),e}function toInstruction(t,...e){if(t.args.length!=e.length)throw new Error("Invalid argument length");const s={};let l=0;return t.args.forEach(d=>{s[d.name]=e[l],l+=1}),s}function validateAccounts(t,e={}){t.forEach(s=>{if("accounts"in s)validateAccounts(s.accounts,e[s.name]);else if(e[s.name]===void 0)throw new Error(`Invalid arguments: ${s.name} not provided.`)})}function translateAddress(t){return t instanceof PublicKey?t:new PublicKey(t)}class StructError extends TypeError{constructor(e,s){let l;const{message:d,...u}=e,{path:p}=e,m=p.length===0?d:"At path: "+p.join(".")+" -- "+d;super(m),this.value=void 0,this.key=void 0,this.type=void 0,this.refinement=void 0,this.path=void 0,this.branch=void 0,this.failures=void 0,Object.assign(this,u),this.name=this.constructor.name,this.failures=()=>{var y;return(y=l)!=null?y:l=[e,...s()]}}}function isIterable(t){return isObject(t)&&typeof t[Symbol.iterator]=="function"}function isObject(t){return typeof t=="object"&&t!=null}function print(t){return typeof t=="string"?JSON.stringify(t):""+t}function shiftIterator(t){const{done:e,value:s}=t.next();return e?void 0:s}function toFailure(t,e,s,l){if(t===!0)return;t===!1?t={}:typeof t=="string"&&(t={message:t});const{path:d,branch:u}=e,{type:p}=s,{refinement:m,message:y="Expected a value of type `"+p+"`"+(m?" with refinement `"+m+"`":"")+", but received: `"+print(l)+"`"}=t;return{value:l,type:p,refinement:m,key:d[d.length-1],path:d,branch:u,...t,message:y}}function*toFailures(t,e,s,l){isIterable(t)||(t=[t]);for(const d of t){const u=toFailure(d,e,s,l);u&&(yield u)}}function*run(t,e,s){s===void 0&&(s={});const{path:l=[],branch:d=[t],coerce:u=!1,mask:p=!1}=s,m={path:l,branch:d};if(u&&(t=e.coercer(t,m),p&&e.type!=="type"&&isObject(e.schema)&&isObject(t)&&!Array.isArray(t)))for(const h in t)e.schema[h]===void 0&&delete t[h];let y=!0;for(const h of e.validator(t,m))y=!1,yield[h,void 0];for(let[h,v,A]of e.entries(t,m)){const w=run(v,A,{path:h===void 0?l:[...l,h],branch:h===void 0?d:[...d,v],coerce:u,mask:p});for(const I of w)I[0]?(y=!1,yield[I[0],void 0]):u&&(v=I[1],h===void 0?t=v:t instanceof Map?t.set(h,v):t instanceof Set?t.add(v):isObject(t)&&(t[h]=v))}if(y)for(const h of e.refiner(t,m))y=!1,yield[h,void 0];y&&(yield[void 0,t])}class Struct{constructor(e){this.TYPE=void 0,this.type=void 0,this.schema=void 0,this.coercer=void 0,this.validator=void 0,this.refiner=void 0,this.entries=void 0;const{type:s,schema:l,validator:d,refiner:u,coercer:p=y=>y,entries:m=function*(){}}=e;this.type=s,this.schema=l,this.entries=m,this.coercer=p,d?this.validator=(y,h)=>{const v=d(y,h);return toFailures(v,h,this,y)}:this.validator=()=>[],u?this.refiner=(y,h)=>{const v=u(y,h);return toFailures(v,h,this,y)}:this.refiner=()=>[]}assert(e){return assert$1(e,this)}create(e){return create(e,this)}is(e){return is(e,this)}mask(e){return mask(e,this)}validate(e,s){return s===void 0&&(s={}),validate$1(e,this,s)}}function assert$1(t,e){const s=validate$1(t,e);if(s[0])throw s[0]}function create(t,e){const s=validate$1(t,e,{coerce:!0});if(s[0])throw s[0];return s[1]}function mask(t,e){const s=validate$1(t,e,{coerce:!0,mask:!0});if(s[0])throw s[0];return s[1]}function is(t,e){return!validate$1(t,e)[0]}function validate$1(t,e,s){s===void 0&&(s={});const l=run(t,e,s),d=shiftIterator(l);return d[0]?[new StructError(d[0],function*(){for(const p of l)p[0]&&(yield p[0])}),void 0]:[void 0,d[1]]}function define(t,e){return new Struct({type:t,schema:null,validator:e})}function any(){return define("any",()=>!0)}function array(t){return new Struct({type:"array",schema:t,*entries(e){if(t&&Array.isArray(e))for(const[s,l]of e.entries())yield[s,l,t]},coercer(e){return Array.isArray(e)?e.slice():e},validator(e){return Array.isArray(e)||"Expected an array value, but received: "+print(e)}})}function boolean(){return define("boolean",t=>typeof t=="boolean")}function literal(t){const e=print(t);return new Struct({type:"literal",schema:t,validator(s){return s===t||"Expected the literal `"+e+"`, but received: "+print(s)}})}function nullable(t){return new Struct({...t,validator:(e,s)=>e===null||t.validator(e,s),refiner:(e,s)=>e===null||t.refiner(e,s)})}function number(){return define("number",t=>typeof t=="number"&&!isNaN(t)||"Expected a number, but received: "+print(t))}function optional(t){return new Struct({...t,validator:(e,s)=>e===void 0||t.validator(e,s),refiner:(e,s)=>e===void 0||t.refiner(e,s)})}function string(){return define("string",t=>typeof t=="string"||"Expected a string, but received: "+print(t))}function type(t){const e=Object.keys(t);return new Struct({type:"type",schema:t,*entries(s){if(isObject(s))for(const l of e)yield[l,s[l],t[l]]},validator(s){return isObject(s)||"Expected an object, but received: "+print(s)}})}function union$1(t){const e=t.map(s=>s.type).join(" | ");return new Struct({type:"union",schema:null,coercer(s,l){return(t.find(u=>{const[p]=u.validate(s,{coerce:!0});return!p})||unknown()).coercer(s,l)},validator(s,l){const d=[];for(const u of t){const[...p]=run(s,u,l),[m]=p;if(m[0])for(const[y]of p)y&&d.push(y);else return[]}return["Expected the value to satisfy a union of `"+e+"`, but received: "+print(s),...d]}})}function unknown(){return define("unknown",()=>!0)}function coerce(t,e,s){return new Struct({...t,coercer:(l,d)=>is(l,e)?t.coercer(s(l,d),d):t.coercer(l,d)})}async function invoke(t,e,s,l){t=translateAddress(t),l||(l=getProvider());const d=new Transaction;if(d.add(new TransactionInstruction({programId:t,keys:e??[],data:s})),l.sendAndConfirm===void 0)throw new Error("This function requires 'Provider.sendAndConfirm' to be implemented.");return await l.sendAndConfirm(d,[])}const GET_MULTIPLE_ACCOUNTS_LIMIT=99;async function getMultipleAccounts(t,e,s){return(await getMultipleAccountsAndContext(t,e,s)).map(d=>d?{publicKey:d.publicKey,account:d.account}:null)}async function getMultipleAccountsAndContext(t,e,s){if(e.length<=GET_MULTIPLE_ACCOUNTS_LIMIT)return await getMultipleAccountsAndContextCore(t,e,s);{const l=chunks(e,GET_MULTIPLE_ACCOUNTS_LIMIT);return(await Promise.all(l.map(u=>getMultipleAccountsAndContextCore(t,u,s)))).flat()}}async function getMultipleAccountsAndContextCore(t,e,s){const l=s??t.commitment,{value:d,context:u}=await t.getMultipleAccountsInfoAndContext(e,l);return d.map((m,y)=>m===null?null:{publicKey:e[y],account:m,context:u})}async function simulateTransaction(t,e,s,l,d){var u;s&&s.length>0&&e.sign(...s);const p=e._compile(),m=p.serialize(),h=e._serialize(m).toString("base64"),v={encoding:"base64",commitment:l??t.commitment};if(d){const k=(Array.isArray(d)?d:p.nonProgramIds()).map($=>$.toBase58());v.accounts={encoding:"base64",addresses:k}}s&&(v.sigVerify=!0);const A=[h,v],w=await t._rpcRequest("simulateTransaction",A),I=create(w,SimulatedTransactionResponseStruct);if("error"in I){let k;if("data"in I.error&&(k=(u=I.error.data)===null||u===void 0?void 0:u.logs,k&&Array.isArray(k))){const $=`
194
+ Reponse Received: ${JSON.stringify(this.result,null,2)}`),t}},FaucetRateLimitError=class extends Error{},ValidResponse=object({jsonrpc:literal$1("2.0"),id:string$1(),result:any$1()}),ErrorResponse=object({jsonrpc:literal$1("2.0"),id:string$1(),error:object({code:any$1(),message:string$1(),data:optional$1(any$1())})}),JsonRpcClient=class{constructor(t,e){this.rpcClient=new RpcClient(async(s,l)=>{const d={method:"POST",body:s,headers:{"Content-Type":"application/json","Client-Sdk-Type":"typescript","Client-Sdk-Version":PACKAGE_VERSION,"Client-Target-Api-Version":TARGETED_RPC_VERSION,...e}};try{let u=await fetch(t,d);const p=await u.text();if(u.ok)l(null,p);else{const m=u.headers.get("content-type")==="text/html";l(new Error(`${u.status} ${u.statusText}${m?"":`: ${p}`}`))}}catch(u){l(u)}},{})}async requestWithType(t,e,s){const l={method:t,args:e},d=await this.request(t,e);if(is$1(d,ErrorResponse))throw new RPCError({req:l,code:d.error.code,data:d.error.data,cause:new Error(d.error.message)});if(is$1(d,ValidResponse)){const[u]=validate$2(d.result,s);return u&&console.warn(new RPCValidationError({req:l,result:d.result,cause:u})),d.result}throw new RPCError({req:l,data:d})}async request(t,e){return new Promise((s,l)=>{this.rpcClient.request(t,e,(d,u)=>{if(d){l(d);return}s(u)})})}},DynamicFieldType=union$2([literal$1("DynamicField"),literal$1("DynamicObject")]),DynamicFieldName=object({type:string$1(),value:any$1()}),DynamicFieldInfo=object({name:DynamicFieldName,bcsName:string$1(),type:DynamicFieldType,objectType:string$1(),objectId:ObjectId,version:number$1(),digest:string$1()}),DynamicFieldPage=object({data:array$1(DynamicFieldInfo),nextCursor:nullable$1(ObjectId),hasNextPage:boolean$1()}),getWebsocketUrl=(t,e)=>{const s=new URL(t);return s.protocol=s.protocol.replace("http","ws"),s.toString()},isMinimumSubscriptionMessage=t=>t&&"subscription"in t&&typeof t.subscription=="number"&&"result"in t&&typeof t.result=="object",DEFAULT_CLIENT_OPTIONS={connectTimeout:15e3,callTimeout:3e4,reconnectInterval:3e3,maxReconnects:5},SUBSCRIBE_EVENT_METHOD="suix_subscribeEvent",UNSUBSCRIBE_EVENT_METHOD="suix_unsubscribeEvent",WebsocketClient=class{constructor(t,e=DEFAULT_CLIENT_OPTIONS){this.endpoint=t,this.options=e,this.connectionState=0,this.connectionTimeout=null,this.isSetup=!1,this.connectionPromise=null,this.eventSubscriptions=new Map,this.endpoint.startsWith("http")&&(this.endpoint=getWebsocketUrl(this.endpoint)),this.rpcClient=new Client_1(this.endpoint,{reconnect_interval:this.options.reconnectInterval,max_reconnects:this.options.maxReconnects,autoconnect:!1})}setupSocket(){this.isSetup||(this.rpcClient.on("open",()=>{this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null),this.connectionState=2,this.rpcClient.socket.on("message",this.onSocketMessage.bind(this))}),this.rpcClient.on("close",()=>{this.connectionState=0}),this.rpcClient.on("error",console.error),this.isSetup=!0)}onSocketMessage(t){const e=JSON.parse(t),s=e.params;if(e.method===SUBSCRIBE_EVENT_METHOD){if(isMinimumSubscriptionMessage(s)){const l=this.eventSubscriptions.get(s.subscription);l&&l.onMessage(s.result)}else if(is$1(s,SubscriptionEvent)){const l=this.eventSubscriptions.get(s.subscription);l&&l.onMessage(s.result)}}}async connect(){return this.connectionPromise?this.connectionPromise:this.connectionState===2?Promise.resolve():(this.setupSocket(),this.rpcClient.connect(),this.connectionState=1,this.connectionPromise=new Promise((t,e)=>{this.connectionTimeout=setTimeout(()=>e(new Error("timeout")),this.options.connectTimeout),this.rpcClient.once("open",()=>{this.refreshSubscriptions(),this.connectionPromise=null,t()}),this.rpcClient.once("error",s=>{this.connectionPromise=null,e(s)})}),this.connectionPromise)}async refreshSubscriptions(){if(this.eventSubscriptions.size!==0)try{let t=new Map;(await Promise.all(Array.from(this.eventSubscriptions.values()).map(async s=>{const l=s.onMessage,d=s.filter;return!d||!l?Promise.resolve(null):{id:await this.subscribeEvent(d,l),onMessage:l,filter:d}}))).forEach(s=>{if(s===null)return;const l=s.filter,d=s.onMessage;t.set(s.id,{filter:l,onMessage:d})}),this.eventSubscriptions=t}catch(t){throw new Error(`error refreshing event subscriptions: ${t}`)}}async subscribeEvent(t,e){try{this.connectionState!==2&&await this.connect();let s=await this.rpcClient.call(SUBSCRIBE_EVENT_METHOD,[t],this.options.callTimeout);return this.eventSubscriptions.set(s,{filter:t,onMessage:e}),s}catch(s){throw new Error(`Error subscribing to event: ${JSON.stringify(s,null,2)}, filter: ${JSON.stringify(t)}`)}}async unsubscribeEvent(t){try{this.connectionState!==2&&await this.connect();let e=await this.rpcClient.call(UNSUBSCRIBE_EVENT_METHOD,[t],this.options.callTimeout);return this.eventSubscriptions.delete(t)||e}catch(e){throw new Error(`Error unsubscribing from event: ${e}, subscription: ${t}`)}}};async function requestSuiFromFaucet(t,e,s){const l=await fetch(t,{method:"POST",body:JSON.stringify({FixedAmountRequest:{recipient:e}}),headers:{"Content-Type":"application/json",...s||{}}});if(l.status===429)throw new FaucetRateLimitError("Too many requests from this client have been sent to the faucet. Please retry later");let d;try{d=await l.json()}catch(u){throw new Error(`Encountered error when parsing response from faucet, error: ${u}, status ${l.status}, response ${l}`)}if(d.error)throw new Error(`Faucet returns error: ${d.error}`);return d}var _options,Connection=class{constructor(t){__privateAdd(this,_options,void 0),__privateSet(this,_options,t)}get fullnode(){return __privateGet(this,_options).fullnode}get websocket(){return __privateGet(this,_options).websocket||__privateGet(this,_options).fullnode}get faucet(){return __privateGet(this,_options).faucet}};_options=new WeakMap;new Connection({fullnode:"http://127.0.0.1:9000",faucet:"http://127.0.0.1:9123/gas"});var devnetConnection=new Connection({fullnode:"https://fullnode.devnet.sui.io:443/",faucet:"https://faucet.devnet.sui.io/gas"});new Connection({fullnode:"https://fullnode.testnet.sui.io:443/",faucet:"https://faucet.testnet.sui.io/gas"});function create$1(t,e){return create$2(t,e)}var TRANSACTION_TYPE=Symbol("transaction-argument-type"),option=t=>union$2([object({None:literal$1(null)}),object({Some:t})]),TransactionBlockInput=object({kind:literal$1("Input"),index:integer(),value:optional$1(any$1()),type:optional$1(union$2([literal$1("pure"),literal$1("object")]))}),TransactionArgumentTypes=[TransactionBlockInput,object({kind:literal$1("GasCoin")}),object({kind:literal$1("Result"),index:integer()}),object({kind:literal$1("NestedResult"),index:integer(),resultIndex:integer()})],TransactionArgument=union$2([...TransactionArgumentTypes]),ObjectTransactionArgument=union$2([...TransactionArgumentTypes]);ObjectTransactionArgument[TRANSACTION_TYPE]={kind:"object"};var PureTransactionArgument=t=>{const e=union$2([...TransactionArgumentTypes]);return e[TRANSACTION_TYPE]={kind:"pure",type:t},e},MoveCallTransaction=object({kind:literal$1("MoveCall"),target:define$1("target",string$1().validator),typeArguments:array$1(string$1()),arguments:array$1(TransactionArgument)}),TransferObjectsTransaction=object({kind:literal$1("TransferObjects"),objects:array$1(ObjectTransactionArgument),address:PureTransactionArgument(BCS.ADDRESS)}),SplitCoinsTransaction=object({kind:literal$1("SplitCoins"),coin:ObjectTransactionArgument,amounts:array$1(PureTransactionArgument("u64"))}),MergeCoinsTransaction=object({kind:literal$1("MergeCoins"),destination:ObjectTransactionArgument,sources:array$1(ObjectTransactionArgument)}),MakeMoveVecTransaction=object({kind:literal$1("MakeMoveVec"),type:optional$1(option(string$1())),objects:array$1(ObjectTransactionArgument)}),PublishTransaction=object({kind:literal$1("Publish"),modules:array$1(array$1(integer())),dependencies:array$1(ObjectId)}),UpgradeTransaction=object({kind:literal$1("Upgrade"),modules:array$1(array$1(integer())),dependencies:array$1(ObjectId),packageId:ObjectId,ticket:ObjectTransactionArgument}),TransactionTypes=[MoveCallTransaction,TransferObjectsTransaction,SplitCoinsTransaction,MergeCoinsTransaction,PublishTransaction,UpgradeTransaction,MakeMoveVecTransaction],TransactionType=union$2([...TransactionTypes]);function getTransactionType(t){return assert$2(t,TransactionType),TransactionTypes.find(e=>is$1(t,e))}var Transactions={MoveCall(t){return create$1({kind:"MoveCall",target:t.target,arguments:t.arguments??[],typeArguments:t.typeArguments??[]},MoveCallTransaction)},TransferObjects(t,e){return create$1({kind:"TransferObjects",objects:t,address:e},TransferObjectsTransaction)},SplitCoins(t,e){return create$1({kind:"SplitCoins",coin:t,amounts:e},SplitCoinsTransaction)},MergeCoins(t,e){return create$1({kind:"MergeCoins",destination:t,sources:e},MergeCoinsTransaction)},Publish({modules:t,dependencies:e}){return create$1({kind:"Publish",modules:t.map(s=>typeof s=="string"?Array.from(fromB64(s)):s),dependencies:e.map(s=>normalizeSuiObjectId(s))},PublishTransaction)},Upgrade({modules:t,dependencies:e,packageId:s,ticket:l}){return create$1({kind:"Upgrade",modules:t.map(d=>typeof d=="string"?Array.from(fromB64(d)):d),dependencies:e.map(d=>normalizeSuiObjectId(d)),packageId:s,ticket:l},UpgradeTransaction)},MakeMoveVec({type:t,objects:e}){return create$1({kind:"MakeMoveVec",type:t?{Some:t}:{None:null},objects:e},MakeMoveVecTransaction)}},VECTOR_REGEX=/^vector<(.+)>$/,STRUCT_REGEX=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/,TypeTagSerializer=class{static parseFromStr(t,e=!1){if(t==="address")return{address:null};if(t==="bool")return{bool:null};if(t==="u8")return{u8:null};if(t==="u16")return{u16:null};if(t==="u32")return{u32:null};if(t==="u64")return{u64:null};if(t==="u128")return{u128:null};if(t==="u256")return{u256:null};if(t==="signer")return{signer:null};const s=t.match(VECTOR_REGEX);if(s)return{vector:TypeTagSerializer.parseFromStr(s[1],e)};const l=t.match(STRUCT_REGEX);if(l)return{struct:{address:e?normalizeSuiAddress(l[1]):l[1],module:l[2],name:l[3],typeParams:l[5]===void 0?[]:TypeTagSerializer.parseStructTypeArgs(l[5],e)}};throw new Error(`Encountered unexpected token when parsing type args for ${t}`)}static parseStructTypeArgs(t,e=!1){const s=[];let l="",d=0;for(let u=0;u<t.length;u++){const p=t[u];if(p==="<"&&d++,p===">"&&d--,d===0&&p===","){s.push(l.trim()),l="";continue}l+=p}return s.push(l.trim()),s.map(u=>TypeTagSerializer.parseFromStr(u,e))}static tagToString(t){if("bool"in t)return"bool";if("u8"in t)return"u8";if("u16"in t)return"u16";if("u32"in t)return"u32";if("u64"in t)return"u64";if("u128"in t)return"u128";if("u256"in t)return"u256";if("address"in t)return"address";if("signer"in t)return"signer";if("vector"in t)return`vector<${TypeTagSerializer.tagToString(t.vector)}>`;if("struct"in t){const e=t.struct,s=e.typeParams.map(TypeTagSerializer.tagToString).join(", ");return`${e.address}::${e.module}::${e.name}${s?`<${s}>`:""}`}throw new Error("Invalid TypeTag")}},ARGUMENT_INNER="Argument",VECTOR2="vector",OPTION="Option",CALL_ARG="CallArg",TYPE_TAG="TypeTag",PROGRAMMABLE_TX_BLOCK="ProgrammableTransaction",PROGRAMMABLE_CALL_INNER="ProgrammableMoveCall",TRANSACTION_INNER="Transaction",ENUM_KIND="EnumKind",TRANSACTION=[ENUM_KIND,TRANSACTION_INNER],ARGUMENT=[ENUM_KIND,ARGUMENT_INNER],PROGRAMMABLE_CALL="SimpleProgrammableMoveCall",builder=new BCS(bcs).registerStructType(PROGRAMMABLE_TX_BLOCK,{inputs:[VECTOR2,CALL_ARG],transactions:[VECTOR2,TRANSACTION]}).registerEnumType(ARGUMENT_INNER,{GasCoin:null,Input:{index:BCS.U16},Result:{index:BCS.U16},NestedResult:{index:BCS.U16,resultIndex:BCS.U16}}).registerStructType(PROGRAMMABLE_CALL_INNER,{package:BCS.ADDRESS,module:BCS.STRING,function:BCS.STRING,type_arguments:[VECTOR2,TYPE_TAG],arguments:[VECTOR2,ARGUMENT]}).registerEnumType(TRANSACTION_INNER,{MoveCall:PROGRAMMABLE_CALL,TransferObjects:{objects:[VECTOR2,ARGUMENT],address:ARGUMENT},SplitCoins:{coin:ARGUMENT,amounts:[VECTOR2,ARGUMENT]},MergeCoins:{destination:ARGUMENT,sources:[VECTOR2,ARGUMENT]},Publish:{modules:[VECTOR2,[VECTOR2,BCS.U8]],dependencies:[VECTOR2,BCS.ADDRESS]},MakeMoveVec:{type:[OPTION,TYPE_TAG],objects:[VECTOR2,ARGUMENT]},Upgrade:{modules:[VECTOR2,[VECTOR2,BCS.U8]],dependencies:[VECTOR2,BCS.ADDRESS],packageId:BCS.ADDRESS,ticket:ARGUMENT}});builder.registerType([ENUM_KIND,"T"],function(e,s,l,d){const p={[s.kind]:s},[m]=l;return this.getTypeInterface(m)._encodeRaw.call(this,e,p,l,d)},function(e,s,l){const[d]=s,u=this.getTypeInterface(d)._decodeRaw.call(this,e,s,l),p=Object.keys(u)[0];return{kind:p,...u[p]}},t=>{if(typeof t!="object"&&!("kind"in t))throw new Error(`EnumKind: Missing property "kind" in the input ${JSON.stringify(t)}`);return!0});builder.registerType(PROGRAMMABLE_CALL,function(e,s,l,d){const[u,p,m]=s.target.split("::"),y=s.typeArguments.map(h=>TypeTagSerializer.parseFromStr(h,!0));return this.getTypeInterface(PROGRAMMABLE_CALL_INNER)._encodeRaw.call(this,e,{package:normalizeSuiAddress(u),module:p,function:m,type_arguments:y,arguments:s.arguments},l,d)},function(e,s,l){let d=builder.getTypeInterface(PROGRAMMABLE_CALL_INNER)._decodeRaw.call(this,e,s,l);return{target:[d.package,d.module,d.function].join("::"),arguments:d.arguments,typeArguments:d.type_arguments.map(TypeTagSerializer.tagToString)}},t=>t.target.split("::").length===3);var ObjectArg=union$2([object({ImmOrOwned:SuiObjectRef}),object({Shared:object({objectId:string$1(),initialSharedVersion:union$2([integer(),string$1()]),mutable:boolean$1()})})]),PureCallArg=object({Pure:array$1(integer())}),ObjectCallArg=object({Object:ObjectArg}),BuilderCallArg=union$2([PureCallArg,ObjectCallArg]),Inputs={Pure(t,e){return{Pure:Array.from(t instanceof Uint8Array?t:builder.ser(e,t).toBytes())}},ObjectRef({objectId:t,digest:e,version:s}){return{Object:{ImmOrOwned:{digest:e,version:s,objectId:normalizeSuiAddress(t)}}}},SharedObjectRef({objectId:t,mutable:e,initialSharedVersion:s}){return{Object:{Shared:{mutable:e,initialSharedVersion:s,objectId:normalizeSuiAddress(t)}}}}};function getIdFromCallArg(t){return typeof t=="string"?normalizeSuiAddress(t):"ImmOrOwned"in t.Object?normalizeSuiAddress(t.Object.ImmOrOwned.objectId):normalizeSuiAddress(t.Object.Shared.objectId)}function getSharedObjectInput(t){return typeof t=="object"&&"Object"in t&&"Shared"in t.Object?t.Object.Shared:void 0}function isMutableSharedObjectInput(t){var e;return((e=getSharedObjectInput(t))==null?void 0:e.mutable)??!1}var STD_ASCII_MODULE_NAME="ascii",STD_ASCII_STRUCT_NAME="String",STD_UTF8_MODULE_NAME="string",STD_UTF8_STRUCT_NAME="String",STD_OPTION_MODULE_NAME="option",STD_OPTION_STRUCT_NAME="Option",RESOLVED_SUI_ID={address:SUI_FRAMEWORK_ADDRESS,module:OBJECT_MODULE_NAME,name:ID_STRUCT_NAME},RESOLVED_ASCII_STR={address:MOVE_STDLIB_ADDRESS,module:STD_ASCII_MODULE_NAME,name:STD_ASCII_STRUCT_NAME},RESOLVED_UTF8_STR={address:MOVE_STDLIB_ADDRESS,module:STD_UTF8_MODULE_NAME,name:STD_UTF8_STRUCT_NAME},RESOLVED_STD_OPTION={address:MOVE_STDLIB_ADDRESS,module:STD_OPTION_MODULE_NAME,name:STD_OPTION_STRUCT_NAME},isSameStruct=(t,e)=>t.address===e.address&&t.module===e.module&&t.name===e.name;function isTxContext(t){var s;const e=(s=extractStructTag(t))==null?void 0:s.Struct;return(e==null?void 0:e.address)==="0x2"&&(e==null?void 0:e.module)==="tx_context"&&(e==null?void 0:e.name)==="TxContext"}function expectType(t,e){if(!(typeof e>"u")&&typeof e!==t)throw new Error(`Expect ${e} to be ${t}, received ${typeof e}`)}var allowedTypes=["Address","Bool","U8","U16","U32","U64","U128","U256"];function getPureSerializationType(t,e){if(typeof t=="string"&&allowedTypes.includes(t)){if(t in["U8","U16","U32","U64","U128","U256"])expectType("number",e);else if(t==="Bool")expectType("boolean",e);else if(t==="Address"&&(expectType("string",e),e&&!isValidSuiAddress(e)))throw new Error("Invalid Sui Address");return t.toLowerCase()}else if(typeof t=="string")throw new Error(`Unknown pure normalized type ${JSON.stringify(t,null,2)}`);if("Vector"in t){if((e===void 0||typeof e=="string")&&t.Vector==="U8")return"string";if(e!==void 0&&!Array.isArray(e))throw new Error(`Expect ${e} to be a array, received ${typeof e}`);const s=getPureSerializationType(t.Vector,e?e[0]:void 0);return s===void 0?void 0:`vector<${s}>`}if("Struct"in t){if(isSameStruct(t.Struct,RESOLVED_ASCII_STR))return"string";if(isSameStruct(t.Struct,RESOLVED_UTF8_STR))return"utf8string";if(isSameStruct(t.Struct,RESOLVED_SUI_ID))return"address";if(isSameStruct(t.Struct,RESOLVED_STD_OPTION)){const s={Vector:t.Struct.typeArguments[0]};return getPureSerializationType(s,e)}}}function hashTypedData(t,e){const s=Array.from(`${t}::`).map(d=>d.charCodeAt(0)),l=new Uint8Array(s.length+e.length);return l.set(s),l.set(e,s.length),blake2b(l,{dkLen:32})}var TransactionExpiration=optional$1(nullable$1(union$2([object({Epoch:integer()}),object({None:union$2([literal$1(!0),literal$1(null)])})]))),SuiAddress3=string$1(),StringEncodedBigint=define$1("StringEncodedBigint",t=>{if(!["string","number","bigint"].includes(typeof t))return!1;try{return BigInt(t),!0}catch{return!1}}),GasConfig=object({budget:optional$1(StringEncodedBigint),price:optional$1(StringEncodedBigint),payment:optional$1(array$1(SuiObjectRef)),owner:optional$1(SuiAddress3)}),SerializedTransactionDataBuilder=object({version:literal$1(1),sender:optional$1(SuiAddress3),expiration:TransactionExpiration,gasConfig:GasConfig,inputs:array$1(TransactionBlockInput),transactions:array$1(TransactionType)});function prepareSuiAddress(t){return normalizeSuiAddress(t).replace("0x","")}var TRANSACTION_DATA_MAX_SIZE=128*1024,TransactionBlockDataBuilder=class{constructor(t){this.version=1,this.sender=t==null?void 0:t.sender,this.expiration=t==null?void 0:t.expiration,this.gasConfig=(t==null?void 0:t.gasConfig)??{},this.inputs=(t==null?void 0:t.inputs)??[],this.transactions=(t==null?void 0:t.transactions)??[]}static fromKindBytes(t){const e=builder.de("TransactionKind",t),s=e==null?void 0:e.ProgrammableTransaction;if(!s)throw new Error("Unable to deserialize from bytes.");const l=create$1({version:1,gasConfig:{},inputs:s.inputs.map((d,u)=>create$1({kind:"Input",value:d,index:u,type:is$1(d,PureCallArg)?"pure":"object"},TransactionBlockInput)),transactions:s.transactions},SerializedTransactionDataBuilder);return TransactionBlockDataBuilder.restore(l)}static fromBytes(t){var u;const e=builder.de("TransactionData",t),s=e==null?void 0:e.V1,l=(u=s==null?void 0:s.kind)==null?void 0:u.ProgrammableTransaction;if(!s||!l)throw new Error("Unable to deserialize from bytes.");const d=create$1({version:1,sender:s.sender,expiration:s.expiration,gasConfig:s.gasData,inputs:l.inputs.map((p,m)=>create$1({kind:"Input",value:p,index:m,type:is$1(p,PureCallArg)?"pure":"object"},TransactionBlockInput)),transactions:l.transactions},SerializedTransactionDataBuilder);return TransactionBlockDataBuilder.restore(d)}static restore(t){assert$2(t,SerializedTransactionDataBuilder);const e=new TransactionBlockDataBuilder;return Object.assign(e,t),e}static getDigestFromBytes(t){const e=hashTypedData("TransactionData",t);return toB58(e)}build({overrides:t,onlyTransactionKind:e}={}){const s=this.inputs.map(y=>(assert$2(y.value,BuilderCallArg),y.value)),l={ProgrammableTransaction:{inputs:s,transactions:this.transactions}};if(e)return builder.ser("TransactionKind",l,{maxSize:TRANSACTION_DATA_MAX_SIZE}).toBytes();const d=(t==null?void 0:t.expiration)??this.expiration,u=(t==null?void 0:t.sender)??this.sender,p={...this.gasConfig,...t==null?void 0:t.gasConfig};if(!u)throw new Error("Missing transaction sender");if(!p.budget)throw new Error("Missing gas budget");if(!p.payment)throw new Error("Missing gas payment");if(!p.price)throw new Error("Missing gas price");const m={sender:prepareSuiAddress(u),expiration:d||{None:!0},gasData:{payment:p.payment,owner:prepareSuiAddress(this.gasConfig.owner??u),price:BigInt(p.price),budget:BigInt(p.budget)},kind:{ProgrammableTransaction:{inputs:s,transactions:this.transactions}}};return builder.ser("TransactionData",{V1:m},{maxSize:TRANSACTION_DATA_MAX_SIZE}).toBytes()}getDigest(){const t=this.build({onlyTransactionKind:!1});return TransactionBlockDataBuilder.getDigestFromBytes(t)}snapshot(){return create$1(this,SerializedTransactionDataBuilder)}};function createTransactionResult(t){const e={kind:"Result",index:t},s=[],l=d=>s[d]??(s[d]={kind:"NestedResult",index:t,resultIndex:d});return new Proxy(e,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(d,u){if(u in d)return Reflect.get(d,u);if(u===Symbol.iterator)return function*(){let m=0;for(;;)yield l(m),m++};if(typeof u=="symbol")return;const p=parseInt(u,10);if(!(Number.isNaN(p)||p<0))return l(p)}})}function expectProvider(t){if(!t)throw new Error("No provider passed to Transaction#build, but transaction data was not sufficient to build offline.");return t}var TRANSACTION_BRAND=Symbol.for("@mysten/transaction"),MAX_GAS_OBJECTS=256,MAX_GAS=5e10,GAS_SAFE_OVERHEAD=1000n,_blockData,_input,input_fn,_selectGasPayment,selectGasPayment_fn,_prepare,prepare_fn,_TransactionBlock=class{constructor(t){__privateAdd(this,_input),__privateAdd(this,_selectGasPayment),__privateAdd(this,_prepare),__privateAdd(this,_blockData,void 0),__privateSet(this,_blockData,new TransactionBlockDataBuilder(t?t.blockData:void 0))}static is(t){return!!t&&typeof t=="object"&&t[TRANSACTION_BRAND]===!0}static fromKind(t){const e=new _TransactionBlock;return __privateSet(e,_blockData,TransactionBlockDataBuilder.fromKindBytes(typeof t=="string"?fromB64(t):t)),e}static from(t){const e=new _TransactionBlock;return typeof t!="string"||!t.startsWith("{")?__privateSet(e,_blockData,TransactionBlockDataBuilder.fromBytes(typeof t=="string"?fromB64(t):t)):__privateSet(e,_blockData,TransactionBlockDataBuilder.restore(JSON.parse(t))),e}static get Transactions(){return Transactions}static get Inputs(){return Inputs}setSender(t){__privateGet(this,_blockData).sender=t}setSenderIfNotSet(t){__privateGet(this,_blockData).sender||(__privateGet(this,_blockData).sender=t)}setExpiration(t){__privateGet(this,_blockData).expiration=t}setGasPrice(t){__privateGet(this,_blockData).gasConfig.price=String(t)}setGasBudget(t){__privateGet(this,_blockData).gasConfig.budget=String(t)}setGasOwner(t){__privateGet(this,_blockData).gasConfig.owner=t}setGasPayment(t){if(t.length>=MAX_GAS_OBJECTS)throw new Error(`Payment objects exceed maximum amount ${MAX_GAS_OBJECTS}`);__privateGet(this,_blockData).gasConfig.payment=t.map(e=>mask$1(e,SuiObjectRef))}get blockData(){return __privateGet(this,_blockData).snapshot()}get[TRANSACTION_BRAND](){return!0}get gas(){return{kind:"GasCoin"}}object(t){const e=getIdFromCallArg(t);return __privateGet(this,_blockData).inputs.find(l=>l.type==="object"&&e===getIdFromCallArg(l.value))??__privateMethod(this,_input,input_fn).call(this,"object",t)}objectRef(...t){return this.object(Inputs.ObjectRef(...t))}sharedObjectRef(...t){return this.object(Inputs.SharedObjectRef(...t))}pure(t,e){return __privateMethod(this,_input,input_fn).call(this,"pure",t instanceof Uint8Array?Inputs.Pure(t):e?Inputs.Pure(t,e):t)}add(t){const e=__privateGet(this,_blockData).transactions.push(t);return createTransactionResult(e-1)}splitCoins(...t){return this.add(Transactions.SplitCoins(...t))}mergeCoins(...t){return this.add(Transactions.MergeCoins(...t))}publish(...t){return this.add(Transactions.Publish(...t))}upgrade(...t){return this.add(Transactions.Upgrade(...t))}moveCall(...t){return this.add(Transactions.MoveCall(...t))}transferObjects(...t){return this.add(Transactions.TransferObjects(...t))}makeMoveVec(...t){return this.add(Transactions.MakeMoveVec(...t))}serialize(){return JSON.stringify(__privateGet(this,_blockData).snapshot())}async build({provider:t,onlyTransactionKind:e}={}){return await __privateMethod(this,_prepare,prepare_fn).call(this,{provider:t,onlyTransactionKind:e}),__privateGet(this,_blockData).build({onlyTransactionKind:e})}async getDigest({provider:t}={}){return await __privateMethod(this,_prepare,prepare_fn).call(this,{provider:t}),__privateGet(this,_blockData).getDigest()}},TransactionBlock=_TransactionBlock;_blockData=new WeakMap;_input=new WeakSet;input_fn=function(t,e){const s=__privateGet(this,_blockData).inputs.length,l=create$1({kind:"Input",value:typeof e=="bigint"?String(e):e,index:s,type:t},TransactionBlockInput);return __privateGet(this,_blockData).inputs.push(l),l};_selectGasPayment=new WeakSet;selectGasPayment_fn=async function(t){const e=__privateGet(this,_blockData).gasConfig.owner??__privateGet(this,_blockData).sender,l=(await expectProvider(t).getCoins({owner:e,coinType:SUI_TYPE_ARG})).data.filter(d=>!__privateGet(this,_blockData).inputs.find(p=>is$1(p.value,BuilderCallArg)&&"Object"in p.value&&"ImmOrOwned"in p.value.Object?d.coinObjectId===p.value.Object.ImmOrOwned.objectId:!1)).slice(0,MAX_GAS_OBJECTS-1).map(d=>({objectId:d.coinObjectId,digest:d.digest,version:d.version}));if(!l.length)throw new Error("No valid gas coins found for the transaction.");return l};_prepare=new WeakSet;prepare_fn=async function({provider:t,onlyTransactionKind:e}){if(!e&&!__privateGet(this,_blockData).sender)throw new Error("Missing transaction sender");const{inputs:s,transactions:l}=__privateGet(this,_blockData),d=[],u=[];if(l.forEach(p=>{if(p.kind==="MoveCall"){p.arguments.some(h=>h.kind==="Input"&&!is$1(s[h.index].value,BuilderCallArg))&&d.push(p);return}const m=getTransactionType(p);m.schema&&Object.entries(p).forEach(([y,h])=>{if(y==="kind")return;const v=m.schema[y],A=v.type==="array",w=A?v.schema[TRANSACTION_TYPE]:v[TRANSACTION_TYPE];if(!w)return;const I=k=>{const $=s[k];if(!$)throw new Error(`Missing input ${h.index}`);if(!is$1($.value,BuilderCallArg))if(w.kind==="object"&&typeof $.value=="string")u.push({id:$.value,input:$});else if(w.kind==="pure")$.value=Inputs.Pure($.value,w.type);else throw new Error("Unexpected input format.")};if(A)h.forEach(k=>{k.kind==="Input"&&I(k.index)});else{if(h.kind!=="Input")return;I(h.index)}})}),d.length&&await Promise.all(d.map(async p=>{const[m,y,h]=p.target.split("::"),v=await expectProvider(t).getNormalizedMoveFunction({package:normalizeSuiObjectId(m),module:y,function:h}),w=v.parameters.length>0&&isTxContext(v.parameters.at(-1))?v.parameters.slice(0,v.parameters.length-1):v.parameters;if(w.length!==p.arguments.length)throw new Error("Incorrect number of arguments.");w.forEach((I,k)=>{const $=p.arguments[k];if($.kind!=="Input")return;const P=s[$.index];if(is$1(P.value,BuilderCallArg))return;const z=P.value,U=getPureSerializationType(I,z);if(U){P.value=Inputs.Pure(z,U);return}if(extractStructTag(I)!=null||typeof I=="object"&&"TypeParameter"in I){if(typeof z!="string")throw new Error(`Expect the argument to be an object id string, got ${JSON.stringify(z,null,2)}`);u.push({id:z,input:P,normalizedType:I});return}throw new Error(`Unknown call arg type ${JSON.stringify(I,null,2)} for value ${JSON.stringify(z,null,2)}`)})})),u.length){const p=[...new Set(u.map(({id:v})=>v))],m=await expectProvider(t).multiGetObjects({ids:p,options:{showOwner:!0}});let y=new Map(p.map((v,A)=>[v,m[A]]));const h=Array.from(y).filter(([v,A])=>A.error).map(([v,A])=>v);if(h.length)throw new Error(`The following input objects are not invalid: ${h.join(", ")}`);u.forEach(({id:v,input:A,normalizedType:w})=>{const I=y.get(v),k=getSharedObjectInitialVersion(I);if(k){const $=isMutableSharedObjectInput(A.value)||w!=null&&extractMutableReference(w)!=null;A.value=Inputs.SharedObjectRef({objectId:v,initialSharedVersion:k,mutable:$})}else A.value=Inputs.ObjectRef(getObjectReference(I))})}if(!e&&(__privateGet(this,_blockData).gasConfig.price||this.setGasPrice(await expectProvider(t).getReferenceGasPrice()),__privateGet(this,_blockData).gasConfig.payment||(__privateGet(this,_blockData).gasConfig.payment=await __privateMethod(this,_selectGasPayment,selectGasPayment_fn).call(this,t)),!this.blockData.gasConfig.budget)){const p=await expectProvider(t).dryRunTransactionBlock({transactionBlock:__privateGet(this,_blockData).build({overrides:{gasConfig:{budget:String(MAX_GAS),payment:[]}}})});if(p.effects.status.status!=="success")throw new Error(`Dry run failed, could not automatically determine a budget: ${p.effects.status.error}`,{cause:p});const m=GAS_SAFE_OVERHEAD*BigInt(this.blockData.gasConfig.price||1n),y=BigInt(p.effects.gasUsed.computationCost)+m,h=y+BigInt(p.effects.gasUsed.storageCost)-BigInt(p.effects.gasUsed.storageRebate);this.setGasBudget(h>y?h:y)}};var NetworkMetrics=object({currentTps:number$1(),tps30Days:number$1(),currentCheckpoint:string$1(),currentEpoch:string$1(),totalAddresses:string$1(),totalObjects:string$1(),totalPackages:string$1()}),DEFAULT_OPTIONS$1={socketOptions:DEFAULT_CLIENT_OPTIONS,versionCacheTimeoutInSeconds:600},JsonRpcProvider=class{constructor(t=devnetConnection,e=DEFAULT_OPTIONS$1){this.options=e,this.connection=t;const s={...DEFAULT_OPTIONS$1,...e};this.options=s,this.client=s.rpcClient??new JsonRpcClient(this.connection.fullnode),this.wsClient=s.websocketClient??new WebsocketClient(this.connection.websocket,s.socketOptions)}async getRpcApiVersion(){if(this.rpcApiVersion&&this.cacheExpiry&&this.cacheExpiry<=Date.now())return this.rpcApiVersion;try{const t=await this.client.requestWithType("rpc.discover",[],any$1());return this.rpcApiVersion=t.info.version,this.cacheExpiry=Date.now()+(this.options.versionCacheTimeoutInSeconds??0)*1e3,this.rpcApiVersion}catch(t){console.warn("Error fetching version number of the RPC API",t)}}async requestSuiFromFaucet(t,e){if(!this.connection.faucet)throw new Error("Faucet URL is not specified");return requestSuiFromFaucet(this.connection.faucet,t,e)}async getCoins(t){if(!t.owner||!isValidSuiAddress(normalizeSuiAddress(t.owner)))throw new Error("Invalid Sui address");return await this.client.requestWithType("suix_getCoins",[t.owner,t.coinType,t.cursor,t.limit],PaginatedCoins)}async getAllCoins(t){if(!t.owner||!isValidSuiAddress(normalizeSuiAddress(t.owner)))throw new Error("Invalid Sui address");return await this.client.requestWithType("suix_getAllCoins",[t.owner,t.cursor,t.limit],PaginatedCoins)}async getBalance(t){if(!t.owner||!isValidSuiAddress(normalizeSuiAddress(t.owner)))throw new Error("Invalid Sui address");return await this.client.requestWithType("suix_getBalance",[t.owner,t.coinType],CoinBalance)}async getAllBalances(t){if(!t.owner||!isValidSuiAddress(normalizeSuiAddress(t.owner)))throw new Error("Invalid Sui address");return await this.client.requestWithType("suix_getAllBalances",[t.owner],array$1(CoinBalance))}async getCoinMetadata(t){return await this.client.requestWithType("suix_getCoinMetadata",[t.coinType],CoinMetadataStruct)}async getTotalSupply(t){return await this.client.requestWithType("suix_getTotalSupply",[t.coinType],CoinSupply)}async call(t,e){const s=await this.client.request(t,e);if(is$1(s,ErrorResponse))throw new RPCError({req:{method:t,args:e},code:s.error.code,data:s.error.data,cause:new Error(s.error.message)});return s.result}async getMoveFunctionArgTypes(t){return await this.client.requestWithType("sui_getMoveFunctionArgTypes",[t.package,t.module,t.function],SuiMoveFunctionArgTypes)}async getNormalizedMoveModulesByPackage(t){return await this.client.requestWithType("sui_getNormalizedMoveModulesByPackage",[t.package],SuiMoveNormalizedModules)}async getNormalizedMoveModule(t){return await this.client.requestWithType("sui_getNormalizedMoveModule",[t.package,t.module],SuiMoveNormalizedModule)}async getNormalizedMoveFunction(t){return await this.client.requestWithType("sui_getNormalizedMoveFunction",[t.package,t.module,t.function],SuiMoveNormalizedFunction)}async getNormalizedMoveStruct(t){return await this.client.requestWithType("sui_getNormalizedMoveStruct",[t.package,t.module,t.struct],SuiMoveNormalizedStruct)}async getOwnedObjects(t){if(!t.owner||!isValidSuiAddress(normalizeSuiAddress(t.owner)))throw new Error("Invalid Sui address");return await this.client.requestWithType("suix_getOwnedObjects",[t.owner,{filter:t.filter,options:t.options},t.cursor,t.limit],PaginatedObjectsResponse)}async getObject(t){if(!t.id||!isValidSuiObjectId(normalizeSuiObjectId(t.id)))throw new Error("Invalid Sui Object id");return await this.client.requestWithType("sui_getObject",[t.id,t.options],SuiObjectResponse)}async multiGetObjects(t){if(t.ids.forEach(s=>{if(!s||!isValidSuiObjectId(normalizeSuiObjectId(s)))throw new Error(`Invalid Sui Object id ${s}`)}),t.ids.length!==new Set(t.ids).size)throw new Error(`Duplicate object ids in batch call ${t.ids}`);return await this.client.requestWithType("sui_multiGetObjects",[t.ids,t.options],array$1(SuiObjectResponse))}async queryTransactionBlocks(t){return await this.client.requestWithType("suix_queryTransactionBlocks",[{filter:t.filter,options:t.options},t.cursor,t.limit,(t.order||"descending")==="descending"],PaginatedTransactionResponse)}async getTransactionBlock(t){if(!isValidTransactionDigest(t.digest))throw new Error("Invalid Transaction digest");return await this.client.requestWithType("sui_getTransactionBlock",[t.digest,t.options],SuiTransactionBlockResponse)}async multiGetTransactionBlocks(t){if(t.digests.forEach(s=>{if(!isValidTransactionDigest(s))throw new Error(`Invalid Transaction digest ${s}`)}),t.digests.length!==new Set(t.digests).size)throw new Error(`Duplicate digests in batch call ${t.digests}`);return await this.client.requestWithType("sui_multiGetTransactionBlocks",[t.digests,t.options],array$1(SuiTransactionBlockResponse))}async executeTransactionBlock(t){return await this.client.requestWithType("sui_executeTransactionBlock",[typeof t.transactionBlock=="string"?t.transactionBlock:toB64(t.transactionBlock),Array.isArray(t.signature)?t.signature:[t.signature],t.options,t.requestType],SuiTransactionBlockResponse)}async getTotalTransactionBlocks(){const t=await this.client.requestWithType("sui_getTotalTransactionBlocks",[],string$1());return BigInt(t)}async getReferenceGasPrice(){const t=await this.client.requestWithType("suix_getReferenceGasPrice",[],string$1());return BigInt(t)}async getStakes(t){if(!t.owner||!isValidSuiAddress(normalizeSuiAddress(t.owner)))throw new Error("Invalid Sui address");return await this.client.requestWithType("suix_getStakes",[t.owner],array$1(DelegatedStake))}async getStakesByIds(t){return t.stakedSuiIds.forEach(e=>{if(!e||!isValidSuiObjectId(normalizeSuiObjectId(e)))throw new Error(`Invalid Sui Stake id ${e}`)}),await this.client.requestWithType("suix_getStakesByIds",[t.stakedSuiIds],array$1(DelegatedStake))}async getLatestSuiSystemState(){return await this.client.requestWithType("suix_getLatestSuiSystemState",[],SuiSystemStateSummary)}async queryEvents(t){return await this.client.requestWithType("suix_queryEvents",[t.query,t.cursor,t.limit,(t.order||"descending")==="descending"],PaginatedEvents)}async subscribeEvent(t){return this.wsClient.subscribeEvent(t.filter,t.onMessage)}async unsubscribeEvent(t){return this.wsClient.unsubscribeEvent(t.id)}async devInspectTransactionBlock(t){let e;if(TransactionBlock.is(t.transactionBlock))t.transactionBlock.setSenderIfNotSet(t.sender),e=toB64(await t.transactionBlock.build({provider:this,onlyTransactionKind:!0}));else if(typeof t.transactionBlock=="string")e=t.transactionBlock;else if(t.transactionBlock instanceof Uint8Array)e=toB64(t.transactionBlock);else throw new Error("Unknown transaction block format.");return await this.client.requestWithType("sui_devInspectTransactionBlock",[t.sender,e,t.gasPrice,t.epoch],DevInspectResults)}async dryRunTransactionBlock(t){return await this.client.requestWithType("sui_dryRunTransactionBlock",[typeof t.transactionBlock=="string"?t.transactionBlock:toB64(t.transactionBlock)],DryRunTransactionBlockResponse)}async getDynamicFields(t){if(!t.parentId||!isValidSuiObjectId(normalizeSuiObjectId(t.parentId)))throw new Error("Invalid Sui Object id");return await this.client.requestWithType("suix_getDynamicFields",[t.parentId,t.cursor,t.limit],DynamicFieldPage)}async getDynamicFieldObject(t){return await this.client.requestWithType("suix_getDynamicFieldObject",[t.parentId,t.name],SuiObjectResponse)}async getLatestCheckpointSequenceNumber(){const t=await this.client.requestWithType("sui_getLatestCheckpointSequenceNumber",[],string$1());return String(t)}async getCheckpoint(t){return await this.client.requestWithType("sui_getCheckpoint",[t.id],Checkpoint)}async getCheckpoints(t){const e=await this.getRpcApiVersion();return await this.client.requestWithType("sui_getCheckpoints",[t.cursor,e&&femver.lt(e,"0.32.0")?String(t==null?void 0:t.limit):t==null?void 0:t.limit,t.descendingOrder],CheckpointPage)}async getCommitteeInfo(t){return await this.client.requestWithType("suix_getCommitteeInfo",[t==null?void 0:t.epoch],CommitteeInfo)}async getNetworkMetrics(){return await this.client.requestWithType("suix_getNetworkMetrics",[],NetworkMetrics)}async getEpochs(t){const e=await this.getRpcApiVersion();return await this.client.requestWithType("suix_getEpochs",[t==null?void 0:t.cursor,e&&femver.lt(e,"0.32.0")?String(t==null?void 0:t.limit):t==null?void 0:t.limit,t==null?void 0:t.descendingOrder],EpochPage)}async getCurrentEpoch(){return await this.client.requestWithType("suix_getCurrentEpoch",[],EpochInfo)}async waitForTransactionBlock({signal:t,timeout:e=60*1e3,pollInterval:s=2*1e3,...l}){const d=AbortSignal.timeout(e),u=new Promise((p,m)=>{d.addEventListener("abort",()=>m(d.reason))});for(;!d.aborted;){t==null||t.throwIfAborted();try{return await this.getTransactionBlock(l)}catch{await Promise.race([new Promise(m=>setTimeout(m,s)),u])}}throw d.throwIfAborted(),new Error("Unexpected error while waiting for transaction block.")}};normalizeSuiObjectId("0x5");function convertAddress(t){return t.length===22?t:`0x${t.slice(t.length-40,t.length)}`}function trimAddress(t,e=6){return t.slice(0,e)+"..."+t.slice(t.length-4,t.length)}function trimTxHash(t,e=6,s=4){const l=t.slice(0,e),d=t.slice(t.length-s,t.length);return`${l}...${d}`}function displayWalletAddress(t,e){return t?t===Context.ETH?trimAddress(convertAddress(e)):t===Context.SOLANA?trimAddress(e,4):trimAddress(e):""}function getChainByChainId(t){return config$1.chainsArr.filter(e=>t===e.chainId)[0]}function getWrappedToken(t){if(isNative(t.tokenId.address)){const s=config$1.chains[t.chain].wrappedGasToken;if(s){const l=config$1.tokens.get(t.chain,s);if(l)return l}}return t}function getGasToken(t){const e=config$1.tokens.getGasToken(t);if(!e)throw new Error(`gas token not found for ${t}`);return e}function chainDisplayName(t){const e=config$1.chains[t];return e?e.displayName:t}function fallbackCopyTextToClipboard(t){const e=document.createElement("textarea");e.value=t,e.style.top="0",e.style.left="0",e.style.position="fixed",document.body.appendChild(e),e.focus(),e.select();try{return document.execCommand("copy"),!0}catch{return!1}finally{document.body.removeChild(e)}}function copyTextToClipboard(t){return navigator.clipboard&&navigator.clipboard.writeText(t).then(function(){return!0},function(){return fallbackCopyTextToClipboard(t)}),fallbackCopyTextToClipboard(t)}function hexPrefix(t){return t.startsWith("0x")?t:`0x${t}`}function isValidTxId(t,e){return t==="Sui"?isValidTransactionDigest(e):t==="Sei"?isHexString(hexPrefix(e),32):e.startsWith("0x")&&e.length===66?!0:e.length>70&&e.length<100}function usePrevious(t){const e=React$1.useRef();return React$1.useEffect(()=>{e.current=t}),e.current}async function sleep(t){return new Promise(e=>setTimeout(e,t))}const getUSDFormat=t=>typeof t>"u"?"":t===0?"$0":Intl.NumberFormat("en-EN",{style:"currency",currency:"USD"}).format(t),calculateUSDPriceRaw=(t,e,s)=>{if(typeof e>"u"||!s)return;const l=t(s);if(l)return typeof e=="number"?e*l:whole(e)*l},calculateUSDPrice=(t,e,s)=>getUSDFormat(calculateUSDPriceRaw(t,e,s)),isEmptyObject=t=>{if(t==null)return!0;for(const e in t)if(t.hasOwnProperty.call(t,e))return!1;return!0},getExplorerUrl=(t,e,s)=>{const d=config$1.chains[t].explorerUrl;switch(s){case"wallet":return t==="Aptos"?`${d}account/${e}`:`${d}address/${e}`;case"tx":return t==="Aptos"?`${d}txn/${e}`:`${d}tx/${e}`;default:switch(t){case"Sui":return`${d}coin/${e}`;case"Aptos":return`${d}${isHexString(e)?"fungible_asset":"coin"}/${e}`;case"Solana":return`${d}address/${e}`;default:return`${d}token/${e}`}}},isFrankensteinToken=(t,e)=>{if(!t.isTokenBridgeWrappedToken)return!1;const{nativeChain:s,symbol:l}=t;return l==="USDC"&&s==="Ethereum"&&e==="Fantom"||t.symbol==="tBTC"?!0:!["Ethereum","Sepolia"].includes(s)&&["ETH","WETH","wstETH","USDT","USDC","USDC.e"].includes(l)},millisToHumanString=t=>t>=2*6e4?`~${Math.ceil(t/6e4)} min`:`~${Math.ceil(t/1e3)} sec`,millisToRelativeTime=t=>{if(t>864e5){const d=Math.floor(t/864e5);return`~${d} ${d===1?"day":"days"} ago`}else if(t>36e5){const d=Math.floor(t/36e5);return`~${d} ${d===1?"hour":"hours"} ago`}else if(t>6e4){const d=Math.floor(t/6e4);return`~${d} ${d===1?"minute":"minutes"} ago`}else return"~1 minute ago"},formatDuration=t=>{if(t<60)return t===1?`${t} second`:`${t} seconds`;if(t<3600){const e=Math.floor(t/60);return e===1?`${e} minute`:`${e} minutes`}else{const e=Math.floor(t/3600);return e===1?`${e} hour`:`${e} hours`}};var TransferWallet=(t=>(t.SENDING="sending",t.RECEIVING="receiving",t))(TransferWallet||{});const walletConnection={sending:void 0,receiving:void 0},walletAcceptedChains=t=>t?config$1.chainsArr.filter(e=>e.context===t).map(e=>e.key):config$1.chainsArr.map(e=>e.key),setWalletConnection=(t,e)=>{walletConnection[t]=e},connectWallet=async(t,e,s,l)=>{const{wallet:d,name:u}=s;setWalletConnection(t,d);const p=config$1.chains[e];if(!p)throw new Error(`Unable to find wallets for chain ${e}`);const{chainId:m,context:y}=p;try{await d.connect({chainId:m})}catch(A){if(A.message&&A.message.toLowerCase().includes("rejected"))return console.info("User rejected wallet connection"),!1;throw A}config$1.triggerEvent({type:"wallet.connect",details:{side:t,chain:e,wallet:s.name.toLowerCase()}});const h=d.getAddress(),v={address:h,type:s.type,icon:d.getIcon(),name:d.getName()};return l(t==="sending"?connectWallet$1(v):connectReceivingWallet(v)),d.on("disconnect",()=>{d.removeAllListeners(),setTimeout(()=>{l(clearWallet(t))},0),localStorage.removeItem(`wormhole-connect:wallet:${y}`)}),d.on("accountsChanged",A=>{(A.length===0||A.length&&h&&A[0]!==h)&&d.disconnect()}),u!==ReadOnlyWallet.NAME&&localStorage.setItem(`wormhole-connect:wallet:${y}`,u),!0},connectLastUsedWallet=async(t,e,s)=>{const l=config$1.chains[e],d=`wormhole-connect:wallet:${l.context}`,u=localStorage.getItem(d);if(u&&u!=="WalletConnect"){const m=(await getWalletOptions(l)).find(y=>y.name===u);m&&(await connectWallet(t,e,m,s)||localStorage.removeItem(d))}},useConnectToLastUsedWallet=()=>{const t=useDispatch(),{toChain:e,fromChain:s}=useSelector(l=>l.transferInput);React$1.useEffect(()=>{s&&connectLastUsedWallet("sending",s,t),e&&connectLastUsedWallet("receiving",e,t)},[s,e])},swapWalletConnections=()=>{const t=walletConnection.sending;walletConnection.sending=walletConnection.receiving,walletConnection.receiving=t},registerWalletSigner=async(t,e)=>{const s=walletConnection[e];if(!s)throw new Error("must connect wallet");const l=await s.getSigner();config$1.whLegacy.registerSigner(t,l)},switchChain=async(t,e)=>{const s=walletConnection[e];if(!s)throw new Error("must connect wallet");const l=getChainByChainId(t);if(s.getNetworkInfo().chainId!==t){if(l.context===Context.ETH)try{await(await Promise.resolve().then(()=>require("./evm-2eC8tBb8.js")).then(p=>p.evm)).switchChain(s,t)}catch(u){if(u instanceof NotSupported)return;throw u}return s.getAddress()}},disconnect=async t=>{const e=walletConnection[t];e&&await e.disconnect()},signAndSendTransaction=async(t,e,s,l={})=>{const d=config$1.chains[t],u=walletConnection[s];if(!u)throw new Error("wallet is undefined");if(d.context===Context.ETH)return await(await Promise.resolve().then(()=>require("./evm-2eC8tBb8.js")).then(y=>y.evm)).signAndSendTransaction(e,u,t,l);if(d.context===Context.SOLANA)return await(await Promise.resolve().then(()=>require("./solana-C4lFmDk6.js"))).signAndSendTransaction(e,u,l);if(d.context===Context.SUI)return(await(await Promise.resolve().then(()=>require("./sui-DSbuDbhr.js"))).signAndSendTransaction(e,u)).id;if(d.context===Context.APTOS)return(await(await Promise.resolve().then(()=>require("./aptos-b5iDxSTg.js"))).signAndSendTransaction(e,u)).id;throw new Error("unimplemented")},getReady=t=>{const e=t.getWalletState();return e!==exports.WalletState.Unsupported&&e!==exports.WalletState.NotDetected},mapWallets=(t,e,s=[])=>Object.values(t).filter((l,d,u)=>d===u.findIndex(p=>p.getName()===l.getName())).filter(l=>!s.includes(l.getName())).map(l=>({wallet:l,type:e,name:l.getName(),icon:l.getIcon(),isReady:getReady(l)})),getWalletOptions=async t=>{if(t===void 0)return[];if(t.context===Context.ETH){const e=await Promise.resolve().then(()=>require("./evm-2eC8tBb8.js")).then(s=>s.evm);return Object.values(mapWallets(e.wallets,Context.ETH))}else if(t.context===Context.SOLANA){const s=(await Promise.resolve().then(()=>require("./solana-C4lFmDk6.js"))).fetchOptions();return Object.values(mapWallets(s,Context.SOLANA))}else if(t.context===Context.SUI){const s=await(await Promise.resolve().then(()=>require("./sui-DSbuDbhr.js"))).fetchOptions();return Object.values(mapWallets(s,Context.SUI))}else if(t.context===Context.APTOS){const s=(await Promise.resolve().then(()=>require("./aptos-b5iDxSTg.js"))).fetchOptions();return Object.values(mapWallets(s,Context.APTOS))}return[]};class SDKv2Signer{constructor(e,s,l,d,u){Ae(this,"_chain");Ae(this,"_chainContextV2");Ae(this,"_address");Ae(this,"_options");Ae(this,"_walletType");this._chain=e,this._chainContextV2=s,this._address=l,this._options=d,this._walletType=u}static async fromChain(e,s,l,d){const p=(await getWormholeContextV2()).getPlatform(chainToPlatform(e)).getChain(e);return new SDKv2Signer(e,p,s,l,d)}async signAndSend(e){const s=[];for(const l of e){const d=await signAndSendTransaction(this._chain,l,this._walletType,this._options);s.push(d)}return s}chain(){return this._chainContextV2.chain}address(){return this._address}}class SDKv2Route{constructor(e){Ae(this,"IS_TOKEN_BRIDGE_ROUTE",!1);this.rc=e,this.IS_TOKEN_BRIDGE_ROUTE=["ManualTokenBridge","AutomaticTokenBridge","CosmosGateway"].includes(e.meta.name)}get AUTOMATIC_DEPOSIT(){return this.rc.IS_AUTOMATIC}get NATIVE_GAS_DROPOFF_SUPPORTED(){return this.rc.NATIVE_GAS_DROPOFF_SUPPORTED}async getV2ChainContext(e){const l=(await getWormholeContextV2()).getPlatform(chainToPlatform(e)).getChain(e);return{chain:e,context:l}}async isRouteSupported(e,s,l,d){const u=await this.getV2ChainContext(l),p=await this.getV2ChainContext(d),m=this.rc.supportedChains(config$1.network),y=m.includes(u.chain),h=m.includes(p.chain);if(this.IS_TOKEN_BRIDGE_ROUTE&&await isNttSupportedToken(e,u.context,p.context))return!1;const A=!!(await this.rc.supportedDestinationTokens(e,u.context,p.context)).find(I=>isSameToken(I,s));return y&&h&&A}isSupportedChain(e){return this.rc.supportedChains(config$1.network).includes(e)}async supportedDestTokens(e,s,l){if(!s||!l||!e)return[];if(this.IS_TOKEN_BRIDGE_ROUTE&&this.isIlliquidDestToken(e,l))return[];const d=await this.getV2ChainContext(s),u=await this.getV2ChainContext(l);return await this.rc.supportedDestinationTokens(e.tokenId,d.context,u.context)}async getQuote(e,s,l,d,u,p){const m=await this.createRequest(s,l,d,u),y=await getWormholeContextV2(),h=new this.rc(y),v=await h.validate(m,{amount:display(e),options:p});if(!v.valid)throw v.error;const A=await h.quote(m,v.params);return[h,A,m]}async createRequest(e,s,l,d){const u=(await this.getV2ChainContext(l)).context,p=(await this.getV2ChainContext(d)).context,m=await getWormholeContextV2();return await RouteTransferRequest.create(m,{source:e.tokenId,destination:s.tokenId},u,p)}async computeReceiveAmount(e,s,l,d,u,p){if(!d||!u)throw new Error("Need both chains to get a quote from SDKv2");const[,m]=await this.getQuote(e,s,l,d,u,p);if(m.success)return m.destinationToken.amount;throw m.error}async computeQuote(e,s,l,d,u,p){if(!d||!u)throw new Error("Need both chains to get a quote from SDKv2");const[,m]=await this.getQuote(e,s,l,d,u,p);if(!m.success)throw m.error;return m}async send(e,s,l,d,u,p,m,y){const[h,v,A]=await this.getQuote(s,e,m,l,u,y);if(!v.success)throw v.error;const w=await SDKv2Signer.fromChain(l,d,{},TransferWallet.SENDING);let I=await h.initiate(A,w,v,Wormhole.chainAddress(u,p));if(I.state===TransferState.SourceInitiated||I.state===TransferState.SourceFinalized)return[h,I];let k=0;const $=5,P=1e3;for(;k<$;)try{for await(I of h.track(I,120*1e3))if(I.state>=TransferState.SourceInitiated)return[h,I]}catch(z){console.error(`Error tracking transfer (attempt ${k+1} / ${$}):`,z);const U=P*Math.pow(2,k);await sleep(U),k++}throw new Error("Never got a SourceInitiated state in receipt")}async resumeIfManual(e){const s=await getWormholeContextV2(),l=new this.rc(s);return isManual(l)||isFinalizable(l)?l.resume(e):null}isIlliquidDestToken(e,s){const{symbol:l,nativeChain:d}=e;return!!(isFrankensteinToken(e,s)||["ETH","WETH"].includes(l)&&d==="Ethereum"&&["Scroll","Blast","Xlayer","Mantle","Unichain"].includes(s))}}const isNttSupportedToken=async(t,e,s)=>{const l=async m=>{const y=config$1.routes.get(m);return y?(await y.rc.supportedDestinationTokens(t,e,s)).length>0:!1},[d,u,p]=await Promise.all([l("ManualNtt"),l("AutomaticNtt"),l("M0AutomaticRoute")]);return d||u||p};var NttRoute;(function(t){t.TRIMMED_DECIMALS=8,t.ManualOptions={automatic:!1},t.AutomaticOptions={automatic:!0,gasDropoff:"0.0"};function e(h){return["Mainnet","Testnet"]}t.resolveSupportedNetworks=e;function s(h,v){return Object.values(h.tokens).flatMap(w=>w.map(I=>I.chain))}t.resolveSupportedChains=s;function l(h,v){return Object.entries(h.tokens).map(([,w])=>{const I=w.find(k=>k.chain===v.chain);return I?Wormhole.tokenId(v.chain,I.token):null}).filter(w=>!!w)}t.resolveSourceTokens=l;function d(h,v,A,w){return Object.entries(h.tokens).map(([,I])=>{if(!I.find(P=>P.chain===A.chain&&P.token.toLowerCase()===canonicalAddress(v).toLowerCase()))return;const $=I.find(P=>P.chain===w.chain);if($)return Wormhole.tokenId(w.chain,$.token)}).filter(I=>!!I)}t.resolveDestinationTokens=d;function u(h,v){const A=Object.values(h.tokens),w=canonicalAddress(v);for(const I of A){const k=I.find($=>$.token.toLowerCase()===w.toLowerCase()&&$.chain===v.chain);if(k)return{token:k.token,manager:k.manager,transceiver:{wormhole:k.transceiver.find($=>$.type==="wormhole").address},quoter:k.quoter}}throw new Error("Cannot find Ntt contracts in config for: "+w)}t.resolveNttContracts=u;function p(h,v,A){const w=Object.values(h.tokens),I=canonicalAddress(v);for(const k of w)if(k.find(P=>P.manager.toLowerCase()===I.toLowerCase()&&P.chain===v.chain)){const P=k.find(z=>z.chain===A);if(!P)throw new Error(`Cannot find destination Ntt contracts in config for: ${I}`);return{token:P.token,manager:P.manager,transceiver:{wormhole:P.transceiver.find(z=>z.type==="wormhole").address},quoter:P.quoter}}throw new Error("Cannot find Ntt contracts in config for: "+I)}t.resolveDestinationNttContracts=p;function m(h,v){const A=v*95n/100n;return h>A}t.isCapacityThresholdExceeded=m;function y(h,v){return truncate(h,Math.min(h.decimals,v,t.TRIMMED_DECIMALS))}t.trimAmount=y})(NttRoute||(NttRoute={}));const nttManagerMessageLayout=t=>[{name:"id",binary:"bytes",size:32},{name:"sender",...universalAddressItem},customizableBytes({name:"payload",lengthSize:2},t)],prefixItem=t=>({name:"prefix",binary:"bytes",custom:Uint8Array.from(t),omit:!0}),transceiverMessageLayout=(t,e,s)=>[prefixItem(t),{name:"sourceNttManager",...universalAddressItem},{name:"recipientNttManager",...universalAddressItem},customizableBytes({name:"nttManagerPayload",lengthSize:2},e),customizableBytes({name:"transceiverPayload",lengthSize:2},s)],transceiverInfo=[prefixItem([156,35,189,59]),{name:"managerAddress",...universalAddressItem},{name:"mode",binary:"uint",size:1},{name:"token",...universalAddressItem},{name:"decimals",binary:"uint",size:1}],transceiverRegistration=[prefixItem([24,252,103,194]),{name:"chain",...chainItem()},{name:"transceiver",...universalAddressItem}],trimmedAmountLayout=[{name:"decimals",binary:"uint",size:1},{name:"amount",binary:"uint",size:8}],trimmedAmountItem={binary:"bytes",layout:trimmedAmountLayout};function deserializeNum(t,e){let s=0n;for(let l=0;l<e;++l)s|=BigInt(t[l])<<BigInt(8*(e-l-1));return Number(s)}function serializeNum(t,e){const s=2n**BigInt(e*8);if(t>=s)throw new Error(`Value ${t} is too large for ${e} bytes`);const l=new Uint8Array(e);for(let d=0;d<e;++d)l[d]=Number(BigInt(t)>>BigInt(8*(e-d-1))&0xffn);return l}const optionalAdditionalPayloadItem={binary:"bytes",custom:{to:t=>{if(t.byteLength>=2){const e=deserializeNum(t,2);return t.slice(2,2+e)}return new Uint8Array},from:t=>t.byteLength>0?new Uint8Array([...serializeNum(t.byteLength,2),...t]):new Uint8Array}},nativeTokenTransferLayout=[prefixItem([153,78,84,84]),{name:"trimmedAmount",...trimmedAmountItem},{name:"sourceToken",...universalAddressItem},{name:"recipientAddress",...universalAddressItem},{name:"recipientChain",...chainItem()},{name:"additionalPayload",...optionalAdditionalPayloadItem}],wormholeTransceiverMessageLayout=t=>transceiverMessageLayout([153,69,255,16],t,new Uint8Array(0)),transceiverInstructionLayout=t=>[{name:"index",binary:"uint",size:1},customizableBytes({name:"payload",lengthSize:1},t)],nttNamedPayloads=[["WormholeTransfer",wormholeTransceiverMessageLayout(nttManagerMessageLayout(nativeTokenTransferLayout))],["WormholeTransferStandardRelayer",deliveryInstructionLayout(wormholeTransceiverMessageLayout(nttManagerMessageLayout(nativeTokenTransferLayout)))],["TransceiverInfo",transceiverInfo],["TransceiverRegistration",transceiverRegistration]];var Ntt;(function(t){function e(d){if(d.length>255)throw new Error(`Too many instructions (${d.length})`);return bytes$1.concat(new Uint8Array([d.length]),...d.map(u=>serialize$2(transceiverInstructionLayout(),u)))}t.encodeTransceiverInstructions=e;function s(d,u){return keccak_256(bytes$1.concat(bignum.toBytes(toChainId(d),2),serialize$2(nttManagerMessageLayout(nativeTokenTransferLayout),u)))}t.messageDigest=s;function l(d,u){const p=A=>{const w=/^(\d+)\.(\d+)\.(.*)$/,I=A.match(w);if(!I)throw new Error(`Invalid version format: ${A}`);const[,k,$,P]=I;return{major:Number(k),minor:Number($),patchAndTag:P}},{major:m,minor:y}=p(d),{major:h,minor:v}=p(u);return m===h&&y>=v}t.abiVersionMatches=l})(Ntt||(Ntt={}));registerPayloadTypes("Ntt",nttNamedPayloads);function nttManualRoute(t){class e extends NttManualRoute{}return Ae(e,"config",t),e}class NttManualRoute extends FinalizableRoute{constructor(){super(...arguments);Ae(this,"staticConfig",this.constructor.config)}static supportedNetworks(){return NttRoute.resolveSupportedNetworks(this.config)}static supportedChains(s){return NttRoute.resolveSupportedChains(this.config,s)}static async supportedSourceTokens(s){return NttRoute.resolveSourceTokens(this.config,s)}static async supportedDestinationTokens(s,l,d){return NttRoute.resolveDestinationTokens(this.config,s,l,d)}static isProtocolSupported(s){return s.supportsProtocol("Ntt")}getDefaultOptions(){return NttRoute.ManualOptions}async validate(s,l){const d=l.options??this.getDefaultOptions(),u=parse$5(l.amount,s.source.decimals),p=NttRoute.trimAmount(u,s.destination.decimals),m=units(parse$5(d.gasDropoff??"0.0",s.toChain.config.nativeTokenDecimals));return{valid:!0,params:{amount:l.amount,normalizedParams:{amount:p,sourceContracts:NttRoute.resolveNttContracts(this.staticConfig,s.source.id),destinationContracts:NttRoute.resolveNttContracts(this.staticConfig,s.destination.id),options:{queue:!1,automatic:!1,gasDropoff:m}},options:d}}}async quote(s,l){const d=scale$1(l.normalizedParams.amount,s.destination.decimals),u={success:!0,params:l,sourceToken:{token:s.source.id,amount:l.normalizedParams.amount},destinationToken:{token:s.destination.id,amount:d},eta:estimateFinalityTime(s.fromChain.chain)},{fromChain:p,toChain:m}=s,y=await m.getProtocol("Ntt",{ntt:l.normalizedParams.destinationContracts}),h=await y.getRateLimitDuration();if(h>0n){const v=await y.getCurrentInboundCapacity(p.chain);NttRoute.isCapacityThresholdExceeded(units(d),v)&&(u.warnings=[{type:"DestinationCapacityWarning",delayDurationSec:Number(h)}])}return u}async initiate(s,l,d,u){const{params:p}=d,{fromChain:m}=s,y=Wormhole.parseAddress(l.chain(),l.address()),v=(await m.getProtocol("Ntt",{ntt:p.normalizedParams.sourceContracts})).transfer(y,units(p.normalizedParams.amount),u,p.normalizedParams.options),A=await signSendWait(m,v,l);return{from:m.chain,to:u.chain,state:TransferState.SourceInitiated,originTxs:A,params:p}}async complete(s,l){if(!isAttested(l)){if(isRedeemed(l))return l;throw new Error("The source must be finalized in order to complete the transfer")}const d=this.wh.getChain(l.to),u=await d.getProtocol("Ntt",{ntt:l.params.normalizedParams.destinationContracts}),p=Wormhole.parseAddress(s.chain(),s.address()),m=u.redeem([l.attestation.attestation],p),y=await signSendWait(d,m,s);return{...l,state:TransferState.DestinationInitiated,destinationTxs:y}}async resume(s){const l=await this.wh.getVaa(s.txid,"Ntt:WormholeTransfer");if(!l)throw new Error("No VAA found for transaction: "+s.txid);const d={chain:l.emitterChain,emitter:l.emitterAddress,sequence:l.sequence},{recipientChain:u,trimmedAmount:p}=l.payload.nttManagerPayload.payload,m=canonicalAddress({chain:l.emitterChain,address:l.payload.nttManagerPayload.payload.sourceToken}),y=canonicalAddress({chain:l.emitterChain,address:l.payload.sourceNttManager}),h=l.emitterChain==="Solana"?y:canonicalAddress({chain:l.emitterChain,address:l.emitterAddress}),v=NttRoute.resolveDestinationNttContracts(this.staticConfig,{chain:l.emitterChain,address:l.payload.sourceNttManager},u),A=fromBaseUnits(p.amount,p.decimals);return{from:l.emitterChain,to:u,state:TransferState.Attested,originTxs:[s],attestation:{id:d,attestation:l},params:{amount:display(A),options:{automatic:!1},normalizedParams:{amount:A,options:{queue:!1},sourceContracts:{token:m,manager:y,transceiver:{wormhole:h}},destinationContracts:{token:v.token,manager:v.manager,transceiver:{wormhole:v.transceiver.wormhole}}}}}}async finalize(s,l){if(!isDestinationQueued(l))throw new Error("The transfer must be destination queued in order to finalize");const{attestation:{attestation:d}}=l,u=this.wh.getChain(l.to),p=await u.getProtocol("Ntt",{ntt:l.params.normalizedParams.destinationContracts}),m=Wormhole.chainAddress(s.chain(),s.address()),y=p.completeInboundQueuedTransfer(l.from,d.payload.nttManagerPayload,m.address),h=await signSendWait(u,y,s);return{...l,state:TransferState.DestinationFinalized,destinationTxs:[...l.destinationTxs??[],...h]}}async*track(s,l){if(isSourceInitiated(s)||isSourceFinalized(s)){const{txid:p}=s.originTxs[s.originTxs.length-1],m=await this.wh.getVaa(p,"Ntt:WormholeTransfer",l);if(!m)throw new Error("No VAA found for transaction: "+p);const y={chain:m.emitterChain,emitter:m.emitterAddress,sequence:m.sequence};s={...s,state:TransferState.Attested,attestation:{id:y,attestation:m}},yield s}const u=await this.wh.getChain(s.to).getProtocol("Ntt",{ntt:s.params.normalizedParams.destinationContracts});if(isAttested(s)){const{attestation:{attestation:p}}=s;await u.getIsApproved(p)&&(s={...s,state:TransferState.DestinationInitiated},yield s)}if(isRedeemed(s)||isDestinationQueued(s)){const{attestation:{attestation:p}}=s,m=await u.getInboundQueuedTransfer(p.emitterChain,p.payload.nttManagerPayload);m!==null?(s={...s,state:TransferState.DestinationQueued,queueReleaseTime:new Date(m.rateLimitExpiryTimestamp*1e3)},yield s):await u.getIsExecuted(p)&&(s={...s,state:TransferState.DestinationFinalized},yield s)}yield s}}Ae(NttManualRoute,"NATIVE_GAS_DROPOFF_SUPPORTED",!1),Ae(NttManualRoute,"IS_AUTOMATIC",!1),Ae(NttManualRoute,"config",{tokens:{}}),Ae(NttManualRoute,"meta",{name:"ManualNtt"});function nttAutomaticRoute(t){class e extends NttAutomaticRoute{}return Ae(e,"config",t),e}class NttAutomaticRoute extends AutomaticRoute{constructor(){super(...arguments);Ae(this,"staticConfig",this.constructor.config)}static supportedNetworks(){return NttRoute.resolveSupportedNetworks(this.config)}static supportedChains(s){return NttRoute.resolveSupportedChains(this.config,s)}static async supportedSourceTokens(s){return NttRoute.resolveSourceTokens(this.config,s)}static async supportedDestinationTokens(s,l,d){return NttRoute.resolveDestinationTokens(this.config,s,l,d)}static isProtocolSupported(s){return s.supportsProtocol("Ntt")}getDefaultOptions(){return NttRoute.AutomaticOptions}async isAvailable(s){const l=NttRoute.resolveNttContracts(this.staticConfig,s.source.id);return(await s.fromChain.getProtocol("Ntt",{ntt:l})).isRelayingAvailable(s.toChain.chain)}async validate(s,l){const d=l.options??this.getDefaultOptions(),u=parse$5(d.gasDropoff??"0.0",s.toChain.config.nativeTokenDecimals),p=parse$5(l.amount,s.source.decimals),m=NttRoute.trimAmount(p,s.destination.decimals);return{valid:!0,params:{amount:l.amount,normalizedParams:{amount:m,sourceContracts:NttRoute.resolveNttContracts(this.staticConfig,s.source.id),destinationContracts:NttRoute.resolveNttContracts(this.staticConfig,s.destination.id),options:{queue:!1,automatic:!0,gasDropoff:units(u)}},options:d}}}async quote(s,l){const{fromChain:d,toChain:u}=s,p=await d.getProtocol("Ntt",{ntt:l.normalizedParams.sourceContracts});if(!await p.isRelayingAvailable(u.chain))return{success:!1,error:new Error(`Relaying to chain ${u.chain} is not available`)};const m=await p.quoteDeliveryPrice(u.chain,l.normalizedParams.options),y=scale$1(l.normalizedParams.amount,s.destination.decimals),h={success:!0,params:l,sourceToken:{token:s.source.id,amount:l.normalizedParams.amount},destinationToken:{token:s.destination.id,amount:y},relayFee:{token:Wormhole.tokenId(d.chain,"native"),amount:fromBaseUnits(m,d.config.nativeTokenDecimals)},destinationNativeGas:fromBaseUnits(l.normalizedParams.options.gasDropoff??0n,u.config.nativeTokenDecimals),eta:estimateFinalityTime(s.fromChain.chain)},v=await u.getProtocol("Ntt",{ntt:l.normalizedParams.destinationContracts}),A=await v.getRateLimitDuration();if(A>0n){const w=await v.getCurrentInboundCapacity(d.chain);NttRoute.isCapacityThresholdExceeded(units(y),w)&&(h.warnings=[{type:"DestinationCapacityWarning",delayDurationSec:Number(A)}])}return h}async initiate(s,l,d,u){const{params:p}=d,{fromChain:m}=s,y=Wormhole.parseAddress(l.chain(),l.address()),v=(await m.getProtocol("Ntt",{ntt:p.normalizedParams.sourceContracts})).transfer(y,units(p.normalizedParams.amount),u,p.normalizedParams.options),A=await signSendWait(m,v,l);return{from:m.chain,to:u.chain,state:TransferState.SourceInitiated,originTxs:A,params:p}}async resume(s){const l=await this.wh.getVaa(s.txid,"Ntt:WormholeTransferStandardRelayer");if(!l)throw new Error("No VAA found for transaction: "+s.txid);const d={chain:l.emitterChain,emitter:l.emitterAddress,sequence:l.sequence},{payload:u}=l.payload,{recipientChain:p,trimmedAmount:m}=u.nttManagerPayload.payload,y=canonicalAddress({chain:l.emitterChain,address:u.nttManagerPayload.payload.sourceToken}),h=canonicalAddress({chain:l.emitterChain,address:u.sourceNttManager}),v=l.emitterChain==="Solana"?h:canonicalAddress({chain:l.emitterChain,address:l.emitterAddress}),A=NttRoute.resolveDestinationNttContracts(this.staticConfig,{chain:l.emitterChain,address:u.sourceNttManager},p),w=fromBaseUnits(m.amount,m.decimals);return{from:l.emitterChain,to:p,state:TransferState.Attested,originTxs:[s],attestation:{id:d,attestation:l},params:{amount:display(w),options:{automatic:!0},normalizedParams:{amount:w,options:{queue:!1,automatic:!0},sourceContracts:{token:y,manager:h,transceiver:{wormhole:v}},destinationContracts:{token:A.token,manager:A.manager,transceiver:{wormhole:A.transceiver.wormhole}}}}}}async finalize(s,l){if(!isDestinationQueued(l))throw new Error("The transfer must be destination queued in order to finalize");const{attestation:{attestation:d}}=l,u=this.wh.getChain(l.to),p=await u.getProtocol("Ntt",{ntt:l.params.normalizedParams.destinationContracts}),m=Wormhole.chainAddress(s.chain(),s.address()),y=d.payloadName==="WormholeTransfer"?d.payload:d.payload.payload,h=p.completeInboundQueuedTransfer(l.from,y.nttManagerPayload,m.address),v=await signSendWait(u,h,s);return{...l,state:TransferState.DestinationFinalized,destinationTxs:[...l.destinationTxs??[],...v]}}async*track(s,l){if(isSourceInitiated(s)||isSourceFinalized(s)){const{txid:p}=s.originTxs[s.originTxs.length-1],m=A=>chainToPlatform(A)==="Evm",y=m(s.from)&&m(s.to)?"Ntt:WormholeTransferStandardRelayer":"Ntt:WormholeTransfer",h=await this.wh.getVaa(p,y,l);if(!h)throw new Error(`No VAA found for transaction: ${p}`);const v={chain:h.emitterChain,emitter:h.emitterAddress,sequence:h.sequence};s={...s,state:TransferState.Attested,attestation:{id:v,attestation:h}},yield s}const u=await this.wh.getChain(s.to).getProtocol("Ntt",{ntt:s.params.normalizedParams.destinationContracts});if(isAttested(s)){const{attestation:{attestation:p}}=s;await u.getIsApproved(p)&&(s={...s,state:TransferState.DestinationInitiated},yield s)}if(isRedeemed(s)||isDestinationQueued(s)){const{attestation:{attestation:p}}=s,m=p.payloadName==="WormholeTransfer"?p.payload:p.payload.payload,y=await u.getInboundQueuedTransfer(p.emitterChain,m.nttManagerPayload);y!==null?(s={...s,state:TransferState.DestinationQueued,queueReleaseTime:new Date(y.rateLimitExpiryTimestamp*1e3)},yield s):await u.getIsExecuted(p)&&(s={...s,state:TransferState.DestinationFinalized},yield s)}yield s}}Ae(NttAutomaticRoute,"NATIVE_GAS_DROPOFF_SUPPORTED",!1),Ae(NttAutomaticRoute,"config",{tokens:{}}),Ae(NttAutomaticRoute,"meta",{name:"AutomaticNtt"});class EvmUnsignedTransaction{constructor(e,s,l,d,u=!1){Ae(this,"transaction");Ae(this,"network");Ae(this,"chain");Ae(this,"description");Ae(this,"parallelizable");this.transaction=e,this.network=s,this.chain=l,this.description=d,this.parallelizable=u}}const _abi$7=[{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:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{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:[{internalType:"address",name:"account_",type:"address"},{internalType:"uint256",name:"amount_",type:"uint256"}],name:"burn",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint16",name:"",type:"uint16"}],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:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"domainFields",type:"bytes1"},{internalType:"string",name:"domainName",type:"string"},{internalType:"string",name:"domainVersion",type:"string"},{internalType:"uint256",name:"domainChainId",type:"uint256"},{internalType:"address",name:"domainVerifyingContract",type:"address"},{internalType:"bytes32",name:"domainSalt",type:"bytes32"},{internalType:"uint256[]",name:"domainExtensions",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:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"},{internalType:"uint8",name:"decimals_",type:"uint8"},{internalType:"uint64",name:"sequence_",type:"uint64"},{internalType:"address",name:"owner_",type:"address"},{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"bytes32",name:"nativeContract_",type:"bytes32"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"},{internalType:"uint256",name:"amount_",type:"uint256"}],name:"mint",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"nativeContract",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner_",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner_",type:"address"},{internalType:"address",name:"spender_",type:"address"},{internalType:"uint256",name:"value_",type:"uint256"},{internalType:"uint256",name:"deadline_",type:"uint256"},{internalType:"uint8",name:"v_",type:"uint8"},{internalType:"bytes32",name:"r_",type:"bytes32"},{internalType:"bytes32",name:"s_",type:"bytes32"}],name:"permit",outputs:[],stateMutability:"nonpayable",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:"recipient_",type:"address"},{internalType:"uint256",name:"amount_",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"sender_",type:"address"},{internalType:"address",name:"recipient_",type:"address"},{internalType:"uint256",name:"amount_",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"},{internalType:"uint64",name:"sequence_",type:"uint64"}],name:"updateDetails",outputs:[],stateMutability:"nonpayable",type:"function"}],_bytecode$7="0x6080806040523461001657611af2908161001c8239f35b600080fdfe6040608081526004908136101561001557600080fd5b600091823560e01c90816306fdde0314611136578163095ea7b31461110c57816318160ddd146110ed57816323b872dd14611026578163313ce567146110055781633644e51514610fe15781633950935114610f985781633d6c043b14610f7957816340c10f1914610ea157816370a0823114610e695781637ecebe0014610e3157816384b0196e14610d575781638da5cb5b14610d2e57816395d89b4114610c595781639a8a059214610c335781639dc29fac14610af1578163a18cd7c6146107bf578163a457c2d71461070f578163a9059cbb146106de578163c71f461514610335578163d505accf14610160575063dd62ed3e1461011557600080fd5b3461015c578060031936011261015c57806020926101316111af565b6101396111ca565b6001600160a01b0391821683526006865283832091168252845220549051908152f35b5080fd5b8391503461015c5760e036600319011261015c5761017c6111af565b6101846111ca565b906044359260643560843560ff81168103610331576101a16112e1565b8142116102ee5760018060a01b039081851692838952600e602052898920908154916001830190558a519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98452868d840152858a1660608401528a608084015260a083015260c082015260c0815261021e81611212565b519020610229611798565b918a5191602083019361190160f01b855260228401526042830152604282526080820182811067ffffffffffffffff8211176102db5791610283939161027b938d5260c4359260a435925190206119c7565b919091611855565b160361029857506102959394506115e0565b80f35b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b634e487b7160e01b8b526041875260248bfd5b875162461bcd60e51b8152602081850152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8680fd5b9050346106da5760e03660031901126106da5767ffffffffffffffff81358181116106d6576103679036908401611250565b916024358281116106d25761037f9036908301611250565b6044359060ff821680920361033157606435938085168095036106ce576084356001600160a01b03811696908790036106ca5760a4359761ffff891689036106c6576007549060ff8260a01c1661068e575060ff60a01b1916600160a01b17600755805182811161067b57806103f58b546112a7565b92601f93848111610622575b506020908483116001146105b3578c926105a8575b50508160011b916000199060031b1c19161789555b825191821161059557819060019361044385546112a7565b828111610538575b5060209183116001146104cd578a926104c2575b5050600019600383901b1c191690821b1790555b60ff1982541617905567ffffffffffffffff1960025416176002556007549161ffff60a81b9060a81b16916bffffffffffffffffff0000ff60a01b16171760075560c4356008556102956112e1565b01519050388061045f565b848b52849350600080516020611a9d8339815191529190601f1984168c5b81811061052057508411610507575b505050811b019055610473565b015160001960f88460031b161c191690553880806104fa565b828401518555879690940193602093840193016104eb565b90919250848b52600080516020611a9d8339815191528380860160051c8201926020871061058c575b91869588929594930160051c01915b82811061057e57505061044b565b8d8155869550879101610570565b92508192610561565b634e487b7160e01b895260418552602489fd5b015190503880610416565b8c8052600080516020611a7d8339815191529250601f1984168d5b81811061060a57509084600195949392106105f1575b505050811b01895561042b565b015160001960f88460031b161c191690553880806105e4565b929360206001819287860151815501950193016105ce565b9091508b8052600080516020611a7d8339815191528480850160051c82019260208610610672575b9085949392910160051c01905b8181106106645750610401565b8d8155849350600101610657565b9250819261064a565b634e487b7160e01b8a526041865260248afd5b5162461bcd60e51b81526020818801526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b8980fd5b8880fd5b8780fd5b8580fd5b8480fd5b8280fd5b50503461015c578060031936011261015c576020906107086106fe6111af565b6024359033611416565b5160018152f35b905082346107bc57826003193601126107bc5761072a6111af565b918360243592338152600660205281812060018060a01b038616825260205220549082821061076b576020856107088661076487876113e6565b90336115e0565b608490602086519162461bcd60e51b8352820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152fd5b80fd5b83833461015c57606036600319011261015c5767ffffffffffffffff928035848111610aed576107f29036908301611250565b936024358181116106d65761080a9036908401611250565b91604435938285168095036106d25761082e60018060a01b03600754163314611594565b8483600254161015610aaa57508551828111610a97578061084f87546112a7565b97601f98898111610a3e575b506020908983116001146109cf5788926109c4575b50508160011b916000199060031b1c19161785555b82519182116109b1575060019161089c83546112a7565b868111610961575b5060209582116001146108f75794849582939495926108ec575b5050600019600383901b1c191690821b1790555b67ffffffffffffffff1960025416176002556102956112e1565b0151905085806108be565b828552601f19821695600080516020611a9d83398151915291865b88811061094b5750838596979810610932575b505050811b0190556108d2565b015160001960f88460031b161c19169055858080610925565b8183015184559285019260209283019201610912565b838652600080516020611a9d8339815191528780850160051c820192602086106109a8575b0160051c019084905b82811061099d5750506108a4565b87815501849061098f565b92508192610986565b634e487b7160e01b855260419052602484fd5b015190508880610870565b888052600080516020611a7d8339815191529250601f198416895b818110610a265750908460019594939210610a0d575b505050811b018555610885565b015160001960f88460031b161c19169055888080610a00565b929360206001819287860151815501950193016109ea565b909150878052600080516020611a7d8339815191528980850160051c82019260208610610a8e575b9085949392910160051c01905b818110610a80575061085b565b898155849350600101610a73565b92508192610a66565b634e487b7160e01b865260418252602486fd5b906020606492519162461bcd60e51b8352820152601e60248201527f63757272656e74206d6574616461746120697320757020746f206461746500006044820152fd5b8380fd5b8391503461015c578260031936011261015c57610b0c6111af565b600754602435916001600160a01b0391610b299083163314611594565b16918215610be65782845260056020528484205490828210610b985750818495610b767fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef946020946113e6565b8587526005845281872055610b8d826003546113e6565b60035551908152a380f35b608490602087519162461bcd60e51b8352820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152fd5b608490602086519162461bcd60e51b8352820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152fd5b50503461015c578160031936011261015c5760209061ffff60075460a81c169051908152f35b50503461015c578160031936011261015c57805190826001805491610c7d836112a7565b80865292828116908115610d065750600114610cbc575b505050610ca682610cb894038361122e565b5191829160208352602083019061118a565b0390f35b9450808552600080516020611a9d8339815191525b828610610cee57505050610ca6826020610cb89582010194610c94565b80546020878701810191909152909501948101610cd1565b610cb8975086935060209250610ca694915060ff191682840152151560051b82010194610c94565b50503461015c578160031936011261015c5760075490516001600160a01b039091168152602090f35b9050346106da57826003193601126106da57610d7161133d565b918051610d7d816111e0565b600194858252602091603160f81b83820152610d97611810565b938051918483019683881067ffffffffffffffff8911176109b1575093879592610dee838b978a859652878452610de182519a601f60f81b8c5260e0878d015260e08c019061118a565b918a8303908b015261118a565b9346606089015230608089015260a088015286840360c088015251928381520195925b828110610e1e5785870386f35b8351875295810195928101928401610e11565b50503461015c57602036600319011261015c5760209181906001600160a01b03610e596111af565b168152600e845220549051908152f35b50503461015c57602036600319011261015c5760209181906001600160a01b03610e916111af565b1681526005845220549051908152f35b919050346106da57806003193601126106da57610ebc6111af565b60075460243592916001600160a01b0391610eda9083163314611594565b16928315610f3757506020827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92610f158795600354611409565b60035585855260058352808520610f2d838254611409565b905551908152a380f35b6020606492519162461bcd60e51b8352820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b50503461015c578160031936011261015c576020906008549051908152f35b50503461015c578060031936011261015c57610708602092610764610fbb6111af565b338352600686528483206001600160a01b03821684528652918490205460243590611409565b50503461015c578160031936011261015c57602090610ffe611798565b9051908152f35b8284346107bc57806003193601126107bc575060ff60209254169051908152f35b905082346107bc5760603660031901126107bc576110426111af565b918361104c6111ca565b9261105b604435809587611416565b6001600160a01b0385168152600660209081528282203383529052205490828210611099576020856107088661109187876113e6565b9033906115e0565b608490602086519162461bcd60e51b8352820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152fd5b50503461015c578160031936011261015c576020906003549051908152f35b50503461015c578060031936011261015c5760209061070861112c6111af565b60243590336115e0565b50503461015c578160031936011261015c57610cb89061115461133d565b905191829160208352602083019061118a565b60005b83811061117a5750506000910152565b818101518382015260200161116a565b906020916111a381518092818552858086019101611167565b601f01601f1916010190565b600435906001600160a01b03821682036111c557565b600080fd5b602435906001600160a01b03821682036111c557565b6040810190811067ffffffffffffffff8211176111fc57604052565b634e487b7160e01b600052604160045260246000fd5b60e0810190811067ffffffffffffffff8211176111fc57604052565b90601f8019910116810190811067ffffffffffffffff8211176111fc57604052565b81601f820112156111c55780359067ffffffffffffffff82116111fc5760405192611285601f8401601f19166020018561122e565b828452602083830101116111c557816000926020809301838601378301015290565b90600182811c921680156112d7575b60208310146112c157565b634e487b7160e01b600052602260045260246000fd5b91607f16916112b6565b6112e96117de565b6112f1611810565b81600d5414801590611331575b611306575050565b46600a55600b80546001600160a01b0319163017905561132681836116e2565b600955600c55600d55565b5080600c5414156112fe565b60405190600082815491611350836112a7565b808352926001908181169081156113c45750600114611379575b506113779250038361122e565b565b60008080529150600080516020611a7d8339815191525b8483106113a9575061137793505081016020013861136a565b81935090816020925483858a01015201910190918592611390565b90506020925061137794915060ff191682840152151560051b8201013861136a565b919082039182116113f357565b634e487b7160e01b600052601160045260246000fd5b919082018092116113f357565b6001600160a01b0390811691821561154157169182156114f0576000828152600560205260408120549180831061149c576040602092611477837fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef966113e6565b868252600585528282205586815220611491828254611409565b9055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561159b57565b60405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606490fd5b6001600160a01b0390811691821561169157169182156116415760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260068252604060002085600052825280604060002055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b90604051906116f0826111e0565b600191828152602092603160f81b84830152604051918460005b83811061178457505050600060218301528152611726816111e0565b828151910120604051928301937fd87cd6ef79d4e2b95e15ce8abf732db51ec771f1ca2edccf22a46c729ac564728552604084015260608301524660808301523060a083015260c082015260c0815261177e81611212565b51902090565b81818401015182828701015201859061170a565b600b546001600160a01b03163014806117d3575b156117b75760095490565b6117d06117c26117de565b6117ca611810565b906116e2565b90565b50600a5446146117ac565b6117e661133d565b60405161177e602082816118038183019687815193849201611167565b810103808452018261122e565b60075460085460405190602082019261ffff60f01b9060481b1683526022820152602281526060810181811067ffffffffffffffff8211176111fc5760405251902090565b60058110156119b157806118665750565b600181036118b35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b600281036119005760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600381036119585760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b60041461196157565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608490fd5b634e487b7160e01b600052602160045260246000fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311611a705760ff16601b81141580611a65575b611a59579160809493916020936040519384528484015260408301526060820152600093849182805260015afa15611a4c5781516001600160a01b03811615611a46579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600490565b50601c8114156119ff565b5050505060009060039056fe290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6a26469706673582212209c2a6ab851b98b79f450a0f6c6580132088da5913ef53a145eab9f7b320248f664736f6c63430008130033",isSuperArgs$7=t=>t.length>1;class TokenImplementation__factory extends ContractFactory{constructor(...e){isSuperArgs$7(e)?super(...e):super(_abi$7,_bytecode$7,e[0])}getDeployTransaction(e){return super.getDeployTransaction(e||{})}deploy(e){return super.deploy(e||{})}connect(e){return super.connect(e)}static createInterface(){return new Interface(_abi$7)}static connect(e,s){return new Contract(e,_abi$7,s)}}Ae(TokenImplementation__factory,"bytecode",_bytecode$7),Ae(TokenImplementation__factory,"abi",_abi$7);class EvmChain extends ChainContext{}const Er=class Er extends PlatformContext{constructor(e,s){super(e,s??networkPlatformConfigs(e,Er._platform))}getRpc(e){if(e in this.config&&this.config[e].rpc)return new JsonRpcProvider$1(this.config[e].rpc);throw new Error("No configuration available for chain: "+e)}getChain(e,s){if(e in this.config)return new EvmChain(e,this,s);throw new Error("No configuration available for chain: "+e)}static nativeTokenId(e,s){if(!Er.isSupportedChain(s))throw new Error(`invalid chain for EVM: ${s}`);return Wormhole.tokenId(s,EvmZeroAddress)}static isNativeTokenId(e,s,l){return!Er.isSupportedChain(s)||l.chain!==s?!1:l.address.toString()===EvmZeroAddress}static isSupportedChain(e){return chainToPlatform(e)===Er._platform}static async getDecimals(e,s,l){if(isNative(l))return nativeDecimals(Er._platform);const d=Er.getTokenImplementation(s,new EvmAddress(l).toString());return Number(await d.decimals())}static async getBalance(e,s,l,d){return isNative(d)?s.getBalance(l):Er.getTokenImplementation(s,new EvmAddress(d).toString()).balanceOf(l)}static async getBalances(e,s,l,d){return(await Promise.all(d.map(async p=>{const m=await this.getBalance(e,s,l,p);return{[isNative(p)?"native":new EvmAddress(p).toString()]:m}}))).reduce((p,m)=>Object.assign(p,m),{})}static async sendWait(e,s,l){const d=[];for(const u of l){const p=await s.broadcastTransaction(u);if(d.push(p.hash),e==="Celo"){console.error("TODO: override celo block fetching");continue}if(await p.wait()===null)throw new Error("Received null TxReceipt")}return d}static async getLatestBlock(e){return await e.getBlockNumber()}static async getLatestFinalizedBlock(e){const s=await e.getBlock("finalized");if(!s)throw new Error("Could not get finalized block");return s==null?void 0:s.number}static chainFromChainId(e){const s=platformNativeChainIdToNetworkChain(Er._platform,BigInt(e));if(s===void 0)throw new Error(`Unknown EVM chainId ${e}`);const[l,d]=s;return[l,d]}static async chainFromRpc(e){const{chainId:s}=await e.getNetwork();return Er.chainFromChainId(bignum.encode(s,!0))}static getTokenImplementation(e,s){const l=TokenImplementation__factory.connect(s,e);if(!l)throw new Error(`No token implementation available for: ${s}`);return l}};Ae(Er,"_platform",_platform$1);let EvmPlatform=Er;class EvmWormholeCore{constructor(e,s,l,d){Ae(this,"network");Ae(this,"chain");Ae(this,"provider");Ae(this,"contracts");Ae(this,"chainId");Ae(this,"coreAddress");Ae(this,"core");Ae(this,"coreIface");this.network=e,this.chain=s,this.provider=l,this.contracts=d,this.chainId=networkChainToNativeChainId.get(e,s),this.coreIface=Implementation__factory.createInterface();const u=this.contracts.coreBridge;if(!u)throw new Error("Core bridge address not found");this.coreAddress=u,this.core=Implementation__factory.connect(u,l)}async getMessageFee(){return await this.core.messageFee.staticCall()}async getGuardianSetIndex(){return Number(await this.core.getCurrentGuardianSetIndex.staticCall())}async getGuardianSet(e){const s=await this.core.getGuardianSet(e);return{index:e,keys:s[0],expiry:s[1]}}static async fromRpc(e,s){const[l,d]=await EvmPlatform.chainFromRpc(e),u=s[d];if(u.network!==l)throw new Error(`Network mismatch: ${u.network} != ${l}`);return new EvmWormholeCore(l,d,e,u.contracts)}async*publishMessage(e,s,l,d){const u=new EvmAddress(e).toString(),p=await this.core.publishMessage.populateTransaction(l,s,d);yield this.createUnsignedTx(addFrom(p,u),"WormholeCore.publishMessage")}async*verifyMessage(e,s){const l=new EvmAddress(e).toString(),d=await this.core.parseAndVerifyVM.populateTransaction(serialize$1(s));yield this.createUnsignedTx(addFrom(d,l),"WormholeCore.verifyMessage")}async parseTransaction(e){const s=await this.provider.getTransactionReceipt(e);return s===null?[]:s.logs.filter(l=>l.address===this.coreAddress).map(l=>{const{topics:d,data:u}=l,p=this.coreIface.parseLog({topics:d.slice(),data:u});if(p===null)return;const m=new EvmAddress(p.args.sender);return{chain:this.chain,emitter:m.toUniversalAddress(),sequence:p.args.sequence}}).filter(isWormholeMessageId)}async parseMessages(e){const s=await this.provider.getTransactionReceipt(e);if(s===null)throw new Error("Could not get transaction receipt");const l=await this.getGuardianSetIndex();return s.logs.filter(d=>d.address===this.coreAddress).map(d=>{const{topics:u,data:p}=d,m=this.coreIface.parseLog({topics:u.slice(),data:p});if(m===null)return null;const y=new EvmAddress(m.args.sender);return createVAA("Uint8Array",{guardianSet:l,timestamp:0,emitterChain:this.chain,emitterAddress:y.toUniversalAddress(),consistencyLevel:Number(m.args.consistencyLevel),sequence:BigInt(m.args.sequence),nonce:Number(m.args.nonce),signatures:[],payload:hex$1.decode(m.args.payload)})}).filter(d=>!!d)}createUnsignedTx(e,s,l=!1){return new EvmUnsignedTransaction(addChainId(e,this.chainId),this.network,this.chain,s,l)}}const _abi$6=[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldContract",type:"address"},{indexed:!0,internalType:"address",name:"newContract",type:"address"}],name:"ContractUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint32",name:"index",type:"uint32"}],name:"GuardianSetAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint64",name:"sequence",type:"uint64"},{indexed:!1,internalType:"uint32",name:"nonce",type:"uint32"},{indexed:!1,internalType:"bytes",name:"payload",type:"bytes"},{indexed:!1,internalType:"uint8",name:"consistencyLevel",type:"uint8"}],name:"LogMessagePublished",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"chainId",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"evmChainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentGuardianSetIndex",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"index",type:"uint32"}],name:"getGuardianSet",outputs:[{components:[{internalType:"address[]",name:"keys",type:"address[]"},{internalType:"uint32",name:"expirationTime",type:"uint32"}],internalType:"struct Structs.GuardianSet",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getGuardianSetExpiry",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"hash",type:"bytes32"}],name:"governanceActionIsConsumed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"governanceChainId",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"governanceContract",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"isFork",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"impl",type:"address"}],name:"isInitialized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"messageFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"emitter",type:"address"}],name:"nextSequence",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"encodedVM",type:"bytes"}],name:"parseAndVerifyVM",outputs:[{components:[{internalType:"uint8",name:"version",type:"uint8"},{internalType:"uint32",name:"timestamp",type:"uint32"},{internalType:"uint32",name:"nonce",type:"uint32"},{internalType:"uint16",name:"emitterChainId",type:"uint16"},{internalType:"bytes32",name:"emitterAddress",type:"bytes32"},{internalType:"uint64",name:"sequence",type:"uint64"},{internalType:"uint8",name:"consistencyLevel",type:"uint8"},{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"uint32",name:"guardianSetIndex",type:"uint32"},{components:[{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"guardianIndex",type:"uint8"}],internalType:"struct Structs.Signature[]",name:"signatures",type:"tuple[]"},{internalType:"bytes32",name:"hash",type:"bytes32"}],internalType:"struct Structs.VM",name:"vm",type:"tuple"},{internalType:"bool",name:"valid",type:"bool"},{internalType:"string",name:"reason",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"encodedUpgrade",type:"bytes"}],name:"parseContractUpgrade",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint16",name:"chain",type:"uint16"},{internalType:"address",name:"newContract",type:"address"}],internalType:"struct GovernanceStructs.ContractUpgrade",name:"cu",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedUpgrade",type:"bytes"}],name:"parseGuardianSetUpgrade",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint16",name:"chain",type:"uint16"},{components:[{internalType:"address[]",name:"keys",type:"address[]"},{internalType:"uint32",name:"expirationTime",type:"uint32"}],internalType:"struct Structs.GuardianSet",name:"newGuardianSet",type:"tuple"},{internalType:"uint32",name:"newGuardianSetIndex",type:"uint32"}],internalType:"struct GovernanceStructs.GuardianSetUpgrade",name:"gsu",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedRecoverChainId",type:"bytes"}],name:"parseRecoverChainId",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint256",name:"evmChainId",type:"uint256"},{internalType:"uint16",name:"newChainId",type:"uint16"}],internalType:"struct GovernanceStructs.RecoverChainId",name:"rci",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedSetMessageFee",type:"bytes"}],name:"parseSetMessageFee",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint16",name:"chain",type:"uint16"},{internalType:"uint256",name:"messageFee",type:"uint256"}],internalType:"struct GovernanceStructs.SetMessageFee",name:"smf",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedTransferFees",type:"bytes"}],name:"parseTransferFees",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint16",name:"chain",type:"uint16"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"}],internalType:"struct GovernanceStructs.TransferFees",name:"tf",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedVM",type:"bytes"}],name:"parseVM",outputs:[{components:[{internalType:"uint8",name:"version",type:"uint8"},{internalType:"uint32",name:"timestamp",type:"uint32"},{internalType:"uint32",name:"nonce",type:"uint32"},{internalType:"uint16",name:"emitterChainId",type:"uint16"},{internalType:"bytes32",name:"emitterAddress",type:"bytes32"},{internalType:"uint64",name:"sequence",type:"uint64"},{internalType:"uint8",name:"consistencyLevel",type:"uint8"},{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"uint32",name:"guardianSetIndex",type:"uint32"},{components:[{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"guardianIndex",type:"uint8"}],internalType:"struct Structs.Signature[]",name:"signatures",type:"tuple[]"},{internalType:"bytes32",name:"hash",type:"bytes32"}],internalType:"struct Structs.VM",name:"vm",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint32",name:"nonce",type:"uint32"},{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"uint8",name:"consistencyLevel",type:"uint8"}],name:"publishMessage",outputs:[{internalType:"uint64",name:"sequence",type:"uint64"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"numGuardians",type:"uint256"}],name:"quorum",outputs:[{internalType:"uint256",name:"numSignaturesRequiredForQuorum",type:"uint256"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitContractUpgrade",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitNewGuardianSet",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitRecoverChainId",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitSetMessageFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitTransferFees",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"hash",type:"bytes32"},{components:[{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"guardianIndex",type:"uint8"}],internalType:"struct Structs.Signature[]",name:"signatures",type:"tuple[]"},{components:[{internalType:"address[]",name:"keys",type:"address[]"},{internalType:"uint32",name:"expirationTime",type:"uint32"}],internalType:"struct Structs.GuardianSet",name:"guardianSet",type:"tuple"}],name:"verifySignatures",outputs:[{internalType:"bool",name:"valid",type:"bool"},{internalType:"string",name:"reason",type:"string"}],stateMutability:"pure",type:"function"},{inputs:[{components:[{internalType:"uint8",name:"version",type:"uint8"},{internalType:"uint32",name:"timestamp",type:"uint32"},{internalType:"uint32",name:"nonce",type:"uint32"},{internalType:"uint16",name:"emitterChainId",type:"uint16"},{internalType:"bytes32",name:"emitterAddress",type:"bytes32"},{internalType:"uint64",name:"sequence",type:"uint64"},{internalType:"uint8",name:"consistencyLevel",type:"uint8"},{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"uint32",name:"guardianSetIndex",type:"uint32"},{components:[{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"guardianIndex",type:"uint8"}],internalType:"struct Structs.Signature[]",name:"signatures",type:"tuple[]"},{internalType:"bytes32",name:"hash",type:"bytes32"}],internalType:"struct Structs.VM",name:"vm",type:"tuple"}],name:"verifyVM",outputs:[{internalType:"bool",name:"valid",type:"bool"},{internalType:"string",name:"reason",type:"string"}],stateMutability:"view",type:"function"},{stateMutability:"payable",type:"receive"}],_bytecode$6="0x60808060405234610016576130a2908161001c8239f35b600080fdfe60806040526004361015610018575b366120d257612105565b60003560e01c80630319e59c146101e857806304ca84cf146101e3578063178149e7146101de5780631a90a219146101d95780631cfe7951146101d45780632c3c02a4146101cf5780634cf842b5146101ca5780634fdc60fa146101c5578063515f3247146101c05780635cb8cae2146101bb57806364d42b17146101b65780636606b4e0146101b15780638129fc1c146101ac578063875be02a146101a757806393df337e146101a25780639a8a05921461019d578063a0cce1b314610198578063a9e1189314610193578063b172b2221461018e578063b19a437e14610189578063c0fd8bde14610184578063cb4cfea81461017f578063d60b347f1461017a578063e039f22414610175578063eb8d3f1214610170578063f42bc6411461016b578063f8ce560a14610166578063f951975a146101615763fbe3c2cd0361000e576112d5565b61129d565b611277565b611203565b6111dd565b6111bc565b61117d565b611137565b6110d2565b610f96565b610f78565b610f50565b610d51565b610d2f565b610c78565b610b50565b610913565b6107c5565b6107a7565b6106d4565b61068e565b61063f565b6105fc565b61059b565b610577565b610559565b610476565b610409565b610363565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b0382111761021e57604052565b6101ed565b604081019081106001600160401b0382111761021e57604052565b60a081019081106001600160401b0382111761021e57604052565b606081019081106001600160401b0382111761021e57604052565b90601f801991011681019081106001600160401b0382111761021e57604052565b6040519061016082018281106001600160401b0382111761021e57604052565b604051906102c282610223565b565b6001600160401b03811161021e57601f01601f191660200190565b9291926102eb826102c4565b916102f96040519384610274565b829481845281830111610316578281602093846000960137010152565b600080fd5b9080601f8301121561031657816020610336933591016102df565b90565b602060031982011261031657600435906001600160401b038211610316576103369160040161031b565b346103165760a061037b61037636610339565b611dc4565b6080604051918051835260ff602082015116602084015261ffff60408201511660408401526060810151606084015201516080820152f35b906040810191805190604083528151809452606083019360208093019060005b8181106103ec5750505081015163ffffffff1691015290565b82516001600160a01b0316875295840195918401916001016103d3565b346103165761041f61041a36610339565b611b9f565b6040518091602082528051602083015260ff602082015116604083015261ffff604082015116606083015263ffffffff6080610469606084015160a08387015260c08601906103b3565b9201511660a08301520390f35b346103165761048436610339565b600854461461052757610513606061049e6105259361287e565b6104b06104aa8261185b565b906113b0565b61050a6104c060e0830151611e9d565b916104d163436f7265845114611459565b61050461014060408501926104e8468551146115ab565b015160005260056020526040600020600160ff19825416179055565b51612ca6565b015161ffff1690565b61ffff1661ffff196000541617600055565b005b60405162461bcd60e51b815260206004820152600a6024820152696e6f74206120666f726b60b01b6044820152606490fd5b34610316576000366003190112610316576020600754604051908152f35b3461031657600036600319011261031657602063ffffffff60035416604051908152f35b346103165760203660031901126103165760206105c8600435600052600560205260ff6040600020541690565b6040519015158152f35b600435906001600160a01b038216820361031657565b35906001600160a01b038216820361031657565b34610316576020366003190112610316576001600160a01b0361061d6105d2565b16600052600460205260206001600160401b0360406000205416604051908152f35b3461031657608061065761065236610339565b611a0c565b604051908051825260ff602082015116602083015261ffff6040820151166040830152606060018060a01b03910151166060820152f35b346103165760806106a66106a136610339565b611ce1565b6060604051918051835260ff602082015116602084015261ffff604082015116604084015201516060820152f35b34610316576106e236610339565b60085446036107735761076e60606106fc6105259361287e565b6107086104aa8261185b565b61076061014061071b60e0840151611a0c565b9261072c63436f72658551146113e0565b6104e861073e604086015161ffff1690565b61ffff61075861075160005461ffff1690565b61ffff1690565b91161461141d565b01516001600160a01b031690565b61163e565b60405162461bcd60e51b815260206004820152600c60248201526b696e76616c696420666f726b60a01b6044820152606490fd5b34610316576000366003190112610316576020600854604051908152f35b34610316576105256108d96107e16107dc36610339565b61287e565b6107ed6104aa8261185b565b6108cf6107fd60e0830151611b9f565b61080d63436f7265825114611459565b61084b61081f604083015161ffff1690565b61ffff61083261075160005461ffff1690565b911690811490816108f8575b81156108ef575b50611496565b6108a9610140608060608401936108668551515115156114d2565b01946104e8610879875163ffffffff1690565b63ffffffff6108a161089861089360035463ffffffff1690565b611534565b63ffffffff1690565b911614611549565b6108c06108bb60035463ffffffff1690565b612b24565b51825163ffffffff1690612c1b565b5163ffffffff1690565b63ffffffff1663ffffffff196003541617600355565b90501538610845565b905061090d61090960085446141590565b1590565b9061083e565b34610316576000806003193601126109cc577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b03168082526006602052604082205460ff16610991576001600160a01b03166000908152600660205260409020805460ff1916600117905561098e611f42565b80f35b60405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b80fd5b6044359060ff8216820361031657565b359060ff8216820361031657565b6004359063ffffffff8216820361031657565b359063ffffffff8216820361031657565b359061ffff8216820361031657565b35906001600160401b038216820361031657565b6001600160401b03811161021e5760051b60200190565b81601f8201121561031657803590610a6282610a34565b92604092610a7284519586610274565b808552602091828087019260071b85010193818511610316578301915b848310610a9f5750505050505090565b60808383031261031657836080918751610ab881610203565b853581528286013583820152610acf8987016109df565b898201526060610ae08188016109df565b90820152815201920191610a8f565b60005b838110610b025750506000910152565b8181015183820152602001610af2565b90602091610b2b81518092818552858086019101610aef565b601f01601f1916010190565b6040906103369392151581528160208201520190610b12565b346103165760031960203682011261031657600435906001600160401b03908183116103165761016090833603011261031657610b8b610295565b90610b98836004016109df565b8252610ba660248401610a00565b6020830152610bb760448401610a00565b6040830152610bc860648401610a11565b606083015260848301356080830152610be360a48401610a20565b60a0830152610bf460c484016109df565b60c083015260e483013581811161031657610c15906004369186010161031b565b60e0830152610c276101048401610a00565b61010083015261012483013590811161031657610c6492610c516101449260043691840101610a4b565b61012084015201356101408201526123f9565b90610c7460405192839283610b37565b0390f35b3461031657610ce2610140610c8f6107dc36610339565b610c9b6104aa8261185b565b6104e8610cab60e0830151611dc4565b610cbb63436f7265825114611459565b604081015161ffff1690600095869586958695869561ffff610832610751895461ffff1690565b6080810151606090610d0c90610d009081906001600160a01b031681565b6001600160a01b031690565b91015190828215610d26575bf115610d215780f35b61159f565b506108fc610d18565b3461031657600036600319011261031657602061ffff60005416604051908152f35b3461031657600319606036820112610316576001600160401b0360243581811161031657610d83903690600401610a4b565b604435928284116103165760409084360301126103165760405191610da783610223565b8360040135908111610316578301923660238501121561031657600484013593610dd085610a34565b90610dde6040519283610274565b85825260209560248784019160051b8301019136831161031657602401905b828210610e26575050506024610c649592610e1a92865201610a00565b9083015260043561268d565b878091610e32846105e8565b815201910190610dfd565b90815180825260208080930193019160005b828110610e5d575050505090565b835180518652808301518684015260408082015160ff90811691880191909152606091820151169086015260809094019392810192600101610e4f565b805160ff1682529060208281015163ffffffff169082015260408281015163ffffffff169082015260608281015161ffff169082015260808201516080820152610ef460a083015160a08301906001600160401b03169052565b60c08281015160ff1690820152610f42610f1d60e08401516101608060e0860152840190610b12565b6101008481015163ffffffff1690840152610120808501519084830390850152610e3d565b916101408091015191015290565b3461031657610c74610f646107dc36610339565b604051918291602083526020830190610e9a565b34610316576000366003190112610316576020600154604051908152f35b606036600319011261031657610faa6109ed565b6001600160401b0360243581811161031657610fca90369060040161031b565b91610fd36109cf565b91600754340361107457336000526004602052806040600020541692600184019482861161106f57610c74957f6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b293336000526004602052604060002091166001600160401b031982541617905561105260405192839233968885611f06565b0390a26040516001600160401b0390911681529081906020820190565b61151e565b60405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b6044820152606490fd5b6110bd6103369492606083526060830190610e9a565b92151560208201526040818403910152610b12565b34610316576020366003190112610316576001600160401b03600435818111610316573660238201121561031657806004013591821161031657366024838301011161031657610c7491602461112892016121c5565b604093919351938493846110a7565b3461031657608061114f61114a36610339565b611e9d565b61ffff6060604051928051845260ff6020820151166020850152604081015160408501520151166060820152f35b34610316576020366003190112610316576001600160a01b0361119e6105d2565b166000526006602052602060ff604060002054166040519015158152f35b34610316576000366003190112610316576020600854604051904614158152f35b3461031657600036600319011261031657602060035463ffffffff60405191831c168152f35b346103165760606112166107dc36610339565b6112226104aa8261185b565b61126561014061123560e0840151611ce1565b9261124663436f72658551146113e0565b61ffff806040860151169060005416148061126c575b6104e89061141d565b0151600755005b50600854461461125c565b34610316576020366003190112610316576020611295600435612ac1565b604051908152f35b3461031657602036600319011261031657610c746112c16112bc6109ed565b611314565b6040519182916020835260208301906103b3565b3461031657600036600319011261031657602061ffff60005460101c16604051908152f35b6040519061130782610223565b6000602083606081520152565b63ffffffff906113226112fa565b50166000526020600281526040600020906040519161134083610223565b6040518083835491828152019083600052846000209060005b8181106113935750505061033693928261137a611387946001940382610274565b8652015463ffffffff1690565b63ffffffff1690830152565b82546001600160a01b031684529286019260019283019201611359565b156113b85750565b60405162461bcd60e51b8152602060048201529081906113dc906024830190610b12565b0390fd5b156113e757565b60405162461bcd60e51b815260206004820152600e60248201526d496e76616c6964204d6f64756c6560901b6044820152606490fd5b1561142457565b60405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21021b430b4b760991b6044820152606490fd5b1561146057565b60405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964204d6f64756c6560901b6044820152606490fd5b1561149d57565b60405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b21021b430b4b760991b6044820152606490fd5b156114d957565b60405162461bcd60e51b815260206004820152601960248201527f6e657720677561726469616e2073657420697320656d707479000000000000006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90600163ffffffff8093160191821161106f57565b1561155057565b60405162461bcd60e51b815260206004820152602160248201527f696e646578206d75737420696e63726561736520696e207374657073206f66206044820152603160f81b6064820152608490fd5b6040513d6000823e3d90fd5b156115b257565b60405162461bcd60e51b815260206004820152601160248201527034b73b30b634b21022ab269021b430b4b760791b6044820152606490fd5b60405190602082018281106001600160401b0382111761021e5760405260008252565b3d15611639573d9061161f826102c4565b9161162d6040519384610274565b82523d6000602084013e565b606090565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc908154813b1561170d577f2e4cc16c100f0b55e2df82ab0b1a7e294aa9cbd01b48fbaf622683fbc0507a499060018060a01b039081841694856bffffffffffffffffffffffff60a01b8316179055611707604051600080968192897fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a263204a7f0760e21b6020820190815260048252906116fb81610223565b51915af46104aa61160e565b169180a3565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b6040519061177582610259565b6022825261195d60f21b6040837f6e6f74207369676e65642062792063757272656e7420677561726469616e207360208201520152565b604051906117b982610223565b60168252753bb937b7339033b7bb32b93730b731b29031b430b4b760511b6020830152565b604051906117eb82610223565b601982527f77726f6e6720676f7665726e616e636520636f6e7472616374000000000000006020830152565b6040519061182482610259565b6022825261195960f21b6040837f676f7665726e616e636520616374696f6e20616c726561647920636f6e73756d60208201520152565b611864816123f9565b9015611924575061010081015163ffffffff1663ffffffff61188e61089860035463ffffffff1690565b91160361191857606081015161ffff1661ffff6118b561075160005461ffff9060101c1690565b91160361190c57608081015160015403611900576101406118e6910151600052600560205260ff6040600020541690565b6118f5576001906103366115eb565b600090610336611817565b506000906103366117de565b506000906103366117ac565b50600090610336611768565b600092909150565b6040519061193982610203565b60006060838281528260208201528260408201520152565b906020820180921161106f57565b906001820180921161106f57565b906002820180921161106f57565b906004820180921161106f57565b906014820180921161106f57565b906008820180921161106f57565b90601f820180921161106f57565b9190820180921161106f57565b156119c757565b60405162461bcd60e51b815260206004820152601760248201527f696e76616c696420436f6e7472616374557067726164650000000000000000006044820152606490fd5b90611a1561192c565b91611a1f81613030565b8352611a3e600160ff611a3184612e51565b16806020870152146119c0565b61ffff611a4a82612ee8565b1660408401526043815110611a79576043818101516001600160a01b0316606085015290516102c291146119c0565b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b60405190611ac38261023e565b6000608083828152826020820152826040820152611adf6112fa565b60608201520152565b15611aef57565b60405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420477561726469616e536574557067726164650000000000006044820152606490fd5b90611b3e82610a34565b611b4b6040519182610274565b8281528092611b5c601f1991610a34565b0190602036910137565b600019811461106f5760010190565b8051821015611b895760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b90611ba8611ab6565b91611bb281613030565b8352611bdb600260ff611bd4611bc785612e51565b60ff166020880181905290565b1614611ae8565b611bf2611be782612ee8565b61ffff166040850152565b611c0b611bfe82612fac565b63ffffffff166080850152565b611c1481612ebc565b60ff6028911691611c2483611b34565b92611c2d6102b5565b93845260006020850152606086019384526000935b818510611c575750506102c292505114611ae8565b909192611c8e81611c89611c6e611c949488612df5565b611c7a89875151611b75565b6001600160a01b039091169052565b611989565b94611b66565b93929190611c42565b15611ca457565b60405162461bcd60e51b8152602060048201526015602482015274696e76616c6964205365744d65737361676546656560581b6044820152606490fd5b90611cea61192c565b91611cf481613030565b8352611d13600360ff611d0684612e51565b1680602087015214611c9d565b61ffff611d1f82612ee8565b1660408401526043815110611d4457604381816102c293015160608601525114611c9d565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b15611d8857565b60405162461bcd60e51b8152602060048201526014602482015273696e76616c6964205472616e736665724665657360601b6044820152606490fd5b9060405191611dd28361023e565b60008352602083019060008252604084019060008252606085019160008352611e20600460808801956000875288611e0986613030565b905260ff611e1686612e51565b1680915214611d81565b61ffff611e2c83612ee8565b1690526043815110611d44576102c29260639260438301519052611e4f82613040565b90525114611d81565b15611e5f57565b60405162461bcd60e51b81526020600482015260166024820152751a5b9d985b1a5908149958dbdd995c90da185a5b925960521b6044820152606490fd5b90611ea661192c565b91611eb081613030565b8352611ecf600560ff611ec284612e51565b1680602087015214611e58565b6041815110611d445760438160416102c29301516040860152611eff611ef482612f34565b61ffff166060870152565b5114611e58565b92611f3b9063ffffffff6060946001600160401b0360ff95999899168752166020860152608060408601526080850190610b12565b9416910152565b60085415611f4c57565b61ffff611f5c60005461ffff1690565b1660028103611f7057506102c26001612ca6565b60048103611f8357506102c26038612ca6565b60058103611f9657506102c26089612ca6565b60068103611faa57506102c261a86a612ca6565b60078103611fbe57506102c261a516612ca6565b60098103611fd457506102c2634e454152612ca6565b600a8103611fe757506102c260fa612ca6565b600b8103611ffb57506102c26102ae612ca6565b600c810361200f57506102c2610313612ca6565b600d810361202357506102c2612019612ca6565b600e810361203757506102c261a4ec612ca6565b6010810361204b57506102c2610504612ca6565b6011810361206157506102c2630e9ac0d6612ca6565b6017810361207557506102c261a4b1612ca6565b6018810361208857506102c2600a612ca6565b601903612099576102c26064612ca6565b60405162461bcd60e51b81526020600482015260116024820152702ab735b737bbb71031b430b4b71034b21760791b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a1d5b9cdd5c1c1bdc9d195960aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152602c60248201527f74686520576f726d686f6c6520636f6e747261637420646f6573206e6f74206160448201526b63636570742061737365747360a01b6064820152608490fd5b6040519061016082018281106001600160401b0382111761021e57604052816101406000918281528260208201528260408201528260608201528260808201528260a08201528260c0820152606060e08201528261010082015260606101208201520152565b6107dc906121dd926121d561215f565b5036916102df565b906121e782612325565b9091565b94929060339796949263ffffffff60e01b809260e01b16875260e01b16600486015261ffff60f01b9060f01b166008850152600a8401526001600160401b0360c01b9060c01b16602a83015260ff60f81b9060f81b1660328201526122598251809360208685019101610aef565b010190565b6040519061226b82610223565b601a82527f766d2e6861736820646f65736e2774206d6174636820626f64790000000000006020830152565b604051906122a482610223565b60148252731a5b9d985b1a590819dd585c991a585b881cd95d60621b6020830152565b604051906122d482610223565b601882527f677561726469616e2073657420686173206578706972656400000000000000006020830152565b6040519061230d82610223565b60098252686e6f2071756f72756d60b81b6020830152565b610100810161233b6112bc825163ffffffff1690565b90815151156123eb575163ffffffff1661235d61089860035463ffffffff1690565b63ffffffff809216141590816123ce575b506123c1576101208201805151612386835151612ac1565b116123b35761014061239c93015190519061268d565b90156123ae57506001906103366115eb565b600091565b505050600090610336612300565b50506000906103366122c7565b90506123e1602083015163ffffffff1690565b429116103861236e565b505050600090610336612297565b6101008101906124106112bc835163ffffffff1690565b90612422602082015163ffffffff1690565b604082015163ffffffff169061243d606084015161ffff1690565b9161247a608085015161245a60a08701516001600160401b031690565b60c087015160ff169060e0880151926040519788966020880198896121eb565b039161248e601f1993848101835282610274565b519020906124b860405191826124ac60208201958660209181520190565b03908101835282610274565b5190209261014082019384510361255e578251511561254f575163ffffffff166124ea61089860035463ffffffff1690565b63ffffffff80921614159081612532575b506125245761012001805151612512835151612ac1565b116123b35761239c925190519061268d565b5050506000906103366122c7565b9050612545602084015163ffffffff1690565b42911610386124fb565b50505050600090610336612297565b5050505060009061033661225e565b1561257457565b60405162461bcd60e51b815260206004820152601f60248201527f65637265636f766572206661696c65642077697468207369676e6174757265006044820152606490fd5b156125c057565b60405162461bcd60e51b815260206004820152602360248201527f7369676e617475726520696e6469636573206d75737420626520617363656e64604482015262696e6760e81b6064820152608490fd5b1561261857565b60405162461bcd60e51b815260206004820152601c60248201527f677561726469616e20696e646578206f7574206f6620626f756e6473000000006044820152606490fd5b6040519061266a82610223565b60148252731593481cda59db985d1d5c99481a5b9d985b1a5960621b6020830152565b825151919260009291835b85518110156127b2576126ab8187611b75565b51604060006126bd8284015160ff1690565b8351602080860151945188815260ff93909316838201526040830191909152606082019390935281805260809060015afa15610d215760005160609190612723906001600160a01b03169761271389151561256d565b8415908115612795575b506125b9565b0194612771610d00612764612739895160ff1690565b986127488960ff8c1610612611565b61275e6127588951925160ff1690565b60ff1690565b90611b75565b516001600160a01b031690565b036127845761277f90611b66565b612698565b50505050505060009061033661265d565b90506127a48484015160ff1690565b60ff9182169116113861271d565b5050505050506001906103366115eb565b156127ca57565b60405162461bcd60e51b815260206004820152601760248201527f564d2076657273696f6e20696e636f6d70617469626c650000000000000000006044820152606490fd5b9061281982610a34565b6128266040519182610274565b8281528092612837601f1991610a34565b019060005b82811061284857505050565b60209061285361192c565b8282850101520161283c565b60ff601b9116019060ff821161106f57565b9190820391821161106f57565b9061288761215f565b9161289b61289482612e9c565b60ff168452565b6128b4600160ff6128ad865160ff1690565b16146127c3565b6128ce6128c082612f60565b63ffffffff16610100850152565b6128da61275882612eac565b6006906128e68161280f565b9061012086019182526000915b818310612a205750505090612a086129ec6129ca6129b661299961297f87612929612922612a199a8a51612871565b828a612d69565b602081519101206040516129578161294960208201948560209181520190565b03601f198101835282610274565b5190206101408c015261297a61296d828a612fbc565b63ffffffff1660208d0152565b61197b565b61297a61298c8289612fbc565b63ffffffff1660408c0152565b6129b16129a68288612f44565b61ffff1660608b0152565b61196d565b6129c08186613050565b6080890152611951565b6129e76129d78286612fd8565b6001600160401b031660a0890152565b611997565b612a036129f98285612ecc565b60ff1660c0880152565b61195f565b612a13818351612871565b91612d69565b60e0830152565b909192612ab4612a92612a73612a5784612a03612a40612aba978c612ecc565b6060612a4d8c8b51611b75565b51019060ff169052565b612a61818a613050565b612a6c898851611b75565b5152611951565b612a7d8189613050565b6020612a8a898851611b75565b510152611951565b612a03612aa7612aa2838a612ecc565b61285f565b6040612a4d898851611b75565b93611b66565b91906128f3565b610100811015612aea578060011b908082046002149015171561106f576003610336910461195f565b60405162461bcd60e51b8152602060048201526012602482015271746f6f206d616e7920677561726469616e7360701b6044820152606490fd5b63ffffffff62015180814216019080821161106f576102c29216600052600260205260016040600020019063ffffffff1663ffffffff19825416179055565b9080519081516001600160401b03811161021e5768010000000000000000811161021e578354818555808210612bf2575b506020809301612ba985600052602060002090565b60005b838110612bd7575050505001516001909101805463ffffffff191663ffffffff909216919091179055565b82516001600160a01b03168282015591850191600101612bac565b6000858152826020822092830192015b828110612c10575050612b94565b818155600101612c02565b9081515160005b818110612c485750509063ffffffff6102c2921660005260026020526040600020612b63565b83516001600160a01b0390612c5e908390611b75565b511615612c7357612c6e90611b66565b612c22565b60405162461bcd60e51b815260206004820152600b60248201526a496e76616c6964206b657960a81b6044820152606490fd5b468103612cb257600855565b60405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a5908195d9b50da185a5b925960721b6044820152606490fd5b15612cf357565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b15612d3057565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b91612d7e81612d77816119a5565b1015612cec565b612d948351612d8d83856119b3565b1115612d29565b80612dad57505050604051600081526020810160405290565b60405192601f821692831560051b80858701019484860193010101905b808410612de25750508252601f01601f191660405290565b9092835181526020809101930190612dca565b908151601482019081831161106f5710612e1457016020015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6021815110612e61576021015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6001815110612e61576001015190565b6006815110612e61576006015190565b6028815110612e61576028015190565b908151600182019081831161106f5710612e6157016001015190565b6023815110612ef8576023015190565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b6044820152606490fd5b6043815110612ef8576043015190565b908151600282019081831161106f5710612ef857016002015190565b6005815110612f70576005015190565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7433325f6f75744f66426f756e647360601b6044820152606490fd5b6027815110612f70576027015190565b908151600482019081831161106f5710612f7057016004015190565b908151600882019081831161106f5710612ff457016008015190565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b6020815110611a79576020015190565b6063815110611a79576063015190565b908151602082019081831161106f5710611a795701602001519056fea2646970667358221220e01f3fc19a7b6f650a08aafb55409b8aa16f0ebf4a5804ec4ce7df76358d349364736f6c63430008130033",isSuperArgs$6=t=>t.length>1;class Implementation__factory extends ContractFactory{constructor(...e){isSuperArgs$6(e)?super(...e):super(_abi$6,_bytecode$6,e[0])}getDeployTransaction(e){return super.getDeployTransaction(e||{})}deploy(e){return super.deploy(e||{})}connect(e){return super.connect(e)}static createInterface(){return new Interface(_abi$6)}static connect(e,s){return new Contract(e,_abi$6,s)}}Ae(Implementation__factory,"bytecode",_bytecode$6),Ae(Implementation__factory,"abi",_abi$6);const index$4=Object.freeze(Object.defineProperty({__proto__:null,Implementation__factory},Symbol.toStringTag,{value:"Module"}));registerProtocol(_platform$1,"WormholeCore",EvmWormholeCore);const index$3=Object.freeze(Object.defineProperty({__proto__:null,EvmWormholeCore,ethers_contracts:index$4},Symbol.toStringTag,{value:"Module"})),_abi$5=[{type:"constructor",inputs:[{name:"_token",type:"address",internalType:"address"},{name:"_mode",type:"uint8",internalType:"enum IManagerBase.Mode"},{name:"_chainId",type:"uint16",internalType:"uint16"},{name:"_rateLimitDuration",type:"uint64",internalType:"uint64"},{name:"_skipRateLimiting",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"NTT_MANAGER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"attestationReceived",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"cancelOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"chainId",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"completeInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"completeOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"executeMsg",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"message",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getCurrentInboundCapacity",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getCurrentOutboundCapacity",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getInboundLimitParams",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"view"},{type:"function",name:"getInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.InboundQueuedTransfer",components:[{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipient",type:"address",internalType:"address"}]}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getMode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getOutboundLimitParams",inputs:[],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"pure"},{type:"function",name:"getOutboundQueuedTransfer",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.OutboundQueuedTransfer",components:[{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"sender",type:"address",internalType:"address"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}]}],stateMutability:"view"},{type:"function",name:"getPeer",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct INttManager.NttManagerPeer",components:[{name:"peerAddress",type:"bytes32",internalType:"bytes32"},{name:"tokenDecimals",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getThreshold",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getTransceivers",inputs:[],outputs:[{name:"result",type:"address[]",internalType:"address[]"}],stateMutability:"pure"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"isMessageApproved",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isMessageExecuted",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"messageAttestations",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"count",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"mode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"enum IManagerBase.Mode"}],stateMutability:"view"},{type:"function",name:"nextMessageSequence",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"},{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"rateLimitDuration",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"removeTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setInboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"},{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setOutboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"},{name:"decimals",type:"uint8",internalType:"uint8"},{name:"inboundLimit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setThreshold",inputs:[{name:"threshold",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"token",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"tokenDecimals",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"transceiverAttestedToMessage",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"shouldQueue",type:"bool",internalType:"bool"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unpause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"InboundTransferQueued",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"MessageAlreadyExecuted",inputs:[{name:"sourceNttManager",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"msgHash",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"MessageAttestedTo",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"index",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OutboundTransferCancelled",inputs:[{name:"sequence",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipient",type:"address",indexed:!1,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OutboundTransferQueued",inputs:[{name:"queueSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"OutboundTransferRateLimited",inputs:[{name:"sender",type:"address",indexed:!0,internalType:"address"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"currentCapacity",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"PeerUpdated",inputs:[{name:"chainId_",type:"uint16",indexed:!0,internalType:"uint16"},{name:"oldPeerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"oldPeerDecimals",type:"uint8",indexed:!1,internalType:"uint8"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"peerDecimals",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"ThresholdChanged",inputs:[{name:"oldThreshold",type:"uint8",indexed:!1,internalType:"uint8"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverAdded",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"transceiversNum",type:"uint256",indexed:!1,internalType:"uint256"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverRemoved",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransferRedeemed",inputs:[{name:"digest",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"TransferSent",inputs:[{name:"recipient",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"msgSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"BurnAmountDifferentThanBalanceDiff",inputs:[{name:"burnAmount",type:"uint256",internalType:"uint256"},{name:"balanceDiff",type:"uint256",internalType:"uint256"}]},{type:"error",name:"CallerNotTransceiver",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CancellerNotSender",inputs:[{name:"canceller",type:"address",internalType:"address"},{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"CapacityCannotExceedLimit",inputs:[{name:"newCurrentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"newLimit",type:"uint72",internalType:"TrimmedAmount"}]},{type:"error",name:"DeliveryPaymentTooLow",inputs:[{name:"requiredPayment",type:"uint256",internalType:"uint256"},{name:"providedPayment",type:"uint256",internalType:"uint256"}]},{type:"error",name:"DisabledTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"InboundQueuedTransferNotFound",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InboundQueuedTransferStillQueued",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidMode",inputs:[{name:"mode",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidPeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidPeerChainIdZero",inputs:[]},{type:"error",name:"InvalidPeerDecimals",inputs:[]},{type:"error",name:"InvalidPeerZeroAddress",inputs:[]},{type:"error",name:"InvalidRecipient",inputs:[]},{type:"error",name:"InvalidRefundAddress",inputs:[]},{type:"error",name:"InvalidTargetChain",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"thisChain",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidTransceiverZeroAddress",inputs:[]},{type:"error",name:"MessageNotApproved",inputs:[{name:"msgHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NoEnabledTransceivers",inputs:[]},{type:"error",name:"NonRegisteredTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotEnoughCapacity",inputs:[{name:"currentCapacity",type:"uint256",internalType:"uint256"},{name:"amount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"NumberOfDecimalsNotEqual",inputs:[{name:"decimals",type:"uint8",internalType:"uint8"},{name:"decimalsOther",type:"uint8",internalType:"uint8"}]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OutboundQueuedTransferNotFound",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}]},{type:"error",name:"OutboundQueuedTransferStillQueued",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerNotRegistered",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RefundFailed",inputs:[{name:"refundAmount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"RetrievedIncorrectRegisteredTransceivers",inputs:[{name:"retrieved",type:"uint256",internalType:"uint256"},{name:"registered",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ThresholdTooHigh",inputs:[{name:"threshold",type:"uint256",internalType:"uint256"},{name:"transceivers",type:"uint256",internalType:"uint256"}]},{type:"error",name:"TooManyTransceivers",inputs:[]},{type:"error",name:"TransceiverAlreadyAttestedToMessage",inputs:[{name:"nttManagerMessageHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"TransceiverAlreadyEnabled",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"TransferAmountHasDust",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"dust",type:"uint256",internalType:"uint256"}]},{type:"error",name:"UndefinedRateLimiting",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"expectedOwner",type:"address",internalType:"address"},{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"ZeroAmount",inputs:[]},{type:"error",name:"ZeroThreshold",inputs:[]}],_bytecode$5="0x61016034620005a857601f620062e138819003918201601f19168301916001600160401b038311848410176200055b5780849260a094604052833981010312620005a8578051906001600160a01b0382168203620005a8576020810151916002831015620005a85760408201519161ffff83168303620005a8576060810151906001600160401b03821690818303620005a8576080015180159182158203620005a857158092816200059f575b50821562000583575b505062000571576080527f8561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d8954620001147e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e15460ff8360081c1614620005ad565b7ffd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f5460005b60ff8360081c168110620003ce57505060005b60ff8260081c1681106200033a5750604060ff6200016d92161115620005ad565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c1662000328576002600160401b03196001600160401b03821601620002dc575b50503060a05260c0526101009182526101209081526101404681523360e05260405191615cb693846200062b85396080518481816112ee0152818161192e01528181611d7f015281816127c501528181613241015281816137e701528181613e3a015281816152ca015281816153dd0152818161549d015281816155bc0152615684015260a05184614cf1015260c051848181610285015281816104e00152818161052d015281816126b10152818161365701528181613cb8015281816145240152818161494301526149f3015260e05184611a7801525183818161047701528181611df801528181611f3e015281816126ff015281816136d901528181613d3501526148cb0152518281816111960152818161276801526131cb0152518161312d0152f35b6001600160401b0319166001600160401b039081179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880620001b6565b60405163f92ee8a960e01b8152600490fd5b60018101808211620003b8575b60ff8360081c1681106200036757506200036190620005cb565b6200014c565b620003b290620003ac6200037b84620005db565b90546200038884620005db565b9054600391821b1c6001600160a01b039081169390911b9190911c161415620005ad565b620005cb565b62000347565b634e487b7160e01b600052601160045260246000fd5b620003d981620005db565b9054600382901b81901c6001600160a01b031660009081527f49bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f602052604090819020905192906001600160401b0360608501908111908511176200055b5760608401604052546200047b60ff821615801592838752602087019360ff808360081c1615928315875260101c16908160408a0152926200053e575b5050620005ad565b60018060401b03600160ff6040870151161b87161615159051151592600092835b60ff8a60081c168110620004ec575b50505082620004e6959492620004cb620003ac95620004d49414620005ad565b151514620005ad565b60ff60408188169201511610620005ad565b62000139565b620004f781620005db565b9054600391821b1c6001600160a01b039081169184901b85901c161462000529576200052390620005cb565b6200049c565b5060019350849150829050620004cb620004ab565b9091508162000551575b50388062000473565b9050153862000548565b634e487b7160e01b600052604160045260246000fd5b60405163e543ef0560e01b8152600490fd5b1591508162000596575b503880620000b5565b9050386200058d565b925038620000ac565b600080fd5b15620005b557565b634e487b7160e01b600052600160045260246000fd5b6000198114620003b85760010190565b7e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e18054821015620006145760005260206000200190600090565b634e487b7160e01b600052603260045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c80630271725014612a42578063036de8af146129b75780630677df54146129985780630900f01014612531578063186ce612146124dc57806319017175146124a65780631f97c9a8146122b4578063203e4a9b14611fb657806323d75e3114611f82578063295a521214611f28578063396c16b714611eec5780633b97e85614611ed15780633f4ba83a14611e435780634b4fd03b14611de5578063689f90c314611da357806374aa7bfc14611d5f5780637c91863414611c0a5780638129fc1c146119e75780638413bcba146118cb5780638456cb591461184e57806386e11ffa1461182957806389c619dd146117c95780638da5cb5b146117935780638e3ba8c91461175c5780638fd3ab801461161d5780639057412d146114a0578063961b94d01461144257806397c35146146111ba5780639a8a05921461117b5780639d78245414610f405780639f86029c14610c2f5780639fd0506d14610bf9578063b187bd2614610bcb578063b293f97f14610b35578063b4d591bb14610a74578063c0b07bde14610a2e578063c128d170146109b2578063d788c14714610927578063da4856a1146108f4578063e5a9860314610848578063e75235b81461081a578063f2fde38b146106d5578063f5cfec18146106b2578063f7514fbc146102b4578063fc0c546a1461026f5763fd96063c1461021757600080fd5b3461026c57602036600319011261026c576060610235600435615228565b6040805182516001600160481b031681526020808401516001600160401b031690820152918101516001600160a01b031690820152f35b80fd5b503461026c578060031936011261026c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461026c57602036600319011261026c576004356001600160401b03811681036106ae576102e1615a50565b6002600080516020615b21833981519152541461069c576001600160401b038116600052600080516020615c0183398151915260205260406000206040519061032982612b1a565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a083015260405190818560048301549261039084613587565b808452936001811690811561067a5750600114610636575b506103b592500382612ba1565b60c08201526001600160401b03606082015116156106155760a08101516001600160a01b03163381036105e85750606061045860407ff80e572ae1b63e2449629b6c7d783add85c36473926f216077f17ee002bcfd07936001600160401b038616600052600080516020615c01833981519152602052610437826000206135d8565b01516104416149cd565b906001600160401b0360ff82169160081c166158bf565b926001600160401b0360405191168152336020820152836040820152a17f000000000000000000000000000000000000000000000000000000000000000060028110156105d25780610522575060405163a9059cbb60e01b6020820152336024820152604481019190915261050d906104de81606481015b03601f198101835282612ba1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316614218565b6001600080516020615c218339815191525580f35b600181036105b657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156105b1576040516340c10f1960e01b815233600482015260248101929092526000908290604490829084905af180156105a557610596575b5061050d565b61059f90612b07565b38610590565b6040513d6000823e3d90fd5b600080fd5b6040516366001a8960e01b815260ff9091166004820152602490fd5b634e487b7160e01b600052602160045260246000fd5b60405163ceb40a8560e01b81523360048201526001600160a01b03919091166024820152604490fd5b0390fd5b604051635feafa3160e11b81526001600160401b0383166004820152602490fd5b60040187525060208620909186915b81831061065e5750509060206103b592820101386103a8565b6020919350806001915483858801015201910190918392610645565b9050602092506103b594915060ff191682840152151560051b820101386103a8565b6040516309e3d0f360e11b8152600490fd5b5080fd5b503461026c578060031936011261026c5760206106cd615211565b604051908152f35b503461026c57602036600319011261026c576001600160a01b03600435818116908181036107e55761071690610709615a17565b610711615a17565b6159a3565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed97891825460ff600080516020615ba183398151915254168082036107fc575050908391825b84548110156107f8578460005281817f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd1015416803b156107f457848091602460405180948193632c7b84dd60e11b83528960048401525af19081156107e95785916107d1575b50506107cc90612de1565b61075b565b6107da90612b07565b6107e55783386107c1565b8380fd5b6040513d87823e3d90fd5b8480fd5b8380f35b604492506040519163d2a13a2960e01b835260048301526024820152fd5b503461026c578060031936011261026c57602060ff600080516020615aa18339815191525416604051908152f35b503461026c57602036600319011261026c5760043560ff8116908181036105b157610871615a17565b81156108e2577f2a855b929b9a53c6fb5b5ed248b27e502b709c088e036a5aa17620c8fc5085a9916108dc60ff92600080516020615aa1833981519152805493851985161790556108c0613060565b6040805160ff9490951684168552921660208401528291820190565b0390a180f35b60405163831761d760e01b8152600490fd5b503461026c5761090336612c24565b906002600080516020615b21833981519152541461069c5761092492613129565b80f35b503461026c57602036600319011261026c5761ffff610944612a9d565b61094c6151f2565b5016600052600080516020615bc18339815191526020526109ae6109736040600020614dcd565b6040519182918291909160406001600160401b038160608401956001600160481b038082511686526020820151166020860152015116910152565b0390f35b503461026c57602036600319011261026c5761ffff906109d0612a9d565b9060206040516109df81612b50565b828152015216600052600080516020615a8183398151915260205260408060002060ff8251610a0d81612b50565b60208260018554958685520154169101908152835192835251166020820152f35b503461026c578060031936011261026c576109ae604051610a4e81612b50565b60058152640302e312e360dc1b6020820152604051918291602083526020830190612ae2565b503461026c578060031936011261026c576040518091600080516020615b6183398151915290815480845260208094019081938352600080516020615ac183398151915290835b818110610b185750505084610ad1910385612ba1565b60405193838594850191818652518092526040850193925b828110610af857505050500390f35b83516001600160a01b031685528695509381019392810192600101610ae9565b82546001600160a01b031684529286019260019283019201610abb565b5060c036600319011261026c57610b4a612aae565b906084359182151583036106ae5760a4356001600160401b039283821161026c5750610b7a903690600401612bdd565b610b82615a50565b6002600080516020615b21833981519152541461069c57602093610bb0926064359060443590600435613c9c565b6001600080516020615c218339815191525560405191168152f35b503461026c578060031936011261026c5760206002600080516020615b218339815191525414604051908152f35b503461026c578060031936011261026c57600080516020615c41833981519152546040516001600160a01b039091168152602090f35b503461026c576020806003193601126106ae576001600160a01b039060043582811691908281036107f457610c62615a17565b8215610f2e5782600052600080516020615be183398151915280835260ff91826040600020541615610f1557846000528184528260406000205460081c1615610efc5784600052818452604060002061ff001990818154169055600080516020615ba1833981519152928354858160081c16928315610ee85761ff0060001980950160081b169116178455600080516020615b418339815191528054918860005287526001600160401b03600192610d2f82858a60406000205460101c161b198316169282168310614a9f565b6001600160401b0319161790558897600080516020615b618339815191528054938b5b858110610de2575b505050505050918091610da26040969594610d957f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f99614a9f565b610d9d614abc565b614ba7565b5460081c16600080516020615aa18339815191529081548381168210610dd4575b50505416908351928352820152a180f35b60ff19161781553880610dc3565b838b610ded8361302f565b929054600393841b1c1614610e0b5750610e0690612de1565b610d52565b9590918093959798999a9b9c508101908111610ed45790610e3f84610e32610e5e9461302f565b905490891b1c169161302f565b90919082549060031b9160018060a01b03809116831b921b1916179055565b82548015610ec057946040999794610da2948a9894610d95947f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f9e9c990192610ea68461302f565b81939154921b1b1916905555998496979899839650610d5a565b634e487b7160e01b8c52603160045260248cfd5b634e487b7160e01b8d52601160045260248dfd5b634e487b7160e01b8b52601160045260248bfd5b6040516307d86e9160e21b815260048101869052602490fd5b604051630d583f4760e41b815260048101869052602490fd5b604051632f44bd7760e01b8152600490fd5b503461026c57610f4f36612c24565b9033600052600080516020615be183398151915260209080825260ff60406000205460081c161561116357600080516020615b2183398151915291600283541461069c5761ffff861680600052600080516020615a8183398151915282528460406000205403611145575060405163b3f07bbd60e01b815291818380610fd9898b600484016130ff565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af492831561113a57889361110b575b503360005280825261101d60ff60406000205460101c1684612ff9565b6110f25760606110d193927f35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e592336000528082528a6001600160401b03610100600160481b03604082600160ff836000205460101c161b1693898152600080516020615ae1833981519152875220928354928360081c161760081b1690610100600160481b03191617905533600052815260ff60406000205460101c166040519185835233908301526040820152a1612f8c565b6110d9578480f35b5460021461069c576110ea92613129565b388080808480f35b604051631089c4a160e11b815260048101849052602490fd5b9092508181813d8311611133575b6111238183612ba1565b810103126105b157519138611000565b503d611119565b6040513d8a823e3d90fd5b6044908560405191635788c0fd60e11b835260048301526024820152fd5b60405163a0ae911d60e01b8152336004820152602490fd5b503461026c578060031936011261026c57602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50602036600319011261026c576001600160401b036004351690816004350361026c576111e5615a50565b6002600080516020615b21833981519152541461069c5781600052600080516020615c018339815191526020526040600020916040519261122584612b1a565b805484526001810154602085015261ffff60028201546001600160481b03811660408701526001600160401b038160481c16606087015260881c16608085015260018060a01b0360038201541660a08501526040518381949060048401549361128d85613587565b808552946001811690811561141e57506001146113d9575b50506112b392500383612ba1565b60c083019182526001600160401b03606084015116156113c1576112e46001600160401b0360608501511642612f7f565b6001600160401b037f00000000000000000000000000000000000000000000000000000000000000001611611396579161137391602093600052600080516020615c01833981519152845261133c60406000206135d8565b6001600160481b036040830151169161ffff608082015116815190868301519260a0600180821b0391015116935194600435614412565b6001600080516020615c21833981519152556001600160401b0360405191168152f35b6044906001600160401b036060850151166040519163c06cf05f60e01b835260048301526024820152fd5b60249060405190635feafa3160e11b82526004820152fd5b60049193949250018252602082205b8183106114025750509060206112b39282010138806112a5565b60209193508060019154838589010152019101909184926113e8565b915050602092506112b394915060ff191682840152151560051b82010138806112a5565b50606036600319011261026c57611457612aae565b604435611462615a50565b6002600080516020615b21833981519152541461069c5760209181611373926040519261148e84612b50565b6001845285368186013760043561363a565b503461026c57604036600319011261026c576114ba612a9d565b6024356001600160401b038111611619576114d9903690600401612bdd565b91604051918290600080516020615b61833981519152828154918287526020809701908652600080516020615ac183398151915292865b888282106115fa5750505061152792500383612ba1565b826115518351966040519788928392635b10743960e11b8452604060048501526044840190612ae2565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156115ef5783949561158a94926115cb575b50612e24565b604051926040840160408552835180915285606086019401915b8181106115b75750505082938301520390f35b8251855293860193918601916001016115a4565b6115e89192503d8087833e6115e08183612ba1565b810190612d0f565b9038611584565b6040513d85823e3d90fd5b85546001600160a01b0316845260019586019588955093019201611510565b8280fd5b503461026c578060031936011261026c57611636614cee565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b038082169060018201918183116117465760ff8460401c16908115611739575b5061172757600160401b911680926001600160481b03191617179081835560ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e541615611715577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2926020926116f5613060565b6116fd614abc565b68ff000000000000000019169055604051908152a180f35b604051632866815360e11b8152600490fd5b60405163f92ee8a960e01b8152600490fd5b9050818316111538611680565b634e487b7160e01b600052601160045260246000fd5b503461026c57604036600319011261026c5760243560ff811681036105b157611789602091600435612ff9565b6040519015158152f35b503461026c578060031936011261026c57600080516020615b01833981519152546040516001600160a01b039091168152602090f35b503461026c57602036600319011261026c5761181e6001600160401b036020926040600080516020615b4183398151915254916004358152600080516020615ae18339815191528652205460081c16166157e1565b60ff60405191168152f35b503461026c578060031936011261026c576118426151f2565b506109ae610973614d85565b503461026c578060031936011261026c57600080516020615b0183398151915254611881906001600160a01b0316614d32565b600080516020615b21833981519152600281541461069c57600290557f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd2602060405160018152a180f35b503461026c57602036600319011261026c576004356118e8615a50565b6002600080516020615b21833981519152541461069c5761190881615228565b602081016001600160401b039081815116156119ce5761192b8282511642612f7f565b827f000000000000000000000000000000000000000000000000000000000000000016116119ac578385527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b860205260408086208681556001018690558301518351869161050d916001600160481b0316906001600160a01b031687614893565b516040516301cb739d60e71b8152600481019490945216602483015250604490fd5b604051630301bcaf60e61b815260048101859052602490fd5b503461026c578060031936011261026c57611a00614cee565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c1615906001600160401b03811680159081611c02575b6001149081611bf8575b159081611bef575b506117275767ffffffffffffffff198116600117835581611bd0575b50611a76615962565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381163303611ba75750611ab0615962565b611ab8615962565b611ac0615962565b6001600080516020615b2183398151915255600080516020615c4183398151915280546001600160a01b03191633179055611af9615962565b611b01615962565b611b0a336159a3565b611b12615962565b611b1a615962565b6001600080516020615c2183398151915255611b51610100600160481b0360ff611b4a611b456149cd565b615888565b1617614e2d565b611b59613060565b611b61614abc565b611b69575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b604051636345072160e11b81526001600160a01b03919091166004820152336024820152604490fd5b68ffffffffffffffffff19166801000000000000000117825538611a6d565b90501538611a51565b303b159150611a49565b839150611a3f565b503461026c57608036600319011261026c57611c24612a9d565b6024356044359160ff83168093036105b15761ffff90611c42615a17565b16918215611d4d578115611d3b578015611d29577f1456404e7f41f35c3daac941bb50bad417a66275c3040061b4287d787719599d9160809184600052600080516020615a81833981519152918260205260ff604060002081600160405192611caa84612b50565b805484520154169460208201958652886000526020526001604060002084815501848319825416179055611d0c611ceb611ce26149cd565b8060643561591a565b89600052600080516020615bc183398151915260205260406000209061502b565b51935116604051938452602084015260408301526060820152a280f35b60405163ade64f0b60e01b8152600490fd5b60405163f839a0cb60e01b8152600490fd5b60405163100b0f2760e11b8152600490fd5b503461026c578060031936011261026c5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461026c578060031936011261026c57602060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb54166040519015158152f35b503461026c578060031936011261026c577f0000000000000000000000000000000000000000000000000000000000000000906002821015611e2f5760208260ff60405191168152f35b634e487b7160e01b81526021600452602490fd5b503461026c578060031936011261026c57600080516020615b0183398151915254611e76906001600160a01b0316614d32565b600080516020615b218339815191526002815403611ebf57600190557fe11c2112add17fb763d3bd59f63b10429c3e11373da4fb8ef6725107a2fdc4b06020604051838152a180f35b604051637e38d1d360e11b8152600490fd5b503461026c578060031936011261026c57602061181e6149cd565b503461026c57602036600319011261026c5760ff60406020926004358152600080516020615ae183398151915284522054166040519015158152f35b503461026c578060031936011261026c576040517f00000000000000000000000000000000000000000000000000000000000000006002811015611f6e57602092508152f35b634e487b7160e01b83526021600452602483fd5b503461026c578060031936011261026c5760206001600160401b03600080516020615b818339815191525416604051908152f35b503461026c576020806003193601126106ae576004356001600160a01b038116918282036107e557611fe6615a17565b8215610f2e5782600052600080516020615be18339815191529182825260ff90816040600020541660001461218a5784600052838352604060002061010061ff00198254161790555b600080516020615b6183398151915290815491600160401b8310156121745782610e3f9160016120619501905561302f565b600080516020615ba183398151915292835461ff00612084848360081c16614a8e565b60081b169061ff00191617809455600080516020615b4183398151915280546001600160401b0390818116918860005284875260018660406000205460101c161b16821791821461215b5767ffffffffffffffff19161790557ff05962b5774c658e85ed80c91a75af9d66d2af2253dda480f90bce78aff5eda594606094909390929091612110614abc565b84600052825280600080516020615aa183398151915280548281161561214c575b5054169260405194855260081c16908301526040820152a180f35b60ff1916600117815538612131565b604051638d68f84d60e01b815260048101899052602490fd5b634e487b7160e01b600052604160045260246000fd5b600080516020615ba18339815191528281541660408110156122a257604051906121b382612b35565b6001825285820190600182526040830190815288600052878752604060002092511515918662ff000061ff0086549351151560081b16935160101b1693169062ffffff1916171717905580548361220b818316614a8e565b169060ff19161790557f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed978805490600160401b821015612174576001820180825582101561228c576000527f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd10180546001600160a01b0319168617905561202f565b634e487b7160e01b600052603260045260246000fd5b60405163891684c360e01b8152600490fd5b503461026c57602036600319011261026c576004356001600160401b0381168091036106ae57606060c06040516122ea81612b1a565b84815284602082015284604082015284838201528460808201528460a08201520152600052600080516020615c0183398151915260205260406000206040519061233382612b1a565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a08301526040518381949060048401549361239b85613587565b8085529460018116908115612482575060011461243d575b50506123c192500383612ba1565b60c081019182526109ae6040519283926020845280516020850152602081015160408501526001600160481b0360408201511660608501526001600160401b03606082015116608085015261ffff60808201511660a085015260a0600180821b039101511660c08401525160e080840152610100830190612ae2565b60049193949250018252602082205b8183106124665750509060206123c19282010138806123b3565b602091935080600191548385890101520191019091849261244c565b915050602092506123c194915060ff191682840152151560051b82010138806123b3565b503461026c57602036600319011261026c576124c0615a17565b6109246124d76124ce6149cd565b8060043561591a565b614e2d565b503461026c57604036600319011261026c576109246124f9612aae565b612501615a17565b61ffff61250f6124ce6149cd565b9116600052600080516020615bc183398151915260205260406000209061502b565b503461026c576020806003193601126106ae576001600160a01b03600435818116908181036107f457612562615a17565b61256a614cee565b3b1561293d577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e918254916125f760ff841615614a9f565b60ff199283166001178455303b156107f45760405163011fa75760e71b8152858160048183305af180156128f25761292a575b5060405163689f90c360e01b81528281600481305afa9081156128f25786916128fd575b5015612686575b50507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b604051637e062a3560e11b81528281600481305afa9081156128f25786916128b4575b50816126d9927f000000000000000000000000000000000000000000000000000000000000000016911614614a9f565b6040516314ad290960e11b81528181600481305afa9081156107e957859161287e575b507f000000000000000000000000000000000000000000000000000000000000000090600282101561286a57600281101561286a5761273b9114614a9f565b604051634d4502c960e11b81528181600481305afa80156107e9578590612834575b612790915061ffff807f000000000000000000000000000000000000000000000000000000000000000016911614614a9f565b604051631d2a9eff60e21b8152908082600481305afa9081156107e95785916127f4575b506127ed91506001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016911614614a9f565b3880612655565b905081813d831161282d575b61280a8183612ba1565b810103126107e557516001600160401b03811681036107e5576127ed90386127b4565b503d612800565b508181813d8311612863575b61284a8183612ba1565b810103126107f45761285e6127909161311a565b61275d565b503d612840565b634e487b7160e01b86526021600452602486fd5b90508181813d83116128ad575b6128958183612ba1565b810103126107f4575160028110156107f457386126fc565b503d61288b565b90508281813d83116128eb575b6128cb8183612ba1565b810103126128e757519080821682036128e757906126d96126a9565b8580fd5b503d6128c1565b6040513d88823e3d90fd5b61291d9150833d8511612923575b6129158183612ba1565b810190614200565b3861264e565b503d61290b565b61293690959195612b07565b933861262a565b60405162461bcd60e51b815260048101849052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b503461026c57602036600319011261026c576020611789600435612f8c565b503461026c57602036600319011261026c576004356001600160a01b0381811691829003611619576129f981600080516020615b018339815191525416614d32565b600080516020615c4183398151915280546001600160a01b031981168417909155167f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b503461026c57602036600319011261026c576106cd612a95612a90604060209461ffff612a6d612a9d565b612a756151f2565b50168152600080516020615bc1833981519152865220614dcd565b6152be565b6104416149cd565b6004359061ffff821682036105b157565b6024359061ffff821682036105b157565b60005b838110612ad25750506000910152565b8181015183820152602001612ac2565b90602091612afb81518092818552858086019101612abf565b601f01601f1916010190565b6001600160401b03811161217457604052565b60e081019081106001600160401b0382111761217457604052565b606081019081106001600160401b0382111761217457604052565b604081019081106001600160401b0382111761217457604052565b608081019081106001600160401b0382111761217457604052565b60a081019081106001600160401b0382111761217457604052565b90601f801991011681019081106001600160401b0382111761217457604052565b6001600160401b03811161217457601f01601f191660200190565b81601f820112156105b157803590612bf482612bc2565b92612c026040519485612ba1565b828452602083830101116105b157816000926020809301838601378301015290565b90600319906060828401126105b15760043561ffff811681036105b1579260243592604435916001600160401b03918284116105b15760609084830301126105b15760405192612c7384612b35565b806004013584526024810135602085015260448101359283116105b157612c9d9201600401612bdd565b604082015290565b6001600160401b0381116121745760051b60200190565b519060ff821682036105b157565b81601f820112156105b1578051612ce081612bc2565b92612cee6040519485612ba1565b818452602082840101116105b157612d0c9160208085019101612abf565b90565b9060209081838203126105b15782516001600160401b03938482116105b157019080601f830112156105b1578151612d4681612ca5565b94604090612d5682519788612ba1565b828752858088019360051b860101948486116105b157868101935b868510612d8357505050505050505090565b84518381116105b15782019084601f1983890301126105b157845190612da882612b50565b612db38a8401612cbc565b825285830151918583116105b157612dd2898c80969581960101612cca565b83820152815201940193612d71565b60001981146117465760010190565b805182101561228c5760209160051b010190565b9060406020612d0c9360ff81511684520151918160208201520190612ae2565b909291805191612e3383612ca5565b92604091612e4383519586612ba1565b818552601f19612e5283612ca5565b01602090368288013760009788955b848710612e7357505050505050509190565b909192939495988685612eec868d612e9260018060a01b039188612df0565b511680600052600080516020615be18339815191528252612ebd60ff866000205460101c1689612df0565b51908551808095819463b5634c7360e01b835261ffff60049916898401526024998a8401526044830190612e04565b03915afa908115612f7457908d91600091612f42575b50612f0e81928d612df0565b528301809311612f2f575050612f249099612de1565b959493929190612e61565b601190634e487b7160e01b600052526000fd5b91508782813d8311612f6d575b612f598183612ba1565b8101031261026c5750518c90612f0e612f02565b503d612f4f565b8a513d6000823e3d90fd5b9190820391821161174657565b6001600160401b039060ff612fe581600080516020615aa18339815191525416938493600080516020615b418339815191525490600052600080516020615ae183398151915260205260406000205460081c16166157e1565b1610159081612ff2575090565b9050151590565b906001600160401b0391600052600080516020615ae1833981519152602052600160ff60406000205460081c92161b1616151590565b600080516020615b61833981519152805482101561228c57600052600080516020615ac18339815191520190600090565b60ff600080516020615aa1833981519152541660405161307f81612b50565b60ff600080516020615ba183398151915254818116835260081c168060208301528083116130ba57505160ff166130b35750565b156108e257565b82604491604051916313c3d1b160e01b835260048301526024820152fd5b9060606040612d0c9380518452602081015160208501520151918160408201520190612ae2565b60409061ffff612d0c949316815281602082015201906130d8565b519061ffff821682036105b157565b91907f000000000000000000000000000000000000000000000000000000000000000046810361344957508161315f9184613467565b9190916134445760408091015191815192635399ded560e11b8452608084806131946020948560048401526024830190612ae2565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415613439576000946133c4575b5061ffff9283606086015116847f0000000000000000000000000000000000000000000000000000000000000000168082036133a95750506131fc6149cd565b8161322587519280613220816001600160401b03968760ff82169160081c166158bf565b61591a565b960151908160a01c613392576001600160a01b039182169560007f000000000000000000000000000000000000000000000000000000000000000083161561338b57506132706151f2565b508816600052600080516020615bc18339815191528452613296612a9084600020614dcd565b6132a08882615853565b81808960081c169160081c16105b6132d357505050506132c36132d194846155b1565b6132cc83615491565b614893565b565b7f7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f316297509561336f839596949760019394519261330e84612b35565b6001600160481b038091168452898401908242168252888501978852896000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b88b52886000209451166001600160481b03198554161784555116826157a0565b019151166001600160601b0360a01b82541617905551908152a1565b90506132ae565b50602491519063033b960d60e41b82526004820152fd5b6044925191631ee5902560e11b835260048301526024820152fd5b6080949194813d8211613431575b816133df60809383612ba1565b810103126106ae578351916133f383612b6b565b8151906001600160481b038216820361026c57508252848101518583015283810151848301526134259060600161311a565b606082015292386131bc565b3d91506133d2565b83513d6000823e3d90fd5b505050565b604490604051906377d879fb60e01b82526004820152466024820152fd5b60405163b3f07bbd60e01b81529193926020918391829161348c9190600484016130ff565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105a55760009161351d575b506134be81612f8c565b15613505576134cc8161354e565b92836134da57509150600090565b7f4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef2600080a360009190565b60249060405190630451c4fb60e41b82526004820152fd5b906020823d8211613546575b8161353660209383612ba1565b8101031261026c575051386134b4565b3d9150613529565b600052600080516020615ae18339815191526020526040600020805460ff81166135805760ff19166001179055600090565b5050600190565b90600182811c921680156135b7575b60208310146135a157565b634e487b7160e01b600052602260045260246000fd5b91607f1691613596565b8181106135cc575050565b600081556001016135c1565b6004600091828155826001820155826002820155826003820155016135fd8154613587565b8061360757505050565b82601f821160011461361857505055565b9091808252613636601f60208420940160051c8401600185016135c1565b5555565b9194939290946000958315613c8a578115613c78578215613c66577f00000000000000000000000000000000000000000000000000000000000000006136803082614a36565b906136c360018060a01b03821696604051906323b872dd60e01b60208301523360248301523060448301526064820152606481526136bd81612b86565b87614218565b6136d6826136d13084614a36565b612f7f565b957f00000000000000000000000000000000000000000000000000000000000000006002811015613c52579060018b9214613bcb575b5050505061ffff8116600052600080516020615a8183398151915260205260ff600160406000200154168015611d295761374f6137476149cd565b91828761591a565b906001600160401b038260081c1661376c60ff84169283836158bf565b808803613ba4575061378e61379391613786611b456149cd565b9384916158bf565b615369565b98600080516020615b8183398151915254966001600160401b0380891614613b905767ffffffffffffffff1988166001600160401b03898116600101811691909117600080516020615b81833981519152557f00000000000000000000000000000000000000000000000000000000000000001615613b8a576138146151f2565b50613820612a90614d85565b61383d8c610100600160481b0360ff87169160081b161782615853565b6001600160401b03808d610100600160481b0360ff88169160081b161760081c169160081c16105b613b64578180613b5c575b6138b957505082612d0c9899610100600160481b0360ff8461389d826138a99716848660081b16176153d1565b169160081b1617615679565b6001600160401b03339516614412565b61ffff95979896919a506001600160481b039392506138d6615211565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a26040519661392388612b1a565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615c0183398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b03198254161781556139be6001600160401b03606087015116826157a0565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613b4857613a1f8354613587565b601f8111613b0d575b50602090601f8311600114613aa157906001600160401b03959683613a96575b50508160011b916000199060031b1c19161790555b7f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613a92346143bb565b1690565b015190503880613a48565b95601f19831684885260208820975b818110613af55750916001600160401b03969791846001959410613adc575b505050811b019055613a5d565b015160001960f88460031b161c19169055388080613acf565b83830151895560019098019760209384019301613ab0565b613b389084835260208320601f850160051c81019160208610613b3e575b601f0160051c01906135c1565b38613a28565b9091508190613b2b565b634e487b7160e01b81526041600452602490fd5b506000613870565b604490613b6f615211565b90604051916326fb55dd60e01b835260048301526024820152fd5b81613865565b634e487b7160e01b82526011600452602482fd5b87613bb160449282612f7f565b604051916338f831a560e11b835260048301526024820152fd5b803b156106ae578190602460405180948193630852cd8d60e31b83528c60048401525af18015613c4757613c32575b50613c06903090614a36565b808203613c1457888161370c565b60449250604051916302156a8f60e01b835260048301526024820152fd5b98613c40613c06929a612b07565b9890613bfa565b6040513d8c823e3d90fd5b634e487b7160e01b8b52602160045260248bfd5b60405163717f139360e11b8152600490fd5b604051634e46966960e11b8152600490fd5b604051631f2a200560e01b8152600490fd5b95949392919060008715613c8a578215613c78578315613c66577f0000000000000000000000000000000000000000000000000000000000000000613ce13082614a36565b90613d2460018060a01b0382169a604051906323b872dd60e01b6020830152336024830152306044830152606482015260648152613d1e81612b86565b8b614218565b613d32826136d13084614a36565b997f000000000000000000000000000000000000000000000000000000000000000060028110156141ec57600114614182575b50505061ffff8216600052600080516020615a8183398151915260205260ff600160406000200154168015611d2957613da7613d9f6149cd565b91828b61591a565b916001600160401b038360081c16613dc460ff85169384836158bf565b808c03614175575061378e613de691613dde611b456149cd565b9485916158bf565b99600080516020615b8183398151915254976001600160401b03808a16146141615767ffffffffffffffff1989166001600160401b038a8116600101811691909117600080516020615b81833981519152557f0000000000000000000000000000000000000000000000000000000000000000161561415b57613e676151f2565b508b6001600160401b0380613e7d612a90614d85565b9260081b610100600160481b031660ff881617613e9a8185615853565b60081c169160081c16105b811580614154575b6141495781614141575b50613ee857505082612d0c9899610100600160481b0360ff6138a994169160081b1617613ee3816153d1565b615679565b61ffff95979896919a506001600160481b03939250613f05615211565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a260405196613f5288612b1a565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615c0183398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b0319825416178155613fed6001600160401b03606087015116826157a0565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613b485761404e8354613587565b601f8111614111575b50602090601f83116001146140bf57906001600160401b03959683613a965750508160011b916000199060031b1c19161790557f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613a92346143bb565b95601f19831684885260208820975b8181106140f95750916001600160401b03969791846001959410613adc57505050811b019055613a5d565b838301518955600190980197602093840193016140ce565b61413b9084835260208320601f850160051c81019160208610613b3e57601f0160051c01906135c1565b38614057565b905038613eb7565b604483613b6f615211565b5080613ead565b82613ea5565b634e487b7160e01b83526011600452602483fd5b8b613bb160449282612f7f565b803b156107e55783809160248d6040519485938492630852cd8d60e31b845260048401525af180156141e1576141cc575b506141bf903090614a36565b808203613c145780613d65565b926141da6141bf9294612b07565b92906141b3565b6040513d86823e3d90fd5b634e487b7160e01b85526021600452602485fd5b908160209103126105b1575180151581036105b15790565b604051614276916001600160a01b031661423182612b50565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af16142706142f2565b91614322565b8051908161428357505050565b8280614293938301019101614200565b1561429b5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d1561431d573d9061430382612bc2565b916143116040519384612ba1565b82523d6000602084013e565b606090565b919290156143845750815115614336575090565b3b1561433f5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156143975750805190602001fd5b60405162461bcd60e51b815260206004820152908190610611906024830190612ae2565b600080808084335af16143cc6142f2565b50156143d55750565b60249060405190630b288dc560e21b82526004820152fd5b906020828203126105b15781516001600160401b0381116105b157612d0c9201612cca565b959492949391936040518081600080516020615b6183398151915260208154938481520190600052600080516020615ac18339815191529260005b81811061487157505061446292500382612ba1565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed978549181511561485f576144b56000916040519485928392635b10743960e11b8452604060048501526044840190612ae2565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105a557600092614842575b506144ef818388612e24565b95863410614823576145018734612f7f565b80614814575b506040519061451582612b6b565b6001600160481b0386811683527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020840190815260408085018d815261ffff8d81166060880190815292516315cfa3cb60e11b81529651909416600487015291516024860152905160448501525116606483015260008260848173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105a557614614926000928d9284926147f8575b506001600160401b03604051936145dd85612b35565b16835260018060a01b031660208301526040820152604051809381926311692f3760e31b83526020600484015260248301906130d8565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105a5576000916147d5575b5061ffff8816600052600080516020615a818339815191526020526040600020549383519385156147b95760005b8581106146dd5750505050505050927fe54e51e42099622516fa3b48e9733581c9dbdcb771cafb093f745a0532a35982949261ffff926146ae60c0966104416149cd565b906040519586526020860152604085015260608401521660808201526001600160401b03841660a0820152a190565b6001600160a01b036146ef8284612df0565b5116906146fc8187612df0565b5182600052600080516020615be183398151915260205261472860ff60406000205460101c1686612df0565b51833b156105b15761476e9361ffff8f936000948f8e906147808d6040519b8c998a988997634b5b050560e01b895216600488015260a0602488015260a4870190612e04565b85810360031901604487015290612ae2565b916064840152608483015203925af19182156105a5576147a5926147aa575b50612de1565b61466a565b6147b390612b07565b3861479f565b604051630ebc95af60e21b815261ffff8b166004820152602490fd5b6147f291503d806000833e6147ea8183612ba1565b8101906143ed565b3861463c565b61480d9192503d8086833e6147ea8183612ba1565b90386145c7565b61481d906143bb565b38614507565b6040516306a91e3760e51b815260048101889052346024820152604490fd5b6148589192503d806000833e6115e08183612ba1565b90386144e3565b6040516334e7b19560e11b8152600490fd5b84546001600160a01b031683526001948501948694506020909301920161444d565b92916148a1906104416149cd565b906000937f504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a918580a27f0000000000000000000000000000000000000000000000000000000000000000936002851015611e2f5784614936575060405163a9059cbb60e01b60208201526001600160a01b03909116602482015260448101919091529091506132d1906104de81606481016104d0565b9193600181036105b657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b15611619576040516340c10f1960e01b81526001600160a01b03919091166004820152602481019490945291929181908390604490829084905af19081156149c157506149b85750565b6132d190612b07565b604051903d90823e3d90fd5b600080604051602081019063313ce56760e01b8252600481526149ef81612b50565b51907f00000000000000000000000000000000000000000000000000000000000000005afa50614a1d6142f2565b6020818051810103126105b1576020612d0c9101612cbc565b6040516370a0823160e01b602082019081526001600160a01b039093166024808301919091528152600092839291614a6d81612b35565b51915afa50614a7a6142f2565b6020818051810103126105b1576020015190565b60ff1660ff81146117465760010190565b15614aa657565b634e487b7160e01b600052600160045260246000fd5b600080516020615ba18339815191525460ff8160081c16614aed600080516020615b61833981519152548214614a9f565b60005b818110614b7b575060005b818110614b14575050604060ff6132d192161115614a9f565b60018101808211611746575b828110614b365750614b3190612de1565b614afb565b614b7690614b71614b468461302f565b905490614b528461302f565b92909160018060a01b03809354600395861b1c16931b1c161415614a9f565b612de1565b614b20565b80614b71614b8b614ba29361302f565b905460039190911b1c6001600160a01b0316614ba7565b614af0565b6001600160a01b039081166000818152600080516020615be18339815191526020526040908190209051929190614bdd84612b35565b5460ff91614c19838316158015938488526020880197604087808460081c16159384158c5260101c1691019581875292614cd4575b5050614a9f565b600080516020615b4183398151915254946001600160401b0360019687868651161b1616151590511515916000968791600080516020615ba18339815191525497878960081c16935b848110614c96575b5050505050816132d196614c84869594614c8c9414614a9f565b151514614a9f565b5116911611614a9f565b8282614ca18361302f565b90549060031b1c1614614cbc57614cb790612de1565b614c62565b50919850849250839150614c849050826132d1614c6a565b90915081614ce5575b503880614c12565b90501538614cdd565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614614d2057565b604051633c64f99360e21b8152600490fd5b600080516020615c4183398151915254336001600160a01b039182161415919082614d78575b5050614d6057565b60405163e2a08e5d60e01b8152336004820152602490fd5b1633141590503880614d58565b60405190614d9282612b35565b8160406001600160401b03600080516020615c61833981519152546001600160481b0380821685528160481c16602085015260901c16910152565b90604051614dda81612b35565b60406001600160401b038294546001600160481b0380821685528160481c16602085015260901c16910152565b90600160481b600160901b0382549160481b1690600160481b600160901b031916179055565b600080516020615c618339815191529081546001600160481b03908181166001600160401b036008918184841c16801580615020575b15614ed1575050855471ffffffffffffffffff0000000000000000001916604886901b600160481b600160901b03161786555050505b825479ffffffffffffffff000000000000000000ffffffffffffffffff19169116174260901b67ffffffffffffffff60901b16179055565b86614edd612a90614d85565b926000614eea8383615831565b15614fb65750614f099291614efe91615853565b8388861c16906157c8565b610100600160481b039290841b831660ff861617614f278184615831565b15614fa8578160ff9282614f3e614f4b9487615853565b871c169084871c166157c8565b9116921b16175b614f5c8482615831565b614f8657600160481b600160901b039060481b1690600160481b600160901b031916178355614e99565b604051631e74e8fb60e31b815290831660048201528383166024820152604490fd5b5050905060ff915016614f52565b9493959290614fc890614fd293615853565b8389841c166157c8565b9260ff881694838087610100600160481b038098871b1617614ff48185615853565b851c1691841c160192831161500c57501b1617614f52565b634e487b7160e01b81526011600452602490fd5b5060ff851615614e63565b919080546001600160481b03808216916001600160401b03926008908483831c168015806151e7575b156150ba57505050508461506c6132d1959685614e07565b835467ffffffffffffffff60901b19919092161679ffffffffffffffff000000000000000000ffffffffffffffffff1990911617429190911660901b67ffffffffffffffff60901b16179055565b8590896150c9612a908a614dcd565b9360006150d68383615831565b156151915750916150ee6150f99260ff979894615853565b838c881c16906157c8565b610100600160481b039490861b85169116176151158184615831565b156151835760ff918161512b6151389386615853565b861c168784871c166157c8565b9116921b16175b6151498682615831565b615161579461515c6132d1959685614e07565b61506c565b604051631e74e8fb60e31b815290821660048201529085166024820152604490fd5b5050905060ff91501661513f565b9496506151ac93506151a291615853565b868a851c166157c8565b9160ff891693868086610100600160481b038097861b16176151ce8185615853565b841c1691831c16019186831161500c57501b161761513f565b5060ff841615615054565b604051906151ff82612b35565b60006040838281528260208201520152565b6152196151f2565b50612d0c612a95612a90614d85565b6152306151f2565b506000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b860205260406000206040519061526a82612b35565b80546001600160481b038116835260481c6001600160401b03166020830152600101546001600160a01b0316604082015290565b81156152a8570490565b634e487b7160e01b600052601260045260246000fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000169182156153525761533f828260ff936040610100600160481b0396015116420381615323602085019889519383875160081c160261529e565b9160081c1601915160081c1680821060001461534b5750615369565b9251169160081b161790565b9050615369565b506020015160ff16610100600160481b0317919050565b6001600160401b039081811161537d571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608490fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000161561548d5761540a6151f2565b50600160481b600160901b03615421612a90614d85565b610100600160481b0360ff61545c600080516020615c61833981519152968088549761544d8188615853565b60081c16908560081c166157c8565b92169160081b161760481b16906001600160401b0360901b4260901b1690600160481b600160d01b03191617179055565b5050565b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000161561548d576154ca6151f2565b506154d6612a90614d85565b90600160481b600160901b03600080516020615c6183398151915293845493816001600160401b0360901b4260901b16946155118184615853565b60081c16828260081c160182811160001461559d5750610100600160481b0360ff61553b84615369565b92169160081b1617906001600160481b038516906155598284615853565b80856001600160401b0360901b1988161760081c16908360081c161060001461559657505b60481b1691600160481b600160d01b03191617179055565b905061557e565b60ff61553b610100600160481b0392615369565b6001600160401b03807f0000000000000000000000000000000000000000000000000000000000000000161561344457610100600160481b0360ff61566b61ffff6132d1966155fe6151f2565b50169384600052600080516020615bc183398151915280602052615628612a906040600020614dcd565b60009687526020919091526040909520805467ffffffffffffffff60901b191642831660901b67ffffffffffffffff60901b1617815595819061544d8188615853565b92169160081b161790614e07565b6001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016156134445761ffff6132d1936156b86151f2565b5016600090808252600080516020615bc1833981519152806020526156e2612a9060408520614dcd565b91835260205260408220805467ffffffffffffffff60901b191642851660901b67ffffffffffffffff60901b1617815593839061571f8184615853565b60081c16838260081c160183811160001461578c5750610100600160481b0360ff61574985615369565b92169160081b1617918084546001600160481b0381169361576a8587615853565b5060081c16908360081c1610600014615784575090614e07565b905090614e07565b60ff615749610100600160481b0392615369565b9067ffffffffffffffff60481b82549160481b169067ffffffffffffffff60481b1916179055565b6001600160401b03918216908216039190821161174657565b60009182915b6001600160401b03908181168015615829576000190191821161581557169161580f90614a8e565b916157e7565b634e487b7160e01b85526011600452602485fd5b505050915090565b9061583c8183615853565b6001600160401b03809160081c169160081c161190565b60ff9182169116818103615865575050565b604051635ce6db6160e11b815260ff918216600482015291166024820152604490fd5b60ff811660081015612d0c5750600890565b9060ff8091169116039060ff821161174657565b60ff16604d811161174657600a0a90565b919060ff821660ff82168181146159135711156158f2576158e7612d0c93926158ec9261589a565b6158ae565b9061529e565b6158e7906158ff9261589a565b908181029181830414901517156117465790565b5050505090565b61594d61378e60ff92610100600160481b03949561593787615888565b90858116868316101561595857509586916158bf565b92169160081b161790565b90509586916158bf565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561599157565b604051631afcd79f60e31b8152600490fd5b6001600160a01b039081169081156159fe57600080516020615b0183398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020615b01833981519152546001600160a01b03163303615a3857565b60405163118cdaa760e01b8152336004820152602490fd5b600080516020615c218339815191526002815414615a6e5760029055565b604051633ee5aeb560e01b8152600490fdfeebcc9f646b0f459ff8f387587d536b0af3484cf442e1577400f322334e7d1ef047028352a8b3feae1a85fba43bc13f990568bb1637dce33d3dbfd791a0808b7f6c3cb3f3ae91330f31ba2bc0ff8855fc834fb66dc27e8e0b1a398617dabaa5a668dfeeddfa5e4e9adceec01a3aba274bdcbab3f6ac9956417a4332f2b08abdda9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930064bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022fd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f00758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e1ad78307a8b51804c575f26039dcb87c58925afb3b7c08732f3b21b942aed7a768561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d89efb21dcaedea63b55c44882f329622e13a8d0f5b947b3a372826208a9003da1549bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f852fa0677fef8612c6c15b518c9fa56761e9ed15cfd5c6e5399e5467985ac7ed9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00bfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12497c25289a27ec8c9be54d4a154cf80490d69bda989cdb8328232e08fea9220420a2646970667358221220ff24bb6218d11a60fad2e17b2c54e55dfe3f8155f61d7f10dfd1f2886b23efbc64736f6c63430008130033",isSuperArgs$5=t=>typeof t[0]=="string"||Array.isArray(t[0])||"_isInterface"in t[0];var jn;let NttManager__factory$2=(jn=class extends ContractFactory{constructor(...e){if(isSuperArgs$5(e))super(...e);else{const[s,l]=e;super(_abi$5,jn.linkBytecode(s),l)}}static linkBytecode(e){let s=_bytecode$5;return s=s.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),s}getDeployTransaction(e,s,l,d,u,p){return super.getDeployTransaction(e,s,l,d,u,p||{})}deploy(e,s,l,d,u,p){return super.deploy(e,s,l,d,u,p||{})}connect(e){return super.connect(e)}static createInterface(){return new Interface(_abi$5)}static connect(e,s){return new Contract(e,_abi$5,s)}},Ae(jn,"bytecode",_bytecode$5),Ae(jn,"abi",_abi$5),jn);const _abi$4=[{type:"constructor",inputs:[{name:"nttManager",type:"address",internalType:"address"},{name:"wormholeCoreBridge",type:"address",internalType:"address"},{name:"wormholeRelayerAddr",type:"address",internalType:"address"},{name:"specialRelayerAddr",type:"address",internalType:"address"},{name:"_consistencyLevel",type:"uint8",internalType:"uint8"},{name:"_gasLimit",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"WORMHOLE_TRANSCEIVER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"consistencyLevel",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"encodeWormholeTransceiverInstruction",inputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],outputs:[{name:"",type:"bytes",internalType:"bytes"}],stateMutability:"pure"},{type:"function",name:"gasLimit",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getNttManagerOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getNttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isVAAConsumed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"nttManager",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"nttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"parseWormholeTransceiverInstruction",inputs:[{name:"encoded",type:"bytes",internalType:"bytes"}],outputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],stateMutability:"pure"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"receiveMessage",inputs:[{name:"encodedMessage",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"receiveWormholeMessages",inputs:[{name:"payload",type:"bytes",internalType:"bytes"},{name:"additionalMessages",type:"bytes[]",internalType:"bytes[]"},{name:"sourceAddress",type:"bytes32",internalType:"bytes32"},{name:"sourceChain",type:"uint16",internalType:"uint16"},{name:"deliveryHash",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"sendMessage",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]},{name:"nttManagerMessage",type:"bytes",internalType:"bytes"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"setIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEvm",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setWormholePeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"specialRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ISpecialRelayer"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferTransceiverOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"wormhole",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormhole"}],stateMutability:"view"},{type:"function",name:"wormholeRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormholeRelayer"}],stateMutability:"view"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ReceivedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"ReceivedRelayedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"RelayingInfo",inputs:[{name:"relayingType",type:"uint8",indexed:!1,internalType:"uint8"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"deliveryPayment",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"SendTransceiverMessage",inputs:[{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"message",type:"tuple",indexed:!1,internalType:"struct TransceiverStructs.TransceiverMessage",components:[{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"nttManagerPayload",type:"bytes",internalType:"bytes"},{name:"transceiverPayload",type:"bytes",internalType:"bytes"}]}],anonymous:!1},{type:"event",name:"SetIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isEvm",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetWormholePeer",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"CallerNotNttManager",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CallerNotRelayer",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CannotRenounceTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"}]},{type:"error",name:"CannotTransferTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"},{name:"newOwner",type:"address",internalType:"address"}]},{type:"error",name:"InvalidBoolVal",inputs:[{name:"val",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidBoolValue",inputs:[{name:"value",type:"uint256",internalType:"BooleanFlag"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidRelayingConfig",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidVaa",inputs:[{name:"reason",type:"string",internalType:"string"}]},{type:"error",name:"InvalidWormholeChainIdZero",inputs:[]},{type:"error",name:"InvalidWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidWormholePeerZeroAddress",inputs:[]},{type:"error",name:"LengthMismatch",inputs:[{name:"encodedLength",type:"uint256",internalType:"uint256"},{name:"expectedLength",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerAlreadySet",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"TransferAlreadyCompleted",inputs:[{name:"vaaHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"UnexpectedAdditionalMessages",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"deployer",type:"address",internalType:"address"},{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedRecipientNttManagerAddress",inputs:[{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"expectedRecipientNttManagerAddress",type:"bytes32",internalType:"bytes32"}]}],_bytecode$4="0x6101c06040818152346200031d5760c082620036f8803803809162000025828562000322565b8339810103126200031d576200003b826200035c565b906020906200004c8285016200035c565b926200005a8286016200035c565b62000068606087016200035c565b9160808701519660ff881688036200031d5760a00151947ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080549060ff82881c166200030c5782906001600160401b03906002600160401b031984831601620002c9575b50505050306080528160a052845190637e062a3560e11b8252808260048160018060a01b038097165afa908115620002be576000916200027f575b50905060c0523360e0528061012096168652806101409216825261016092168252610180924684526101009687526101a094855251946133869687620003728839608051876130f1015260a051878181610dc201528181611503015281816118860152818161200b015281816121ba015281816128960152612a9a015260c051878181610e4d01528181611c490152818161220c015281816126430152612d32015260e05187610cca01525186818161076301528181610f000152818161122a01528181611bb401528181611da701526123510152518581816101fd01528181610bbe01528181610f2b0152818161125601528181611b5c01528181611dd40152818161225c01528181612db801528181612e980152612f3601525184818161079c015281816115ec01528181611a00015281816122ac0152612c7b015251838181610a1e01528181611bf2015281816122fc0152612d6f015251826102410152518181816106a1015281816119cb0152612c500152f35b82813d8311620002b6575b62000296818362000322565b81010312620002b35750620002ab906200035c565b803862000107565b80fd5b503d6200028a565b86513d6000823e3d90fd5b6001600160401b0319909316811790925586519182527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291a138818180620000cc565b865163f92ee8a960e01b8152600490fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200034657604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200031d5756fe6080604081815260048036101561001557600080fd5b600092833560e01c908163036de8af14612561575080630900f0101461203a5780630b4a1e891461139157806324fb21db14611ff6578063320d0d8e14611fb357806348b330d614611f6d5780634b5b0505146117f55780634b795b2114611754578063529dca321461154a57806358f709ba146114db578063657b3b2f1461143a57806366152efc146113d9578063689f90c314611396578063694977d7146113915780637ab564031461113157806380eb3239146110f55780638129fc1c14610c3657806381e8ec7f14610bed57806384acd1bb14610ba95780638da5cb5b14610b735780638fd3ab8014610a4d57806390ea542814610a09578063935dec07146109c757806396dddc63146109125780639fd0506d146108ca578063b187bd2614610889578063b5634c731461083c578063bc7f6d37146107f9578063d8d28418146107cb578063da25b72514610787578063e8dfd50814610749578063f2fde38b14610714578063f48066a8146106c8578063f68016b7146106895763f953cec7146101a457600080fd5b346106855760209081600319360112610681578035906001600160401b038581841161067e576101da6101f99436908501612754565b86518095819263607ec5ef60e11b83528887840152602483019061283d565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156106745786938790889261046f575b501561044c57507f000000000000000000000000000000000000000000000000000000000000000046810361043057506060830161ffff918282511660005260008051602061327183398151915286528660002054608086019081518091036103ff575061014086016102c7815160005260008051602061329183398151915260205260ff6040600020541690565b6103e657927ff6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0608060e0948b8a8e9996896103286103799d9b516000526000805160206132918339815191526020526040600020600160ff19825416179055565b519360a08989511692519301511692519384528d8401528d8301526060820152a15116940151906103576128f9565b5061036061291f565b508651630453806b60e11b815293849283928301612a78565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156103dc576103b39450859186946103b6575b50815191015191612a97565b80f35b9093506103d591503d8087833e6103cd8183612718565b8101906129fa565b92386103a7565b84513d87823e3d90fd5b518851632d30ec0360e21b815280870191909152602490fd5b83518951633cd8e72b60e11b815290861661ffff1687820190815260208101929092529081900360400190fd5b0390fd5b826044918751916377d879fb60e01b8352820152466024820152fd5b8551634771719b60e11b815280840186905290819061042c90602483019061283d565b945050503d8087853e6104828185612718565b830160609081858203126106705784518381116105f45785016101609283828403126105f85788519384018481108682111761065b5789526104c382613009565b84526104d0888301613017565b888501526104df898301613017565b898501528082015161ffff8116810361065757818501526080808301518186015261050c60a08401612fa1565b60a086015261051d60c08401613009565b60c086015260e0830151868111610653578461053a918501612977565b60e086015261010061054d818501613017565b90860152610120908184015187811161064f57840185601f8201121561064f5780518c9461058661057d83612803565b96519687612718565b8186528c8087019260071b8401019288841161064b578d01915b8383106105fc57505050505084015261014080910151908301526105c5868601613028565b9487810151908482116105f857019080601f830112156105f45781516105ec928801612940565b909338610238565b8880fd5b8980fd5b84838a031261064b578d8f918287935190610616826126e2565b86518252838701518483015261062d818801613009565b9082015261063c858701613009565b858201528152019201916105a0565b8f80fd5b8c80fd5b8b80fd5b8a80fd5b604187634e487b7160e01b6000525260246000fd5b8780fd5b85513d88823e3d90fd5b80fd5b8380fd5b8280fd5b5050346106c457816003193601126106c457602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5080fd5b5050346106c45760203660031901126106c45760209061ffff6106e9612672565b166000526000805160206132b1833981519152825261070b81600020546130ad565b90519015158152f35b8382346106c45760203660031901126106c457356001600160a01b03811681036106c4576103b3906107446131c1565b613190565b5050346106c457816003193601126106c4576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106c457816003193601126106c4576020906107e8612881565b90516001600160a01b039091168152f35b5050346106c45760203660031901126106c45760209061ffff61081a612672565b16600052600080516020613251833981519152825261070b81600020546130ad565b5034610685578160031936011261068557610855612672565b92602435906001600160401b03821161067e57509261087c6108829260209536910161279b565b90612bda565b9051908152f35b5050346106c457816003193601126106c45760209060027f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b825802254149051908152f35b5050346106c457816003193601126106c4577fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12495490516001600160a01b039091168152602090f35b508290346106c457826003193601126106c45761092d612672565b6109356127f4565b9161093e6131c1565b61ffff82169081156109b957507f4add57d97a7bf5035340ea1212aeeb3d4d3887eb1faf3821a8224c3a6956a10c93946109b39161097b856130df565b906000526000805160206132b18339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b0390a180f35b8551630f7662c960e21b8152fd5b5050346106c45760203660031901126106c45760209061ffff6109e8612672565b16600052600080516020613271833981519152825280600020549051908152f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b509034610685578260031936011261068557610a676130ee565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b038082166001810190828211610b605760ff84871c16908115610b53575b50610b4357169360ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e541615610b35575068ffffffffffffffffff19168317680100000000000000001768ff000000000000000019169055519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a180f35b8351632866815360e11b8152fd5b845163f92ee8a960e01b81528690fd5b9050828216111538610aaf565b634e487b7160e01b885260118752602488fd5b5050346106c457816003193601126106c4576000805160206132f18339815191525490516001600160a01b039091168152602090f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106c457816003193601126106c4578051610c3291610c0e826126fd565b60058252640302e312e360dc1b60208301525191829160208352602083019061283d565b0390f35b5034610685578260031936011261068557610c4f6130ee565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549160ff83831c1615906001600160401b0393848116801590816110ed575b60011490816110e3575b1590816110da575b506110cb5767ffffffffffffffff1981166001178655826110ac575b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116338190036110905750610cfc61314f565b610d0461314f565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055610db0610d33612881565b610d3b61314f565b610d4361314f565b610d4b61314f565b60017f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022557fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124980546001600160a01b03191633179055610da861314f565b61074461314f565b8351634b4fd03b60e01b8152602095907f0000000000000000000000000000000000000000000000000000000000000000831687828681845afa918215611086578a9261104f575b508651631dcbf42b60e11b81529188838781855afa928315611045578b9361100e575b5087519360a085019081118582101761065b578852639c23bd3b60e01b845288840191825260ff9081168489019081527f00000000000000000000000000000000000000000000000000000000000000008616606086019081529382166080860190815289516301529f6160e21b815295516001600160e01b031916888701529251602486015251811660448501529151606484015251166084820152878160a48173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156110045791610f27939187938a91610fe2575b508987518096819582946358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fb5565b03927f0000000000000000000000000000000000000000000000000000000000000000165af18015610fd857610fa0575b50610f61578380f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29268ff00000000000000001981541690555160018152a13880808380f35b8381813d8311610fd1575b610fb58183612718565b81010312610fcd57610fc690612fa1565b5038610f58565b8580fd5b503d610fab565b83513d88823e3d90fd5b610ffe91503d808c833e610ff68183612718565b810190613035565b38610eea565b85513d8a823e3d90fd5b9092508881813d831161103e575b6110268183612718565b810103126106575761103790613009565b9138610e1b565b503d61101c565b88513d8d823e3d90fd5b9091508781813d831161107f575b6110678183612718565b810103126105f85761107890613009565b9038610df8565b503d61105d565b87513d8c823e3d90fd5b82604491865191636345072160e11b8352820152336024820152fd5b68ffffffffffffffffff19166801000000000000000117855538610cbf565b50825163f92ee8a960e01b8152fd5b90501538610ca3565b303b159150610c9b565b849150610c91565b50913461067e57602036600319011261067e575061070b6020923560005260008051602061329183398151915260205260ff6040600020541690565b503461068557816003193601126106855761114a612672565b602435916111566131c1565b61ffff80831690811561138157841561137157816000526000805160206132718339815191529160209280845287600020548061134857508160005283528587600020558651916111a6836126c7565b630c7e33e160e11b8352838301918252878301878152885163077650fb60e51b815293516001600160e01b031916868501529151166024830152516044820152868160648173__$93083e246e55d56d98f3df2872cd16bfd0$__5af492831561133e576112519383928991611324575b5087516358cd21bf60e11b815294859283927f0000000000000000000000000000000000000000000000000000000000000000918401612fb5565b0381897f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610674576112c8575b5050915161ffff909216825260208201527fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d3264669080604081016109b3565b81813d831161131d575b6112dc8183612718565b81010312611319577fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d326466936113126109b392612fa1565b509361128b565b8480fd5b503d6112d2565b61133891503d808b833e610ff68183612718565b38611216565b86513d89823e3d90fd5b885163b55eeae960e01b815261ffff881681880190815260208101929092529081906040010390fd5b855163137063ef60e11b81528390fd5b8551630f7662c960e21b81528390fd5b61262d565b5050346106c457816003193601126106c45760209060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb541690519015158152f35b50913461067e57602036600319011261067e57508051916113f9836126ac565b35908115159182810361143557610c32935280519160f81b602083015260018252611423826126fd565b5191829160208352602083019061283d565b600080fd5b508290346106c457826003193601126106c457611455612672565b61145d6127f4565b916114666131c1565b61ffff82169081156109b957507f528b18a533e892b5401d1fb63597275df9d2bb45b13e7695c3147cd07b9746c393946109b3916114a3856130df565b906000526000805160206132d18339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b5034610685576020366003190112610685578035916001600160a01b038084168403611319577f000000000000000000000000000000000000000000000000000000000000000016330361153357836103b3846131fa565b60249250519063c5aa615360e01b82523390820152fd5b5060a0366003190112610685576001600160401b038135818111611319576115759036908401612754565b602492833593838511611750573660238601121561175057848201359361159b85612803565b946115a888519687612718565b808652602096838888019260051b8201019236841161065757848201925b84841061172a5750505050506044356064359461ffff86169081870361143557608435937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361171757826000526000805160206132718339815191528952838a60002054036116f057848b52600080516020613291833981519152895260ff8a8c2054166116dc5750611685846000526000805160206132918339815191526020526040600020600160ff19825416179055565b516116cc57606061037995938a95937ff557dbbb087662f52c815f6c7ee350628a37a51eae9608ff840d996b65f87475938b519283528a8301528a820152a16103576128f9565b875163c504ea2960e01b81528490fd5b8951632d30ec0360e21b8152808701869052fd5b8951633cd8e72b60e11b815261ffff89168188019081526020810186905281906040010390fd5b8951631c26958960e01b81523381880152fd5b833582811161064f578a916117458392893691880101612754565b8152019301926115c6565b8680fd5b508290346106c457826003193601126106c45761176f612672565b6117776127f4565b916117806131c1565b61ffff82169081156109b957507f0fe301480713b2c2072ee91b3bcfcbf2c0014f0447c89046f020f0f80727003c93946109b3916117bd856130df565b906000526000805160206132518339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b509060031960a0368201126106815761180c612672565b9060249283356001600160401b03908181116106705761182f903690880161279b565b906044358181116105f4576118479036908901612754565b90608435977f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00976002895414611f5e57600289556001600160a01b03937f000000000000000000000000000000000000000000000000000000000000000085163303611f4857908b61190181936119108a519b6118c38d6126ac565b848d528b516304616c8f60e21b81526309945ff160e41b89820152338782015260648035604483015260a0908201529c8d94859460a486019061283d565b9184830301608485015261283d565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415611f3e5782988395611eec575b50611948602080980151612b5f565b80511580611edd575b15611b34575050928a928592838989976119c361ffff8f16968792836000526000805160206132718339815191528c526119976119918660002054612fdd565b9b612fdd565b94519c8d9b8c9a8b9a6312d729bd60e21b8c528b0152169088015260e0604488015260e487019061283d565b9360648601527f0000000000000000000000000000000000000000000000000000000000000000608486015260a48501521660c4830152039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611b2a57611ab9575b5061ffff926060611a9e84611ab2946000805160206133318339815191528460019c6000805160206133118339815191529b99519060008252848201523485820152a15b815197889716875281818801528451828801528401518387015283015160808087015260c086019061283d565b910151838203603f190160a085015261283d565b0390a15580f35b9391928185813d8311611b23575b611ad18183612718565b81010312610670576060611a9e61ffff95611ab2946000805160206133318339815191528460019c611b116000805160206133118339815191529c612fa1565b509c5050509450949650505092611a2d565b503d611ac7565b83513d8a823e3d90fd5b919394959250959697989a50511580611eb1575b15611d87578651631a90a21960e01b8152937f000000000000000000000000000000000000000000000000000000000000000082169087868681855afa958d8715611d7c57908993929197611d49575b50869291611bdc918b519889809481936358cd21bf60e11b83527f0000000000000000000000000000000000000000000000000000000000000000908c8401612fb5565b03925af1948515611d3f578c95611d08575b50817f00000000000000000000000000000000000000000000000000000000000000001690340390348211611cf45790818d9796959493923b15610670578c96889660849561ffff8d519a8b998a98630b5624e160e11b8a527f0000000000000000000000000000000000000000000000000000000000000000169089015216908601528760448601521660648401525af18015611cea57611cd2575b50600080516020613311833981519152936060611a9e856001999560008051602061333183398151915284611ab29761ffff9a51908e8252848201523485820152a1611a71565b611cde90969296612683565b610fcd57938538611c8b565b84513d84823e3d90fd5b83601186634e487b7160e01b600052526000fd5b9094508681813d8311611d38575b611d208183612718565b8101031261065357611d3190612fa1565b9338611bee565b503d611d16565b88513d8e823e3d90fd5b9196509181813d8111611d75575b611d618183612718565b810103126114355751948791611bdc611b98565b503d611d57565b8a51903d90823e3d90fd5b9050611dce9350849286999799518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fb5565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611ea757611e49575b5091611ab26001956060611a9e8560008051602061331183398151915297600080516020613331833981519152848d61ffff9a519060028252848201523485820152a1611a71565b9181838195933d8311611ea0575b611e618183612718565b81010312611750576001956060611a9e611ab29360008051602061331183398151915297611e9161ffff98612fa1565b50959750955050509550611e01565b503d611e57565b83513d89823e3d90fd5b5061ffff8a166000526000805160206132518339815191528652611ed887600020546130ad565b611b48565b50611ee78b61305a565b611951565b985093503d80838a3e611eff818a612718565b88019787818a03126106855780518581116106815789611f20918301612991565b98602082015186811161131957611f379201612977565b9338611939565b87513d84823e3d90fd5b509085519063c5aa615360e01b82523390820152fd5b508451633ee5aeb560e01b8152fd5b50913461067e57602036600319011261067e578235906001600160401b03821161067e5750611fa4602093611fa992369101612754565b612b5f565b9051905115158152f35b5050346106c45760203660031901126106c45760209061ffff611fd4612672565b166000526000805160206132d1833981519152825261070b81600020546130ad565b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5090346106855760209182600319360112610681576001600160a01b03918135838116908181036117505761206d6131c1565b6120756130ee565b3b15612508577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e9384549361210260ff861615613132565b60ff199485166001178655303b1561175057825163011fa75760e71b81528781868183305af180156123fc576124f5575b50825163689f90c360e01b815282818681305afa9081156123fc5788916124c0575b501561218f575b505050507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b82516324fb21db60e01b815282818681305afa9081156123fc57906121e19189916124a3575b5082167f0000000000000000000000000000000000000000000000000000000000000000831614613132565b8251630b4a1e8960e01b815282818681305afa9081156123fc5790612233918991612476575b5082167f0000000000000000000000000000000000000000000000000000000000000000831614613132565b82516384acd1bb60e01b815282818681305afa80156123fc57889061243e575b612283915082167f0000000000000000000000000000000000000000000000000000000000000000831614613132565b825163da25b72560e01b815282818681305afa80156123fc578890612406575b6122d3915082167f0000000000000000000000000000000000000000000000000000000000000000831614613132565b825163121d4a8560e31b815282818681305afa9081156123fc5788916123c2575b5081612324927f000000000000000000000000000000000000000000000000000000000000000016911614613132565b8082518094631d1bfaa160e31b825281305afa9182156123b957508591612382575b50612379915060ff807f000000000000000000000000000000000000000000000000000000000000000016911614613132565b3880808061215c565b905081813d83116123b2575b6123988183612718565b81010312610681576123ac61237991613009565b38612346565b503d61238e565b513d87823e3d90fd5b90508281813d83116123f5575b6123d98183612718565b81010312610670575190808216820361067057906123246122f4565b503d6123cf565b84513d8a823e3d90fd5b508281813d8311612437575b61241c8183612718565b8101031261067057518181168103610670576122d3906122a3565b503d612412565b508281813d831161246f575b6124548183612718565b81010312610670575181811681036106705761228390612253565b503d61244a565b6124969150843d861161249c575b61248e8183612718565b810190612862565b38612207565b503d612484565b6124ba9150843d861161249c5761248e8183612718565b386121b5565b90508281813d83116124ee575b6124d78183612718565b81010312610670576124e890613028565b38612155565b503d6124cd565b61250190979197612683565b9538612133565b815162461bcd60e51b8152808401869052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b828591346106855760203660031901126106855781356001600160a01b03818116939184900361131957806000805160206132f18339815191525416927fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124992835492831694338614159081612622575b5061260d5750506001600160a01b031916831790557f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b63e2a08e5d60e01b8252339082015260249150fd5b9050331415886125d1565b34611435576000366003190112611435576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6004359061ffff8216820361143557565b6001600160401b03811161269657604052565b634e487b7160e01b600052604160045260246000fd5b602081019081106001600160401b0382111761269657604052565b606081019081106001600160401b0382111761269657604052565b608081019081106001600160401b0382111761269657604052565b604081019081106001600160401b0382111761269657604052565b90601f801991011681019081106001600160401b0382111761269657604052565b6001600160401b03811161269657601f01601f191660200190565b81601f820112156114355780359061276b82612739565b926127796040519485612718565b8284526020838301011161143557816000926020809301838601378301015290565b9190916040818403126114355760408051916001600160401b0391830182811184821017612696576040528294813560ff811681036114355784526020820135928311611435576020926127ef9201612754565b910152565b60243590811515820361143557565b6001600160401b0381116126965760051b60200190565b60005b83811061282d5750506000910152565b818101518382015260200161281d565b906020916128568151809281855285808601910161281a565b601f01601f1916010190565b9081602091031261143557516001600160a01b03811681036114355790565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156128ed576000916128d2575090565b6128ea915060203d811161249c5761248e8183612718565b90565b6040513d6000823e3d90fd5b60405190612906826126e2565b6060808360008152600060208201528160408201520152565b6040519061292c826126c7565b606060408360008152600060208201520152565b9092919261294d81612739565b9161295b6040519384612718565b82948284528282011161143557602061297593019061281a565b565b9080601f830112156114355781516128ea92602001612940565b919060808382031261143557604051906129aa826126e2565b819380518352602081015160208401526040810151916001600160401b039283811161143557816129dc918401612977565b60408501526060820151928311611435576060926127ef9201612977565b9190604083820312611435578251906001600160401b03918281116114355781612a25918601612991565b936020810151908382116114355701906060828203126114355760405192612a4c846126c7565b8251845260208301516020850152604083015190811161143557612a709201612977565b604082015290565b6309945ff160e41b81526040602082018190526128ea9291019061283d565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690818103612b415750803b156114355761ffff60008094612b27604080519889978896879563275e091560e21b875216600486015260248501526060604485015280516064850152602081015160848501520151606060a484015260c483019061283d565b03925af180156128ed57612b385750565b61297590612683565b60449250604051916339dee99160e11b835260048301526024820152fd5b9060405191612b6d836126ac565b6000835282815115612bd55750600181015160fe8116612bb95760ff16151583525160018103612b9a5750565b604490604051906355c5b3e360e11b8252600482015260016024820152fd5b60405163f7a37b0760e01b815260ff9091166004820152602490fd5b925050565b90612be9602080920151612b5f565b51612f205761ffff8216906000908282526000805160206132d18339815191528152604093612c1a858420546130ad565b80612ef9575b612ee157612c2d9061305a565b15612cf45750825163c23ee3c360e01b81526004810192909252602482018190527f0000000000000000000000000000000000000000000000000000000000000000604483015282826064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315612cea578193612cb9575b50505090565b9091809350813d8311612ce3575b612cd18183612718565b8101031261067e575051388080612cb3565b503d612cc7565b51903d90823e3d90fd5b8282939492526000805160206132518339815191528152612d17828420546130ad565b15612e7f57815163209d173960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820195909552604481018490529381856064817f000000000000000000000000000000000000000000000000000000000000000085165afa948515612e72578495612e43575b509080600492845193848092631a90a21960e01b82527f0000000000000000000000000000000000000000000000000000000000000000165afa928315612e3a57508392612e0c575b50508201809211612df8575090565b634e487b7160e01b81526011600452602490fd5b90809250813d8311612e33575b612e238183612718565b810103126106c457513880612de9565b503d612e19565b513d85823e3d90fd5b9094508181813d8311612e6b575b612e5b8183612718565b8101031261068157519381612da0565b503d612e51565b50505051903d90823e3d90fd5b8151631a90a21960e01b815291935090919080836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa938415612ed657508193612cb95750505090565b51913d9150823e3d90fd5b845163251268db60e21b815260048101859052602490fd5b508383526000805160206132b18339815191528252612f1a858420546130ad565b15612c20565b604051631a90a21960e01b8152915080826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156128ed57600091612f75575b50905090565b82813d8311612f9a575b612f898183612718565b8101031261067e5750518038612f6f565b503d612f7f565b51906001600160401b038216820361143557565b9060ff612fd66040929594956000855260606020860152606085019061283d565b9416910152565b8060a01c612ff1576001600160a01b031690565b6024906040519063033b960d60e41b82526004820152fd5b519060ff8216820361143557565b519063ffffffff8216820361143557565b5190811515820361143557565b906020828203126114355781516001600160401b038111611435576128ea9201612977565b61ffff16806000526000805160206132d18339815191526020526130826040600020546130ad565b908161308c575090565b90506000526000805160206132b18339815191526020526128ea6040600020545b80156130d957600181146130d3576024906040519063b998bad560e01b82526004820152fd5b50600190565b50600090565b156130e957600190565b600090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461312057565b604051633c64f99360e21b8152600490fd5b1561313957565b634e487b7160e01b600052600160045260246000fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561317e57565b604051631afcd79f60e31b8152600490fd5b6001600160a01b038116156131a857612975906131fa565b604051631e4fbdf760e01b815260006004820152602490fd5b6000805160206132f1833981519152546001600160a01b031633036131e257565b60405163118cdaa760e01b8152336004820152602490fd5b6000805160206132f183398151915280546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a356fed4cbc7742a1e11dcc33209ac33862ef146cfcb6d7f860df12df42105dfedb1c948c66ef0992b4bcc14f2551075db9459fc23bf706abb76034f1c66c1ba2846845e6aacb3f16e5b01c8b072a0ab4c38e919266014a45db863ee64a4580fb3e7e2e79d2e5e46f62be2ac831294e423b664f30320fb9ebaefd78a978cafe07c0f8c16ee6ac6bf7a8d7c37112a9426e00852b215ac4f5c50536beb6c95f1ba47b4af9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930079376a0dc6cbfe6f6f8f89ad24c262a8c6233f8df181d3fe5abb2e2442e8c738c3192e083c87c556db539f071d8a298869f487e951327b5616a6f85ae3da958ea264697066735822122034563781985a1b9124e36fffc44a6c32ed3932670b1c579b553016e6928c9abb64736f6c63430008130033",isSuperArgs$4=t=>typeof t[0]=="string"||Array.isArray(t[0])||"_isInterface"in t[0];var Fn;let WormholeTransceiver__factory$2=(Fn=class extends ContractFactory{constructor(...e){if(isSuperArgs$4(e))super(...e);else{const[s,l]=e;super(_abi$4,Fn.linkBytecode(s),l)}}static linkBytecode(e){let s=_bytecode$4;return s=s.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),s}getDeployTransaction(e,s,l,d,u,p,m){return super.getDeployTransaction(e,s,l,d,u,p,m||{})}deploy(e,s,l,d,u,p,m){return super.deploy(e,s,l,d,u,p,m||{})}connect(e){return super.connect(e)}static createInterface(){return new Interface(_abi$4)}static connect(e,s){return new Contract(e,_abi$4,s)}},Ae(Fn,"bytecode",_bytecode$4),Ae(Fn,"abi",_abi$4),Fn);const _abi$3=[{type:"constructor",inputs:[{name:"_token",type:"address",internalType:"address"},{name:"_mode",type:"uint8",internalType:"enum IManagerBase.Mode"},{name:"_chainId",type:"uint16",internalType:"uint16"},{name:"_rateLimitDuration",type:"uint64",internalType:"uint64"},{name:"_skipRateLimiting",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"NTT_MANAGER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"attestationReceived",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"cancelOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"chainId",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"completeInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"completeOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"executeMsg",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"message",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getCurrentInboundCapacity",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getCurrentOutboundCapacity",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getInboundLimitParams",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"view"},{type:"function",name:"getInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.InboundQueuedTransfer",components:[{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipient",type:"address",internalType:"address"}]}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getMode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getOutboundLimitParams",inputs:[],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"pure"},{type:"function",name:"getOutboundQueuedTransfer",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.OutboundQueuedTransfer",components:[{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"sender",type:"address",internalType:"address"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}]}],stateMutability:"view"},{type:"function",name:"getPeer",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct INttManager.NttManagerPeer",components:[{name:"peerAddress",type:"bytes32",internalType:"bytes32"},{name:"tokenDecimals",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getThreshold",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getTransceiverInfo",inputs:[],outputs:[{name:"",type:"tuple[]",internalType:"struct TransceiverRegistry.TransceiverInfo[]",components:[{name:"registered",type:"bool",internalType:"bool"},{name:"enabled",type:"bool",internalType:"bool"},{name:"index",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getTransceivers",inputs:[],outputs:[{name:"result",type:"address[]",internalType:"address[]"}],stateMutability:"pure"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"payable"},{type:"function",name:"isMessageApproved",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isMessageExecuted",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"messageAttestations",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"count",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"mode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"enum IManagerBase.Mode"}],stateMutability:"view"},{type:"function",name:"nextMessageSequence",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"},{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"rateLimitDuration",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"removeTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setInboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"},{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setOutboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"},{name:"decimals",type:"uint8",internalType:"uint8"},{name:"inboundLimit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setThreshold",inputs:[{name:"threshold",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"token",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"tokenDecimals",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"transceiverAttestedToMessage",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"shouldQueue",type:"bool",internalType:"bool"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unpause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"InboundTransferQueued",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"MessageAlreadyExecuted",inputs:[{name:"sourceNttManager",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"msgHash",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"MessageAttestedTo",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"index",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OutboundTransferCancelled",inputs:[{name:"sequence",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipient",type:"address",indexed:!1,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OutboundTransferQueued",inputs:[{name:"queueSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"OutboundTransferRateLimited",inputs:[{name:"sender",type:"address",indexed:!0,internalType:"address"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"currentCapacity",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"PeerUpdated",inputs:[{name:"chainId_",type:"uint16",indexed:!0,internalType:"uint16"},{name:"oldPeerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"oldPeerDecimals",type:"uint8",indexed:!1,internalType:"uint8"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"peerDecimals",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"ThresholdChanged",inputs:[{name:"oldThreshold",type:"uint8",indexed:!1,internalType:"uint8"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverAdded",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"transceiversNum",type:"uint256",indexed:!1,internalType:"uint256"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverRemoved",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransferRedeemed",inputs:[{name:"digest",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"TransferSent",inputs:[{name:"recipient",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"msgSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"BurnAmountDifferentThanBalanceDiff",inputs:[{name:"burnAmount",type:"uint256",internalType:"uint256"},{name:"balanceDiff",type:"uint256",internalType:"uint256"}]},{type:"error",name:"CallerNotTransceiver",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CancellerNotSender",inputs:[{name:"canceller",type:"address",internalType:"address"},{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"CapacityCannotExceedLimit",inputs:[{name:"newCurrentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"newLimit",type:"uint72",internalType:"TrimmedAmount"}]},{type:"error",name:"DeliveryPaymentTooLow",inputs:[{name:"requiredPayment",type:"uint256",internalType:"uint256"},{name:"providedPayment",type:"uint256",internalType:"uint256"}]},{type:"error",name:"DisabledTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"InboundQueuedTransferNotFound",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InboundQueuedTransferStillQueued",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidMode",inputs:[{name:"mode",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidPeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidPeerChainIdZero",inputs:[]},{type:"error",name:"InvalidPeerDecimals",inputs:[]},{type:"error",name:"InvalidPeerSameChainId",inputs:[]},{type:"error",name:"InvalidPeerZeroAddress",inputs:[]},{type:"error",name:"InvalidRecipient",inputs:[]},{type:"error",name:"InvalidRefundAddress",inputs:[]},{type:"error",name:"InvalidTargetChain",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"thisChain",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidTransceiverZeroAddress",inputs:[]},{type:"error",name:"MessageNotApproved",inputs:[{name:"msgHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NoEnabledTransceivers",inputs:[]},{type:"error",name:"NonRegisteredTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotEnoughCapacity",inputs:[{name:"currentCapacity",type:"uint256",internalType:"uint256"},{name:"amount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"NumberOfDecimalsNotEqual",inputs:[{name:"decimals",type:"uint8",internalType:"uint8"},{name:"decimalsOther",type:"uint8",internalType:"uint8"}]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OutboundQueuedTransferNotFound",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}]},{type:"error",name:"OutboundQueuedTransferStillQueued",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerNotRegistered",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RefundFailed",inputs:[{name:"refundAmount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"RetrievedIncorrectRegisteredTransceivers",inputs:[{name:"retrieved",type:"uint256",internalType:"uint256"},{name:"registered",type:"uint256",internalType:"uint256"}]},{type:"error",name:"StaticcallFailed",inputs:[]},{type:"error",name:"ThresholdTooHigh",inputs:[{name:"threshold",type:"uint256",internalType:"uint256"},{name:"transceivers",type:"uint256",internalType:"uint256"}]},{type:"error",name:"TooManyTransceivers",inputs:[]},{type:"error",name:"TransceiverAlreadyAttestedToMessage",inputs:[{name:"nttManagerMessageHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"TransceiverAlreadyEnabled",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"TransferAmountHasDust",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"dust",type:"uint256",internalType:"uint256"}]},{type:"error",name:"UndefinedRateLimiting",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"expectedOwner",type:"address",internalType:"address"},{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedMsgValue",inputs:[]},{type:"error",name:"ZeroAmount",inputs:[]},{type:"error",name:"ZeroThreshold",inputs:[]}],_bytecode$3="0x61016034620005cb57601f620065cb38819003918201601f19168301916001600160401b038311848410176200057e5780849260a094604052833981010312620005cb578051906001600160a01b0382168203620005cb576020810151916002831015620005cb5760408201519161ffff83168303620005cb576060810151906001600160401b03821690818303620005cb576080015180159182158203620005cb5715809281620005c2575b508215620005a6575b505062000594576080527f8561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d8954620001147e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e15460ff8360081c1614620005d0565b7ffd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f5460005b60ff8360081c168110620003f157505060005b60ff8260081c1681106200035d5750604060ff6200016d92161115620005d0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c166200034b576002600160401b03196001600160401b03821601620002ff575b50503060a05260c0526101009182526101209081526101404681523360e05260405191615f7d93846200064e85396080518481816114d401528181611b1401528181611fb1015281816129fc01528181613447015281816139cf0152818161404b015281816155690152818161567c0152818161573c0152818161585b0152615923015260a05184614faf015260c0518481816102900152818161051401528181610561015281816128e80152818161383f01528181613ec90152818161478701528181614bc60152614c76015260e05184611c590152518381816104ab0152818161202a0152818161217001528181612936015281816138c101528181613f460152614b4e01525182818161137c01528181611e500152818161299f01526133d101525181818161044901528181613abb01528181614113015281816146580152614b000152f35b6001600160401b0319166001600160401b039081179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880620001b6565b60405163f92ee8a960e01b8152600490fd5b60018101808211620003db575b60ff8360081c1681106200038a57506200038490620005ee565b6200014c565b620003d590620003cf6200039e84620005fe565b9054620003ab84620005fe565b9054600391821b1c6001600160a01b039081169390911b9190911c161415620005d0565b620005ee565b6200036a565b634e487b7160e01b600052601160045260246000fd5b620003fc81620005fe565b9054600382901b81901c6001600160a01b031660009081527f49bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f602052604090819020905192906001600160401b0360608501908111908511176200057e5760608401604052546200049e60ff821615801592838752602087019360ff808360081c1615928315875260101c16908160408a01529262000561575b5050620005d0565b60018060401b03600160ff6040870151161b87161615159051151592600092835b60ff8a60081c1681106200050f575b5050508262000509959492620004ee620003cf95620004f79414620005d0565b151514620005d0565b60ff60408188169201511610620005d0565b62000139565b6200051a81620005fe565b9054600391821b1c6001600160a01b039081169184901b85901c16146200054c576200054690620005ee565b620004bf565b5060019350849150829050620004ee620004ce565b9091508162000574575b50388062000496565b905015386200056b565b634e487b7160e01b600052604160045260246000fd5b60405163e543ef0560e01b8152600490fd5b15915081620005b9575b503880620000b5565b905038620005b0565b925038620000ac565b600080fd5b15620005d857565b634e487b7160e01b600052600160045260246000fd5b6000198114620003db5760010190565b7e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e18054821015620006375760005260206000200190600090565b634e487b7160e01b600052603260045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c80630271725014612c79578063036de8af14612bee5780630677df5414612bcf5780630900f01014612768578063186ce6121461271357806319017175146126dd5780631f97c9a8146124eb578063203e4a9b146121e857806323d75e31146121b4578063295a52121461215a578063396c16b71461211e5780633b97e856146121035780633f4ba83a146120755780634b4fd03b14612017578063689f90c314611fd557806374aa7bfc14611f915780637c91863414611e025780638129fc1c14611bcd5780638413bcba14611ab15780638456cb5914611a3457806386e11ffa14611a0f57806389c619dd146119af5780638da5cb5b146119795780638e3ba8c9146119425780638fd3ab80146118035780639057412d14611686578063961b94d01461162857806397c35146146113a05780639a8a0592146113615780639d782454146111265780639f86029c14610e105780639fd0506d14610dda578063b150fc5514610c2d578063b187bd2614610bff578063b293f97f14610b69578063b4d591bb14610aa8578063c0b07bde14610a62578063c128d170146109e6578063d788c1471461095b578063da4856a114610928578063e5a986031461087c578063e75235b81461084e578063f2fde38b14610709578063f5cfec18146106e6578063f7514fbc146102bf578063fc0c546a1461027a5763fd96063c1461022257600080fd5b346102775760203660031901126102775760606102406004356154c7565b6040805182516001600160481b031681526020808401516001600160401b031690820152918101516001600160a01b031690820152f35b80fd5b50346102775780600319360112610277576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610277576020366003190112610277576004356001600160401b03811681036106e2576102ec615d17565b6002600080516020615de883398151915254146106d0576001600160401b038116600052600080516020615ec883398151915260205260406000206040519061033482612d49565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a083015260405190818560048301549261039b8461376f565b80845293600181169081156106ae575060011461066a575b506103c092500382612dd0565b60c08201526001600160401b03606082015116156106495760a08101516001600160a01b031633810361061c5750606061048c60407ff80e572ae1b63e2449629b6c7d783add85c36473926f216077f17ee002bcfd07936001600160401b038616600052600080516020615ec8833981519152602052610442826000206137c0565b015161046d7f0000000000000000000000000000000000000000000000000000000000000000615a67565b610475614c50565b906001600160401b0360ff82169160081c16615b86565b926001600160401b0360405191168152336020820152836040820152a17f000000000000000000000000000000000000000000000000000000000000000060028110156106065780610556575060405163a9059cbb60e01b602082015233602482015260448101919091526105419061051281606481015b03601f198101835282612dd0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316614452565b6001600080516020615ee88339815191525580f35b600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156105e5576040516340c10f1960e01b815233600482015260248101929092526000908290604490829084905af180156105d9576105ca575b50610541565b6105d390612d36565b386105c4565b6040513d6000823e3d90fd5b600080fd5b6040516366001a8960e01b815260ff9091166004820152602490fd5b634e487b7160e01b600052602160045260246000fd5b60405163ceb40a8560e01b81523360048201526001600160a01b03919091166024820152604490fd5b0390fd5b604051635feafa3160e11b81526001600160401b0383166004820152602490fd5b60040187525060208620909186915b8183106106925750509060206103c092820101386103b3565b6020919350806001915483858801015201910190918392610679565b9050602092506103c094915060ff191682840152151560051b820101386103b3565b6040516309e3d0f360e11b8152600490fd5b5080fd5b503461027757806003193601126102775760206107016154b0565b604051908152f35b5034610277576020366003190112610277576001600160a01b03600435818116908181036108195761074a9061073d615cde565b610745615cde565b615c6a565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed97891825460ff600080516020615e688339815191525416808203610830575050908391825b845481101561082c578460005281817f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd1015416803b1561082857848091602460405180948193632c7b84dd60e11b83528960048401525af190811561081d578591610805575b505061080090613010565b61078f565b61080e90612d36565b6108195783386107f5565b8380fd5b6040513d87823e3d90fd5b8480fd5b8380f35b604492506040519163d2a13a2960e01b835260048301526024820152fd5b5034610277578060031936011261027757602060ff600080516020615d688339815191525416604051908152f35b50346102775760203660031901126102775760043560ff8116908181036105e5576108a5615cde565b8115610916577f2a855b929b9a53c6fb5b5ed248b27e502b709c088e036a5aa17620c8fc5085a99161091060ff92600080516020615d68833981519152805493851985161790556108f461328f565b6040805160ff9490951684168552921660208401528291820190565b0390a180f35b60405163831761d760e01b8152600490fd5b50346102775761093736612e53565b906002600080516020615de883398151915254146106d05761095892613358565b80f35b50346102775760203660031901126102775761ffff610978612ccc565b610980614d5b565b5016600052600080516020615e888339815191526020526109e26109a7604060002061508b565b6040519182918291909160406001600160401b038160608401956001600160481b038082511686526020820151166020860152015116910152565b0390f35b50346102775760203660031901126102775761ffff90610a04612ccc565b906020604051610a1381612d7f565b828152015216600052600080516020615d4883398151915260205260408060002060ff8251610a4181612d7f565b60208260018554958685520154169101908152835192835251166020820152f35b50346102775780600319360112610277576109e2604051610a8281612d7f565b60058152640312e302e360dc1b6020820152604051918291602083526020830190612d11565b50346102775780600319360112610277576040518091600080516020615e2883398151915290815480845260208094019081938352600080516020615d8883398151915290835b818110610b4c5750505084610b05910385612dd0565b60405193838594850191818652518092526040850193925b828110610b2c57505050500390f35b83516001600160a01b031685528695509381019392810192600101610b1d565b82546001600160a01b031684529286019260019283019201610aef565b5060c036600319011261027757610b7e612cdd565b906084359182151583036106e25760a4356001600160401b03928382116102775750610bae903690600401612e0c565b610bb6615d17565b6002600080516020615de883398151915254146106d057602093610be4926064359060443590600435613ead565b6001600080516020615ee88339815191525560405191168152f35b503461027757806003193601126102775760206002600080516020615de88339815191525414604051908152f35b503461027757806003193601126102775760405180600080516020615e2883398151915280548084526020809401918552600080516020615d8883398151915290855b818110610dbd5750505081610c86910382612dd0565b8051610c9181612ed4565b91610c9f6040519384612dd0565b818352601f19610cae83612ed4565b01855b818110610da1575050845b828110610d1d575050506040519180830190808452825180925280604085019301945b828110610cec5784840385f35b85518051151585528083015115158584015260409081015160ff169085015294810194606090930192600101610cdf565b929492610d99906001600160a01b03610d36828561301f565b5116600052600080516020615ea88339815191528652604060002060405190610d5e82612d64565b5460ff9081811615158352818160081c1615158984015260101c166040820152610d88828961301f565b52610d93818861301f565b50613010565b949294610cbc565b8590610dae979597614d5b565b82828a01015201959395610cb1565b82546001600160a01b031684529285019260019283019201610c70565b5034610277578060031936011261027757600080516020615f08833981519152546040516001600160a01b039091168152602090f35b5034610277576020806003193601126106e2576001600160a01b0390600435828116919082810361082857610e43615cde565b82156111145782600052600080516020615ea883398151915280835260ff918260406000205416156110fb57846000528184528260406000205460081c16156110e25784600052818452604060002061ff001990818154169055600080516020615e68833981519152928354858160081c169283156110ce5761ff0060001980950160081b169116178455600080516020615e088339815191528054918860005287526001600160401b03600192610f1082858a60406000205460101c161b198316169282168310614d3e565b6001600160401b0319161790558897600080516020615e288339815191528054938b5b858110610fc8575b505050505050918091610f836040969594610f767f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f99614d3e565b610f7e614d7a565b614e65565b5460081c16600080516020615d688339815191529081548381168210610fba575b50505416908351928352820152a161095861328f565b60ff19161781553880610fa4565b838b610fd38361325e565b929054600393841b1c1614610ff15750610fec90613010565b610f33565b9590918093959798999a9b9c5081019081116110ba5790611025846110186110449461325e565b905490891b1c169161325e565b90919082549060031b9160018060a01b03809116831b921b1916179055565b825480156110a657946040999794610f83948a9894610f76947f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f9e9c99019261108c8461325e565b81939154921b1b1916905555998496979899839650610f3b565b634e487b7160e01b8c52603160045260248cfd5b634e487b7160e01b8d52601160045260248dfd5b634e487b7160e01b8b52601160045260248bfd5b6040516307d86e9160e21b815260048101869052602490fd5b604051630d583f4760e41b815260048101869052602490fd5b604051632f44bd7760e01b8152600490fd5b50346102775761113536612e53565b9033600052600080516020615ea883398151915260209080825260ff60406000205460081c161561134957600080516020615de88339815191529160028354146106d05761ffff861680600052600080516020615d488339815191528252846040600020540361132b575060405163b3f07bbd60e01b8152918183806111bf898b6004840161332e565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156113205788936112f1575b503360005280825261120360ff60406000205460101c1684613228565b6112d85760606112b793927f35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e592336000528082528a6001600160401b03610100600160481b03604082600160ff836000205460101c161b1693898152600080516020615da8833981519152875220928354928360081c161760081b1690610100600160481b03191617905533600052815260ff60406000205460101c166040519185835233908301526040820152a16131bb565b6112bf578480f35b546002146106d0576112d092613358565b388080808480f35b604051631089c4a160e11b815260048101849052602490fd5b9092508181813d8311611319575b6113098183612dd0565b810103126105e5575191386111e6565b503d6112ff565b6040513d8a823e3d90fd5b6044908560405191635788c0fd60e11b835260048301526024820152fd5b60405163a0ae911d60e01b8152336004820152602490fd5b5034610277578060031936011261027757602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b506020366003190112610277576001600160401b0360043516908160043503610277576113cb615d17565b6002600080516020615de883398151915254146106d05781600052600080516020615ec88339815191526020526040600020916040519261140b84612d49565b805484526001810154602085015261ffff60028201546001600160481b03811660408701526001600160401b038160481c16606087015260881c16608085015260018060a01b0360038201541660a0850152604051838194906004840154936114738561376f565b808552946001811690811561160457506001146115bf575b505061149992500383612dd0565b60c083019182526001600160401b03606084015116156115a7576114ca6001600160401b03606085015116426131ae565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000161161157c579161155991602093600052600080516020615ec8833981519152845261152260406000206137c0565b6001600160481b036040830151169161ffff608082015116815190868301519260a0600180821b039101511693519460043561464c565b6001600080516020615ee8833981519152556001600160401b0360405191168152f35b6044906001600160401b036060850151166040519163c06cf05f60e01b835260048301526024820152fd5b60249060405190635feafa3160e11b82526004820152fd5b60049193949250018252602082205b8183106115e857505090602061149992820101388061148b565b60209193508060019154838589010152019101909184926115ce565b9150506020925061149994915060ff191682840152151560051b820101388061148b565b5060603660031901126102775761163d612cdd565b604435611648615d17565b6002600080516020615de883398151915254146106d05760209181611559926040519261167484612d7f565b60018452853681860137600435613822565b5034610277576040366003190112610277576116a0612ccc565b6024356001600160401b0381116117ff576116bf903690600401612e0c565b91604051918290600080516020615e28833981519152828154918287526020809701908652600080516020615d8883398151915292865b888282106117e05750505061170d92500383612dd0565b826117378351966040519788928392635b10743960e11b8452604060048501526044840190612d11565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156117d55783949561177094926117b1575b50613053565b604051926040840160408552835180915285606086019401915b81811061179d5750505082938301520390f35b82518552938601939186019160010161178a565b6117ce9192503d8087833e6117c68183612dd0565b810190612f3e565b903861176a565b6040513d85823e3d90fd5b85546001600160a01b03168452600195860195889550930192016116f6565b8280fd5b503461027757806003193601126102775761181c614fac565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b0380821690600182019181831161192c5760ff8460401c1690811561191f575b5061190d57600160401b911680926001600160481b03191617179081835560ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e5416156118fb577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2926020926118db61328f565b6118e3614d7a565b68ff000000000000000019169055604051908152a180f35b604051632866815360e11b8152600490fd5b60405163f92ee8a960e01b8152600490fd5b9050818316111538611866565b634e487b7160e01b600052601160045260246000fd5b50346102775760403660031901126102775760243560ff811681036105e55761196f602091600435613228565b6040519015158152f35b5034610277578060031936011261027757600080516020615dc8833981519152546040516001600160a01b039091168152602090f35b503461027757602036600319011261027757611a046001600160401b036020926040600080516020615e0883398151915254916004358152600080516020615da88339815191528652205460081c1616615aa8565b60ff60405191168152f35b5034610277578060031936011261027757611a28614d5b565b506109e26109a7615043565b5034610277578060031936011261027757600080516020615dc883398151915254611a67906001600160a01b0316614ff0565b600080516020615de883398151915260028154146106d057600290557f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd2602060405160018152a180f35b503461027757602036600319011261027757600435611ace615d17565b6002600080516020615de883398151915254146106d057611aee816154c7565b602081016001600160401b03908181511615611bb457611b1182825116426131ae565b827f00000000000000000000000000000000000000000000000000000000000000001611611b92578385527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b8602052604080862086815560010186905583015183518691610541916001600160481b0316906001600160a01b031687614af5565b516040516301cb739d60e71b8152600481019490945216602483015250604490fd5b604051630301bcaf60e61b815260048101859052602490fd5b508060031936011261027757611be1614fac565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c1615906001600160401b03811680159081611dfa575b6001149081611df0575b159081611de7575b5061190d5767ffffffffffffffff198116600117835581611dc8575b50611c57615c29565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381163303611d9f575034611d8d57611c96615c29565b611c9e615c29565b611ca6615c29565b6001600080516020615de883398151915255600080516020615f0883398151915280546001600160a01b03191633179055611cdf615c29565b611ce7615c29565b611cf033615c6a565b611cf8615c29565b611d00615c29565b6001600080516020615ee883398151915255611d37610100600160481b0360ff611d30611d2b614c50565b615b4f565b16176150eb565b611d3f61328f565b611d47614d7a565b611d4f575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b60405163bd28e88960e01b8152600490fd5b604051636345072160e11b81526001600160a01b03919091166004820152336024820152604490fd5b68ffffffffffffffffff19166801000000000000000117825538611c4e565b90501538611c32565b303b159150611c2a565b839150611c20565b503461027757608036600319011261027757611e1c612ccc565b60243560443560ff81168091036105e557611e35615cde565b61ffff809316928315611f7f578215611f6d578115611f5b577f0000000000000000000000000000000000000000000000000000000000000000168314611f49577f1456404e7f41f35c3daac941bb50bad417a66275c3040061b4287d787719599d9160809184600052600080516020615d48833981519152918260205260ff604060002081600160405192611eca84612d7f565b805484520154169460208201958652886000526020526001604060002084815501848319825416179055611f2c611f0b611f02614c50565b80606435615be1565b89600052600080516020615e888339815191526020526040600020906152e9565b51935116604051938452602084015260408301526060820152a280f35b60405163101b8f9560e11b8152600490fd5b60405163ade64f0b60e01b8152600490fd5b60405163f839a0cb60e01b8152600490fd5b60405163100b0f2760e11b8152600490fd5b503461027757806003193601126102775760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034610277578060031936011261027757602060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb54166040519015158152f35b50346102775780600319360112610277577f00000000000000000000000000000000000000000000000000000000000000009060028210156120615760208260ff60405191168152f35b634e487b7160e01b81526021600452602490fd5b5034610277578060031936011261027757600080516020615dc8833981519152546120a8906001600160a01b0316614ff0565b600080516020615de883398151915260028154036120f157600190557fe11c2112add17fb763d3bd59f63b10429c3e11373da4fb8ef6725107a2fdc4b06020604051838152a180f35b604051637e38d1d360e11b8152600490fd5b50346102775780600319360112610277576020611a04614c50565b50346102775760203660031901126102775760ff60406020926004358152600080516020615da883398151915284522054166040519015158152f35b50346102775780600319360112610277576040517f000000000000000000000000000000000000000000000000000000000000000060028110156121a057602092508152f35b634e487b7160e01b83526021600452602483fd5b503461027757806003193601126102775760206001600160401b03600080516020615e488339815191525416604051908152f35b5034610277576020806003193601126106e2576004356001600160a01b0381169182820361081957612218615cde565b82156111145782600052600080516020615ea88339815191529182825260ff9081604060002054166000146123c15784600052838352604060002061010061ff00198254161790555b600080516020615e2883398151915290815491600160401b8310156123ab57826110259160016122939501905561325e565b600080516020615e6883398151915292835461ff006122b6848360081c16614d2d565b60081b169061ff00191617809455600080516020615e0883398151915280546001600160401b0390818116918860005284875260018660406000205460101c161b1682179182146123925767ffffffffffffffff19161790557ff05962b5774c658e85ed80c91a75af9d66d2af2253dda480f90bce78aff5eda594606094909390929091612342614d7a565b84600052825280600080516020615d68833981519152805482811615612383575b5054169260405194855260081c16908301526040820152a161095861328f565b60ff1916600117815538612363565b604051638d68f84d60e01b815260048101899052602490fd5b634e487b7160e01b600052604160045260246000fd5b600080516020615e688339815191528281541660408110156124d957604051906123ea82612d64565b6001825285820190600182526040830190815288600052878752604060002092511515918662ff000061ff0086549351151560081b16935160101b1693169062ffffff19161717179055805483612442818316614d2d565b169060ff19161790557f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed978805490600160401b8210156123ab57600182018082558210156124c3576000527f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd10180546001600160a01b03191686179055612261565b634e487b7160e01b600052603260045260246000fd5b60405163891684c360e01b8152600490fd5b5034610277576020366003190112610277576004356001600160401b0381168091036106e257606060c060405161252181612d49565b84815284602082015284604082015284838201528460808201528460a08201520152600052600080516020615ec883398151915260205260406000206040519061256a82612d49565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a0830152604051838194906004840154936125d28561376f565b80855294600181169081156126b95750600114612674575b50506125f892500383612dd0565b60c081019182526109e26040519283926020845280516020850152602081015160408501526001600160481b0360408201511660608501526001600160401b03606082015116608085015261ffff60808201511660a085015260a0600180821b039101511660c08401525160e080840152610100830190612d11565b60049193949250018252602082205b81831061269d5750509060206125f89282010138806125ea565b6020919350806001915483858901015201910190918492612683565b915050602092506125f894915060ff191682840152151560051b82010138806125ea565b5034610277576020366003190112610277576126f7615cde565b61095861270e612705614c50565b80600435615be1565b6150eb565b503461027757604036600319011261027757610958612730612cdd565b612738615cde565b61ffff612746612705614c50565b9116600052600080516020615e888339815191526020526040600020906152e9565b5034610277576020806003193601126106e2576001600160a01b036004358181169081810361082857612799615cde565b6127a1614fac565b3b15612b74577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e9182549161282e60ff841615614d3e565b60ff199283166001178455303b156108285760405163011fa75760e71b8152858160048183305af18015612b2957612b61575b5060405163689f90c360e01b81528281600481305afa908115612b29578691612b34575b50156128bd575b50507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b604051637e062a3560e11b81528281600481305afa908115612b29578691612aeb575b5081612910927f000000000000000000000000000000000000000000000000000000000000000016911614614d3e565b6040516314ad290960e11b81528181600481305afa90811561081d578591612ab5575b507f0000000000000000000000000000000000000000000000000000000000000000906002821015612aa1576002811015612aa1576129729114614d3e565b604051634d4502c960e11b81528181600481305afa801561081d578590612a6b575b6129c7915061ffff807f000000000000000000000000000000000000000000000000000000000000000016911614614d3e565b604051631d2a9eff60e21b8152908082600481305afa90811561081d578591612a2b575b50612a2491506001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016911614614d3e565b388061288c565b905081813d8311612a64575b612a418183612dd0565b8101031261081957516001600160401b038116810361081957612a2490386129eb565b503d612a37565b508181813d8311612a9a575b612a818183612dd0565b8101031261082857612a956129c791613349565b612994565b503d612a77565b634e487b7160e01b86526021600452602486fd5b90508181813d8311612ae4575b612acc8183612dd0565b81010312610828575160028110156108285738612933565b503d612ac2565b90508281813d8311612b22575b612b028183612dd0565b81010312612b1e5751908082168203612b1e57906129106128e0565b8580fd5b503d612af8565b6040513d88823e3d90fd5b612b549150833d8511612b5a575b612b4c8183612dd0565b81019061443a565b38612885565b503d612b42565b612b6d90959195612d36565b9338612861565b60405162461bcd60e51b815260048101849052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b503461027757602036600319011261027757602061196f6004356131bb565b5034610277576020366003190112610277576004356001600160a01b03818116918290036117ff57612c3081600080516020615dc88339815191525416614ff0565b600080516020615f0883398151915280546001600160a01b031981168417909155167f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b50346102775760203660031901126102775761070161046d612cc7604060209461ffff612ca4612ccc565b612cac614d5b565b50168152600080516020615e8883398151915286522061508b565b61555d565b6004359061ffff821682036105e557565b6024359061ffff821682036105e557565b60005b838110612d015750506000910152565b8181015183820152602001612cf1565b90602091612d2a81518092818552858086019101612cee565b601f01601f1916010190565b6001600160401b0381116123ab57604052565b60e081019081106001600160401b038211176123ab57604052565b606081019081106001600160401b038211176123ab57604052565b604081019081106001600160401b038211176123ab57604052565b608081019081106001600160401b038211176123ab57604052565b60a081019081106001600160401b038211176123ab57604052565b90601f801991011681019081106001600160401b038211176123ab57604052565b6001600160401b0381116123ab57601f01601f191660200190565b81601f820112156105e557803590612e2382612df1565b92612e316040519485612dd0565b828452602083830101116105e557816000926020809301838601378301015290565b90600319906060828401126105e55760043561ffff811681036105e5579260243592604435916001600160401b03918284116105e55760609084830301126105e55760405192612ea284612d64565b806004013584526024810135602085015260448101359283116105e557612ecc9201600401612e0c565b604082015290565b6001600160401b0381116123ab5760051b60200190565b519060ff821682036105e557565b81601f820112156105e5578051612f0f81612df1565b92612f1d6040519485612dd0565b818452602082840101116105e557612f3b9160208085019101612cee565b90565b9060209081838203126105e55782516001600160401b03938482116105e557019080601f830112156105e5578151612f7581612ed4565b94604090612f8582519788612dd0565b828752858088019360051b860101948486116105e557868101935b868510612fb257505050505050505090565b84518381116105e55782019084601f1983890301126105e557845190612fd782612d7f565b612fe28a8401612eeb565b825285830151918583116105e557613001898c80969581960101612ef9565b83820152815201940193612fa0565b600019811461192c5760010190565b80518210156124c35760209160051b010190565b9060406020612f3b9360ff81511684520151918160208201520190612d11565b90929180519161306283612ed4565b9260409161307283519586612dd0565b818552601f1961308183612ed4565b01602090368288013760009788955b8487106130a257505050505050509190565b90919293949598868561311b868d6130c160018060a01b03918861301f565b511680600052600080516020615ea883398151915282526130ec60ff866000205460101c168961301f565b51908551808095819463b5634c7360e01b835261ffff60049916898401526024998a8401526044830190613033565b03915afa9081156131a357908d91600091613171575b5061313d81928d61301f565b52830180931161315e5750506131539099613010565b959493929190613090565b601190634e487b7160e01b600052526000fd5b91508782813d831161319c575b6131888183612dd0565b810103126102775750518c9061313d613131565b503d61317e565b8a513d6000823e3d90fd5b9190820391821161192c57565b6001600160401b039060ff61321481600080516020615d688339815191525416938493600080516020615e088339815191525490600052600080516020615da883398151915260205260406000205460081c1616615aa8565b1610159081613221575090565b9050151590565b906001600160401b0391600052600080516020615da8833981519152602052600160ff60406000205460081c92161b1616151590565b600080516020615e2883398151915280548210156124c357600052600080516020615d888339815191520190600090565b60ff600080516020615d6883398151915254166040516132ae81612d7f565b60ff600080516020615e6883398151915254818116835260081c168060208301528083116132e957505160ff166132e25750565b1561091657565b82604491604051916313c3d1b160e01b835260048301526024820152fd5b9060606040612f3b9380518452602081015160208501520151918160408201520190612d11565b60409061ffff612f3b94931681528160208201520190613307565b519061ffff821682036105e557565b919081613365918461364f565b91909161364a5760408091015191815192635399ded560e11b84526080848061339a6020948560048401526024830190612d11565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af493841561363f576000946135ca575b5061ffff9283606086015116847f0000000000000000000000000000000000000000000000000000000000000000168082036135af575050613402614c50565b8161342b87519280613426816001600160401b03968760ff82169160081c16615b86565b615be1565b960151908160a01c613598576001600160a01b039182169560007f00000000000000000000000000000000000000000000000000000000000000008316156135915750613476614d5b565b508816600052600080516020615e88833981519152845261349c612cc78460002061508b565b6134a68882615b1a565b81808960081c169160081c16105b6134d957505050506134c96134d79484615850565b6134d283615730565b614af5565b565b7f7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f3162975095613575839596949760019394519261351484612d64565b6001600160481b038091168452898401908242168252888501978852896000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b88b52886000209451166001600160481b0319855416178455511682615a3f565b019151166001600160601b0360a01b82541617905551908152a1565b90506134b4565b50602491519063033b960d60e41b82526004820152fd5b6044925191631ee5902560e11b835260048301526024820152fd5b6080949194813d8211613637575b816135e560809383612dd0565b810103126106e2578351916135f983612d9a565b8151906001600160481b0382168203610277575082528481015185830152838101518483015261362b90606001613349565b606082015292386133c2565b3d91506135d8565b83513d6000823e3d90fd5b505050565b60405163b3f07bbd60e01b81529193926020918391829161367491906004840161332e565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d957600091613705575b506136a6816131bb565b156136ed576136b481613736565b92836136c257509150600090565b7f4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef2600080a360009190565b60249060405190630451c4fb60e41b82526004820152fd5b906020823d821161372e575b8161371e60209383612dd0565b810103126102775750513861369c565b3d9150613711565b600052600080516020615da88339815191526020526040600020805460ff81166137685760ff19166001179055600090565b5050600190565b90600182811c9216801561379f575b602083101461378957565b634e487b7160e01b600052602260045260246000fd5b91607f169161377e565b8181106137b4575050565b600081556001016137a9565b6004600091828155826001820155826002820155826003820155016137e5815461376f565b806137ef57505050565b82601f821160011461380057505055565b909180825261381e601f60208420940160051c8401600185016137a9565b5555565b9194939290946000958315613e9b578115613e89578215613e77577f00000000000000000000000000000000000000000000000000000000000000006138683082614cd0565b906138ab60018060a01b03821696604051906323b872dd60e01b60208301523360248301523060448301526064820152606481526138a581612db5565b87614452565b6138be826138b93084614cd0565b6131ae565b957f00000000000000000000000000000000000000000000000000000000000000006002811015613e63579060018b9214613ddc575b5050505061ffff8116600052600080516020615d4883398151915260205260ff600160406000200154168015611f5b5761393761392f614c50565b918287615be1565b906001600160401b038260081c1661395460ff8416928383615b86565b808803613db5575061397661397b9161396e611d2b614c50565b938491615b86565b615608565b98600080516020615e4883398151915254966001600160401b0380891614613da15767ffffffffffffffff1988166001600160401b03898116600101811691909117600080516020615e48833981519152557f00000000000000000000000000000000000000000000000000000000000000001615613d9b576139fc614d5b565b50613a08612cc7615043565b613a258c610100600160481b0360ff87169160081b161782615b1a565b6001600160401b03808d610100600160481b0360ff88169160081b161760081c169160081c16105b613d75578180613d6d575b613aa157505082612f3b9899610100600160481b0360ff84613a8582613a919716848660081b1617615670565b169160081b1617615918565b6001600160401b0333951661464c565b61ffff95979896919a506001600160481b03939250613adf7f0000000000000000000000000000000000000000000000000000000000000000615a67565b613ae76154b0565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a260405196613b3488612d49565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615ec883398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b0319825416178155613bcf6001600160401b0360608701511682615a3f565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d5957613c30835461376f565b601f8111613d1e575b50602090601f8311600114613cb257906001600160401b03959683613ca7575b50508160011b916000199060031b1c19161790555b7f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613ca3346145f5565b1690565b015190503880613c59565b95601f19831684885260208820975b818110613d065750916001600160401b03969791846001959410613ced575b505050811b019055613c6e565b015160001960f88460031b161c19169055388080613ce0565b83830151895560019098019760209384019301613cc1565b613d499084835260208320601f850160051c81019160208610613d4f575b601f0160051c01906137a9565b38613c39565b9091508190613d3c565b634e487b7160e01b81526041600452602490fd5b506000613a58565b604490613d806154b0565b90604051916326fb55dd60e01b835260048301526024820152fd5b81613a4d565b634e487b7160e01b82526011600452602482fd5b87613dc2604492826131ae565b604051916338f831a560e11b835260048301526024820152fd5b803b156106e2578190602460405180948193630852cd8d60e31b83528c60048401525af18015613e5857613e43575b50613e17903090614cd0565b808203613e255788816138f4565b60449250604051916302156a8f60e01b835260048301526024820152fd5b98613e51613e17929a612d36565b9890613e0b565b6040513d8c823e3d90fd5b634e487b7160e01b8b52602160045260248bfd5b60405163717f139360e11b8152600490fd5b604051634e46966960e11b8152600490fd5b604051631f2a200560e01b8152600490fd5b95949392919060008715613e9b578215613e89578315613e77577f0000000000000000000000000000000000000000000000000000000000000000613ef23082614cd0565b90613f3560018060a01b0382169a604051906323b872dd60e01b6020830152336024830152306044830152606482015260648152613f2f81612db5565b8b614452565b613f43826138b93084614cd0565b997f00000000000000000000000000000000000000000000000000000000000000006002811015614426576001146143bc575b50505061ffff8216600052600080516020615d4883398151915260205260ff600160406000200154168015611f5b57613fb8613fb0614c50565b91828b615be1565b916001600160401b038360081c16613fd560ff8516938483615b86565b808c036143af5750613976613ff791613fef611d2b614c50565b948591615b86565b99600080516020615e4883398151915254976001600160401b03808a161461439b5767ffffffffffffffff1989166001600160401b038a8116600101811691909117600080516020615e48833981519152557f0000000000000000000000000000000000000000000000000000000000000000161561439557614078614d5b565b508b6001600160401b038061408e612cc7615043565b9260081b610100600160481b031660ff8816176140ab8185615b1a565b60081c169160081c16105b81158061438e575b614383578161437b575b506140f957505082612f3b9899610100600160481b0360ff613a9194169160081b16176140f481615670565b615918565b61ffff95979896919a506001600160481b039392506141377f0000000000000000000000000000000000000000000000000000000000000000615a67565b61413f6154b0565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a26040519661418c88612d49565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615ec883398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b03198254161781556142276001600160401b0360608701511682615a3f565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d5957614288835461376f565b601f811161434b575b50602090601f83116001146142f957906001600160401b03959683613ca75750508160011b916000199060031b1c19161790557f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613ca3346145f5565b95601f19831684885260208820975b8181106143335750916001600160401b03969791846001959410613ced57505050811b019055613c6e565b83830151895560019098019760209384019301614308565b6143759084835260208320601f850160051c81019160208610613d4f57601f0160051c01906137a9565b38614291565b9050386140c8565b604483613d806154b0565b50806140be565b826140b6565b634e487b7160e01b83526011600452602483fd5b8b613dc2604492826131ae565b803b156108195783809160248d6040519485938492630852cd8d60e31b845260048401525af1801561441b57614406575b506143f9903090614cd0565b808203613e255780613f76565b926144146143f99294612d36565b92906143ed565b6040513d86823e3d90fd5b634e487b7160e01b85526021600452602485fd5b908160209103126105e5575180151581036105e55790565b6040516144b0916001600160a01b031661446b82612d7f565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af16144aa61452c565b9161455c565b805190816144bd57505050565b82806144cd93830101910161443a565b156144d55750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d15614557573d9061453d82612df1565b9161454b6040519384612dd0565b82523d6000602084013e565b606090565b919290156145be5750815115614570575090565b3b156145795790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156145d15750805190602001fd5b60405162461bcd60e51b815260206004820152908190610645906024830190612d11565b600080808084335af161460661452c565b501561460f5750565b60249060405190630b288dc560e21b82526004820152fd5b906020828203126105e55781516001600160401b0381116105e557612f3b9201612ef9565b9594929493919361467c7f0000000000000000000000000000000000000000000000000000000000000000615a67565b6040518081600080516020615e2883398151915260208154938481520190600052600080516020615d888339815191529260005b818110614ad35750506146c592500382612dd0565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed9785491815115614ac1576147186000916040519485928392635b10743960e11b8452604060048501526044840190612d11565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d957600092614aa4575b50614752818388613053565b95863410614a855761476487346131ae565b80614a76575b506040519061477882612d9a565b6001600160481b0386811683527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020840190815260408085018d815261ffff8d81166060880190815292516315cfa3cb60e11b81529651909416600487015291516024860152905160448501525116606483015260008260848173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d957614877926000928d928492614a5a575b506001600160401b036040519361484085612d64565b16835260018060a01b031660208301526040820152604051809381926311692f3760e31b8352602060048401526024830190613307565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d957600091614a37575b5061ffff8816600052600080516020615d48833981519152602052604060002054938351938515614a1b5760005b8581106149405750505050505050927fe54e51e42099622516fa3b48e9733581c9dbdcb771cafb093f745a0532a35982949261ffff9261491160c096610475614c50565b906040519586526020860152604085015260608401521660808201526001600160401b03841660a0820152a190565b6001600160a01b03614952828461301f565b51169061495f818761301f565b5182600052600080516020615ea883398151915260205261498b60ff60406000205460101c168661301f565b51833b156105e5576149d19361ffff8f936000948f8e906149e38d6040519b8c998a988997634b5b050560e01b895216600488015260a0602488015260a4870190613033565b85810360031901604487015290612d11565b916064840152608483015203925af19182156105d957614a0792614a0c5750613010565b6148cd565b614a1590612d36565b38610d93565b604051630ebc95af60e21b815261ffff8b166004820152602490fd5b614a5491503d806000833e614a4c8183612dd0565b810190614627565b3861489f565b614a6f9192503d8086833e614a4c8183612dd0565b903861482a565b614a7f906145f5565b3861476a565b6040516306a91e3760e51b815260048101889052346024820152604490fd5b614aba9192503d806000833e6117c68183612dd0565b9038614746565b6040516334e7b19560e11b8152600490fd5b84546001600160a01b03168352600194850194869450602090930192016146b0565b9291614b249061046d7f0000000000000000000000000000000000000000000000000000000000000000615a67565b906000937f504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a918580a27f00000000000000000000000000000000000000000000000000000000000000009360028510156120615784614bb9575060405163a9059cbb60e01b60208201526001600160a01b03909116602482015260448101919091529091506134d7906105128160648101610504565b9193600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156117ff576040516340c10f1960e01b81526001600160a01b03919091166004820152602481019490945291929181908390604490829084905af1908115614c445750614c3b5750565b6134d790612d36565b604051903d90823e3d90fd5b600080604051602081019063313ce56760e01b825260048152614c7281612d7f565b51907f00000000000000000000000000000000000000000000000000000000000000005afa614c9f61452c565b9015614cbe576020818051810103126105e5576020612f3b9101612eeb565b604051631222cd8360e01b8152600490fd5b6040516370a0823160e01b602082019081526001600160a01b039093166024808301919091528152600092839291614d0781612d64565b51915afa614d1361452c565b9015614cbe576020818051810103126105e5576020015190565b60ff1660ff811461192c5760010190565b15614d4557565b634e487b7160e01b600052600160045260246000fd5b60405190614d6882612d64565b60006040838281528260208201520152565b600080516020615e688339815191525460ff8160081c16614dab600080516020615e28833981519152548214614d3e565b60005b818110614e39575060005b818110614dd2575050604060ff6134d792161115614d3e565b6001810180821161192c575b828110614df45750614def90613010565b614db9565b614e3490614e2f614e048461325e565b905490614e108461325e565b92909160018060a01b03809354600395861b1c16931b1c161415614d3e565b613010565b614dde565b80614e2f614e49614e609361325e565b905460039190911b1c6001600160a01b0316614e65565b614dae565b6001600160a01b039081166000818152600080516020615ea88339815191526020526040908190209051929190614e9b84612d64565b5460ff91614ed7838316158015938488526020880197604087808460081c16159384158c5260101c1691019581875292614f92575b5050614d3e565b600080516020615e0883398151915254946001600160401b0360019687868651161b1616151590511515916000968791600080516020615e688339815191525497878960081c16935b848110614f54575b5050505050816134d796614f42869594614f4a9414614d3e565b151514614d3e565b5116911611614d3e565b8282614f5f8361325e565b90549060031b1c1614614f7a57614f7590613010565b614f20565b50919850849250839150614f429050826134d7614f28565b90915081614fa3575b503880614ed0565b90501538614f9b565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614614fde57565b604051633c64f99360e21b8152600490fd5b600080516020615f0883398151915254336001600160a01b039182161415919082615036575b505061501e57565b60405163e2a08e5d60e01b8152336004820152602490fd5b1633141590503880615016565b6040519061505082612d64565b8160406001600160401b03600080516020615f28833981519152546001600160481b0380821685528160481c16602085015260901c16910152565b9060405161509881612d64565b60406001600160401b038294546001600160481b0380821685528160481c16602085015260901c16910152565b90600160481b600160901b0382549160481b1690600160481b600160901b031916179055565b600080516020615f288339815191529081546001600160481b03908181166001600160401b036008918184841c168015806152de575b1561518f575050855471ffffffffffffffffff0000000000000000001916604886901b600160481b600160901b03161786555050505b825479ffffffffffffffff000000000000000000ffffffffffffffffff19169116174260901b67ffffffffffffffff60901b16179055565b8661519b612cc7615043565b9260006151a88383615af8565b1561527457506151c792916151bc91615b1a565b8388861c1690615a8f565b610100600160481b039290841b831660ff8616176151e58184615af8565b15615266578160ff92826151fc6152099487615b1a565b871c169084871c16615a8f565b9116921b16175b61521a8482615af8565b61524457600160481b600160901b039060481b1690600160481b600160901b031916178355615157565b604051631e74e8fb60e31b815290831660048201528383166024820152604490fd5b5050905060ff915016615210565b94939592906152869061529093615b1a565b8389841c16615a8f565b9260ff881694838087610100600160481b038098871b16176152b28185615b1a565b851c1691841c16019283116152ca57501b1617615210565b634e487b7160e01b81526011600452602490fd5b5060ff851615615121565b919080546001600160481b03808216916001600160401b03926008908483831c168015806154a5575b1561537857505050508461532a6134d79596856150c5565b835467ffffffffffffffff60901b19919092161679ffffffffffffffff000000000000000000ffffffffffffffffff1990911617429190911660901b67ffffffffffffffff60901b16179055565b859089615387612cc78a61508b565b9360006153948383615af8565b1561544f5750916153ac6153b79260ff979894615b1a565b838c881c1690615a8f565b610100600160481b039490861b85169116176153d38184615af8565b156154415760ff91816153e96153f69386615b1a565b861c168784871c16615a8f565b9116921b16175b6154078682615af8565b61541f579461541a6134d79596856150c5565b61532a565b604051631e74e8fb60e31b815290821660048201529085166024820152604490fd5b5050905060ff9150166153fd565b94965061546a935061546091615b1a565b868a851c16615a8f565b9160ff891693868086610100600160481b038097861b161761548c8185615b1a565b841c1691831c1601918683116152ca57501b16176153fd565b5060ff841615615312565b6154b8614d5b565b50612f3b61046d612cc7615043565b6154cf614d5b565b506000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b860205260406000206040519061550982612d64565b80546001600160481b038116835260481c6001600160401b03166020830152600101546001600160a01b0316604082015290565b8115615547570490565b634e487b7160e01b600052601260045260246000fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000169182156155f1576155de828260ff936040610100600160481b03960151164203816155c2602085019889519383875160081c160261553d565b9160081c1601915160081c168082106000146155ea5750615608565b9251169160081b161790565b9050615608565b506020015160ff16610100600160481b0317919050565b6001600160401b039081811161561c571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608490fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000161561572c576156a9614d5b565b50600160481b600160901b036156c0612cc7615043565b610100600160481b0360ff6156fb600080516020615f2883398151915296808854976156ec8188615b1a565b60081c16908560081c16615a8f565b92169160081b161760481b16906001600160401b0360901b4260901b1690600160481b600160d01b03191617179055565b5050565b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000161561572c57615769614d5b565b50615775612cc7615043565b90600160481b600160901b03600080516020615f2883398151915293845493816001600160401b0360901b4260901b16946157b08184615b1a565b60081c16828260081c160182811160001461583c5750610100600160481b0360ff6157da84615608565b92169160081b1617906001600160481b038516906157f88284615b1a565b80856001600160401b0360901b1988161760081c16908360081c161060001461583557505b60481b1691600160481b600160d01b03191617179055565b905061581d565b60ff6157da610100600160481b0392615608565b6001600160401b03807f0000000000000000000000000000000000000000000000000000000000000000161561364a57610100600160481b0360ff61590a61ffff6134d79661589d614d5b565b50169384600052600080516020615e88833981519152806020526158c7612cc7604060002061508b565b60009687526020919091526040909520805467ffffffffffffffff60901b191642831660901b67ffffffffffffffff60901b161781559581906156ec8188615b1a565b92169160081b1617906150c5565b6001600160401b03807f0000000000000000000000000000000000000000000000000000000000000000161561364a5761ffff6134d793615957614d5b565b5016600090808252600080516020615e8883398151915280602052615981612cc76040852061508b565b91835260205260408220805467ffffffffffffffff60901b191642851660901b67ffffffffffffffff60901b161781559383906159be8184615b1a565b60081c16838260081c1601838111600014615a2b5750610100600160481b0360ff6159e885615608565b92169160081b1617918084546001600160481b03811693615a098587615b1a565b5060081c16908360081c1610600014615a235750906150c5565b9050906150c5565b60ff6159e8610100600160481b0392615608565b9067ffffffffffffffff60481b82549160481b169067ffffffffffffffff60481b1916179055565b468103615a715750565b604490604051906377d879fb60e01b82526004820152466024820152fd5b6001600160401b03918216908216039190821161192c57565b60009182915b6001600160401b03908181168015615af05760001901918211615adc571691615ad690614d2d565b91615aae565b634e487b7160e01b85526011600452602485fd5b505050915090565b90615b038183615b1a565b6001600160401b03809160081c169160081c161190565b60ff9182169116818103615b2c575050565b604051635ce6db6160e11b815260ff918216600482015291166024820152604490fd5b60ff811660081015612f3b5750600890565b9060ff8091169116039060ff821161192c57565b60ff16604d811161192c57600a0a90565b919060ff821660ff8216818114615bda571115615bb957615bae612f3b9392615bb392615b61565b615b75565b9061553d565b615bae90615bc692615b61565b9081810291818304149015171561192c5790565b5050505090565b615c1461397660ff92610100600160481b039495615bfe87615b4f565b908581168683161015615c1f5750958691615b86565b92169160081b161790565b9050958691615b86565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615615c5857565b604051631afcd79f60e31b8152600490fd5b6001600160a01b03908116908115615cc557600080516020615dc883398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020615dc8833981519152546001600160a01b03163303615cff57565b60405163118cdaa760e01b8152336004820152602490fd5b600080516020615ee88339815191526002815414615d355760029055565b604051633ee5aeb560e01b8152600490fdfeebcc9f646b0f459ff8f387587d536b0af3484cf442e1577400f322334e7d1ef047028352a8b3feae1a85fba43bc13f990568bb1637dce33d3dbfd791a0808b7f6c3cb3f3ae91330f31ba2bc0ff8855fc834fb66dc27e8e0b1a398617dabaa5a668dfeeddfa5e4e9adceec01a3aba274bdcbab3f6ac9956417a4332f2b08abdda9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930064bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022fd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f00758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e1ad78307a8b51804c575f26039dcb87c58925afb3b7c08732f3b21b942aed7a768561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d89efb21dcaedea63b55c44882f329622e13a8d0f5b947b3a372826208a9003da1549bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f852fa0677fef8612c6c15b518c9fa56761e9ed15cfd5c6e5399e5467985ac7ed9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00bfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12497c25289a27ec8c9be54d4a154cf80490d69bda989cdb8328232e08fea9220420a26469706673582212207ed5e889b9f55b8e46c735a86c62e208aeae9aa95f45c30245d74d8a7fdad80c64736f6c63430008130033",isSuperArgs$3=t=>typeof t[0]=="string"||Array.isArray(t[0])||"_isInterface"in t[0];var Un;let NttManager__factory$1=(Un=class extends ContractFactory{constructor(...e){if(isSuperArgs$3(e))super(...e);else{const[s,l]=e;super(_abi$3,Un.linkBytecode(s),l)}}static linkBytecode(e){let s=_bytecode$3;return s=s.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),s}getDeployTransaction(e,s,l,d,u,p){return super.getDeployTransaction(e,s,l,d,u,p||{})}deploy(e,s,l,d,u,p){return super.deploy(e,s,l,d,u,p||{})}connect(e){return super.connect(e)}static createInterface(){return new Interface(_abi$3)}static connect(e,s){return new Contract(e,_abi$3,s)}},Ae(Un,"bytecode",_bytecode$3),Ae(Un,"abi",_abi$3),Un);const _abi$2=[{type:"constructor",inputs:[{name:"nttManager",type:"address",internalType:"address"},{name:"wormholeCoreBridge",type:"address",internalType:"address"},{name:"wormholeRelayerAddr",type:"address",internalType:"address"},{name:"specialRelayerAddr",type:"address",internalType:"address"},{name:"_consistencyLevel",type:"uint8",internalType:"uint8"},{name:"_gasLimit",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"WORMHOLE_TRANSCEIVER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"consistencyLevel",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"encodeWormholeTransceiverInstruction",inputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],outputs:[{name:"",type:"bytes",internalType:"bytes"}],stateMutability:"pure"},{type:"function",name:"gasLimit",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getNttManagerOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getNttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"payable"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isVAAConsumed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"nttManager",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"nttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"parseWormholeTransceiverInstruction",inputs:[{name:"encoded",type:"bytes",internalType:"bytes"}],outputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],stateMutability:"pure"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"receiveMessage",inputs:[{name:"encodedMessage",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"receiveWormholeMessages",inputs:[{name:"payload",type:"bytes",internalType:"bytes"},{name:"additionalMessages",type:"bytes[]",internalType:"bytes[]"},{name:"sourceAddress",type:"bytes32",internalType:"bytes32"},{name:"sourceChain",type:"uint16",internalType:"uint16"},{name:"deliveryHash",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"sendMessage",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]},{name:"nttManagerMessage",type:"bytes",internalType:"bytes"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"setIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEvm",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setWormholePeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"specialRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ISpecialRelayer"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferTransceiverOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"wormhole",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormhole"}],stateMutability:"view"},{type:"function",name:"wormholeRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormholeRelayer"}],stateMutability:"view"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ReceivedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"ReceivedRelayedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"RelayingInfo",inputs:[{name:"relayingType",type:"uint8",indexed:!1,internalType:"uint8"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"deliveryPayment",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"SendTransceiverMessage",inputs:[{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"message",type:"tuple",indexed:!1,internalType:"struct TransceiverStructs.TransceiverMessage",components:[{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"nttManagerPayload",type:"bytes",internalType:"bytes"},{name:"transceiverPayload",type:"bytes",internalType:"bytes"}]}],anonymous:!1},{type:"event",name:"SetIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isEvm",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetWormholePeer",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"CallerNotNttManager",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CallerNotRelayer",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CannotRenounceTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"}]},{type:"error",name:"CannotTransferTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"},{name:"newOwner",type:"address",internalType:"address"}]},{type:"error",name:"InvalidBoolVal",inputs:[{name:"val",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidBoolValue",inputs:[{name:"value",type:"uint256",internalType:"BooleanFlag"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidRelayingConfig",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidVaa",inputs:[{name:"reason",type:"string",internalType:"string"}]},{type:"error",name:"InvalidWormholeChainIdZero",inputs:[]},{type:"error",name:"InvalidWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidWormholePeerZeroAddress",inputs:[]},{type:"error",name:"LengthMismatch",inputs:[{name:"encodedLength",type:"uint256",internalType:"uint256"},{name:"expectedLength",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerAlreadySet",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"TransferAlreadyCompleted",inputs:[{name:"vaaHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"UnexpectedAdditionalMessages",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"deployer",type:"address",internalType:"address"},{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedRecipientNttManagerAddress",inputs:[{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"expectedRecipientNttManagerAddress",type:"bytes32",internalType:"bytes32"}]}],_bytecode$2="0x6101c06040818152346200031d5760c082620036ef803803809162000025828562000322565b8339810103126200031d576200003b826200035c565b906020906200004c8285016200035c565b926200005a8286016200035c565b62000068606087016200035c565b9160808701519660ff881688036200031d5760a00151947ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080549060ff82881c166200030c5782906001600160401b03906002600160401b031984831601620002c9575b50505050306080528160a052845190637e062a3560e11b8252808260048160018060a01b038097165afa908115620002be576000916200027f575b50905060c0523360e0528061012096168652806101409216825261016092168252610180924684526101009687526101a0948552519461337d9687620003728839608051876130e8015260a051878181610dbd015281816114fa0152818161187d01528181612002015281816121b10152818161288d0152612a91015260c051878181610e4801528181611c40015281816122030152818161263a0152612d29015260e05187610cc501525186818161076301528181610efa0152818161122101528181611bab01528181611d9e01526123480152518581816101fd01528181610bbe01528181610f270152818161124d01528181611b5301528181611dcb0152818161225301528181612daf01528181612e8f0152612f2d01525184818161079c015281816115e3015281816119f7015281816122a30152612c72015251838181610a1e01528181611be9015281816122f30152612d66015251826102410152518181816106a1015281816119c20152612c470152f35b82813d8311620002b6575b62000296818362000322565b81010312620002b35750620002ab906200035c565b803862000107565b80fd5b503d6200028a565b86513d6000823e3d90fd5b6001600160401b0319909316811790925586519182527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291a138818180620000cc565b865163f92ee8a960e01b8152600490fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200034657604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200031d5756fe6080604081815260048036101561001557600080fd5b600092833560e01c908163036de8af14612558575080630900f010146120315780630b4a1e891461138857806324fb21db14611fed578063320d0d8e14611faa57806348b330d614611f645780634b5b0505146117ec5780634b795b211461174b578063529dca321461154157806358f709ba146114d2578063657b3b2f1461143157806366152efc146113d0578063689f90c31461138d578063694977d7146113885780637ab564031461112d57806380eb3239146110f15780638129fc1c14610c3657806381e8ec7f14610bed57806384acd1bb14610ba95780638da5cb5b14610b735780638fd3ab8014610a4d57806390ea542814610a09578063935dec07146109c757806396dddc63146109125780639fd0506d146108ca578063b187bd2614610889578063b5634c731461083c578063bc7f6d37146107f9578063d8d28418146107cb578063da25b72514610787578063e8dfd50814610749578063f2fde38b14610714578063f48066a8146106c8578063f68016b7146106895763f953cec7146101a457600080fd5b346106855760209081600319360112610681578035906001600160401b038581841161067e576101da6101f9943690850161274b565b86518095819263607ec5ef60e11b835288878401526024830190612834565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156106745786938790889261046f575b501561044c57507f000000000000000000000000000000000000000000000000000000000000000046810361043057506060830161ffff918282511660005260008051602061326883398151915286528660002054608086019081518091036103ff575061014086016102c7815160005260008051602061328883398151915260205260ff6040600020541690565b6103e657927ff6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0608060e0948b8a8e9996896103286103799d9b516000526000805160206132888339815191526020526040600020600160ff19825416179055565b519360a08989511692519301511692519384528d8401528d8301526060820152a15116940151906103576128f0565b50610360612916565b508651630453806b60e11b815293849283928301612a6f565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156103dc576103b39450859186946103b6575b50815191015191612a8e565b80f35b9093506103d591503d8087833e6103cd818361270f565b8101906129f1565b92386103a7565b84513d87823e3d90fd5b518851632d30ec0360e21b815280870191909152602490fd5b83518951633cd8e72b60e11b815290861661ffff1687820190815260208101929092529081900360400190fd5b0390fd5b826044918751916377d879fb60e01b8352820152466024820152fd5b8551634771719b60e11b815280840186905290819061042c906024830190612834565b945050503d8087853e610482818561270f565b830160609081858203126106705784518381116105f45785016101609283828403126105f85788519384018481108682111761065b5789526104c382613000565b84526104d088830161300e565b888501526104df89830161300e565b898501528082015161ffff8116810361065757818501526080808301518186015261050c60a08401612f98565b60a086015261051d60c08401613000565b60c086015260e0830151868111610653578461053a91850161296e565b60e086015261010061054d81850161300e565b90860152610120908184015187811161064f57840185601f8201121561064f5780518c9461058661057d836127fa565b9651968761270f565b8186528c8087019260071b8401019288841161064b578d01915b8383106105fc57505050505084015261014080910151908301526105c586860161301f565b9487810151908482116105f857019080601f830112156105f45781516105ec928801612937565b909338610238565b8880fd5b8980fd5b84838a031261064b578d8f918287935190610616826126d9565b86518252838701518483015261062d818801613000565b9082015261063c858701613000565b858201528152019201916105a0565b8f80fd5b8c80fd5b8b80fd5b8a80fd5b604187634e487b7160e01b6000525260246000fd5b8780fd5b85513d88823e3d90fd5b80fd5b8380fd5b8280fd5b5050346106c457816003193601126106c457602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5080fd5b5050346106c45760203660031901126106c45760209061ffff6106e9612669565b166000526000805160206132a8833981519152825261070b81600020546130a4565b90519015158152f35b8382346106c45760203660031901126106c457356001600160a01b03811681036106c4576103b3906107446131b8565b613187565b5050346106c457816003193601126106c4576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106c457816003193601126106c4576020906107e8612878565b90516001600160a01b039091168152f35b5050346106c45760203660031901126106c45760209061ffff61081a612669565b16600052600080516020613248833981519152825261070b81600020546130a4565b5034610685578160031936011261068557610855612669565b92602435906001600160401b03821161067e57509261087c61088292602095369101612792565b90612bd1565b9051908152f35b5050346106c457816003193601126106c45760209060027f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b825802254149051908152f35b5050346106c457816003193601126106c4577fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12495490516001600160a01b039091168152602090f35b508290346106c457826003193601126106c45761092d612669565b6109356127eb565b9161093e6131b8565b61ffff82169081156109b957507f4add57d97a7bf5035340ea1212aeeb3d4d3887eb1faf3821a8224c3a6956a10c93946109b39161097b856130d6565b906000526000805160206132a88339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b0390a180f35b8551630f7662c960e21b8152fd5b5050346106c45760203660031901126106c45760209061ffff6109e8612669565b16600052600080516020613268833981519152825280600020549051908152f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b509034610685578260031936011261068557610a676130e5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b038082166001810190828211610b605760ff84871c16908115610b53575b50610b4357169360ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e541615610b35575068ffffffffffffffffff19168317680100000000000000001768ff000000000000000019169055519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a180f35b8351632866815360e11b8152fd5b845163f92ee8a960e01b81528690fd5b9050828216111538610aaf565b634e487b7160e01b885260118752602488fd5b5050346106c457816003193601126106c4576000805160206132e88339815191525490516001600160a01b039091168152602090f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106c457816003193601126106c4578051610c3291610c0e826126f4565b60058252640312e302e360dc1b602083015251918291602083526020830190612834565b0390f35b508260031936011261068557610c4a6130e5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549160ff83831c1615906001600160401b0393848116801590816110e9575b60011490816110df575b1590816110d6575b506110c75767ffffffffffffffff1981166001178655826110a8575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081163381900361108c5750610cf7613146565b610cff613146565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055610dab610d2e612878565b610d36613146565b610d3e613146565b610d46613146565b60017f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022557fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124980546001600160a01b03191633179055610da3613146565b610744613146565b8351634b4fd03b60e01b8152602095907f0000000000000000000000000000000000000000000000000000000000000000831687828681845afa918215611082578a9261104b575b508651631dcbf42b60e11b81529188838781855afa928315611041578b9361100a575b5087519360a085019081118582101761065b578852639c23bd3b60e01b845288840191825260ff9081168489019081527f00000000000000000000000000000000000000000000000000000000000000008616606086019081529382166080860190815289516301529f6160e21b815295516001600160e01b031916888701529251602486015251811660448501529151606484015251166084820152878160a48173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156110005791610f21939187938a91610fde575b5086518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fac565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015610fd457610f9c575b50610f5d578380f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29268ff00000000000000001981541690555160018152a13880808380f35b8381813d8311610fcd575b610fb1818361270f565b81010312610fc957610fc290612f98565b5038610f54565b8580fd5b503d610fa7565b83513d88823e3d90fd5b610ffa91503d808c833e610ff2818361270f565b81019061302c565b38610ee5565b85513d8a823e3d90fd5b9092508881813d831161103a575b611022818361270f565b810103126106575761103390613000565b9138610e16565b503d611018565b88513d8d823e3d90fd5b9091508781813d831161107b575b611063818361270f565b810103126105f85761107490613000565b9038610df3565b503d611059565b87513d8c823e3d90fd5b82604491865191636345072160e11b8352820152336024820152fd5b68ffffffffffffffffff19166801000000000000000117855538610cba565b50825163f92ee8a960e01b8152fd5b90501538610c9e565b303b159150610c96565b849150610c8c565b50913461067e57602036600319011261067e575061070b6020923560005260008051602061328883398151915260205260ff6040600020541690565b508160031936011261068557611141612669565b6024359161114d6131b8565b61ffff80831690811561137857841561136857816000526000805160206132688339815191529160209280845287600020548061133f575081600052835285876000205586519161119d836126be565b630c7e33e160e11b8352838301918252878301878152885163077650fb60e51b815293516001600160e01b031916868501529151166024830152516044820152868160648173__$93083e246e55d56d98f3df2872cd16bfd0$__5af492831561133557611248938392899161131b575b5087516358cd21bf60e11b815294859283927f0000000000000000000000000000000000000000000000000000000000000000918401612fac565b0381347f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610674576112bf575b5050915161ffff909216825260208201527fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d3264669080604081016109b3565b81813d8311611314575b6112d3818361270f565b81010312611310577fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d326466936113096109b392612f98565b5093611282565b8480fd5b503d6112c9565b61132f91503d808b833e610ff2818361270f565b3861120d565b86513d89823e3d90fd5b885163b55eeae960e01b815261ffff881681880190815260208101929092529081906040010390fd5b855163137063ef60e11b81528390fd5b8551630f7662c960e21b81528390fd5b612624565b5050346106c457816003193601126106c45760209060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb541690519015158152f35b50913461067e57602036600319011261067e57508051916113f0836126a3565b35908115159182810361142c57610c32935280519160f81b60208301526001825261141a826126f4565b51918291602083526020830190612834565b600080fd5b508290346106c457826003193601126106c45761144c612669565b6114546127eb565b9161145d6131b8565b61ffff82169081156109b957507f528b18a533e892b5401d1fb63597275df9d2bb45b13e7695c3147cd07b9746c393946109b39161149a856130d6565b906000526000805160206132c88339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b5034610685576020366003190112610685578035916001600160a01b038084168403611310577f000000000000000000000000000000000000000000000000000000000000000016330361152a57836103b3846131f1565b60249250519063c5aa615360e01b82523390820152fd5b5060a0366003190112610685576001600160401b0381358181116113105761156c903690840161274b565b6024928335938385116117475736602386011215611747578482013593611592856127fa565b9461159f8851968761270f565b808652602096838888019260051b8201019236841161065757848201925b8484106117215750505050506044356064359461ffff86169081870361142c57608435937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361170e57826000526000805160206132688339815191528952838a60002054036116e757848b52600080516020613288833981519152895260ff8a8c2054166116d3575061167c846000526000805160206132888339815191526020526040600020600160ff19825416179055565b516116c357606061037995938a95937ff557dbbb087662f52c815f6c7ee350628a37a51eae9608ff840d996b65f87475938b519283528a8301528a820152a16103576128f0565b875163c504ea2960e01b81528490fd5b8951632d30ec0360e21b8152808701869052fd5b8951633cd8e72b60e11b815261ffff89168188019081526020810186905281906040010390fd5b8951631c26958960e01b81523381880152fd5b833582811161064f578a9161173c839289369188010161274b565b8152019301926115bd565b8680fd5b508290346106c457826003193601126106c457611766612669565b61176e6127eb565b916117776131b8565b61ffff82169081156109b957507f0fe301480713b2c2072ee91b3bcfcbf2c0014f0447c89046f020f0f80727003c93946109b3916117b4856130d6565b906000526000805160206132488339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b509060031960a03682011261068157611803612669565b9060249283356001600160401b0390818111610670576118269036908801612792565b906044358181116105f45761183e903690890161274b565b90608435977f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00976002895414611f5557600289556001600160a01b03937f000000000000000000000000000000000000000000000000000000000000000085163303611f3f57908b6118f881936119078a519b6118ba8d6126a3565b848d528b516304616c8f60e21b81526309945ff160e41b89820152338782015260648035604483015260a0908201529c8d94859460a4860190612834565b91848303016084850152612834565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415611f355782988395611ee3575b5061193f602080980151612b56565b80511580611ed4575b15611b2b575050928a928592838989976119ba61ffff8f16968792836000526000805160206132688339815191528c5261198e6119888660002054612fd4565b9b612fd4565b94519c8d9b8c9a8b9a6312d729bd60e21b8c528b0152169088015260e0604488015260e4870190612834565b9360648601527f0000000000000000000000000000000000000000000000000000000000000000608486015260a48501521660c4830152039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611b2157611ab0575b5061ffff926060611a9584611aa9946000805160206133288339815191528460019c6000805160206133088339815191529b99519060008252848201523485820152a15b815197889716875281818801528451828801528401518387015283015160808087015260c0860190612834565b910151838203603f190160a0850152612834565b0390a15580f35b9391928185813d8311611b1a575b611ac8818361270f565b81010312610670576060611a9561ffff95611aa9946000805160206133288339815191528460019c611b086000805160206133088339815191529c612f98565b509c5050509450949650505092611a24565b503d611abe565b83513d8a823e3d90fd5b919394959250959697989a50511580611ea8575b15611d7e578651631a90a21960e01b8152937f000000000000000000000000000000000000000000000000000000000000000082169087868681855afa958d8715611d7357908993929197611d40575b50869291611bd3918b519889809481936358cd21bf60e11b83527f0000000000000000000000000000000000000000000000000000000000000000908c8401612fac565b03925af1948515611d36578c95611cff575b50817f00000000000000000000000000000000000000000000000000000000000000001690340390348211611ceb5790818d9796959493923b15610670578c96889660849561ffff8d519a8b998a98630b5624e160e11b8a527f0000000000000000000000000000000000000000000000000000000000000000169089015216908601528760448601521660648401525af18015611ce157611cc9575b50600080516020613308833981519152936060611a95856001999560008051602061332883398151915284611aa99761ffff9a51908e8252848201523485820152a1611a68565b611cd59096929661267a565b610fc957938538611c82565b84513d84823e3d90fd5b83601186634e487b7160e01b600052526000fd5b9094508681813d8311611d2f575b611d17818361270f565b8101031261065357611d2890612f98565b9338611be5565b503d611d0d565b88513d8e823e3d90fd5b9196509181813d8111611d6c575b611d58818361270f565b8101031261142c5751948791611bd3611b8f565b503d611d4e565b8a51903d90823e3d90fd5b9050611dc59350849286999799518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fac565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611e9e57611e40575b5091611aa96001956060611a958560008051602061330883398151915297600080516020613328833981519152848d61ffff9a519060028252848201523485820152a1611a68565b9181838195933d8311611e97575b611e58818361270f565b81010312611747576001956060611a95611aa99360008051602061330883398151915297611e8861ffff98612f98565b50959750955050509550611df8565b503d611e4e565b83513d89823e3d90fd5b5061ffff8a166000526000805160206132488339815191528652611ecf87600020546130a4565b611b3f565b50611ede8b613051565b611948565b985093503d80838a3e611ef6818a61270f565b88019787818a03126106855780518581116106815789611f17918301612988565b98602082015186811161131057611f2e920161296e565b9338611930565b87513d84823e3d90fd5b509085519063c5aa615360e01b82523390820152fd5b508451633ee5aeb560e01b8152fd5b50913461067e57602036600319011261067e578235906001600160401b03821161067e5750611f9b602093611fa09236910161274b565b612b56565b9051905115158152f35b5050346106c45760203660031901126106c45760209061ffff611fcb612669565b166000526000805160206132c8833981519152825261070b81600020546130a4565b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5090346106855760209182600319360112610681576001600160a01b0391813583811690818103611747576120646131b8565b61206c6130e5565b3b156124ff577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e938454936120f960ff861615613129565b60ff199485166001178655303b1561174757825163011fa75760e71b81528781868183305af180156123f3576124ec575b50825163689f90c360e01b815282818681305afa9081156123f35788916124b7575b5015612186575b505050507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b82516324fb21db60e01b815282818681305afa9081156123f357906121d891899161249a575b5082167f0000000000000000000000000000000000000000000000000000000000000000831614613129565b8251630b4a1e8960e01b815282818681305afa9081156123f3579061222a91899161246d575b5082167f0000000000000000000000000000000000000000000000000000000000000000831614613129565b82516384acd1bb60e01b815282818681305afa80156123f3578890612435575b61227a915082167f0000000000000000000000000000000000000000000000000000000000000000831614613129565b825163da25b72560e01b815282818681305afa80156123f35788906123fd575b6122ca915082167f0000000000000000000000000000000000000000000000000000000000000000831614613129565b825163121d4a8560e31b815282818681305afa9081156123f35788916123b9575b508161231b927f000000000000000000000000000000000000000000000000000000000000000016911614613129565b8082518094631d1bfaa160e31b825281305afa9182156123b057508591612379575b50612370915060ff807f000000000000000000000000000000000000000000000000000000000000000016911614613129565b38808080612153565b905081813d83116123a9575b61238f818361270f565b81010312610681576123a361237091613000565b3861233d565b503d612385565b513d87823e3d90fd5b90508281813d83116123ec575b6123d0818361270f565b810103126106705751908082168203610670579061231b6122eb565b503d6123c6565b84513d8a823e3d90fd5b508281813d831161242e575b612413818361270f565b8101031261067057518181168103610670576122ca9061229a565b503d612409565b508281813d8311612466575b61244b818361270f565b81010312610670575181811681036106705761227a9061224a565b503d612441565b61248d9150843d8611612493575b612485818361270f565b810190612859565b386121fe565b503d61247b565b6124b19150843d861161249357612485818361270f565b386121ac565b90508281813d83116124e5575b6124ce818361270f565b81010312610670576124df9061301f565b3861214c565b503d6124c4565b6124f89097919761267a565b953861212a565b815162461bcd60e51b8152808401869052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b828591346106855760203660031901126106855781356001600160a01b03818116939184900361131057806000805160206132e88339815191525416927fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124992835492831694338614159081612619575b506126045750506001600160a01b031916831790557f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b63e2a08e5d60e01b8252339082015260249150fd5b9050331415886125c8565b3461142c57600036600319011261142c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6004359061ffff8216820361142c57565b6001600160401b03811161268d57604052565b634e487b7160e01b600052604160045260246000fd5b602081019081106001600160401b0382111761268d57604052565b606081019081106001600160401b0382111761268d57604052565b608081019081106001600160401b0382111761268d57604052565b604081019081106001600160401b0382111761268d57604052565b90601f801991011681019081106001600160401b0382111761268d57604052565b6001600160401b03811161268d57601f01601f191660200190565b81601f8201121561142c5780359061276282612730565b92612770604051948561270f565b8284526020838301011161142c57816000926020809301838601378301015290565b91909160408184031261142c5760408051916001600160401b039183018281118482101761268d576040528294813560ff8116810361142c578452602082013592831161142c576020926127e6920161274b565b910152565b60243590811515820361142c57565b6001600160401b03811161268d5760051b60200190565b60005b8381106128245750506000910152565b8181015183820152602001612814565b9060209161284d81518092818552858086019101612811565b601f01601f1916010190565b9081602091031261142c57516001600160a01b038116810361142c5790565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156128e4576000916128c9575090565b6128e1915060203d811161249357612485818361270f565b90565b6040513d6000823e3d90fd5b604051906128fd826126d9565b6060808360008152600060208201528160408201520152565b60405190612923826126be565b606060408360008152600060208201520152565b9092919261294481612730565b91612952604051938461270f565b82948284528282011161142c57602061296c930190612811565b565b9080601f8301121561142c5781516128e192602001612937565b919060808382031261142c57604051906129a1826126d9565b819380518352602081015160208401526040810151916001600160401b039283811161142c57816129d391840161296e565b6040850152606082015192831161142c576060926127e6920161296e565b919060408382031261142c578251906001600160401b039182811161142c5781612a1c918601612988565b9360208101519083821161142c57019060608282031261142c5760405192612a43846126be565b8251845260208301516020850152604083015190811161142c57612a67920161296e565b604082015290565b6309945ff160e41b81526040602082018190526128e192910190612834565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690818103612b385750803b1561142c5761ffff60008094612b1e604080519889978896879563275e091560e21b875216600486015260248501526060604485015280516064850152602081015160848501520151606060a484015260c4830190612834565b03925af180156128e457612b2f5750565b61296c9061267a565b60449250604051916339dee99160e11b835260048301526024820152fd5b9060405191612b64836126a3565b6000835282815115612bcc5750600181015160fe8116612bb05760ff16151583525160018103612b915750565b604490604051906355c5b3e360e11b8252600482015260016024820152fd5b60405163f7a37b0760e01b815260ff9091166004820152602490fd5b925050565b90612be0602080920151612b56565b51612f175761ffff8216906000908282526000805160206132c88339815191528152604093612c11858420546130a4565b80612ef0575b612ed857612c2490613051565b15612ceb5750825163c23ee3c360e01b81526004810192909252602482018190527f0000000000000000000000000000000000000000000000000000000000000000604483015282826064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315612ce1578193612cb0575b50505090565b9091809350813d8311612cda575b612cc8818361270f565b8101031261067e575051388080612caa565b503d612cbe565b51903d90823e3d90fd5b8282939492526000805160206132488339815191528152612d0e828420546130a4565b15612e7657815163209d173960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820195909552604481018490529381856064817f000000000000000000000000000000000000000000000000000000000000000085165afa948515612e69578495612e3a575b509080600492845193848092631a90a21960e01b82527f0000000000000000000000000000000000000000000000000000000000000000165afa928315612e3157508392612e03575b50508201809211612def575090565b634e487b7160e01b81526011600452602490fd5b90809250813d8311612e2a575b612e1a818361270f565b810103126106c457513880612de0565b503d612e10565b513d85823e3d90fd5b9094508181813d8311612e62575b612e52818361270f565b8101031261068157519381612d97565b503d612e48565b50505051903d90823e3d90fd5b8151631a90a21960e01b815291935090919080836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa938415612ecd57508193612cb05750505090565b51913d9150823e3d90fd5b845163251268db60e21b815260048101859052602490fd5b508383526000805160206132a88339815191528252612f11858420546130a4565b15612c17565b604051631a90a21960e01b8152915080826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156128e457600091612f6c575b50905090565b82813d8311612f91575b612f80818361270f565b8101031261067e5750518038612f66565b503d612f76565b51906001600160401b038216820361142c57565b9060ff612fcd60409295949560008552606060208601526060850190612834565b9416910152565b8060a01c612fe8576001600160a01b031690565b6024906040519063033b960d60e41b82526004820152fd5b519060ff8216820361142c57565b519063ffffffff8216820361142c57565b5190811515820361142c57565b9060208282031261142c5781516001600160401b03811161142c576128e1920161296e565b61ffff16806000526000805160206132c88339815191526020526130796040600020546130a4565b9081613083575090565b90506000526000805160206132a88339815191526020526128e16040600020545b80156130d057600181146130ca576024906040519063b998bad560e01b82526004820152fd5b50600190565b50600090565b156130e057600190565b600090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461311757565b604051633c64f99360e21b8152600490fd5b1561313057565b634e487b7160e01b600052600160045260246000fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561317557565b604051631afcd79f60e31b8152600490fd5b6001600160a01b0381161561319f5761296c906131f1565b604051631e4fbdf760e01b815260006004820152602490fd5b6000805160206132e8833981519152546001600160a01b031633036131d957565b60405163118cdaa760e01b8152336004820152602490fd5b6000805160206132e883398151915280546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a356fed4cbc7742a1e11dcc33209ac33862ef146cfcb6d7f860df12df42105dfedb1c948c66ef0992b4bcc14f2551075db9459fc23bf706abb76034f1c66c1ba2846845e6aacb3f16e5b01c8b072a0ab4c38e919266014a45db863ee64a4580fb3e7e2e79d2e5e46f62be2ac831294e423b664f30320fb9ebaefd78a978cafe07c0f8c16ee6ac6bf7a8d7c37112a9426e00852b215ac4f5c50536beb6c95f1ba47b4af9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930079376a0dc6cbfe6f6f8f89ad24c262a8c6233f8df181d3fe5abb2e2442e8c738c3192e083c87c556db539f071d8a298869f487e951327b5616a6f85ae3da958ea264697066735822122059bdad9542fb301c5a401dc5ec7c26dca547abf82e0e0ca3cc87aced2c37698b64736f6c63430008130033",isSuperArgs$2=t=>typeof t[0]=="string"||Array.isArray(t[0])||"_isInterface"in t[0];var Wn;let WormholeTransceiver__factory$1=(Wn=class extends ContractFactory{constructor(...e){if(isSuperArgs$2(e))super(...e);else{const[s,l]=e;super(_abi$2,Wn.linkBytecode(s),l)}}static linkBytecode(e){let s=_bytecode$2;return s=s.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),s}getDeployTransaction(e,s,l,d,u,p,m){return super.getDeployTransaction(e,s,l,d,u,p,m||{})}deploy(e,s,l,d,u,p,m){return super.deploy(e,s,l,d,u,p,m||{})}connect(e){return super.connect(e)}static createInterface(){return new Interface(_abi$2)}static connect(e,s){return new Contract(e,_abi$2,s)}},Ae(Wn,"bytecode",_bytecode$2),Ae(Wn,"abi",_abi$2),Wn);const _abi$1=[{type:"constructor",inputs:[{name:"_token",type:"address",internalType:"address"},{name:"_mode",type:"uint8",internalType:"enum IManagerBase.Mode"},{name:"_chainId",type:"uint16",internalType:"uint16"},{name:"_rateLimitDuration",type:"uint64",internalType:"uint64"},{name:"_skipRateLimiting",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"NTT_MANAGER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"attestationReceived",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"cancelOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"chainId",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"completeInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"completeOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"executeMsg",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"message",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getCurrentInboundCapacity",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getCurrentOutboundCapacity",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getInboundLimitParams",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"view"},{type:"function",name:"getInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.InboundQueuedTransfer",components:[{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipient",type:"address",internalType:"address"}]}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getMode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getOutboundLimitParams",inputs:[],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"pure"},{type:"function",name:"getOutboundQueuedTransfer",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.OutboundQueuedTransfer",components:[{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"sender",type:"address",internalType:"address"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}]}],stateMutability:"view"},{type:"function",name:"getPeer",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct INttManager.NttManagerPeer",components:[{name:"peerAddress",type:"bytes32",internalType:"bytes32"},{name:"tokenDecimals",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getThreshold",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getTransceiverInfo",inputs:[],outputs:[{name:"",type:"tuple[]",internalType:"struct TransceiverRegistry.TransceiverInfo[]",components:[{name:"registered",type:"bool",internalType:"bool"},{name:"enabled",type:"bool",internalType:"bool"},{name:"index",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getTransceivers",inputs:[],outputs:[{name:"result",type:"address[]",internalType:"address[]"}],stateMutability:"pure"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"payable"},{type:"function",name:"isMessageApproved",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isMessageExecuted",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"messageAttestations",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"count",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"mode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"enum IManagerBase.Mode"}],stateMutability:"view"},{type:"function",name:"nextMessageSequence",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"},{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"rateLimitDuration",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"removeTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setInboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"},{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setOutboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"},{name:"decimals",type:"uint8",internalType:"uint8"},{name:"inboundLimit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setThreshold",inputs:[{name:"threshold",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"token",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"tokenDecimals",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"transceiverAttestedToMessage",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"shouldQueue",type:"bool",internalType:"bool"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unpause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"InboundTransferQueued",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"MessageAlreadyExecuted",inputs:[{name:"sourceNttManager",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"msgHash",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"MessageAttestedTo",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"index",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OutboundTransferCancelled",inputs:[{name:"sequence",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipient",type:"address",indexed:!1,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OutboundTransferQueued",inputs:[{name:"queueSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"OutboundTransferRateLimited",inputs:[{name:"sender",type:"address",indexed:!0,internalType:"address"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"currentCapacity",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"PeerUpdated",inputs:[{name:"chainId_",type:"uint16",indexed:!0,internalType:"uint16"},{name:"oldPeerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"oldPeerDecimals",type:"uint8",indexed:!1,internalType:"uint8"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"peerDecimals",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"ThresholdChanged",inputs:[{name:"oldThreshold",type:"uint8",indexed:!1,internalType:"uint8"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverAdded",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"transceiversNum",type:"uint256",indexed:!1,internalType:"uint256"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverRemoved",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransferRedeemed",inputs:[{name:"digest",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"TransferSent",inputs:[{name:"recipient",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"msgSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"BurnAmountDifferentThanBalanceDiff",inputs:[{name:"burnAmount",type:"uint256",internalType:"uint256"},{name:"balanceDiff",type:"uint256",internalType:"uint256"}]},{type:"error",name:"CallerNotTransceiver",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CancellerNotSender",inputs:[{name:"canceller",type:"address",internalType:"address"},{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"CapacityCannotExceedLimit",inputs:[{name:"newCurrentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"newLimit",type:"uint72",internalType:"TrimmedAmount"}]},{type:"error",name:"DeliveryPaymentTooLow",inputs:[{name:"requiredPayment",type:"uint256",internalType:"uint256"},{name:"providedPayment",type:"uint256",internalType:"uint256"}]},{type:"error",name:"DisabledTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"InboundQueuedTransferNotFound",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InboundQueuedTransferStillQueued",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidMode",inputs:[{name:"mode",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidPeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidPeerChainIdZero",inputs:[]},{type:"error",name:"InvalidPeerDecimals",inputs:[]},{type:"error",name:"InvalidPeerSameChainId",inputs:[]},{type:"error",name:"InvalidPeerZeroAddress",inputs:[]},{type:"error",name:"InvalidRecipient",inputs:[]},{type:"error",name:"InvalidRefundAddress",inputs:[]},{type:"error",name:"InvalidTargetChain",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"thisChain",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidTransceiverZeroAddress",inputs:[]},{type:"error",name:"MessageNotApproved",inputs:[{name:"msgHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NoEnabledTransceivers",inputs:[]},{type:"error",name:"NonRegisteredTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotEnoughCapacity",inputs:[{name:"currentCapacity",type:"uint256",internalType:"uint256"},{name:"amount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"NumberOfDecimalsNotEqual",inputs:[{name:"decimals",type:"uint8",internalType:"uint8"},{name:"decimalsOther",type:"uint8",internalType:"uint8"}]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OutboundQueuedTransferNotFound",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}]},{type:"error",name:"OutboundQueuedTransferStillQueued",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerNotRegistered",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RefundFailed",inputs:[{name:"refundAmount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"RetrievedIncorrectRegisteredTransceivers",inputs:[{name:"retrieved",type:"uint256",internalType:"uint256"},{name:"registered",type:"uint256",internalType:"uint256"}]},{type:"error",name:"StaticcallFailed",inputs:[]},{type:"error",name:"ThresholdTooHigh",inputs:[{name:"threshold",type:"uint256",internalType:"uint256"},{name:"transceivers",type:"uint256",internalType:"uint256"}]},{type:"error",name:"TooManyTransceivers",inputs:[]},{type:"error",name:"TransceiverAlreadyAttestedToMessage",inputs:[{name:"nttManagerMessageHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"TransceiverAlreadyEnabled",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"TransferAmountHasDust",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"dust",type:"uint256",internalType:"uint256"}]},{type:"error",name:"UndefinedRateLimiting",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"expectedOwner",type:"address",internalType:"address"},{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedMsgValue",inputs:[]},{type:"error",name:"ZeroAmount",inputs:[]},{type:"error",name:"ZeroThreshold",inputs:[]}],_bytecode$1="0x61016034620005cb57601f620065b138819003918201601f19168301916001600160401b038311848410176200057e5780849260a094604052833981010312620005cb578051906001600160a01b0382168203620005cb576020810151916002831015620005cb5760408201519161ffff83168303620005cb576060810151906001600160401b03821690818303620005cb576080015180159182158203620005cb5715809281620005c2575b508215620005a6575b505062000594576080527f8561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d8954620001147e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e15460ff8360081c1614620005d0565b7ffd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f5460005b60ff8360081c168110620003f157505060005b60ff8260081c1681106200035d5750604060ff6200016d92161115620005d0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c166200034b576002600160401b03196001600160401b03821601620002ff575b50503060a05260c0526101009182526101209081526101404681523360e05260405191615f6393846200064e85396080518481816114d401528181611b1401528181611fb1015281816129e20152818161342d015281816139b5015281816140310152818161554f0152818161566201528181615722015281816158410152615909015260a05184614f95015260c0518481816102900152818161051401528181610561015281816128ce0152818161382501528181613eaf0152818161476d01528181614bac0152614c5c015260e05184611c590152518381816104ab0152818161202a015281816121560152818161291c015281816138a701528181613f2c0152614b3401525182818161137c01528181611e500152818161298501526133b701525181818161044901528181613aa1015281816140f90152818161463e0152614ae60152f35b6001600160401b0319166001600160401b039081179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880620001b6565b60405163f92ee8a960e01b8152600490fd5b60018101808211620003db575b60ff8360081c1681106200038a57506200038490620005ee565b6200014c565b620003d590620003cf6200039e84620005fe565b9054620003ab84620005fe565b9054600391821b1c6001600160a01b039081169390911b9190911c161415620005d0565b620005ee565b6200036a565b634e487b7160e01b600052601160045260246000fd5b620003fc81620005fe565b9054600382901b81901c6001600160a01b031660009081527f49bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f602052604090819020905192906001600160401b0360608501908111908511176200057e5760608401604052546200049e60ff821615801592838752602087019360ff808360081c1615928315875260101c16908160408a01529262000561575b5050620005d0565b60018060401b03600160ff6040870151161b87161615159051151592600092835b60ff8a60081c1681106200050f575b5050508262000509959492620004ee620003cf95620004f79414620005d0565b151514620005d0565b60ff60408188169201511610620005d0565b62000139565b6200051a81620005fe565b9054600391821b1c6001600160a01b039081169184901b85901c16146200054c576200054690620005ee565b620004bf565b5060019350849150829050620004ee620004ce565b9091508162000574575b50388062000496565b905015386200056b565b634e487b7160e01b600052604160045260246000fd5b60405163e543ef0560e01b8152600490fd5b15915081620005b9575b503880620000b5565b905038620005b0565b925038620000ac565b600080fd5b15620005d857565b634e487b7160e01b600052600160045260246000fd5b6000198114620003db5760010190565b7e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e18054821015620006375760005260206000200190600090565b634e487b7160e01b600052603260045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c80630271725014612c5f578063036de8af14612bd45780630677df5414612bb55780630900f0101461274e578063186ce612146126f957806319017175146126c35780631f97c9a8146124d1578063203e4a9b146121ce57806323d75e311461219a578063295a521214612140578063396c16b7146121045780633b97e856146120e95780633f4ba83a146120755780634b4fd03b14612017578063689f90c314611fd557806374aa7bfc14611f915780637c91863414611e025780638129fc1c14611bcd5780638413bcba14611ab15780638456cb5914611a3457806386e11ffa14611a0f57806389c619dd146119af5780638da5cb5b146119795780638e3ba8c9146119425780638fd3ab80146118035780639057412d14611686578063961b94d01461162857806397c35146146113a05780639a8a0592146113615780639d782454146111265780639f86029c14610e105780639fd0506d14610dda578063b150fc5514610c2d578063b187bd2614610bff578063b293f97f14610b69578063b4d591bb14610aa8578063c0b07bde14610a62578063c128d170146109e6578063d788c1471461095b578063da4856a114610928578063e5a986031461087c578063e75235b81461084e578063f2fde38b14610709578063f5cfec18146106e6578063f7514fbc146102bf578063fc0c546a1461027a5763fd96063c1461022257600080fd5b346102775760203660031901126102775760606102406004356154ad565b6040805182516001600160481b031681526020808401516001600160401b031690820152918101516001600160a01b031690820152f35b80fd5b50346102775780600319360112610277576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610277576020366003190112610277576004356001600160401b03811681036106e2576102ec615cfd565b6002600080516020615dce83398151915254146106d0576001600160401b038116600052600080516020615eae83398151915260205260406000206040519061033482612d2f565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a083015260405190818560048301549261039b84613755565b80845293600181169081156106ae575060011461066a575b506103c092500382612db6565b60c08201526001600160401b03606082015116156106495760a08101516001600160a01b031633810361061c5750606061048c60407ff80e572ae1b63e2449629b6c7d783add85c36473926f216077f17ee002bcfd07936001600160401b038616600052600080516020615eae833981519152602052610442826000206137a6565b015161046d7f0000000000000000000000000000000000000000000000000000000000000000615a4d565b610475614c36565b906001600160401b0360ff82169160081c16615b6c565b926001600160401b0360405191168152336020820152836040820152a17f000000000000000000000000000000000000000000000000000000000000000060028110156106065780610556575060405163a9059cbb60e01b602082015233602482015260448101919091526105419061051281606481015b03601f198101835282612db6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316614438565b6001600080516020615ece8339815191525580f35b600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156105e5576040516340c10f1960e01b815233600482015260248101929092526000908290604490829084905af180156105d9576105ca575b50610541565b6105d390612d1c565b386105c4565b6040513d6000823e3d90fd5b600080fd5b6040516366001a8960e01b815260ff9091166004820152602490fd5b634e487b7160e01b600052602160045260246000fd5b60405163ceb40a8560e01b81523360048201526001600160a01b03919091166024820152604490fd5b0390fd5b604051635feafa3160e11b81526001600160401b0383166004820152602490fd5b60040187525060208620909186915b8183106106925750509060206103c092820101386103b3565b6020919350806001915483858801015201910190918392610679565b9050602092506103c094915060ff191682840152151560051b820101386103b3565b6040516309e3d0f360e11b8152600490fd5b5080fd5b50346102775780600319360112610277576020610701615496565b604051908152f35b5034610277576020366003190112610277576001600160a01b03600435818116908181036108195761074a9061073d615cc4565b610745615cc4565b615c50565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed97891825460ff600080516020615e4e8339815191525416808203610830575050908391825b845481101561082c578460005281817f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd1015416803b1561082857848091602460405180948193632c7b84dd60e11b83528960048401525af190811561081d578591610805575b505061080090612ff6565b61078f565b61080e90612d1c565b6108195783386107f5565b8380fd5b6040513d87823e3d90fd5b8480fd5b8380f35b604492506040519163d2a13a2960e01b835260048301526024820152fd5b5034610277578060031936011261027757602060ff600080516020615d4e8339815191525416604051908152f35b50346102775760203660031901126102775760043560ff8116908181036105e5576108a5615cc4565b8115610916577f2a855b929b9a53c6fb5b5ed248b27e502b709c088e036a5aa17620c8fc5085a99161091060ff92600080516020615d4e833981519152805493851985161790556108f4613275565b6040805160ff9490951684168552921660208401528291820190565b0390a180f35b60405163831761d760e01b8152600490fd5b50346102775761093736612e39565b906002600080516020615dce83398151915254146106d0576109589261333e565b80f35b50346102775760203660031901126102775761ffff610978612cb2565b610980614d41565b5016600052600080516020615e6e8339815191526020526109e26109a76040600020615071565b6040519182918291909160406001600160401b038160608401956001600160481b038082511686526020820151166020860152015116910152565b0390f35b50346102775760203660031901126102775761ffff90610a04612cb2565b906020604051610a1381612d65565b828152015216600052600080516020615d2e83398151915260205260408060002060ff8251610a4181612d65565b60208260018554958685520154169101908152835192835251166020820152f35b50346102775780600319360112610277576109e2604051610a8281612d65565b60058152640312e312e360dc1b6020820152604051918291602083526020830190612cf7565b50346102775780600319360112610277576040518091600080516020615e0e83398151915290815480845260208094019081938352600080516020615d6e83398151915290835b818110610b4c5750505084610b05910385612db6565b60405193838594850191818652518092526040850193925b828110610b2c57505050500390f35b83516001600160a01b031685528695509381019392810192600101610b1d565b82546001600160a01b031684529286019260019283019201610aef565b5060c036600319011261027757610b7e612cc3565b906084359182151583036106e25760a4356001600160401b03928382116102775750610bae903690600401612df2565b610bb6615cfd565b6002600080516020615dce83398151915254146106d057602093610be4926064359060443590600435613e93565b6001600080516020615ece8339815191525560405191168152f35b503461027757806003193601126102775760206002600080516020615dce8339815191525414604051908152f35b503461027757806003193601126102775760405180600080516020615e0e83398151915280548084526020809401918552600080516020615d6e83398151915290855b818110610dbd5750505081610c86910382612db6565b8051610c9181612eba565b91610c9f6040519384612db6565b818352601f19610cae83612eba565b01855b818110610da1575050845b828110610d1d575050506040519180830190808452825180925280604085019301945b828110610cec5784840385f35b85518051151585528083015115158584015260409081015160ff169085015294810194606090930192600101610cdf565b929492610d99906001600160a01b03610d368285613005565b5116600052600080516020615e8e8339815191528652604060002060405190610d5e82612d4a565b5460ff9081811615158352818160081c1615158984015260101c166040820152610d888289613005565b52610d938188613005565b50612ff6565b949294610cbc565b8590610dae979597614d41565b82828a01015201959395610cb1565b82546001600160a01b031684529285019260019283019201610c70565b5034610277578060031936011261027757600080516020615eee833981519152546040516001600160a01b039091168152602090f35b5034610277576020806003193601126106e2576001600160a01b0390600435828116919082810361082857610e43615cc4565b82156111145782600052600080516020615e8e83398151915280835260ff918260406000205416156110fb57846000528184528260406000205460081c16156110e25784600052818452604060002061ff001990818154169055600080516020615e4e833981519152928354858160081c169283156110ce5761ff0060001980950160081b169116178455600080516020615dee8339815191528054918860005287526001600160401b03600192610f1082858a60406000205460101c161b198316169282168310614d24565b6001600160401b0319161790558897600080516020615e0e8339815191528054938b5b858110610fc8575b505050505050918091610f836040969594610f767f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f99614d24565b610f7e614d60565b614e4b565b5460081c16600080516020615d4e8339815191529081548381168210610fba575b50505416908351928352820152a1610958613275565b60ff19161781553880610fa4565b838b610fd383613244565b929054600393841b1c1614610ff15750610fec90612ff6565b610f33565b9590918093959798999a9b9c5081019081116110ba57906110258461101861104494613244565b905490891b1c1691613244565b90919082549060031b9160018060a01b03809116831b921b1916179055565b825480156110a657946040999794610f83948a9894610f76947f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f9e9c99019261108c84613244565b81939154921b1b1916905555998496979899839650610f3b565b634e487b7160e01b8c52603160045260248cfd5b634e487b7160e01b8d52601160045260248dfd5b634e487b7160e01b8b52601160045260248bfd5b6040516307d86e9160e21b815260048101869052602490fd5b604051630d583f4760e41b815260048101869052602490fd5b604051632f44bd7760e01b8152600490fd5b50346102775761113536612e39565b9033600052600080516020615e8e83398151915260209080825260ff60406000205460081c161561134957600080516020615dce8339815191529160028354146106d05761ffff861680600052600080516020615d2e8339815191528252846040600020540361132b575060405163b3f07bbd60e01b8152918183806111bf898b60048401613314565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156113205788936112f1575b503360005280825261120360ff60406000205460101c168461320e565b6112d85760606112b793927f35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e592336000528082528a6001600160401b03610100600160481b03604082600160ff836000205460101c161b1693898152600080516020615d8e833981519152875220928354928360081c161760081b1690610100600160481b03191617905533600052815260ff60406000205460101c166040519185835233908301526040820152a16131a1565b6112bf578480f35b546002146106d0576112d09261333e565b388080808480f35b604051631089c4a160e11b815260048101849052602490fd5b9092508181813d8311611319575b6113098183612db6565b810103126105e5575191386111e6565b503d6112ff565b6040513d8a823e3d90fd5b6044908560405191635788c0fd60e11b835260048301526024820152fd5b60405163a0ae911d60e01b8152336004820152602490fd5b5034610277578060031936011261027757602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b506020366003190112610277576001600160401b0360043516908160043503610277576113cb615cfd565b6002600080516020615dce83398151915254146106d05781600052600080516020615eae8339815191526020526040600020916040519261140b84612d2f565b805484526001810154602085015261ffff60028201546001600160481b03811660408701526001600160401b038160481c16606087015260881c16608085015260018060a01b0360038201541660a08501526040518381949060048401549361147385613755565b808552946001811690811561160457506001146115bf575b505061149992500383612db6565b60c083019182526001600160401b03606084015116156115a7576114ca6001600160401b0360608501511642613194565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000161161157c579161155991602093600052600080516020615eae833981519152845261152260406000206137a6565b6001600160481b036040830151169161ffff608082015116815190868301519260a0600180821b0391015116935194600435614632565b6001600080516020615ece833981519152556001600160401b0360405191168152f35b6044906001600160401b036060850151166040519163c06cf05f60e01b835260048301526024820152fd5b60249060405190635feafa3160e11b82526004820152fd5b60049193949250018252602082205b8183106115e857505090602061149992820101388061148b565b60209193508060019154838589010152019101909184926115ce565b9150506020925061149994915060ff191682840152151560051b820101388061148b565b5060603660031901126102775761163d612cc3565b604435611648615cfd565b6002600080516020615dce83398151915254146106d05760209181611559926040519261167484612d65565b60018452853681860137600435613808565b5034610277576040366003190112610277576116a0612cb2565b6024356001600160401b0381116117ff576116bf903690600401612df2565b91604051918290600080516020615e0e833981519152828154918287526020809701908652600080516020615d6e83398151915292865b888282106117e05750505061170d92500383612db6565b826117378351966040519788928392635b10743960e11b8452604060048501526044840190612cf7565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156117d55783949561177094926117b1575b50613039565b604051926040840160408552835180915285606086019401915b81811061179d5750505082938301520390f35b82518552938601939186019160010161178a565b6117ce9192503d8087833e6117c68183612db6565b810190612f24565b903861176a565b6040513d85823e3d90fd5b85546001600160a01b03168452600195860195889550930192016116f6565b8280fd5b503461027757806003193601126102775761181c614f92565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b0380821690600182019181831161192c5760ff8460401c1690811561191f575b5061190d57600160401b911680926001600160481b03191617179081835560ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e5416156118fb577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2926020926118db613275565b6118e3614d60565b68ff000000000000000019169055604051908152a180f35b604051632866815360e11b8152600490fd5b60405163f92ee8a960e01b8152600490fd5b9050818316111538611866565b634e487b7160e01b600052601160045260246000fd5b50346102775760403660031901126102775760243560ff811681036105e55761196f60209160043561320e565b6040519015158152f35b5034610277578060031936011261027757600080516020615dae833981519152546040516001600160a01b039091168152602090f35b503461027757602036600319011261027757611a046001600160401b036020926040600080516020615dee83398151915254916004358152600080516020615d8e8339815191528652205460081c1616615a8e565b60ff60405191168152f35b5034610277578060031936011261027757611a28614d41565b506109e26109a7615029565b5034610277578060031936011261027757600080516020615dae83398151915254611a67906001600160a01b0316614fd6565b600080516020615dce83398151915260028154146106d057600290557f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd2602060405160018152a180f35b503461027757602036600319011261027757600435611ace615cfd565b6002600080516020615dce83398151915254146106d057611aee816154ad565b602081016001600160401b03908181511615611bb457611b118282511642613194565b827f00000000000000000000000000000000000000000000000000000000000000001611611b92578385527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b8602052604080862086815560010186905583015183518691610541916001600160481b0316906001600160a01b031687614adb565b516040516301cb739d60e71b8152600481019490945216602483015250604490fd5b604051630301bcaf60e61b815260048101859052602490fd5b508060031936011261027757611be1614f92565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c1615906001600160401b03811680159081611dfa575b6001149081611df0575b159081611de7575b5061190d5767ffffffffffffffff198116600117835581611dc8575b50611c57615c0f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381163303611d9f575034611d8d57611c96615c0f565b611c9e615c0f565b611ca6615c0f565b6001600080516020615dce83398151915255600080516020615eee83398151915280546001600160a01b03191633179055611cdf615c0f565b611ce7615c0f565b611cf033615c50565b611cf8615c0f565b611d00615c0f565b6001600080516020615ece83398151915255611d37610100600160481b0360ff611d30611d2b614c36565b615b35565b16176150d1565b611d3f613275565b611d47614d60565b611d4f575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b60405163bd28e88960e01b8152600490fd5b604051636345072160e11b81526001600160a01b03919091166004820152336024820152604490fd5b68ffffffffffffffffff19166801000000000000000117825538611c4e565b90501538611c32565b303b159150611c2a565b839150611c20565b503461027757608036600319011261027757611e1c612cb2565b60243560443560ff81168091036105e557611e35615cc4565b61ffff809316928315611f7f578215611f6d578115611f5b577f0000000000000000000000000000000000000000000000000000000000000000168314611f49577f1456404e7f41f35c3daac941bb50bad417a66275c3040061b4287d787719599d9160809184600052600080516020615d2e833981519152918260205260ff604060002081600160405192611eca84612d65565b805484520154169460208201958652886000526020526001604060002084815501848319825416179055611f2c611f0b611f02614c36565b80606435615bc7565b89600052600080516020615e6e8339815191526020526040600020906152cf565b51935116604051938452602084015260408301526060820152a280f35b60405163101b8f9560e11b8152600490fd5b60405163ade64f0b60e01b8152600490fd5b60405163f839a0cb60e01b8152600490fd5b60405163100b0f2760e11b8152600490fd5b503461027757806003193601126102775760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034610277578060031936011261027757602060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb54166040519015158152f35b50346102775780600319360112610277577f00000000000000000000000000000000000000000000000000000000000000009060028210156120615760208260ff60405191168152f35b634e487b7160e01b81526021600452602490fd5b503461027757806003193601126102775761208e615cc4565b600080516020615dce83398151915260028154036120d757600190557fe11c2112add17fb763d3bd59f63b10429c3e11373da4fb8ef6725107a2fdc4b06020604051838152a180f35b604051637e38d1d360e11b8152600490fd5b50346102775780600319360112610277576020611a04614c36565b50346102775760203660031901126102775760ff60406020926004358152600080516020615d8e83398151915284522054166040519015158152f35b50346102775780600319360112610277576040517f0000000000000000000000000000000000000000000000000000000000000000600281101561218657602092508152f35b634e487b7160e01b83526021600452602483fd5b503461027757806003193601126102775760206001600160401b03600080516020615e2e8339815191525416604051908152f35b5034610277576020806003193601126106e2576004356001600160a01b03811691828203610819576121fe615cc4565b82156111145782600052600080516020615e8e8339815191529182825260ff9081604060002054166000146123a75784600052838352604060002061010061ff00198254161790555b600080516020615e0e83398151915290815491600160401b831015612391578261102591600161227995019055613244565b600080516020615e4e83398151915292835461ff0061229c848360081c16614d13565b60081b169061ff00191617809455600080516020615dee83398151915280546001600160401b0390818116918860005284875260018660406000205460101c161b1682179182146123785767ffffffffffffffff19161790557ff05962b5774c658e85ed80c91a75af9d66d2af2253dda480f90bce78aff5eda594606094909390929091612328614d60565b84600052825280600080516020615d4e833981519152805482811615612369575b5054169260405194855260081c16908301526040820152a1610958613275565b60ff1916600117815538612349565b604051638d68f84d60e01b815260048101899052602490fd5b634e487b7160e01b600052604160045260246000fd5b600080516020615e4e8339815191528281541660408110156124bf57604051906123d082612d4a565b6001825285820190600182526040830190815288600052878752604060002092511515918662ff000061ff0086549351151560081b16935160101b1693169062ffffff19161717179055805483612428818316614d13565b169060ff19161790557f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed978805490600160401b82101561239157600182018082558210156124a9576000527f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd10180546001600160a01b03191686179055612247565b634e487b7160e01b600052603260045260246000fd5b60405163891684c360e01b8152600490fd5b5034610277576020366003190112610277576004356001600160401b0381168091036106e257606060c060405161250781612d2f565b84815284602082015284604082015284838201528460808201528460a08201520152600052600080516020615eae83398151915260205260406000206040519061255082612d2f565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a0830152604051838194906004840154936125b885613755565b808552946001811690811561269f575060011461265a575b50506125de92500383612db6565b60c081019182526109e26040519283926020845280516020850152602081015160408501526001600160481b0360408201511660608501526001600160401b03606082015116608085015261ffff60808201511660a085015260a0600180821b039101511660c08401525160e080840152610100830190612cf7565b60049193949250018252602082205b8183106126835750509060206125de9282010138806125d0565b6020919350806001915483858901015201910190918492612669565b915050602092506125de94915060ff191682840152151560051b82010138806125d0565b5034610277576020366003190112610277576126dd615cc4565b6109586126f46126eb614c36565b80600435615bc7565b6150d1565b503461027757604036600319011261027757610958612716612cc3565b61271e615cc4565b61ffff61272c6126eb614c36565b9116600052600080516020615e6e8339815191526020526040600020906152cf565b5034610277576020806003193601126106e2576001600160a01b03600435818116908181036108285761277f615cc4565b612787614f92565b3b15612b5a577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e9182549161281460ff841615614d24565b60ff199283166001178455303b156108285760405163011fa75760e71b8152858160048183305af18015612b0f57612b47575b5060405163689f90c360e01b81528281600481305afa908115612b0f578691612b1a575b50156128a3575b50507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b604051637e062a3560e11b81528281600481305afa908115612b0f578691612ad1575b50816128f6927f000000000000000000000000000000000000000000000000000000000000000016911614614d24565b6040516314ad290960e11b81528181600481305afa90811561081d578591612a9b575b507f0000000000000000000000000000000000000000000000000000000000000000906002821015612a87576002811015612a87576129589114614d24565b604051634d4502c960e11b81528181600481305afa801561081d578590612a51575b6129ad915061ffff807f000000000000000000000000000000000000000000000000000000000000000016911614614d24565b604051631d2a9eff60e21b8152908082600481305afa90811561081d578591612a11575b50612a0a91506001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016911614614d24565b3880612872565b905081813d8311612a4a575b612a278183612db6565b8101031261081957516001600160401b038116810361081957612a0a90386129d1565b503d612a1d565b508181813d8311612a80575b612a678183612db6565b8101031261082857612a7b6129ad9161332f565b61297a565b503d612a5d565b634e487b7160e01b86526021600452602486fd5b90508181813d8311612aca575b612ab28183612db6565b81010312610828575160028110156108285738612919565b503d612aa8565b90508281813d8311612b08575b612ae88183612db6565b81010312612b045751908082168203612b0457906128f66128c6565b8580fd5b503d612ade565b6040513d88823e3d90fd5b612b3a9150833d8511612b40575b612b328183612db6565b810190614420565b3861286b565b503d612b28565b612b5390959195612d1c565b9338612847565b60405162461bcd60e51b815260048101849052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b503461027757602036600319011261027757602061196f6004356131a1565b5034610277576020366003190112610277576004356001600160a01b03818116918290036117ff57612c1681600080516020615dae8339815191525416614fd6565b600080516020615eee83398151915280546001600160a01b031981168417909155167f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b50346102775760203660031901126102775761070161046d612cad604060209461ffff612c8a612cb2565b612c92614d41565b50168152600080516020615e6e833981519152865220615071565b615543565b6004359061ffff821682036105e557565b6024359061ffff821682036105e557565b60005b838110612ce75750506000910152565b8181015183820152602001612cd7565b90602091612d1081518092818552858086019101612cd4565b601f01601f1916010190565b6001600160401b03811161239157604052565b60e081019081106001600160401b0382111761239157604052565b606081019081106001600160401b0382111761239157604052565b604081019081106001600160401b0382111761239157604052565b608081019081106001600160401b0382111761239157604052565b60a081019081106001600160401b0382111761239157604052565b90601f801991011681019081106001600160401b0382111761239157604052565b6001600160401b03811161239157601f01601f191660200190565b81601f820112156105e557803590612e0982612dd7565b92612e176040519485612db6565b828452602083830101116105e557816000926020809301838601378301015290565b90600319906060828401126105e55760043561ffff811681036105e5579260243592604435916001600160401b03918284116105e55760609084830301126105e55760405192612e8884612d4a565b806004013584526024810135602085015260448101359283116105e557612eb29201600401612df2565b604082015290565b6001600160401b0381116123915760051b60200190565b519060ff821682036105e557565b81601f820112156105e5578051612ef581612dd7565b92612f036040519485612db6565b818452602082840101116105e557612f219160208085019101612cd4565b90565b9060209081838203126105e55782516001600160401b03938482116105e557019080601f830112156105e5578151612f5b81612eba565b94604090612f6b82519788612db6565b828752858088019360051b860101948486116105e557868101935b868510612f9857505050505050505090565b84518381116105e55782019084601f1983890301126105e557845190612fbd82612d65565b612fc88a8401612ed1565b825285830151918583116105e557612fe7898c80969581960101612edf565b83820152815201940193612f86565b600019811461192c5760010190565b80518210156124a95760209160051b010190565b9060406020612f219360ff81511684520151918160208201520190612cf7565b90929180519161304883612eba565b9260409161305883519586612db6565b818552601f1961306783612eba565b01602090368288013760009788955b84871061308857505050505050509190565b909192939495988685613101868d6130a760018060a01b039188613005565b511680600052600080516020615e8e83398151915282526130d260ff866000205460101c1689613005565b51908551808095819463b5634c7360e01b835261ffff60049916898401526024998a8401526044830190613019565b03915afa90811561318957908d91600091613157575b5061312381928d613005565b5283018093116131445750506131399099612ff6565b959493929190613076565b601190634e487b7160e01b600052526000fd5b91508782813d8311613182575b61316e8183612db6565b810103126102775750518c90613123613117565b503d613164565b8a513d6000823e3d90fd5b9190820391821161192c57565b6001600160401b039060ff6131fa81600080516020615d4e8339815191525416938493600080516020615dee8339815191525490600052600080516020615d8e83398151915260205260406000205460081c1616615a8e565b1610159081613207575090565b9050151590565b906001600160401b0391600052600080516020615d8e833981519152602052600160ff60406000205460081c92161b1616151590565b600080516020615e0e83398151915280548210156124a957600052600080516020615d6e8339815191520190600090565b60ff600080516020615d4e833981519152541660405161329481612d65565b60ff600080516020615e4e83398151915254818116835260081c168060208301528083116132cf57505160ff166132c85750565b1561091657565b82604491604051916313c3d1b160e01b835260048301526024820152fd5b9060606040612f219380518452602081015160208501520151918160408201520190612cf7565b60409061ffff612f21949316815281602082015201906132ed565b519061ffff821682036105e557565b91908161334b9184613635565b9190916136305760408091015191815192635399ded560e11b8452608084806133806020948560048401526024830190612cf7565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415613625576000946135b0575b5061ffff9283606086015116847f0000000000000000000000000000000000000000000000000000000000000000168082036135955750506133e8614c36565b816134118751928061340c816001600160401b03968760ff82169160081c16615b6c565b615bc7565b960151908160a01c61357e576001600160a01b039182169560007f0000000000000000000000000000000000000000000000000000000000000000831615613577575061345c614d41565b508816600052600080516020615e6e8339815191528452613482612cad84600020615071565b61348c8882615b00565b81808960081c169160081c16105b6134bf57505050506134af6134bd9484615836565b6134b883615716565b614adb565b565b7f7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f316297509561355b83959694976001939451926134fa84612d4a565b6001600160481b038091168452898401908242168252888501978852896000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b88b52886000209451166001600160481b0319855416178455511682615a25565b019151166001600160601b0360a01b82541617905551908152a1565b905061349a565b50602491519063033b960d60e41b82526004820152fd5b6044925191631ee5902560e11b835260048301526024820152fd5b6080949194813d821161361d575b816135cb60809383612db6565b810103126106e2578351916135df83612d80565b8151906001600160481b038216820361027757508252848101518583015283810151848301526136119060600161332f565b606082015292386133a8565b3d91506135be565b83513d6000823e3d90fd5b505050565b60405163b3f07bbd60e01b81529193926020918391829161365a919060048401613314565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d9576000916136eb575b5061368c816131a1565b156136d35761369a8161371c565b92836136a857509150600090565b7f4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef2600080a360009190565b60249060405190630451c4fb60e41b82526004820152fd5b906020823d8211613714575b8161370460209383612db6565b8101031261027757505138613682565b3d91506136f7565b600052600080516020615d8e8339815191526020526040600020805460ff811661374e5760ff19166001179055600090565b5050600190565b90600182811c92168015613785575b602083101461376f57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613764565b81811061379a575050565b6000815560010161378f565b6004600091828155826001820155826002820155826003820155016137cb8154613755565b806137d557505050565b82601f82116001146137e657505055565b9091808252613804601f60208420940160051c84016001850161378f565b5555565b9194939290946000958315613e81578115613e6f578215613e5d577f000000000000000000000000000000000000000000000000000000000000000061384e3082614cb6565b9061389160018060a01b03821696604051906323b872dd60e01b602083015233602483015230604483015260648201526064815261388b81612d9b565b87614438565b6138a48261389f3084614cb6565b613194565b957f00000000000000000000000000000000000000000000000000000000000000006002811015613e49579060018b9214613dc2575b5050505061ffff8116600052600080516020615d2e83398151915260205260ff600160406000200154168015611f5b5761391d613915614c36565b918287615bc7565b906001600160401b038260081c1661393a60ff8416928383615b6c565b808803613d9b575061395c61396191613954611d2b614c36565b938491615b6c565b6155ee565b98600080516020615e2e83398151915254966001600160401b0380891614613d875767ffffffffffffffff1988166001600160401b03898116600101811691909117600080516020615e2e833981519152557f00000000000000000000000000000000000000000000000000000000000000001615613d81576139e2614d41565b506139ee612cad615029565b613a0b8c610100600160481b0360ff87169160081b161782615b00565b6001600160401b03808d610100600160481b0360ff88169160081b161760081c169160081c16105b613d5b578180613d53575b613a8757505082612f219899610100600160481b0360ff84613a6b82613a779716848660081b1617615656565b169160081b16176158fe565b6001600160401b03339516614632565b61ffff95979896919a506001600160481b03939250613ac57f0000000000000000000000000000000000000000000000000000000000000000615a4d565b613acd615496565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a260405196613b1a88612d2f565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615eae83398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b0319825416178155613bb56001600160401b0360608701511682615a25565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d3f57613c168354613755565b601f8111613d04575b50602090601f8311600114613c9857906001600160401b03959683613c8d575b50508160011b916000199060031b1c19161790555b7f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613c89346145db565b1690565b015190503880613c3f565b95601f19831684885260208820975b818110613cec5750916001600160401b03969791846001959410613cd3575b505050811b019055613c54565b015160001960f88460031b161c19169055388080613cc6565b83830151895560019098019760209384019301613ca7565b613d2f9084835260208320601f850160051c81019160208610613d35575b601f0160051c019061378f565b38613c1f565b9091508190613d22565b634e487b7160e01b81526041600452602490fd5b506000613a3e565b604490613d66615496565b90604051916326fb55dd60e01b835260048301526024820152fd5b81613a33565b634e487b7160e01b82526011600452602482fd5b87613da860449282613194565b604051916338f831a560e11b835260048301526024820152fd5b803b156106e2578190602460405180948193630852cd8d60e31b83528c60048401525af18015613e3e57613e29575b50613dfd903090614cb6565b808203613e0b5788816138da565b60449250604051916302156a8f60e01b835260048301526024820152fd5b98613e37613dfd929a612d1c565b9890613df1565b6040513d8c823e3d90fd5b634e487b7160e01b8b52602160045260248bfd5b60405163717f139360e11b8152600490fd5b604051634e46966960e11b8152600490fd5b604051631f2a200560e01b8152600490fd5b95949392919060008715613e81578215613e6f578315613e5d577f0000000000000000000000000000000000000000000000000000000000000000613ed83082614cb6565b90613f1b60018060a01b0382169a604051906323b872dd60e01b6020830152336024830152306044830152606482015260648152613f1581612d9b565b8b614438565b613f298261389f3084614cb6565b997f0000000000000000000000000000000000000000000000000000000000000000600281101561440c576001146143a2575b50505061ffff8216600052600080516020615d2e83398151915260205260ff600160406000200154168015611f5b57613f9e613f96614c36565b91828b615bc7565b916001600160401b038360081c16613fbb60ff8516938483615b6c565b808c03614395575061395c613fdd91613fd5611d2b614c36565b948591615b6c565b99600080516020615e2e83398151915254976001600160401b03808a16146143815767ffffffffffffffff1989166001600160401b038a8116600101811691909117600080516020615e2e833981519152557f0000000000000000000000000000000000000000000000000000000000000000161561437b5761405e614d41565b508b6001600160401b0380614074612cad615029565b9260081b610100600160481b031660ff8816176140918185615b00565b60081c169160081c16105b811580614374575b6143695781614361575b506140df57505082612f219899610100600160481b0360ff613a7794169160081b16176140da81615656565b6158fe565b61ffff95979896919a506001600160481b0393925061411d7f0000000000000000000000000000000000000000000000000000000000000000615a4d565b614125615496565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a26040519661417288612d2f565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615eae83398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b031982541617815561420d6001600160401b0360608701511682615a25565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d3f5761426e8354613755565b601f8111614331575b50602090601f83116001146142df57906001600160401b03959683613c8d5750508160011b916000199060031b1c19161790557f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613c89346145db565b95601f19831684885260208820975b8181106143195750916001600160401b03969791846001959410613cd357505050811b019055613c54565b838301518955600190980197602093840193016142ee565b61435b9084835260208320601f850160051c81019160208610613d3557601f0160051c019061378f565b38614277565b9050386140ae565b604483613d66615496565b50806140a4565b8261409c565b634e487b7160e01b83526011600452602483fd5b8b613da860449282613194565b803b156108195783809160248d6040519485938492630852cd8d60e31b845260048401525af18015614401576143ec575b506143df903090614cb6565b808203613e0b5780613f5c565b926143fa6143df9294612d1c565b92906143d3565b6040513d86823e3d90fd5b634e487b7160e01b85526021600452602485fd5b908160209103126105e5575180151581036105e55790565b604051614496916001600160a01b031661445182612d65565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1614490614512565b91614542565b805190816144a357505050565b82806144b3938301019101614420565b156144bb5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d1561453d573d9061452382612dd7565b916145316040519384612db6565b82523d6000602084013e565b606090565b919290156145a45750815115614556575090565b3b1561455f5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156145b75750805190602001fd5b60405162461bcd60e51b815260206004820152908190610645906024830190612cf7565b600080808084335af16145ec614512565b50156145f55750565b60249060405190630b288dc560e21b82526004820152fd5b906020828203126105e55781516001600160401b0381116105e557612f219201612edf565b959492949391936146627f0000000000000000000000000000000000000000000000000000000000000000615a4d565b6040518081600080516020615e0e83398151915260208154938481520190600052600080516020615d6e8339815191529260005b818110614ab95750506146ab92500382612db6565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed9785491815115614aa7576146fe6000916040519485928392635b10743960e11b8452604060048501526044840190612cf7565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d957600092614a8a575b50614738818388613039565b95863410614a6b5761474a8734613194565b80614a5c575b506040519061475e82612d80565b6001600160481b0386811683527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020840190815260408085018d815261ffff8d81166060880190815292516315cfa3cb60e11b81529651909416600487015291516024860152905160448501525116606483015260008260848173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d95761485d926000928d928492614a40575b506001600160401b036040519361482685612d4a565b16835260018060a01b031660208301526040820152604051809381926311692f3760e31b83526020600484015260248301906132ed565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d957600091614a1d575b5061ffff8816600052600080516020615d2e833981519152602052604060002054938351938515614a015760005b8581106149265750505050505050927fe54e51e42099622516fa3b48e9733581c9dbdcb771cafb093f745a0532a35982949261ffff926148f760c096610475614c36565b906040519586526020860152604085015260608401521660808201526001600160401b03841660a0820152a190565b6001600160a01b036149388284613005565b5116906149458187613005565b5182600052600080516020615e8e83398151915260205261497160ff60406000205460101c1686613005565b51833b156105e5576149b79361ffff8f936000948f8e906149c98d6040519b8c998a988997634b5b050560e01b895216600488015260a0602488015260a4870190613019565b85810360031901604487015290612cf7565b916064840152608483015203925af19182156105d9576149ed926149f25750612ff6565b6148b3565b6149fb90612d1c565b38610d93565b604051630ebc95af60e21b815261ffff8b166004820152602490fd5b614a3a91503d806000833e614a328183612db6565b81019061460d565b38614885565b614a559192503d8086833e614a328183612db6565b9038614810565b614a65906145db565b38614750565b6040516306a91e3760e51b815260048101889052346024820152604490fd5b614aa09192503d806000833e6117c68183612db6565b903861472c565b6040516334e7b19560e11b8152600490fd5b84546001600160a01b0316835260019485019486945060209093019201614696565b9291614b0a9061046d7f0000000000000000000000000000000000000000000000000000000000000000615a4d565b906000937f504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a918580a27f00000000000000000000000000000000000000000000000000000000000000009360028510156120615784614b9f575060405163a9059cbb60e01b60208201526001600160a01b03909116602482015260448101919091529091506134bd906105128160648101610504565b9193600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156117ff576040516340c10f1960e01b81526001600160a01b03919091166004820152602481019490945291929181908390604490829084905af1908115614c2a5750614c215750565b6134bd90612d1c565b604051903d90823e3d90fd5b600080604051602081019063313ce56760e01b825260048152614c5881612d65565b51907f00000000000000000000000000000000000000000000000000000000000000005afa614c85614512565b9015614ca4576020818051810103126105e5576020612f219101612ed1565b604051631222cd8360e01b8152600490fd5b6040516370a0823160e01b602082019081526001600160a01b039093166024808301919091528152600092839291614ced81612d4a565b51915afa614cf9614512565b9015614ca4576020818051810103126105e5576020015190565b60ff1660ff811461192c5760010190565b15614d2b57565b634e487b7160e01b600052600160045260246000fd5b60405190614d4e82612d4a565b60006040838281528260208201520152565b600080516020615e4e8339815191525460ff8160081c16614d91600080516020615e0e833981519152548214614d24565b60005b818110614e1f575060005b818110614db8575050604060ff6134bd92161115614d24565b6001810180821161192c575b828110614dda5750614dd590612ff6565b614d9f565b614e1a90614e15614dea84613244565b905490614df684613244565b92909160018060a01b03809354600395861b1c16931b1c161415614d24565b612ff6565b614dc4565b80614e15614e2f614e4693613244565b905460039190911b1c6001600160a01b0316614e4b565b614d94565b6001600160a01b039081166000818152600080516020615e8e8339815191526020526040908190209051929190614e8184612d4a565b5460ff91614ebd838316158015938488526020880197604087808460081c16159384158c5260101c1691019581875292614f78575b5050614d24565b600080516020615dee83398151915254946001600160401b0360019687868651161b1616151590511515916000968791600080516020615e4e8339815191525497878960081c16935b848110614f3a575b5050505050816134bd96614f28869594614f309414614d24565b151514614d24565b5116911611614d24565b8282614f4583613244565b90549060031b1c1614614f6057614f5b90612ff6565b614f06565b50919850849250839150614f289050826134bd614f0e565b90915081614f89575b503880614eb6565b90501538614f81565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614614fc457565b604051633c64f99360e21b8152600490fd5b600080516020615eee83398151915254336001600160a01b03918216141591908261501c575b505061500457565b60405163e2a08e5d60e01b8152336004820152602490fd5b1633141590503880614ffc565b6040519061503682612d4a565b8160406001600160401b03600080516020615f0e833981519152546001600160481b0380821685528160481c16602085015260901c16910152565b9060405161507e81612d4a565b60406001600160401b038294546001600160481b0380821685528160481c16602085015260901c16910152565b90600160481b600160901b0382549160481b1690600160481b600160901b031916179055565b600080516020615f0e8339815191529081546001600160481b03908181166001600160401b036008918184841c168015806152c4575b15615175575050855471ffffffffffffffffff0000000000000000001916604886901b600160481b600160901b03161786555050505b825479ffffffffffffffff000000000000000000ffffffffffffffffff19169116174260901b67ffffffffffffffff60901b16179055565b86615181612cad615029565b92600061518e8383615ade565b1561525a57506151ad92916151a291615b00565b8388861c1690615a75565b610100600160481b039290841b831660ff8616176151cb8184615ade565b1561524c578160ff92826151e26151ef9487615b00565b871c169084871c16615a75565b9116921b16175b6152008482615ade565b61522a57600160481b600160901b039060481b1690600160481b600160901b03191617835561513d565b604051631e74e8fb60e31b815290831660048201528383166024820152604490fd5b5050905060ff9150166151f6565b949395929061526c9061527693615b00565b8389841c16615a75565b9260ff881694838087610100600160481b038098871b16176152988185615b00565b851c1691841c16019283116152b057501b16176151f6565b634e487b7160e01b81526011600452602490fd5b5060ff851615615107565b919080546001600160481b03808216916001600160401b03926008908483831c1680158061548b575b1561535e5750505050846153106134bd9596856150ab565b835467ffffffffffffffff60901b19919092161679ffffffffffffffff000000000000000000ffffffffffffffffff1990911617429190911660901b67ffffffffffffffff60901b16179055565b85908961536d612cad8a615071565b93600061537a8383615ade565b1561543557509161539261539d9260ff979894615b00565b838c881c1690615a75565b610100600160481b039490861b85169116176153b98184615ade565b156154275760ff91816153cf6153dc9386615b00565b861c168784871c16615a75565b9116921b16175b6153ed8682615ade565b61540557946154006134bd9596856150ab565b615310565b604051631e74e8fb60e31b815290821660048201529085166024820152604490fd5b5050905060ff9150166153e3565b949650615450935061544691615b00565b868a851c16615a75565b9160ff891693868086610100600160481b038097861b16176154728185615b00565b841c1691831c1601918683116152b057501b16176153e3565b5060ff8416156152f8565b61549e614d41565b50612f2161046d612cad615029565b6154b5614d41565b506000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b86020526040600020604051906154ef82612d4a565b80546001600160481b038116835260481c6001600160401b03166020830152600101546001600160a01b0316604082015290565b811561552d570490565b634e487b7160e01b600052601260045260246000fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000169182156155d7576155c4828260ff936040610100600160481b03960151164203816155a8602085019889519383875160081c1602615523565b9160081c1601915160081c168082106000146155d057506155ee565b9251169160081b161790565b90506155ee565b506020015160ff16610100600160481b0317919050565b6001600160401b0390818111615602571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608490fd5b6001600160401b0390817f000000000000000000000000000000000000000000000000000000000000000016156157125761568f614d41565b50600160481b600160901b036156a6612cad615029565b610100600160481b0360ff6156e1600080516020615f0e83398151915296808854976156d28188615b00565b60081c16908560081c16615a75565b92169160081b161760481b16906001600160401b0360901b4260901b1690600160481b600160d01b03191617179055565b5050565b6001600160401b0390817f000000000000000000000000000000000000000000000000000000000000000016156157125761574f614d41565b5061575b612cad615029565b90600160481b600160901b03600080516020615f0e83398151915293845493816001600160401b0360901b4260901b16946157968184615b00565b60081c16828260081c16018281116000146158225750610100600160481b0360ff6157c0846155ee565b92169160081b1617906001600160481b038516906157de8284615b00565b80856001600160401b0360901b1988161760081c16908360081c161060001461581b57505b60481b1691600160481b600160d01b03191617179055565b9050615803565b60ff6157c0610100600160481b03926155ee565b6001600160401b03807f0000000000000000000000000000000000000000000000000000000000000000161561363057610100600160481b0360ff6158f061ffff6134bd96615883614d41565b50169384600052600080516020615e6e833981519152806020526158ad612cad6040600020615071565b60009687526020919091526040909520805467ffffffffffffffff60901b191642831660901b67ffffffffffffffff60901b161781559581906156d28188615b00565b92169160081b1617906150ab565b6001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016156136305761ffff6134bd9361593d614d41565b5016600090808252600080516020615e6e83398151915280602052615967612cad60408520615071565b91835260205260408220805467ffffffffffffffff60901b191642851660901b67ffffffffffffffff60901b161781559383906159a48184615b00565b60081c16838260081c1601838111600014615a115750610100600160481b0360ff6159ce856155ee565b92169160081b1617918084546001600160481b038116936159ef8587615b00565b5060081c16908360081c1610600014615a095750906150ab565b9050906150ab565b60ff6159ce610100600160481b03926155ee565b9067ffffffffffffffff60481b82549160481b169067ffffffffffffffff60481b1916179055565b468103615a575750565b604490604051906377d879fb60e01b82526004820152466024820152fd5b6001600160401b03918216908216039190821161192c57565b60009182915b6001600160401b03908181168015615ad65760001901918211615ac2571691615abc90614d13565b91615a94565b634e487b7160e01b85526011600452602485fd5b505050915090565b90615ae98183615b00565b6001600160401b03809160081c169160081c161190565b60ff9182169116818103615b12575050565b604051635ce6db6160e11b815260ff918216600482015291166024820152604490fd5b60ff811660081015612f215750600890565b9060ff8091169116039060ff821161192c57565b60ff16604d811161192c57600a0a90565b919060ff821660ff8216818114615bc0571115615b9f57615b94612f219392615b9992615b47565b615b5b565b90615523565b615b9490615bac92615b47565b9081810291818304149015171561192c5790565b5050505090565b615bfa61395c60ff92610100600160481b039495615be487615b35565b908581168683161015615c055750958691615b6c565b92169160081b161790565b9050958691615b6c565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615615c3e57565b604051631afcd79f60e31b8152600490fd5b6001600160a01b03908116908115615cab57600080516020615dae83398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020615dae833981519152546001600160a01b03163303615ce557565b60405163118cdaa760e01b8152336004820152602490fd5b600080516020615ece8339815191526002815414615d1b5760029055565b604051633ee5aeb560e01b8152600490fdfeebcc9f646b0f459ff8f387587d536b0af3484cf442e1577400f322334e7d1ef047028352a8b3feae1a85fba43bc13f990568bb1637dce33d3dbfd791a0808b7f6c3cb3f3ae91330f31ba2bc0ff8855fc834fb66dc27e8e0b1a398617dabaa5a668dfeeddfa5e4e9adceec01a3aba274bdcbab3f6ac9956417a4332f2b08abdda9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930064bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022fd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f00758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e1ad78307a8b51804c575f26039dcb87c58925afb3b7c08732f3b21b942aed7a768561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d89efb21dcaedea63b55c44882f329622e13a8d0f5b947b3a372826208a9003da1549bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f852fa0677fef8612c6c15b518c9fa56761e9ed15cfd5c6e5399e5467985ac7ed9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00bfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12497c25289a27ec8c9be54d4a154cf80490d69bda989cdb8328232e08fea9220420a2646970667358221220f05bfca11e4f4e6b5c38d73a662c13522a3f5f5988d02259aab20e583604ccb064736f6c63430008130033",isSuperArgs$1=t=>typeof t[0]=="string"||Array.isArray(t[0])||"_isInterface"in t[0],Mi=class Mi extends ContractFactory{constructor(...e){if(isSuperArgs$1(e))super(...e);else{const[s,l]=e;super(_abi$1,Mi.linkBytecode(s),l)}}static linkBytecode(e){let s=_bytecode$1;return s=s.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),s}getDeployTransaction(e,s,l,d,u,p){return super.getDeployTransaction(e,s,l,d,u,p||{})}deploy(e,s,l,d,u,p){return super.deploy(e,s,l,d,u,p||{})}connect(e){return super.connect(e)}static createInterface(){return new Interface(_abi$1)}static connect(e,s){return new Contract(e,_abi$1,s)}};Ae(Mi,"bytecode",_bytecode$1),Ae(Mi,"abi",_abi$1);let NttManager__factory=Mi;const _abi=[{type:"constructor",inputs:[{name:"nttManager",type:"address",internalType:"address"},{name:"wormholeCoreBridge",type:"address",internalType:"address"},{name:"wormholeRelayerAddr",type:"address",internalType:"address"},{name:"specialRelayerAddr",type:"address",internalType:"address"},{name:"_consistencyLevel",type:"uint8",internalType:"uint8"},{name:"_gasLimit",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"WORMHOLE_TRANSCEIVER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"consistencyLevel",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"encodeWormholeTransceiverInstruction",inputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],outputs:[{name:"",type:"bytes",internalType:"bytes"}],stateMutability:"pure"},{type:"function",name:"gasLimit",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getNttManagerOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getNttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getTransceiverType",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"pure"},{type:"function",name:"getWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"payable"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isVAAConsumed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"nttManager",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"nttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"parseWormholeTransceiverInstruction",inputs:[{name:"encoded",type:"bytes",internalType:"bytes"}],outputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],stateMutability:"pure"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"receiveMessage",inputs:[{name:"encodedMessage",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"receiveWormholeMessages",inputs:[{name:"payload",type:"bytes",internalType:"bytes"},{name:"additionalMessages",type:"bytes[]",internalType:"bytes[]"},{name:"sourceAddress",type:"bytes32",internalType:"bytes32"},{name:"sourceChain",type:"uint16",internalType:"uint16"},{name:"deliveryHash",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"sendMessage",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]},{name:"nttManagerMessage",type:"bytes",internalType:"bytes"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"setIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEvm",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setWormholePeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"specialRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ISpecialRelayer"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferTransceiverOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"wormhole",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormhole"}],stateMutability:"view"},{type:"function",name:"wormholeRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormholeRelayer"}],stateMutability:"view"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ReceivedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"ReceivedRelayedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"RelayingInfo",inputs:[{name:"relayingType",type:"uint8",indexed:!1,internalType:"uint8"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"deliveryPayment",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"SendTransceiverMessage",inputs:[{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"message",type:"tuple",indexed:!1,internalType:"struct TransceiverStructs.TransceiverMessage",components:[{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"nttManagerPayload",type:"bytes",internalType:"bytes"},{name:"transceiverPayload",type:"bytes",internalType:"bytes"}]}],anonymous:!1},{type:"event",name:"SetIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isEvm",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetWormholePeer",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"CallerNotNttManager",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CallerNotRelayer",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CannotRenounceTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"}]},{type:"error",name:"CannotTransferTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"},{name:"newOwner",type:"address",internalType:"address"}]},{type:"error",name:"InvalidBoolVal",inputs:[{name:"val",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidBoolValue",inputs:[{name:"value",type:"uint256",internalType:"BooleanFlag"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidRelayingConfig",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidVaa",inputs:[{name:"reason",type:"string",internalType:"string"}]},{type:"error",name:"InvalidWormholeChainIdZero",inputs:[]},{type:"error",name:"InvalidWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidWormholePeerZeroAddress",inputs:[]},{type:"error",name:"LengthMismatch",inputs:[{name:"encodedLength",type:"uint256",internalType:"uint256"},{name:"expectedLength",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerAlreadySet",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"TransferAlreadyCompleted",inputs:[{name:"vaaHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"UnexpectedAdditionalMessages",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"deployer",type:"address",internalType:"address"},{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedRecipientNttManagerAddress",inputs:[{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"expectedRecipientNttManagerAddress",type:"bytes32",internalType:"bytes32"}]}],_bytecode="0x6101c06040818152346200031d5760c08262003742803803809162000025828562000322565b8339810103126200031d576200003b826200035c565b906020906200004c8285016200035c565b926200005a8286016200035c565b62000068606087016200035c565b9160808701519660ff881688036200031d5760a00151947ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080549060ff82881c166200030c5782906001600160401b03906002600160401b031984831601620002c9575b50505050306080528160a052845190637e062a3560e11b8252808260048160018060a01b038097165afa908115620002be576000916200027f575b50905060c0523360e0528061012096168652806101409216825261016092168252610180924684526101009687526101a094855251946133d096876200037288396080518761313b015260a051878181610e100152818161154d015281816118d00152818161205501528181612204015281816128e00152612ae4015260c051878181610e9b01528181611c93015281816122560152818161268d0152612d7c015260e05187610d1801525186818161076e01528181610f4d0152818161127401528181611bfe01528181611df1015261239b01525185818161020801528181610c1501528181610f7a015281816112a001528181611ba601528181611e1e015281816122a601528181612e0201528181612ee20152612f800152518481816107a70152818161163601528181611a4a015281816122f60152612cc5015251838181610a7501528181611c3c015281816123460152612db90152518261024c0152518181816106ac01528181611a150152612c9a0152f35b82813d8311620002b6575b62000296818362000322565b81010312620002b35750620002ab906200035c565b803862000107565b80fd5b503d6200028a565b86513d6000823e3d90fd5b6001600160401b0319909316811790925586519182527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291a138818180620000cc565b865163f92ee8a960e01b8152600490fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200034657604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200031d5756fe6080604081815260048036101561001557600080fd5b600092833560e01c908163036de8af146125ab575080630900f010146120845780630b4a1e89146113db57806324fb21db14612040578063320d0d8e14611ffd57806348b330d614611fb75780634b5b05051461183f5780634b795b211461179e578063529dca321461159457806358f709ba14611525578063657b3b2f1461148457806366152efc14611423578063689f90c3146113e0578063694977d7146113db5780637ab564031461118057806380eb3239146111445780638129fc1c14610c8957806381e8ec7f14610c4457806384acd1bb14610c005780638da5cb5b14610bca5780638fd3ab8014610aa457806390ea542814610a60578063935dec0714610a1e57806396dddc63146109695780639fd0506d14610921578063a0926b2a146108d5578063b187bd2614610894578063b5634c7314610847578063bc7f6d3714610804578063d8d28418146107d6578063da25b72514610792578063e8dfd50814610754578063f2fde38b1461071f578063f48066a8146106d3578063f68016b7146106945763f953cec7146101af57600080fd5b34610690576020908160031936011261068c578035906001600160401b0385818411610689576101e5610204943690850161279e565b86518095819263607ec5ef60e11b835288878401526024830190612887565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561067f5786938790889261047a575b501561045757507f000000000000000000000000000000000000000000000000000000000000000046810361043b57506060830161ffff91828251166000526000805160206132bb833981519152865286600020546080860190815180910361040a575061014086016102d281516000526000805160206132db83398151915260205260ff6040600020541690565b6103f157927ff6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0608060e0948b8a8e9996896103336103849d9b516000526000805160206132db8339815191526020526040600020600160ff19825416179055565b519360a08989511692519301511692519384528d8401528d8301526060820152a1511694015190610362612943565b5061036b612969565b508651630453806b60e11b815293849283928301612ac2565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156103e7576103be9450859186946103c1575b50815191015191612ae1565b80f35b9093506103e091503d8087833e6103d88183612762565b810190612a44565b92386103b2565b84513d87823e3d90fd5b518851632d30ec0360e21b815280870191909152602490fd5b83518951633cd8e72b60e11b815290861661ffff1687820190815260208101929092529081900360400190fd5b0390fd5b826044918751916377d879fb60e01b8352820152466024820152fd5b8551634771719b60e11b8152808401869052908190610437906024830190612887565b945050503d8087853e61048d8185612762565b8301606090818582031261067b5784518381116105ff578501610160928382840312610603578851938401848110868211176106665789526104ce82613053565b84526104db888301613061565b888501526104ea898301613061565b898501528082015161ffff8116810361066257818501526080808301518186015261051760a08401612feb565b60a086015261052860c08401613053565b60c086015260e083015186811161065e57846105459185016129c1565b60e0860152610100610558818501613061565b90860152610120908184015187811161065a57840185601f8201121561065a5780518c946105916105888361284d565b96519687612762565b8186528c8087019260071b84010192888411610656578d01915b83831061060757505050505084015261014080910151908301526105d0868601613072565b94878101519084821161060357019080601f830112156105ff5781516105f792880161298a565b909338610243565b8880fd5b8980fd5b84838a0312610656578d8f9182879351906106218261272c565b865182528387015184830152610638818801613053565b90820152610647858701613053565b858201528152019201916105ab565b8f80fd5b8c80fd5b8b80fd5b8a80fd5b604187634e487b7160e01b6000525260246000fd5b8780fd5b85513d88823e3d90fd5b80fd5b8380fd5b8280fd5b5050346106cf57816003193601126106cf57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5080fd5b5050346106cf5760203660031901126106cf5760209061ffff6106f46126bc565b166000526000805160206132fb833981519152825261071681600020546130f7565b90519015158152f35b8382346106cf5760203660031901126106cf57356001600160a01b03811681036106cf576103be9061074f61320b565b6131da565b5050346106cf57816003193601126106cf576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5050346106cf57816003193601126106cf57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106cf57816003193601126106cf576020906107f36128cb565b90516001600160a01b039091168152f35b5050346106cf5760203660031901126106cf5760209061ffff6108256126bc565b1660005260008051602061329b833981519152825261071681600020546130f7565b50346106905781600319360112610690576108606126bc565b92602435906001600160401b03821161068957509261088761088d926020953691016127e5565b90612c24565b9051908152f35b5050346106cf57816003193601126106cf5760209060027f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b825802254149051908152f35b5050346106cf57816003193601126106cf57805161091d916108f682612747565b6008825267776f726d686f6c6560c01b602083015251918291602083526020830190612887565b0390f35b5050346106cf57816003193601126106cf577fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12495490516001600160a01b039091168152602090f35b508290346106cf57826003193601126106cf576109846126bc565b61098c61283e565b9161099561320b565b61ffff8216908115610a1057507f4add57d97a7bf5035340ea1212aeeb3d4d3887eb1faf3821a8224c3a6956a10c9394610a0a916109d285613129565b906000526000805160206132fb8339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b0390a180f35b8551630f7662c960e21b8152fd5b5050346106cf5760203660031901126106cf5760209061ffff610a3f6126bc565b166000526000805160206132bb833981519152825280600020549051908152f35b5050346106cf57816003193601126106cf57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b509034610690578260031936011261069057610abe613138565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b038082166001810190828211610bb75760ff84871c16908115610baa575b50610b9a57169360ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e541615610b8c575068ffffffffffffffffff19168317680100000000000000001768ff000000000000000019169055519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a180f35b8351632866815360e11b8152fd5b845163f92ee8a960e01b81528690fd5b9050828216111538610b06565b634e487b7160e01b885260118752602488fd5b5050346106cf57816003193601126106cf5760008051602061333b8339815191525490516001600160a01b039091168152602090f35b5050346106cf57816003193601126106cf57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106cf57816003193601126106cf57805161091d91610c6582612747565b60058252640312e312e360dc1b602083015251918291602083526020830190612887565b508260031936011261069057610c9d613138565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549160ff83831c1615906001600160401b03938481168015908161113c575b6001149081611132575b159081611129575b5061111a5767ffffffffffffffff1981166001178655826110fb575b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116338190036110df5750610d4a613199565b610d52613199565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055610dfe610d816128cb565b610d89613199565b610d91613199565b610d99613199565b60017f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022557fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124980546001600160a01b03191633179055610df6613199565b61074f613199565b8351634b4fd03b60e01b8152602095907f0000000000000000000000000000000000000000000000000000000000000000831687828681845afa9182156110d5578a9261109e575b508651631dcbf42b60e11b81529188838781855afa928315611094578b9361105d575b5087519360a0850190811185821017610666578852639c23bd3b60e01b845288840191825260ff9081168489019081527f00000000000000000000000000000000000000000000000000000000000000008616606086019081529382166080860190815289516301529f6160e21b815295516001600160e01b031916888701529251602486015251811660448501529151606484015251166084820152878160a48173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156110535791610f74939187938a91611031575b5086518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fff565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af1801561102757610fef575b50610fb0578380f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29268ff00000000000000001981541690555160018152a13880808380f35b8381813d8311611020575b6110048183612762565b8101031261101c5761101590612feb565b5038610fa7565b8580fd5b503d610ffa565b83513d88823e3d90fd5b61104d91503d808c833e6110458183612762565b81019061307f565b38610f38565b85513d8a823e3d90fd5b9092508881813d831161108d575b6110758183612762565b810103126106625761108690613053565b9138610e69565b503d61106b565b88513d8d823e3d90fd5b9091508781813d83116110ce575b6110b68183612762565b81010312610603576110c790613053565b9038610e46565b503d6110ac565b87513d8c823e3d90fd5b82604491865191636345072160e11b8352820152336024820152fd5b68ffffffffffffffffff19166801000000000000000117855538610d0d565b50825163f92ee8a960e01b8152fd5b90501538610cf1565b303b159150610ce9565b849150610cdf565b5091346106895760203660031901126106895750610716602092356000526000805160206132db83398151915260205260ff6040600020541690565b5081600319360112610690576111946126bc565b602435916111a061320b565b61ffff8083169081156113cb5784156113bb57816000526000805160206132bb8339815191529160209280845287600020548061139257508160005283528587600020558651916111f083612711565b630c7e33e160e11b8352838301918252878301878152885163077650fb60e51b815293516001600160e01b031916868501529151166024830152516044820152868160648173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156113885761129b938392899161136e575b5087516358cd21bf60e11b815294859283927f0000000000000000000000000000000000000000000000000000000000000000918401612fff565b0381347f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561067f57611312575b5050915161ffff909216825260208201527fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d326466908060408101610a0a565b81813d8311611367575b6113268183612762565b81010312611363577fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d3264669361135c610a0a92612feb565b50936112d5565b8480fd5b503d61131c565b61138291503d808b833e6110458183612762565b38611260565b86513d89823e3d90fd5b885163b55eeae960e01b815261ffff881681880190815260208101929092529081906040010390fd5b855163137063ef60e11b81528390fd5b8551630f7662c960e21b81528390fd5b612677565b5050346106cf57816003193601126106cf5760209060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb541690519015158152f35b5091346106895760203660031901126106895750805191611443836126f6565b35908115159182810361147f5761091d935280519160f81b60208301526001825261146d82612747565b51918291602083526020830190612887565b600080fd5b508290346106cf57826003193601126106cf5761149f6126bc565b6114a761283e565b916114b061320b565b61ffff8216908115610a1057507f528b18a533e892b5401d1fb63597275df9d2bb45b13e7695c3147cd07b9746c39394610a0a916114ed85613129565b9060005260008051602061331b8339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b5034610690576020366003190112610690578035916001600160a01b038084168403611363577f000000000000000000000000000000000000000000000000000000000000000016330361157d57836103be84613244565b60249250519063c5aa615360e01b82523390820152fd5b5060a0366003190112610690576001600160401b038135818111611363576115bf903690840161279e565b60249283359383851161179a573660238601121561179a5784820135936115e58561284d565b946115f288519687612762565b808652602096838888019260051b8201019236841161066257848201925b8484106117745750505050506044356064359461ffff86169081870361147f57608435937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361176157826000526000805160206132bb8339815191528952838a600020540361173a57848b526000805160206132db833981519152895260ff8a8c20541661172657506116cf846000526000805160206132db8339815191526020526040600020600160ff19825416179055565b5161171657606061038495938a95937ff557dbbb087662f52c815f6c7ee350628a37a51eae9608ff840d996b65f87475938b519283528a8301528a820152a1610362612943565b875163c504ea2960e01b81528490fd5b8951632d30ec0360e21b8152808701869052fd5b8951633cd8e72b60e11b815261ffff89168188019081526020810186905281906040010390fd5b8951631c26958960e01b81523381880152fd5b833582811161065a578a9161178f839289369188010161279e565b815201930192611610565b8680fd5b508290346106cf57826003193601126106cf576117b96126bc565b6117c161283e565b916117ca61320b565b61ffff8216908115610a1057507f0fe301480713b2c2072ee91b3bcfcbf2c0014f0447c89046f020f0f80727003c9394610a0a9161180785613129565b9060005260008051602061329b8339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b509060031960a03682011261068c576118566126bc565b9060249283356001600160401b039081811161067b5761187990369088016127e5565b906044358181116105ff57611891903690890161279e565b90608435977f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00976002895414611fa857600289556001600160a01b03937f000000000000000000000000000000000000000000000000000000000000000085163303611f9257908b61194b819361195a8a519b61190d8d6126f6565b848d528b516304616c8f60e21b81526309945ff160e41b89820152338782015260648035604483015260a0908201529c8d94859460a4860190612887565b91848303016084850152612887565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415611f885782988395611f36575b50611992602080980151612ba9565b80511580611f27575b15611b7e575050928a92859283898997611a0d61ffff8f16968792836000526000805160206132bb8339815191528c526119e16119db8660002054613027565b9b613027565b94519c8d9b8c9a8b9a6312d729bd60e21b8c528b0152169088015260e0604488015260e4870190612887565b9360648601527f0000000000000000000000000000000000000000000000000000000000000000608486015260a48501521660c4830152039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611b7457611b03575b5061ffff926060611ae884611afc9460008051602061337b8339815191528460019c60008051602061335b8339815191529b99519060008252848201523485820152a15b815197889716875281818801528451828801528401518387015283015160808087015260c0860190612887565b910151838203603f190160a0850152612887565b0390a15580f35b9391928185813d8311611b6d575b611b1b8183612762565b8101031261067b576060611ae861ffff95611afc9460008051602061337b8339815191528460019c611b5b60008051602061335b8339815191529c612feb565b509c5050509450949650505092611a77565b503d611b11565b83513d8a823e3d90fd5b919394959250959697989a50511580611efb575b15611dd1578651631a90a21960e01b8152937f000000000000000000000000000000000000000000000000000000000000000082169087868681855afa958d8715611dc657908993929197611d93575b50869291611c26918b519889809481936358cd21bf60e11b83527f0000000000000000000000000000000000000000000000000000000000000000908c8401612fff565b03925af1948515611d89578c95611d52575b50817f00000000000000000000000000000000000000000000000000000000000000001690340390348211611d3e5790818d9796959493923b1561067b578c96889660849561ffff8d519a8b998a98630b5624e160e11b8a527f0000000000000000000000000000000000000000000000000000000000000000169089015216908601528760448601521660648401525af18015611d3457611d1c575b5060008051602061335b833981519152936060611ae8856001999560008051602061337b83398151915284611afc9761ffff9a51908e8252848201523485820152a1611abb565b611d28909692966126cd565b61101c57938538611cd5565b84513d84823e3d90fd5b83601186634e487b7160e01b600052526000fd5b9094508681813d8311611d82575b611d6a8183612762565b8101031261065e57611d7b90612feb565b9338611c38565b503d611d60565b88513d8e823e3d90fd5b9196509181813d8111611dbf575b611dab8183612762565b8101031261147f5751948791611c26611be2565b503d611da1565b8a51903d90823e3d90fd5b9050611e189350849286999799518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fff565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611ef157611e93575b5091611afc6001956060611ae88560008051602061335b8339815191529760008051602061337b833981519152848d61ffff9a519060028252848201523485820152a1611abb565b9181838195933d8311611eea575b611eab8183612762565b8101031261179a576001956060611ae8611afc9360008051602061335b83398151915297611edb61ffff98612feb565b50959750955050509550611e4b565b503d611ea1565b83513d89823e3d90fd5b5061ffff8a1660005260008051602061329b8339815191528652611f2287600020546130f7565b611b92565b50611f318b6130a4565b61199b565b985093503d80838a3e611f49818a612762565b88019787818a031261069057805185811161068c5789611f6a9183016129db565b98602082015186811161136357611f8192016129c1565b9338611983565b87513d84823e3d90fd5b509085519063c5aa615360e01b82523390820152fd5b508451633ee5aeb560e01b8152fd5b509134610689576020366003190112610689578235906001600160401b0382116106895750611fee602093611ff39236910161279e565b612ba9565b9051905115158152f35b5050346106cf5760203660031901126106cf5760209061ffff61201e6126bc565b1660005260008051602061331b833981519152825261071681600020546130f7565b5050346106cf57816003193601126106cf57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b509034610690576020918260031936011261068c576001600160a01b039181358381169081810361179a576120b761320b565b6120bf613138565b3b15612552577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e9384549361214c60ff86161561317c565b60ff199485166001178655303b1561179a57825163011fa75760e71b81528781868183305af180156124465761253f575b50825163689f90c360e01b815282818681305afa90811561244657889161250a575b50156121d9575b505050507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b82516324fb21db60e01b815282818681305afa908115612446579061222b9189916124ed575b5082167f000000000000000000000000000000000000000000000000000000000000000083161461317c565b8251630b4a1e8960e01b815282818681305afa908115612446579061227d9189916124c0575b5082167f000000000000000000000000000000000000000000000000000000000000000083161461317c565b82516384acd1bb60e01b815282818681305afa8015612446578890612488575b6122cd915082167f000000000000000000000000000000000000000000000000000000000000000083161461317c565b825163da25b72560e01b815282818681305afa8015612446578890612450575b61231d915082167f000000000000000000000000000000000000000000000000000000000000000083161461317c565b825163121d4a8560e31b815282818681305afa90811561244657889161240c575b508161236e927f00000000000000000000000000000000000000000000000000000000000000001691161461317c565b8082518094631d1bfaa160e31b825281305afa918215612403575085916123cc575b506123c3915060ff807f00000000000000000000000000000000000000000000000000000000000000001691161461317c565b388080806121a6565b905081813d83116123fc575b6123e28183612762565b8101031261068c576123f66123c391613053565b38612390565b503d6123d8565b513d87823e3d90fd5b90508281813d831161243f575b6124238183612762565b8101031261067b575190808216820361067b579061236e61233e565b503d612419565b84513d8a823e3d90fd5b508281813d8311612481575b6124668183612762565b8101031261067b5751818116810361067b5761231d906122ed565b503d61245c565b508281813d83116124b9575b61249e8183612762565b8101031261067b5751818116810361067b576122cd9061229d565b503d612494565b6124e09150843d86116124e6575b6124d88183612762565b8101906128ac565b38612251565b503d6124ce565b6125049150843d86116124e6576124d88183612762565b386121ff565b90508281813d8311612538575b6125218183612762565b8101031261067b5761253290613072565b3861219f565b503d612517565b61254b909791976126cd565b953861217d565b815162461bcd60e51b8152808401869052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b828591346106905760203660031901126106905781356001600160a01b038181169391849003611363578060008051602061333b8339815191525416927fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12499283549283169433861415908161266c575b506126575750506001600160a01b031916831790557f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b63e2a08e5d60e01b8252339082015260249150fd5b90503314158861261b565b3461147f57600036600319011261147f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6004359061ffff8216820361147f57565b6001600160401b0381116126e057604052565b634e487b7160e01b600052604160045260246000fd5b602081019081106001600160401b038211176126e057604052565b606081019081106001600160401b038211176126e057604052565b608081019081106001600160401b038211176126e057604052565b604081019081106001600160401b038211176126e057604052565b90601f801991011681019081106001600160401b038211176126e057604052565b6001600160401b0381116126e057601f01601f191660200190565b81601f8201121561147f578035906127b582612783565b926127c36040519485612762565b8284526020838301011161147f57816000926020809301838601378301015290565b91909160408184031261147f5760408051916001600160401b03918301828111848210176126e0576040528294813560ff8116810361147f578452602082013592831161147f57602092612839920161279e565b910152565b60243590811515820361147f57565b6001600160401b0381116126e05760051b60200190565b60005b8381106128775750506000910152565b8181015183820152602001612867565b906020916128a081518092818552858086019101612864565b601f01601f1916010190565b9081602091031261147f57516001600160a01b038116810361147f5790565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156129375760009161291c575090565b612934915060203d81116124e6576124d88183612762565b90565b6040513d6000823e3d90fd5b604051906129508261272c565b6060808360008152600060208201528160408201520152565b6040519061297682612711565b606060408360008152600060208201520152565b9092919261299781612783565b916129a56040519384612762565b82948284528282011161147f5760206129bf930190612864565b565b9080601f8301121561147f5781516129349260200161298a565b919060808382031261147f57604051906129f48261272c565b819380518352602081015160208401526040810151916001600160401b039283811161147f5781612a269184016129c1565b6040850152606082015192831161147f5760609261283992016129c1565b919060408382031261147f578251906001600160401b039182811161147f5781612a6f9186016129db565b9360208101519083821161147f57019060608282031261147f5760405192612a9684612711565b8251845260208301516020850152604083015190811161147f57612aba92016129c1565b604082015290565b6309945ff160e41b815260406020820181905261293492910190612887565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690818103612b8b5750803b1561147f5761ffff60008094612b71604080519889978896879563275e091560e21b875216600486015260248501526060604485015280516064850152602081015160848501520151606060a484015260c4830190612887565b03925af1801561293757612b825750565b6129bf906126cd565b60449250604051916339dee99160e11b835260048301526024820152fd5b9060405191612bb7836126f6565b6000835282815115612c1f5750600181015160fe8116612c035760ff16151583525160018103612be45750565b604490604051906355c5b3e360e11b8252600482015260016024820152fd5b60405163f7a37b0760e01b815260ff9091166004820152602490fd5b925050565b90612c33602080920151612ba9565b51612f6a5761ffff82169060009082825260008051602061331b8339815191528152604093612c64858420546130f7565b80612f43575b612f2b57612c77906130a4565b15612d3e5750825163c23ee3c360e01b81526004810192909252602482018190527f0000000000000000000000000000000000000000000000000000000000000000604483015282826064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315612d34578193612d03575b50505090565b9091809350813d8311612d2d575b612d1b8183612762565b81010312610689575051388080612cfd565b503d612d11565b51903d90823e3d90fd5b82829394925260008051602061329b8339815191528152612d61828420546130f7565b15612ec957815163209d173960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820195909552604481018490529381856064817f000000000000000000000000000000000000000000000000000000000000000085165afa948515612ebc578495612e8d575b509080600492845193848092631a90a21960e01b82527f0000000000000000000000000000000000000000000000000000000000000000165afa928315612e8457508392612e56575b50508201809211612e42575090565b634e487b7160e01b81526011600452602490fd5b90809250813d8311612e7d575b612e6d8183612762565b810103126106cf57513880612e33565b503d612e63565b513d85823e3d90fd5b9094508181813d8311612eb5575b612ea58183612762565b8101031261068c57519381612dea565b503d612e9b565b50505051903d90823e3d90fd5b8151631a90a21960e01b815291935090919080836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa938415612f2057508193612d035750505090565b51913d9150823e3d90fd5b845163251268db60e21b815260048101859052602490fd5b508383526000805160206132fb8339815191528252612f64858420546130f7565b15612c6a565b604051631a90a21960e01b8152915080826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561293757600091612fbf575b50905090565b82813d8311612fe4575b612fd38183612762565b810103126106895750518038612fb9565b503d612fc9565b51906001600160401b038216820361147f57565b9060ff61302060409295949560008552606060208601526060850190612887565b9416910152565b8060a01c61303b576001600160a01b031690565b6024906040519063033b960d60e41b82526004820152fd5b519060ff8216820361147f57565b519063ffffffff8216820361147f57565b5190811515820361147f57565b9060208282031261147f5781516001600160401b03811161147f5761293492016129c1565b61ffff168060005260008051602061331b8339815191526020526130cc6040600020546130f7565b90816130d6575090565b90506000526000805160206132fb8339815191526020526129346040600020545b8015613123576001811461311d576024906040519063b998bad560e01b82526004820152fd5b50600190565b50600090565b1561313357600190565b600090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461316a57565b604051633c64f99360e21b8152600490fd5b1561318357565b634e487b7160e01b600052600160045260246000fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c16156131c857565b604051631afcd79f60e31b8152600490fd5b6001600160a01b038116156131f2576129bf90613244565b604051631e4fbdf760e01b815260006004820152602490fd5b60008051602061333b833981519152546001600160a01b0316330361322c57565b60405163118cdaa760e01b8152336004820152602490fd5b60008051602061333b83398151915280546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a356fed4cbc7742a1e11dcc33209ac33862ef146cfcb6d7f860df12df42105dfedb1c948c66ef0992b4bcc14f2551075db9459fc23bf706abb76034f1c66c1ba2846845e6aacb3f16e5b01c8b072a0ab4c38e919266014a45db863ee64a4580fb3e7e2e79d2e5e46f62be2ac831294e423b664f30320fb9ebaefd78a978cafe07c0f8c16ee6ac6bf7a8d7c37112a9426e00852b215ac4f5c50536beb6c95f1ba47b4af9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930079376a0dc6cbfe6f6f8f89ad24c262a8c6233f8df181d3fe5abb2e2442e8c738c3192e083c87c556db539f071d8a298869f487e951327b5616a6f85ae3da958ea26469706673582212207bc4f63809fac595a807d3db7f0b018f2f37e2fc46722017fb19171aab94e8f964736f6c63430008130033",isSuperArgs=t=>typeof t[0]=="string"||Array.isArray(t[0])||"_isInterface"in t[0],Ei=class Ei extends ContractFactory{constructor(...e){if(isSuperArgs(e))super(...e);else{const[s,l]=e;super(_abi,Ei.linkBytecode(s),l)}}static linkBytecode(e){let s=_bytecode;return s=s.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),s}getDeployTransaction(e,s,l,d,u,p,m){return super.getDeployTransaction(e,s,l,d,u,p,m||{})}deploy(e,s,l,d,u,p,m){return super.deploy(e,s,l,d,u,p,m||{})}connect(e){return super.connect(e)}static createInterface(){return new Interface(_abi)}static connect(e,s){return new Contract(e,_abi,s)}};Ae(Ei,"bytecode",_bytecode),Ae(Ei,"abi",_abi);let WormholeTransceiver__factory=Ei;const _0_1_0={NttManager:{connect:NttManager__factory$2.connect},NttTransceiver:{connect:WormholeTransceiver__factory$2.connect}},_1_0_0$1={NttManager:{connect:NttManager__factory$1.connect},NttTransceiver:{connect:WormholeTransceiver__factory$1.connect}},_1_1_0={NttManager:{connect:NttManager__factory.connect},NttTransceiver:{connect:WormholeTransceiver__factory.connect}},abiVersions=[["1.1.0",_1_1_0],["1.0.0",_1_0_0$1],["0.1.0",_0_1_0]];function loadAbiVersion(t){for(const[e,s]of abiVersions)if(Ntt.abiVersionMatches(t,e))return s;throw new Error(`Unknown ABI version: ${t}`)}class EvmNttWormholeTranceiver{constructor(e,s,l){Ae(this,"manager");Ae(this,"address");Ae(this,"transceiver");this.manager=e,this.address=s,this.transceiver=l.NttTransceiver.connect(s,e.provider)}async getTransceiverType(){return"wormhole"}getAddress(){return{chain:this.manager.chain,address:toUniversal(this.manager.chain,this.address)}}encodeFlags(e){return new Uint8Array([e.skipRelay?1:0])}async*setPeer(e){const s=await this.transceiver.setWormholePeer.populateTransaction(toChainId(e.chain),universalAddress(e));yield this.manager.createUnsignedTx(s,"WormholeTransceiver.registerPeer")}async getPauser(){const e=await this.transceiver.pauser();return new EvmAddress(e)}async*setPauser(e){const s=canonicalAddress({chain:this.manager.chain,address:e}),l=await this.transceiver.transferPauserCapability.populateTransaction(s);yield this.manager.createUnsignedTx(l,"WormholeTransceiver.setPauser")}async getPeer(e){const s=await this.transceiver.getWormholePeer(toChainId(e)),l=hex$1.decode(s),d=new Uint8Array(32);return bytes$1.equals(d,l)?null:{chain:e,address:toUniversal(e,l)}}async isEvmChain(e){return await this.transceiver.isWormholeEvmChain(toChainId(e))}async*setIsEvmChain(e,s){const l=await this.transceiver.setIsWormholeEvmChain.populateTransaction(toChainId(e),s);yield this.manager.createUnsignedTx(l,"WormholeTransceiver.setIsEvmChain")}async*receive(e){const s=await this.transceiver.receiveMessage.populateTransaction(serialize$1(e));yield this.manager.createUnsignedTx(s,"WormholeTransceiver.receiveMessage")}async isWormholeRelayingEnabled(e){return await this.transceiver.isWormholeRelayingEnabled(toChainId(e))}async*setIsWormholeRelayingEnabled(e,s){const l=await this.transceiver.setIsWormholeRelayingEnabled.populateTransaction(toChainId(e),s);yield this.manager.createUnsignedTx(l,"WormholeTransceiver.setWormholeRelayingEnabled")}async isSpecialRelayingEnabled(e){return await this.transceiver.isSpecialRelayingEnabled(toChainId(e))}async*setIsSpecialRelayingEnabled(e,s){const l=await this.transceiver.setIsSpecialRelayingEnabled.populateTransaction(toChainId(e),s);yield this.manager.createUnsignedTx(l,"WormholeTransceiver.setSpecialRelayingEnabled")}}class EvmNtt{constructor(e,s,l,d,u="1.0.0"){Ae(this,"network");Ae(this,"chain");Ae(this,"provider");Ae(this,"contracts");Ae(this,"version");Ae(this,"tokenAddress");Ae(this,"chainId");Ae(this,"manager");Ae(this,"xcvrs");Ae(this,"managerAddress");if(this.network=e,this.chain=s,this.provider=l,this.contracts=d,this.version=u,!d.ntt)throw new Error("No Ntt Contracts provided");this.chainId=networkChainToNativeChainId.get(e,s),this.tokenAddress=d.ntt.token,this.managerAddress=d.ntt.manager;const p=loadAbiVersion(this.version);this.manager=p.NttManager.connect(d.ntt.manager,this.provider),this.xcvrs=[],"wormhole"in d.ntt.transceiver&&d.ntt.transceiver.wormhole&&["wormhole",...Object.keys(d.ntt.transceiver).filter(y=>{})].map(y=>{if(y!=="wormhole")throw new Error(`Unsupported transceiver type: ${y}`);this.xcvrs.push(new EvmNttWormholeTranceiver(this,d.ntt.transceiver[y],p))})}async getTransceiver(e){return this.xcvrs[e]||null}async getMode(){return await this.manager.getMode()===0n?"locking":"burning"}async isPaused(){return await this.manager.isPaused()}async*pause(){const e=await this.manager.pause.populateTransaction();yield this.createUnsignedTx(e,"Ntt.pause")}async*unpause(){const e=await this.manager.unpause.populateTransaction();yield this.createUnsignedTx(e,"Ntt.unpause")}async getOwner(){return new EvmAddress(await this.manager.owner())}async getPauser(){return new EvmAddress(await this.manager.pauser())}async*setOwner(e){const s=new EvmAddress(e).toString(),l=await this.manager.transferOwnership.populateTransaction(s);yield this.createUnsignedTx(l,"Ntt.setOwner")}async*setPauser(e){const s=new EvmAddress(e).toString(),l=await this.manager.transferPauserCapability.populateTransaction(s);yield this.createUnsignedTx(l,"Ntt.setPauser")}async getThreshold(){return Number(await this.manager.getThreshold())}async isRelayingAvailable(e){return(await Promise.all(this.xcvrs.map(async l=>{const[d,u]=await Promise.all([l.isWormholeRelayingEnabled(e),l.isSpecialRelayingEnabled(e)]);return d||u}))).filter(l=>l).length>0}async getIsExecuted(e){const s=e.payloadName==="WormholeTransfer"?e.payload:e.payload.payload;return await this.manager.isMessageExecuted(Ntt.messageDigest(e.emitterChain,s.nttManagerPayload))?!await this.getIsTransferInboundQueued(e):!1}async getIsTransferInboundQueued(e){const s=e.payloadName==="WormholeTransfer"?e.payload:e.payload.payload;return await this.getInboundQueuedTransfer(e.emitterChain,s.nttManagerPayload)!==null}getIsApproved(e){const s=e.payloadName==="WormholeTransfer"?e.payload:e.payload.payload;return this.manager.isMessageApproved(Ntt.messageDigest(e.emitterChain,s.nttManagerPayload))}async getTokenDecimals(){return await EvmPlatform.getDecimals(this.chain,this.provider,this.tokenAddress)}async getPeer(e){const s=await this.manager.getPeer(toChainId(e)),l=hex$1.decode(s.peerAddress),d=new Uint8Array(32);return bytes$1.equals(d,l)?null:{address:{chain:e,address:toUniversal(e,l)},tokenDecimals:Number(s.tokenDecimals),inboundLimit:await this.getInboundLimit(e)}}static async fromRpc(e,s){const[l,d]=await EvmPlatform.chainFromRpc(e),u=s[d];if(u.network!==l)throw new Error(`Network mismatch: ${u.network} != ${l}`);const p=await EvmNtt.getVersion(e,u.contracts);return new EvmNtt(l,d,e,u.contracts,p)}encodeOptions(e){const s=[];return s.push({index:0,payload:this.xcvrs[0].encodeFlags({skipRelay:!e.automatic})}),s}static async getVersion(e,s){var d;const l=new Contract(s.ntt.manager,["function NTT_MANAGER_VERSION() public view returns (string)"],e);try{const u=await l.getFunction("NTT_MANAGER_VERSION").staticCall();if(!u)throw new Error("NTT_MANAGER_VERSION not found");return u}catch(u){throw console.error(`Failed to get NTT_MANAGER_VERSION from contract ${(d=s.ntt)==null?void 0:d.manager}`),u}}async getCustodyAddress(){return this.managerAddress}async quoteDeliveryPrice(e,s){const[,l]=await this.manager.quoteDeliveryPrice(toChainId(e),Ntt.encodeTransceiverInstructions(this.encodeOptions(s)));return l}async*setPeer(e,s,l){const d=await this.manager.setPeer.populateTransaction(toChainId(e.chain),universalAddress(e),s,l);yield this.createUnsignedTx(d,"Ntt.setPeer")}async*setWormholeTransceiverPeer(e){yield*this.setTransceiverPeer(0,e)}async*setTransceiverPeer(e,s){if(e>=this.xcvrs.length)throw new Error("Transceiver not found");yield*this.xcvrs[e].setPeer(s)}async*transfer(e,s,l,d){const u=new EvmAddress(e).toString(),p=await this.quoteDeliveryPrice(l.chain,d),m=EvmPlatform.getTokenImplementation(this.provider,this.tokenAddress);if(await m.allowance(u,this.managerAddress)<s){const A=await m.approve.populateTransaction(this.managerAddress,s);yield this.createUnsignedTx(addFrom(A,u),"Ntt.Approve")}const h=universalAddress(l),v=await this.manager.getFunction("transfer(uint256,uint16,bytes32,bytes32,bool,bytes)").populateTransaction(s,toChainId(l.chain),h,h,d.queue,Ntt.encodeTransceiverInstructions(this.encodeOptions(d)),{value:p});yield this.createUnsignedTx(addFrom(v,u),"Ntt.transfer")}async*redeem(e){if(e.length!==this.xcvrs.length)throw new Error("Not enough attestations for the registered Transceivers");for(const s in this.xcvrs){const l=this.xcvrs[s],d=e[s];if((d==null?void 0:d.payloadName)!=="WormholeTransfer")throw new Error("Invalid attestation type for redeem");yield*l.receive(d)}}async getCurrentOutboundCapacity(){return await this.manager.getCurrentOutboundCapacity()}async getOutboundLimit(){const e=(await this.manager.getOutboundLimitParams()).limit,s=decodeTrimmedAmount(e),l=await this.getTokenDecimals();return untrim(s,l)}async*setOutboundLimit(e){const s=await this.manager.setOutboundLimit.populateTransaction(e);yield this.createUnsignedTx(s,"Ntt.setOutboundLimit")}async getCurrentInboundCapacity(e){return await this.manager.getCurrentInboundCapacity(toChainId(e))}async getInboundLimit(e){const s=(await this.manager.getInboundLimitParams(toChainId(e))).limit,l=decodeTrimmedAmount(s),d=await this.getTokenDecimals();return untrim(l,d)}async*setInboundLimit(e,s){const l=await this.manager.setInboundLimit.populateTransaction(s,toChainId(e));yield this.createUnsignedTx(l,"Ntt.setInboundLimit")}async getRateLimitDuration(){return await this.manager.rateLimitDuration()}async getInboundQueuedTransfer(e,s){const l=await this.manager.getInboundQueuedTransfer(Ntt.messageDigest(e,s));if(l.txTimestamp>0n){const{recipient:d,amount:u,txTimestamp:p}=l,m=await this.getRateLimitDuration();return{recipient:new EvmAddress(d),amount:u,rateLimitExpiryTimestamp:Number(p+m)}}return null}async*completeInboundQueuedTransfer(e,s,l){const d=await this.manager.completeInboundQueuedTransfer.populateTransaction(Ntt.messageDigest(e,s));yield this.createUnsignedTx(d,"Ntt.completeInboundQueuedTransfer")}async verifyAddresses(){const e={manager:this.managerAddress,token:this.tokenAddress,transceiver:{...this.xcvrs.length>0&&{wormhole:this.xcvrs[0].address}}},s={manager:this.managerAddress,token:await this.manager.token(),transceiver:{wormhole:(await this.manager.getTransceivers())[0]}},l=(d,u)=>{for(const p in d)typeof d[p]=="object"?(l(d[p],u[p]),Object.keys(d[p]).length===0&&delete d[p]):d[p]===u[p]&&delete d[p]};return l(s,e),Object.keys(s).length>0?s:null}createUnsignedTx(e,s,l=!1){return new EvmUnsignedTransaction(addChainId(e,this.chainId),this.network,this.chain,s,l)}}function decodeTrimmedAmount(t){const e=Number(t&0xffn);return{amount:t>>8n,decimals:e}}function untrim(t,e){const{amount:s,decimals:l}=t;return scale(s,l,e)}function scale(t,e,s){return e==s?t:e>s?t/10n**BigInt(e-s):t*10n**BigInt(s-e)}registerProtocol(_platform$1,"Ntt",EvmNtt);class SolanaChain extends ChainContext{async getTokenAccount(e,s){const{getAssociatedTokenAddress:l}=await Promise.resolve().then(()=>require("./index-eLxBNCA2.js")),d=new SolanaAddress(s).unwrap(),u=new SolanaAddress(e).unwrap(),p=await l(d,u);return{chain:this.chain,address:new SolanaAddress(p.toString())}}}const TOKEN_PROGRAM_ID$3=new PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),TOKEN_2022_PROGRAM_ID$1=new PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"),ASSOCIATED_TOKEN_PROGRAM_ID$2=new PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new PublicKey("So11111111111111111111111111111111111111112");new PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");const encodeDecode=t=>{const e=t.decode.bind(t),s=t.encode.bind(t);return{decode:e,encode:s}},bigInt=t=>e=>{const s=exports.blob(t,e),{encode:l,decode:d}=encodeDecode(s),u=s;return u.decode=(p,m)=>{const y=d(p,m);return toBigIntLE_1(dist$2.Buffer.from(y))},u.encode=(p,m,y)=>{const h=toBufferLE_1(p,t);return l(h,m,y)},u},u64$1=bigInt(8),bool=t=>{const e=exports.u8(t),{encode:s,decode:l}=encodeDecode(e),d=e;return d.decode=(u,p)=>!!l(u,p),d.encode=(u,p,m)=>{const y=Number(u);return s(y,p,m)},d},publicKey$3=t=>{const e=exports.blob(32,t),{encode:s,decode:l}=encodeDecode(e),d=e;return d.decode=(u,p)=>{const m=l(u,p);return new PublicKey(m)},d.encode=(u,p,m)=>{const y=u.toBuffer();return s(y,p,m)},d},rn=class rn extends PlatformContext{constructor(e,s){super(e,s??networkPlatformConfigs(e,rn._platform))}getRpc(e,s={commitment:"confirmed",disableRetryOnRateLimit:!0}){if(e in this.config)return new Connection$1(this.config[e].rpc,s);throw new Error("No configuration available for chain: "+e)}getChain(e,s){if(e in this.config)return new SolanaChain(e,this,s);throw new Error("No configuration available for chain: "+e)}static nativeTokenId(e,s){if(!rn.isSupportedChain(s))throw new Error(`invalid chain: ${s}`);return Wormhole.chainAddress(s,SolanaZeroAddress)}static isNativeTokenId(e,s,l){return!this.isSupportedChain(s)||l.chain!==s?!1:this.nativeTokenId(e,s)==l}static isSupportedChain(e){return chainToPlatform(e)===rn._platform}static async getDecimals(e,s,l){if(isNative(l))return nativeDecimals(rn._platform);let d=await s.getParsedAccountInfo(new SolanaAddress(l).unwrap());if(!d||!d.value)throw new Error("could not fetch token details");const{decimals:u}=d.value.data.parsed.info;return u}static async getBalance(e,s,l,d){const u=new PublicKey(l);if(isNative(d))return BigInt(await s.getBalance(u));const p=await s.getTokenAccountsByOwner(u,{mint:new SolanaAddress(d).unwrap()}),m=p.value.length>0?p.value[0].pubkey:u,y=await s.getTokenAccountBalance(m);return BigInt(y.value.amount)}static async getBalances(e,s,l,d){let u;d.includes("native")&&(u=BigInt(await s.getBalance(new PublicKey(l))));const p=(await Promise.all([TOKEN_PROGRAM_ID$3,TOKEN_2022_PROGRAM_ID$1].map(y=>new PublicKey(y)).map(y=>s.getParsedTokenAccountsByOwner(new PublicKey(l),{programId:y})))).reduce((y,h)=>y.concat(h.value),[]);return d.map(y=>{var A,w,I,k;if(isNative(y))return{native:u};const h=new SolanaAddress(y).toString(),v=(k=(I=(w=(A=p.find($=>{var P,z;return((z=(P=$==null?void 0:$.account.data.parsed)==null?void 0:P.info)==null?void 0:z.mint)===y.toString()}))==null?void 0:A.account.data.parsed)==null?void 0:w.info)==null?void 0:I.tokenAmount)==null?void 0:k.amount;return v?{[h]:BigInt(v)}:{[h]:null}}).reduce((y,h)=>Object.assign(y,h),{})}static async sendWait(e,s,l,d){const u=await Promise.all(l.map(y=>this.sendTxWithRetry(s,y,d))),p=u.map(y=>y.signature),m=u.filter(y=>y.response.value.err).map(y=>y.response.value.err);if(m.length>0)throw new Error(`Failed to confirm transaction: ${m}`);return p}static async sendTxWithRetry(e,s,l={},d=5e3){const u=l.preflightCommitment??e.commitment,p=await e.sendRawTransaction(s,{...l,skipPreflight:!1,maxRetries:0,preflightCommitment:u}),{blockhash:m,lastValidBlockHeight:y}=await e.getLatestBlockhash(),h=e.confirmTransaction({signature:p,blockhash:m,lastValidBlockHeight:y},u);let v=null;for(;!v&&(v=await Promise.race([h,new Promise(A=>setTimeout(()=>{A(null)},d))]),!v);)await e.sendRawTransaction(s,{...l,skipPreflight:!0,maxRetries:0,preflightCommitment:u});return{signature:p,response:v}}static async latestBlock(e,s){return e.getLatestBlockhash(s??e.commitment)}static async getLatestBlock(e){return await e.getSlot()}static async getLatestFinalizedBlock(e){const{lastValidBlockHeight:s}=await this.latestBlock(e,"finalized");return s}static chainFromChainId(e){const s=platformNativeChainIdToNetworkChain(rn._platform,e);if(!s)throw new Error(`No matching genesis hash to determine network and chain: ${e}`);const[l,d]=s;return[l,d]}static async chainFromRpc(e){try{const s=await e.getGenesisHash();return rn.chainFromChainId(s)}catch(s){if(e.rpcEndpoint.includes("http://127")||e.rpcEndpoint.includes("http://localhost")||e.rpcEndpoint==="http://solana-devnet:8899")return["Devnet","Solana"];throw s}}};Ae(rn,"_platform",_platform);let SolanaPlatform=rn;class SolanaUnsignedTransaction{constructor(e,s,l,d,u=!1){Ae(this,"transaction");Ae(this,"network");Ae(this,"chain");Ae(this,"description");Ae(this,"parallelizable");this.transaction=e,this.network=s,this.chain=l,this.description=d,this.parallelizable=u}}function isVersionedTransaction$1(t){return t.signatures!==void 0&&t.message!==void 0}const toBytes=t=>typeof t=="string"?dist$2.Buffer.from(t):t;function deriveAddress(t,e){return PublicKey.findProgramAddressSync(Array.isArray(t)?t.map(toBytes):[toBytes(t)],new PublicKey(e))[0]}function newAccountMeta(t,e){return{pubkey:new PublicKey(t),isWritable:!0,isSigner:e}}function newReadOnlyAccountMeta(t,e){return{pubkey:new PublicKey(t),isWritable:!1,isSigner:e}}function getAccountData(t){if(t===null)throw Error("account info is null");return t.data}const BPF_LOADER_UPGRADEABLE_PROGRAM_ID$1=new PublicKey("BPFLoaderUpgradeab1e11111111111111111111111");function deriveProgramDataAddress(t){return deriveAddress([new PublicKey(t).toBuffer()],BPF_LOADER_UPGRADEABLE_PROGRAM_ID$1)}function createReadOnlyProvider(t){if(t!==void 0)return{connection:t}}let IdlError$1=class extends Error{constructor(e){super(e),this.name="IdlError"}};var dist$1={},Layout$2={};let Layout$1=class{constructor(e,s){if(!Number.isInteger(e))throw new TypeError("span must be an integer");this.span=e,this.property=s}makeDestinationObject(){return{}}decode(e,s){throw new Error("Layout is abstract")}encode(e,s,l){throw new Error("Layout is abstract")}getSpan(e,s){if(0>this.span)throw new RangeError("indeterminate span");return this.span}replicate(e){const s=Object.create(this.constructor.prototype);return Object.assign(s,this),s.property=e,s}fromArray(e){}};Layout$2.Layout=Layout$1;function nameWithProperty$1(t,e){return e.property?t+"["+e.property+"]":t}Layout$2.nameWithProperty=nameWithProperty$1;function bindConstructorLayout(t,e){if(typeof t!="function")throw new TypeError("Class must be constructor");if(t.hasOwnProperty("layout_"))throw new Error("Class is already bound to a layout");if(!(e&&e instanceof Layout$1))throw new TypeError("layout must be a Layout");if(e.hasOwnProperty("boundConstructor_"))throw new Error("layout is already bound to a constructor");t.layout_=e,e.boundConstructor_=t,e.makeDestinationObject=()=>new t,Object.defineProperty(t.prototype,"encode",{value:function(s,l){return e.encode(this,s,l)},writable:!0}),Object.defineProperty(t,"decode",{value:function(s,l){return e.decode(s,l)},writable:!0})}Layout$2.bindConstructorLayout=bindConstructorLayout;let ExternalLayout$1=class extends Layout$1{isCount(){throw new Error("ExternalLayout is abstract")}};class GreedyCount extends ExternalLayout$1{constructor(e,s){if(e===void 0&&(e=1),!Number.isInteger(e)||0>=e)throw new TypeError("elementSpan must be a (positive) integer");super(-1,s),this.elementSpan=e}isCount(){return!0}decode(e,s){s===void 0&&(s=0);const l=e.length-s;return Math.floor(l/this.elementSpan)}encode(e,s,l){return 0}}let OffsetLayout$1=class extends ExternalLayout$1{constructor(e,s,l){if(!(e instanceof Layout$1))throw new TypeError("layout must be a Layout");if(s===void 0)s=0;else if(!Number.isInteger(s))throw new TypeError("offset must be integer or undefined");super(e.span,l||e.property),this.layout=e,this.offset=s}isCount(){return this.layout instanceof UInt$1||this.layout instanceof UIntBE$1}decode(e,s){return s===void 0&&(s=0),this.layout.decode(e,s+this.offset)}encode(e,s,l){return l===void 0&&(l=0),this.layout.encode(e,s,l+this.offset)}},UInt$1=class extends Layout$1{constructor(e,s){if(super(e,s),6<this.span)throw new RangeError("span must not exceed 6 bytes")}decode(e,s){return s===void 0&&(s=0),e.readUIntLE(s,this.span)}encode(e,s,l){return l===void 0&&(l=0),s.writeUIntLE(e,l,this.span),this.span}},UIntBE$1=class extends Layout$1{constructor(e,s){if(super(e,s),6<this.span)throw new RangeError("span must not exceed 6 bytes")}decode(e,s){return s===void 0&&(s=0),e.readUIntBE(s,this.span)}encode(e,s,l){return l===void 0&&(l=0),s.writeUIntBE(e,l,this.span),this.span}};class Int extends Layout$1{constructor(e,s){if(super(e,s),6<this.span)throw new RangeError("span must not exceed 6 bytes")}decode(e,s){return s===void 0&&(s=0),e.readIntLE(s,this.span)}encode(e,s,l){return l===void 0&&(l=0),s.writeIntLE(e,l,this.span),this.span}}class IntBE extends Layout$1{constructor(e,s){if(super(e,s),6<this.span)throw new RangeError("span must not exceed 6 bytes")}decode(e,s){return s===void 0&&(s=0),e.readIntBE(s,this.span)}encode(e,s,l){return l===void 0&&(l=0),s.writeIntBE(e,l,this.span),this.span}}const V2E32$1=Math.pow(2,32);function divmodInt64$1(t){const e=Math.floor(t/V2E32$1),s=t-e*V2E32$1;return{hi32:e,lo32:s}}function roundedInt64$1(t,e){return t*V2E32$1+e}let NearUInt64$1=class extends Layout$1{constructor(e){super(8,e)}decode(e,s){s===void 0&&(s=0);const l=e.readUInt32LE(s),d=e.readUInt32LE(s+4);return roundedInt64$1(d,l)}encode(e,s,l){l===void 0&&(l=0);const d=divmodInt64$1(e);return s.writeUInt32LE(d.lo32,l),s.writeUInt32LE(d.hi32,l+4),8}};class NearUInt64BE extends Layout$1{constructor(e){super(8,e)}decode(e,s){s===void 0&&(s=0);const l=e.readUInt32BE(s),d=e.readUInt32BE(s+4);return roundedInt64$1(l,d)}encode(e,s,l){l===void 0&&(l=0);const d=divmodInt64$1(e);return s.writeUInt32BE(d.hi32,l),s.writeUInt32BE(d.lo32,l+4),8}}let NearInt64$1=class extends Layout$1{constructor(e){super(8,e)}decode(e,s){s===void 0&&(s=0);const l=e.readUInt32LE(s),d=e.readInt32LE(s+4);return roundedInt64$1(d,l)}encode(e,s,l){l===void 0&&(l=0);const d=divmodInt64$1(e);return s.writeUInt32LE(d.lo32,l),s.writeInt32LE(d.hi32,l+4),8}};class NearInt64BE extends Layout$1{constructor(e){super(8,e)}decode(e,s){s===void 0&&(s=0);const l=e.readInt32BE(s),d=e.readUInt32BE(s+4);return roundedInt64$1(l,d)}encode(e,s,l){l===void 0&&(l=0);const d=divmodInt64$1(e);return s.writeInt32BE(d.hi32,l),s.writeUInt32BE(d.lo32,l+4),8}}class Float extends Layout$1{constructor(e){super(4,e)}decode(e,s){return s===void 0&&(s=0),e.readFloatLE(s)}encode(e,s,l){return l===void 0&&(l=0),s.writeFloatLE(e,l),4}}class FloatBE extends Layout$1{constructor(e){super(4,e)}decode(e,s){return s===void 0&&(s=0),e.readFloatBE(s)}encode(e,s,l){return l===void 0&&(l=0),s.writeFloatBE(e,l),4}}class Double extends Layout$1{constructor(e){super(8,e)}decode(e,s){return s===void 0&&(s=0),e.readDoubleLE(s)}encode(e,s,l){return l===void 0&&(l=0),s.writeDoubleLE(e,l),8}}class DoubleBE extends Layout$1{constructor(e){super(8,e)}decode(e,s){return s===void 0&&(s=0),e.readDoubleBE(s)}encode(e,s,l){return l===void 0&&(l=0),s.writeDoubleBE(e,l),8}}class Sequence extends Layout$1{constructor(e,s,l){if(!(e instanceof Layout$1))throw new TypeError("elementLayout must be a Layout");if(!(s instanceof ExternalLayout$1&&s.isCount()||Number.isInteger(s)&&0<=s))throw new TypeError("count must be non-negative integer or an unsigned integer ExternalLayout");let d=-1;!(s instanceof ExternalLayout$1)&&0<e.span&&(d=s*e.span),super(d,l),this.elementLayout=e,this.count=s}getSpan(e,s){if(0<=this.span)return this.span;s===void 0&&(s=0);let l=0,d=this.count;if(d instanceof ExternalLayout$1&&(d=d.decode(e,s)),0<this.elementLayout.span)l=d*this.elementLayout.span;else{let u=0;for(;u<d;)l+=this.elementLayout.getSpan(e,s+l),++u}return l}decode(e,s){s===void 0&&(s=0);const l=[];let d=0,u=this.count;for(u instanceof ExternalLayout$1&&(u=u.decode(e,s));d<u;)l.push(this.elementLayout.decode(e,s)),s+=this.elementLayout.getSpan(e,s),d+=1;return l}encode(e,s,l){l===void 0&&(l=0);const d=this.elementLayout,u=e.reduce((p,m)=>p+d.encode(m,s,l+p),0);return this.count instanceof ExternalLayout$1&&this.count.encode(e.length,s,l),u}}let Structure$1=class extends Layout$1{constructor(e,s,l){if(!(Array.isArray(e)&&e.reduce((u,p)=>u&&p instanceof Layout$1,!0)))throw new TypeError("fields must be array of Layout instances");typeof s=="boolean"&&l===void 0&&(l=s,s=void 0);for(const u of e)if(0>u.span&&u.property===void 0)throw new Error("fields cannot contain unnamed variable-length layout");let d=-1;try{d=e.reduce((u,p)=>u+p.getSpan(),0)}catch{}super(d,s),this.fields=e,this.decodePrefixes=!!l}getSpan(e,s){if(0<=this.span)return this.span;s===void 0&&(s=0);let l=0;try{l=this.fields.reduce((d,u)=>{const p=u.getSpan(e,s);return s+=p,d+p},0)}catch{throw new RangeError("indeterminate span")}return l}decode(e,s){s===void 0&&(s=0);const l=this.makeDestinationObject();for(const d of this.fields)if(d.property!==void 0&&(l[d.property]=d.decode(e,s)),s+=d.getSpan(e,s),this.decodePrefixes&&e.length===s)break;return l}encode(e,s,l){l===void 0&&(l=0);const d=l;let u=0,p=0;for(const m of this.fields){let y=m.span;if(p=0<y?y:0,m.property!==void 0){const h=e[m.property];h!==void 0&&(p=m.encode(h,s,l),0>y&&(y=m.getSpan(s,l)))}u=l,l+=y}return u+p-d}fromArray(e){const s=this.makeDestinationObject();for(const l of this.fields)l.property!==void 0&&0<e.length&&(s[l.property]=e.shift());return s}layoutFor(e){if(typeof e!="string")throw new TypeError("property must be string");for(const s of this.fields)if(s.property===e)return s}offsetOf(e){if(typeof e!="string")throw new TypeError("property must be string");let s=0;for(const l of this.fields){if(l.property===e)return s;0>l.span?s=-1:0<=s&&(s+=l.span)}}},UnionDiscriminator$1=class{constructor(e){this.property=e}decode(){throw new Error("UnionDiscriminator is abstract")}encode(){throw new Error("UnionDiscriminator is abstract")}},UnionLayoutDiscriminator$1=class extends UnionDiscriminator$1{constructor(e,s){if(!(e instanceof ExternalLayout$1&&e.isCount()))throw new TypeError("layout must be an unsigned integer ExternalLayout");super(s||e.property||"variant"),this.layout=e}decode(e,s){return this.layout.decode(e,s)}encode(e,s,l){return this.layout.encode(e,s,l)}},Union$1=class extends Layout$1{constructor(e,s,l){const d=e instanceof UInt$1||e instanceof UIntBE$1;if(d)e=new UnionLayoutDiscriminator$1(new OffsetLayout$1(e));else if(e instanceof ExternalLayout$1&&e.isCount())e=new UnionLayoutDiscriminator$1(e);else if(!(e instanceof UnionDiscriminator$1))throw new TypeError("discr must be a UnionDiscriminator or an unsigned integer layout");if(s===void 0&&(s=null),!(s===null||s instanceof Layout$1))throw new TypeError("defaultLayout must be null or a Layout");if(s!==null){if(0>s.span)throw new Error("defaultLayout must have constant span");s.property===void 0&&(s=s.replicate("content"))}let u=-1;s&&(u=s.span,0<=u&&d&&(u+=e.layout.span)),super(u,l),this.discriminator=e,this.usesPrefixDiscriminator=d,this.defaultLayout=s,this.registry={};let p=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(m){return p(m)},this.configGetSourceVariant=function(m){p=m.bind(this)}}getSpan(e,s){if(0<=this.span)return this.span;s===void 0&&(s=0);const l=this.getVariant(e,s);if(!l)throw new Error("unable to determine span for unrecognized variant");return l.getSpan(e,s)}defaultGetSourceVariant(e){if(e.hasOwnProperty(this.discriminator.property)){if(this.defaultLayout&&e.hasOwnProperty(this.defaultLayout.property))return;const s=this.registry[e[this.discriminator.property]];if(s&&(!s.layout||e.hasOwnProperty(s.property)))return s}else for(const s in this.registry){const l=this.registry[s];if(e.hasOwnProperty(l.property))return l}throw new Error("unable to infer src variant")}decode(e,s){s===void 0&&(s=0);let l;const d=this.discriminator,u=d.decode(e,s);let p=this.registry[u];if(p===void 0){let m=0;p=this.defaultLayout,this.usesPrefixDiscriminator&&(m=d.layout.span),l=this.makeDestinationObject(),l[d.property]=u,l[p.property]=this.defaultLayout.decode(e,s+m)}else l=p.decode(e,s);return l}encode(e,s,l){l===void 0&&(l=0);const d=this.getSourceVariant(e);if(d===void 0){const u=this.discriminator,p=this.defaultLayout;let m=0;return this.usesPrefixDiscriminator&&(m=u.layout.span),u.encode(e[u.property],s,l),m+p.encode(e[p.property],s,l+m)}return d.encode(e,s,l)}addVariant(e,s,l){const d=new VariantLayout$1(this,e,s,l);return this.registry[e]=d,d}getVariant(e,s){let l=e;return dist$2.Buffer.isBuffer(e)&&(s===void 0&&(s=0),l=this.discriminator.decode(e,s)),this.registry[l]}},VariantLayout$1=class extends Layout$1{constructor(e,s,l,d){if(!(e instanceof Union$1))throw new TypeError("union must be a Union");if(!Number.isInteger(s)||0>s)throw new TypeError("variant must be a (non-negative) integer");if(typeof l=="string"&&d===void 0&&(d=l,l=null),l){if(!(l instanceof Layout$1))throw new TypeError("layout must be a Layout");if(e.defaultLayout!==null&&0<=l.span&&l.span>e.defaultLayout.span)throw new Error("variant span exceeds span of containing union");if(typeof d!="string")throw new TypeError("variant must have a String property")}let u=e.span;0>e.span&&(u=l?l.span:0,0<=u&&e.usesPrefixDiscriminator&&(u+=e.discriminator.layout.span)),super(u,d),this.union=e,this.variant=s,this.layout=l||null}getSpan(e,s){if(0<=this.span)return this.span;s===void 0&&(s=0);let l=0;return this.union.usesPrefixDiscriminator&&(l=this.union.discriminator.layout.span),l+this.layout.getSpan(e,s+l)}decode(e,s){const l=this.makeDestinationObject();if(s===void 0&&(s=0),this!==this.union.getVariant(e,s))throw new Error("variant mismatch");let d=0;return this.union.usesPrefixDiscriminator&&(d=this.union.discriminator.layout.span),this.layout?l[this.property]=this.layout.decode(e,s+d):this.property?l[this.property]=!0:this.union.usesPrefixDiscriminator&&(l[this.union.discriminator.property]=this.variant),l}encode(e,s,l){l===void 0&&(l=0);let d=0;if(this.union.usesPrefixDiscriminator&&(d=this.union.discriminator.layout.span),this.layout&&!e.hasOwnProperty(this.property))throw new TypeError("variant lacks property "+this.property);this.union.discriminator.encode(this.variant,s,l);let u=d;if(this.layout&&(this.layout.encode(e[this.property],s,l+d),u+=this.layout.getSpan(s,l+d),0<=this.union.span&&u>this.union.span))throw new Error("encoded variant overruns containing union");return u}fromArray(e){if(this.layout)return this.layout.fromArray(e)}};function fixBitwiseResult(t){return 0>t&&(t+=4294967296),t}class BitStructure extends Layout$1{constructor(e,s,l){if(!(e instanceof UInt$1||e instanceof UIntBE$1))throw new TypeError("word must be a UInt or UIntBE layout");if(typeof s=="string"&&l===void 0&&(l=s,s=void 0),4<e.span)throw new RangeError("word cannot exceed 32 bits");super(e.span,l),this.word=e,this.msb=!!s,this.fields=[];let d=0;this._packedSetValue=function(u){return d=fixBitwiseResult(u),this},this._packedGetValue=function(){return d}}decode(e,s){const l=this.makeDestinationObject();s===void 0&&(s=0);const d=this.word.decode(e,s);this._packedSetValue(d);for(const u of this.fields)u.property!==void 0&&(l[u.property]=u.decode(d));return l}encode(e,s,l){l===void 0&&(l=0);const d=this.word.decode(s,l);this._packedSetValue(d);for(const u of this.fields)if(u.property!==void 0){const p=e[u.property];p!==void 0&&u.encode(p)}return this.word.encode(this._packedGetValue(),s,l)}addField(e,s){const l=new BitField(this,e,s);return this.fields.push(l),l}addBoolean(e){const s=new Boolean$1(this,e);return this.fields.push(s),s}fieldFor(e){if(typeof e!="string")throw new TypeError("property must be string");for(const s of this.fields)if(s.property===e)return s}}class BitField{constructor(e,s,l){if(!(e instanceof BitStructure))throw new TypeError("container must be a BitStructure");if(!Number.isInteger(s)||0>=s)throw new TypeError("bits must be positive integer");const d=8*e.span,u=e.fields.reduce((p,m)=>p+m.bits,0);if(s+u>d)throw new Error("bits too long for span remainder ("+(d-u)+" of "+d+" remain)");this.container=e,this.bits=s,this.valueMask=(1<<s)-1,s===32&&(this.valueMask=4294967295),this.start=u,this.container.msb&&(this.start=d-u-s),this.wordMask=fixBitwiseResult(this.valueMask<<this.start),this.property=l}decode(){const e=this.container._packedGetValue();return fixBitwiseResult(e&this.wordMask)>>>this.start}encode(e){if(!Number.isInteger(e)||e!==fixBitwiseResult(e&this.valueMask))throw new TypeError(nameWithProperty$1("BitField.encode",this)+" value must be integer not exceeding "+this.valueMask);const s=this.container._packedGetValue(),l=fixBitwiseResult(e<<this.start);this.container._packedSetValue(fixBitwiseResult(s&~this.wordMask)|l)}}let Boolean$1=class extends BitField{constructor(e,s){super(e,1,s)}decode(e,s){return!!BitField.prototype.decode.call(this,e,s)}encode(e){return typeof e=="boolean"&&(e=+e),BitField.prototype.encode.call(this,e)}},Blob$2=class extends Layout$1{constructor(e,s){if(!(e instanceof ExternalLayout$1&&e.isCount()||Number.isInteger(e)&&0<=e))throw new TypeError("length must be positive integer or an unsigned integer ExternalLayout");let l=-1;e instanceof ExternalLayout$1||(l=e),super(l,s),this.length=e}getSpan(e,s){let l=this.span;return 0>l&&(l=this.length.decode(e,s)),l}decode(e,s){s===void 0&&(s=0);let l=this.span;return 0>l&&(l=this.length.decode(e,s)),e.slice(s,s+l)}encode(e,s,l){let d=this.length;if(this.length instanceof ExternalLayout$1&&(d=e.length),!(dist$2.Buffer.isBuffer(e)&&d===e.length))throw new TypeError(nameWithProperty$1("Blob.encode",this)+" requires (length "+d+") Buffer as src");if(l+d>s.length)throw new RangeError("encoding overruns Buffer");return s.write(e.toString("hex"),l,d,"hex"),this.length instanceof ExternalLayout$1&&this.length.encode(d,s,l),d}};class CString extends Layout$1{constructor(e){super(-1,e)}getSpan(e,s){if(!dist$2.Buffer.isBuffer(e))throw new TypeError("b must be a Buffer");s===void 0&&(s=0);let l=s;for(;l<e.length&&e[l]!==0;)l+=1;return 1+l-s}decode(e,s,l){s===void 0&&(s=0);let d=this.getSpan(e,s);return e.slice(s,s+d-1).toString("utf-8")}encode(e,s,l){l===void 0&&(l=0),typeof e!="string"&&(e=e.toString());const d=new dist$2.Buffer(e,"utf8"),u=d.length;if(l+u>s.length)throw new RangeError("encoding overruns Buffer");return d.copy(s,l),s[l+u]=0,u+1}}class UTF8 extends Layout$1{constructor(e,s){if(typeof e=="string"&&s===void 0&&(s=e,e=void 0),e===void 0)e=-1;else if(!Number.isInteger(e))throw new TypeError("maxSpan must be an integer");super(-1,s),this.maxSpan=e}getSpan(e,s){if(!dist$2.Buffer.isBuffer(e))throw new TypeError("b must be a Buffer");return s===void 0&&(s=0),e.length-s}decode(e,s,l){s===void 0&&(s=0);let d=this.getSpan(e,s);if(0<=this.maxSpan&&this.maxSpan<d)throw new RangeError("text length exceeds maxSpan");return e.slice(s,s+d).toString("utf-8")}encode(e,s,l){l===void 0&&(l=0),typeof e!="string"&&(e=e.toString());const d=new dist$2.Buffer(e,"utf8"),u=d.length;if(0<=this.maxSpan&&this.maxSpan<u)throw new RangeError("text length exceeds maxSpan");if(l+u>s.length)throw new RangeError("encoding overruns Buffer");return d.copy(s,l),u}}class Constant extends Layout$1{constructor(e,s){super(0,s),this.value=e}decode(e,s,l){return this.value}encode(e,s,l){return 0}}Layout$2.ExternalLayout=ExternalLayout$1;Layout$2.GreedyCount=GreedyCount;Layout$2.OffsetLayout=OffsetLayout$1;Layout$2.UInt=UInt$1;Layout$2.UIntBE=UIntBE$1;Layout$2.Int=Int;Layout$2.IntBE=IntBE;Layout$2.Float=Float;Layout$2.FloatBE=FloatBE;Layout$2.Double=Double;Layout$2.DoubleBE=DoubleBE;Layout$2.Sequence=Sequence;Layout$2.Structure=Structure$1;Layout$2.UnionDiscriminator=UnionDiscriminator$1;Layout$2.UnionLayoutDiscriminator=UnionLayoutDiscriminator$1;Layout$2.Union=Union$1;Layout$2.VariantLayout=VariantLayout$1;Layout$2.BitStructure=BitStructure;Layout$2.BitField=BitField;Layout$2.Boolean=Boolean$1;Layout$2.Blob=Blob$2;Layout$2.CString=CString;Layout$2.UTF8=UTF8;Layout$2.Constant=Constant;Layout$2.greedy=(t,e)=>new GreedyCount(t,e);Layout$2.offset=(t,e,s)=>new OffsetLayout$1(t,e,s);Layout$2.u8=t=>new UInt$1(1,t);Layout$2.u16=t=>new UInt$1(2,t);Layout$2.u24=t=>new UInt$1(3,t);Layout$2.u32=t=>new UInt$1(4,t);Layout$2.u40=t=>new UInt$1(5,t);Layout$2.u48=t=>new UInt$1(6,t);Layout$2.nu64=t=>new NearUInt64$1(t);Layout$2.u16be=t=>new UIntBE$1(2,t);Layout$2.u24be=t=>new UIntBE$1(3,t);Layout$2.u32be=t=>new UIntBE$1(4,t);Layout$2.u40be=t=>new UIntBE$1(5,t);Layout$2.u48be=t=>new UIntBE$1(6,t);Layout$2.nu64be=t=>new NearUInt64BE(t);Layout$2.s8=t=>new Int(1,t);Layout$2.s16=t=>new Int(2,t);Layout$2.s24=t=>new Int(3,t);Layout$2.s32=t=>new Int(4,t);Layout$2.s40=t=>new Int(5,t);Layout$2.s48=t=>new Int(6,t);Layout$2.ns64=t=>new NearInt64$1(t);Layout$2.s16be=t=>new IntBE(2,t);Layout$2.s24be=t=>new IntBE(3,t);Layout$2.s32be=t=>new IntBE(4,t);Layout$2.s40be=t=>new IntBE(5,t);Layout$2.s48be=t=>new IntBE(6,t);Layout$2.ns64be=t=>new NearInt64BE(t);Layout$2.f32=t=>new Float(t);Layout$2.f32be=t=>new FloatBE(t);Layout$2.f64=t=>new Double(t);Layout$2.f64be=t=>new DoubleBE(t);Layout$2.struct=(t,e,s)=>new Structure$1(t,e,s);Layout$2.bits=(t,e,s)=>new BitStructure(t,e,s);Layout$2.seq=(t,e,s)=>new Sequence(t,e,s);Layout$2.union=(t,e,s)=>new Union$1(t,e,s);Layout$2.unionLayoutDiscriminator=(t,e)=>new UnionLayoutDiscriminator$1(t,e);Layout$2.blob=(t,e)=>new Blob$2(t,e);Layout$2.cstr=t=>new CString(t);Layout$2.utf8=(t,e)=>new UTF8(t,e);Layout$2.const=(t,e)=>new Constant(t,e);const require$$5=getAugmentedNamespace(index_browser_esm);(function(t){var e=commonjsGlobal$1&&commonjsGlobal$1.__importDefault||function(x){return x&&x.__esModule?x:{default:x}};Object.defineProperty(t,"__esModule",{value:!0}),t.map=t.array=t.rustEnum=t.str=t.vecU8=t.tagged=t.vec=t.bool=t.option=t.publicKey=t.i256=t.u256=t.i128=t.u128=t.i64=t.u64=t.struct=t.f64=t.f32=t.i32=t.u32=t.i16=t.u16=t.i8=t.u8=void 0;const s=Layout$2,l=require$$5,d=e(bnExports);var u=Layout$2;Object.defineProperty(t,"u8",{enumerable:!0,get:function(){return u.u8}}),Object.defineProperty(t,"i8",{enumerable:!0,get:function(){return u.s8}}),Object.defineProperty(t,"u16",{enumerable:!0,get:function(){return u.u16}}),Object.defineProperty(t,"i16",{enumerable:!0,get:function(){return u.s16}}),Object.defineProperty(t,"u32",{enumerable:!0,get:function(){return u.u32}}),Object.defineProperty(t,"i32",{enumerable:!0,get:function(){return u.s32}}),Object.defineProperty(t,"f32",{enumerable:!0,get:function(){return u.f32}}),Object.defineProperty(t,"f64",{enumerable:!0,get:function(){return u.f64}}),Object.defineProperty(t,"struct",{enumerable:!0,get:function(){return u.struct}});class p extends s.Layout{constructor(M,E,C){super(M,C),this.blob=(0,s.blob)(M),this.signed=E}decode(M,E=0){const C=new d.default(this.blob.decode(M,E),10,"le");return this.signed?C.fromTwos(this.span*8).clone():C}encode(M,E,C=0){return this.signed&&(M=M.toTwos(this.span*8)),this.blob.encode(M.toArrayLike(dist$2.Buffer,"le",this.span),E,C)}}function m(x){return new p(8,!1,x)}t.u64=m;function y(x){return new p(8,!0,x)}t.i64=y;function h(x){return new p(16,!1,x)}t.u128=h;function v(x){return new p(16,!0,x)}t.i128=v;function A(x){return new p(32,!1,x)}t.u256=A;function w(x){return new p(32,!0,x)}t.i256=w;class I extends s.Layout{constructor(M,E,C,D){super(M.span,D),this.layout=M,this.decoder=E,this.encoder=C}decode(M,E){return this.decoder(this.layout.decode(M,E))}encode(M,E,C){return this.layout.encode(this.encoder(M),E,C)}getSpan(M,E){return this.layout.getSpan(M,E)}}function k(x){return new I((0,s.blob)(32),M=>new l.PublicKey(M),M=>M.toBuffer(),x)}t.publicKey=k;class $ extends s.Layout{constructor(M,E){super(-1,E),this.layout=M,this.discriminator=(0,s.u8)()}encode(M,E,C=0){return M==null?this.discriminator.encode(0,E,C):(this.discriminator.encode(1,E,C),this.layout.encode(M,E,C+1)+1)}decode(M,E=0){const C=this.discriminator.decode(M,E);if(C===0)return null;if(C===1)return this.layout.decode(M,E+1);throw new Error("Invalid option "+this.property)}getSpan(M,E=0){const C=this.discriminator.decode(M,E);if(C===0)return 1;if(C===1)return this.layout.getSpan(M,E+1)+1;throw new Error("Invalid option "+this.property)}}function P(x,M){return new $(x,M)}t.option=P;function z(x){return new I((0,s.u8)(),U,F,x)}t.bool=z;function U(x){if(x===0)return!1;if(x===1)return!0;throw new Error("Invalid bool: "+x)}function F(x){return x?1:0}function q(x,M){const E=(0,s.u32)("length"),C=(0,s.struct)([E,(0,s.seq)(x,(0,s.offset)(E,-E.span),"values")]);return new I(C,({values:D})=>D,D=>({values:D}),M)}t.vec=q;function V(x,M,E){const C=(0,s.struct)([m("tag"),M.replicate("data")]);function D({tag:L,data:W}){if(!L.eq(x))throw new Error("Invalid tag, expected: "+x.toString("hex")+", got: "+L.toString("hex"));return W}return new I(C,D,L=>({tag:x,data:L}),E)}t.tagged=V;function H(x){const M=(0,s.u32)("length"),E=(0,s.struct)([M,(0,s.blob)((0,s.offset)(M,-M.span),"data")]);return new I(E,({data:C})=>C,C=>({data:C}),x)}t.vecU8=H;function Z(x){return new I(H(),M=>M.toString("utf-8"),M=>dist$2.Buffer.from(M,"utf-8"),x)}t.str=Z;function ne(x,M,E){const C=(0,s.union)(E??(0,s.u8)(),M);return x.forEach((D,L)=>C.addVariant(L,D,D.property)),C}t.rustEnum=ne;function ee(x,M,E){const C=(0,s.struct)([(0,s.seq)(x,M,"values")]);return new I(C,({values:D})=>D,D=>({values:D}),E)}t.array=ee;class le extends s.Layout{constructor(M,E,C){super(M.span+E.span,C),this.keyLayout=M,this.valueLayout=E}decode(M,E){E=E||0;const C=this.keyLayout.decode(M,E),D=this.valueLayout.decode(M,E+this.keyLayout.getSpan(M,E));return[C,D]}encode(M,E,C){C=C||0;const D=this.keyLayout.encode(M[0],E,C),L=this.valueLayout.encode(M[1],E,C+D);return D+L}getSpan(M,E){return this.keyLayout.getSpan(M,E)+this.valueLayout.getSpan(M,E)}}function j(x,M,E){const C=(0,s.u32)("length"),D=(0,s.struct)([C,(0,s.seq)(new le(x,M),(0,s.offset)(C,-C.span),"values")]);return new I(D,({values:L})=>new Map(L),L=>({values:Array.from(L.entries())}),E)}t.map=j})(dist$1);function accountSize$1(t,e){switch(e.type.kind){case"struct":return e.type.fields.map(s=>typeSize$1(t,s.type)).reduce((s,l)=>s+l,0);case"enum":{const s=e.type.variants.map(l=>l.fields?l.fields.map(d=>typeof d=="object"&&"name"in d?typeSize$1(t,d.type):typeSize$1(t,d)).reduce((d,u)=>d+u,0):0);return Math.max(...s)+1}case"alias":return typeSize$1(t,e.type.value)}}function typeSize$1(t,e){var s;switch(e){case"bool":return 1;case"u8":return 1;case"i8":return 1;case"i16":return 2;case"u16":return 2;case"u32":return 4;case"i32":return 4;case"f32":return 4;case"u64":return 8;case"i64":return 8;case"f64":return 8;case"u128":return 16;case"i128":return 16;case"u256":return 32;case"i256":return 32;case"bytes":return 1;case"string":return 1;case"publicKey":return 32;default:if("vec"in e)return 1;if("option"in e)return 1+typeSize$1(t,e.option);if("coption"in e)return 4+typeSize$1(t,e.coption);if("defined"in e){const l=((s=t.types)==null?void 0:s.filter(u=>u.name===e.defined))??[];if(l.length!==1)throw new IdlError$1(`Type not found: ${JSON.stringify(e)}`);let d=l[0];return accountSize$1(t,d)}if("array"in e){let l=e.array[0],d=e.array[1];return typeSize$1(t,l)*d}throw new Error(`Invalid type ${JSON.stringify(e)}`)}}function camelCase$2(t){return t.replace(/(?:^\w|[A-Z]|\b\w)/g,function(e,s){return s===0?e.toLowerCase():e.toUpperCase()}).replace(/[\s\-_]+/g,"")}function upperFirst(t){return t.charAt(0).toUpperCase()+t.slice(1)}var camelcase={exports:{}};const UPPERCASE=/[\p{Lu}]/u,LOWERCASE=/[\p{Ll}]/u,LEADING_CAPITAL=/^[\p{Lu}](?![\p{Lu}])/gu,IDENTIFIER=/([\p{Alpha}\p{N}_]|$)/u,SEPARATORS=/[_.\- ]+/,LEADING_SEPARATORS=new RegExp("^"+SEPARATORS.source),SEPARATORS_AND_IDENTIFIER=new RegExp(SEPARATORS.source+IDENTIFIER.source,"gu"),NUMBERS_AND_IDENTIFIER=new RegExp("\\d+"+IDENTIFIER.source,"gu"),preserveCamelCase=(t,e,s)=>{let l=!1,d=!1,u=!1;for(let p=0;p<t.length;p++){const m=t[p];l&&UPPERCASE.test(m)?(t=t.slice(0,p)+"-"+t.slice(p),l=!1,u=d,d=!0,p++):d&&u&&LOWERCASE.test(m)?(t=t.slice(0,p-1)+"-"+t.slice(p-1),u=d,d=!1,l=!0):(l=e(m)===m&&s(m)!==m,u=d,d=s(m)===m&&e(m)!==m)}return t},preserveConsecutiveUppercase=(t,e)=>(LEADING_CAPITAL.lastIndex=0,t.replace(LEADING_CAPITAL,s=>e(s))),postProcess=(t,e)=>(SEPARATORS_AND_IDENTIFIER.lastIndex=0,NUMBERS_AND_IDENTIFIER.lastIndex=0,t.replace(SEPARATORS_AND_IDENTIFIER,(s,l)=>e(l)).replace(NUMBERS_AND_IDENTIFIER,s=>e(s))),camelCase=(t,e)=>{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");if(e={pascalCase:!1,preserveConsecutiveUppercase:!1,...e},Array.isArray(t)?t=t.map(u=>u.trim()).filter(u=>u.length).join("-"):t=t.trim(),t.length===0)return"";const s=e.locale===!1?u=>u.toLowerCase():u=>u.toLocaleLowerCase(e.locale),l=e.locale===!1?u=>u.toUpperCase():u=>u.toLocaleUpperCase(e.locale);return t.length===1?e.pascalCase?l(t):s(t):(t!==s(t)&&(t=preserveCamelCase(t,s,l)),t=t.replace(LEADING_SEPARATORS,""),e.preserveConsecutiveUppercase?t=preserveConsecutiveUppercase(t,s):t=s(t),e.pascalCase&&(t=l(t.charAt(0))+t.slice(1)),postProcess(t,l))};camelcase.exports=camelCase;camelcase.exports.default=camelCase;var camelcaseExports=camelcase.exports;const camelCase$1=getDefaultExportFromCjs$2(camelcaseExports);function zero$1(t){let e=t.length;for(;--e>=0;)t[e]=0}const MIN_MATCH$1=3,MAX_MATCH$1=258,LENGTH_CODES$1=29,LITERALS$1=256,L_CODES$1=LITERALS$1+1+LENGTH_CODES$1,D_CODES$1=30,DIST_CODE_LEN=512,static_ltree=new Array((L_CODES$1+2)*2);zero$1(static_ltree);const static_dtree=new Array(D_CODES$1*2);zero$1(static_dtree);const _dist_code=new Array(DIST_CODE_LEN);zero$1(_dist_code);const _length_code=new Array(MAX_MATCH$1-MIN_MATCH$1+1);zero$1(_length_code);const base_length=new Array(LENGTH_CODES$1);zero$1(base_length);const base_dist=new Array(D_CODES$1);zero$1(base_dist);const adler32=(t,e,s,l)=>{let d=t&65535|0,u=t>>>16&65535|0,p=0;for(;s!==0;){p=s>2e3?2e3:s,s-=p;do d=d+e[l++]|0,u=u+d|0;while(--p);d%=65521,u%=65521}return d|u<<16|0};var adler32_1=adler32;const makeTable=()=>{let t,e=[];for(var s=0;s<256;s++){t=s;for(var l=0;l<8;l++)t=t&1?3988292384^t>>>1:t>>>1;e[s]=t}return e},crcTable=new Uint32Array(makeTable()),crc32=(t,e,s,l)=>{const d=crcTable,u=l+s;t^=-1;for(let p=l;p<u;p++)t=t>>>8^d[(t^e[p])&255];return t^-1};var crc32_1=crc32,messages={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},constants$2={Z_NO_FLUSH:0,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_DEFLATED:8};const _has=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var assign=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const s=e.shift();if(s){if(typeof s!="object")throw new TypeError(s+"must be non-object");for(const l in s)_has(s,l)&&(t[l]=s[l])}}return t},flattenChunks=t=>{let e=0;for(let l=0,d=t.length;l<d;l++)e+=t[l].length;const s=new Uint8Array(e);for(let l=0,d=0,u=t.length;l<u;l++){let p=t[l];s.set(p,d),d+=p.length}return s},common={assign,flattenChunks};let STR_APPLY_UIA_OK=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{STR_APPLY_UIA_OK=!1}const _utf8len=new Uint8Array(256);for(let t=0;t<256;t++)_utf8len[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;_utf8len[254]=_utf8len[254]=1;var string2buf=t=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(t);let e,s,l,d,u,p=t.length,m=0;for(d=0;d<p;d++)s=t.charCodeAt(d),(s&64512)===55296&&d+1<p&&(l=t.charCodeAt(d+1),(l&64512)===56320&&(s=65536+(s-55296<<10)+(l-56320),d++)),m+=s<128?1:s<2048?2:s<65536?3:4;for(e=new Uint8Array(m),u=0,d=0;u<m;d++)s=t.charCodeAt(d),(s&64512)===55296&&d+1<p&&(l=t.charCodeAt(d+1),(l&64512)===56320&&(s=65536+(s-55296<<10)+(l-56320),d++)),s<128?e[u++]=s:s<2048?(e[u++]=192|s>>>6,e[u++]=128|s&63):s<65536?(e[u++]=224|s>>>12,e[u++]=128|s>>>6&63,e[u++]=128|s&63):(e[u++]=240|s>>>18,e[u++]=128|s>>>12&63,e[u++]=128|s>>>6&63,e[u++]=128|s&63);return e};const buf2binstring=(t,e)=>{if(e<65534&&t.subarray&&STR_APPLY_UIA_OK)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let s="";for(let l=0;l<e;l++)s+=String.fromCharCode(t[l]);return s};var buf2string=(t,e)=>{const s=e||t.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(t.subarray(0,e));let l,d;const u=new Array(s*2);for(d=0,l=0;l<s;){let p=t[l++];if(p<128){u[d++]=p;continue}let m=_utf8len[p];if(m>4){u[d++]=65533,l+=m-1;continue}for(p&=m===2?31:m===3?15:7;m>1&&l<s;)p=p<<6|t[l++]&63,m--;if(m>1){u[d++]=65533;continue}p<65536?u[d++]=p:(p-=65536,u[d++]=55296|p>>10&1023,u[d++]=56320|p&1023)}return buf2binstring(u,d)},utf8border=(t,e)=>{e=e||t.length,e>t.length&&(e=t.length);let s=e-1;for(;s>=0&&(t[s]&192)===128;)s--;return s<0||s===0?e:s+_utf8len[t[s]]>e?s:e},strings={string2buf,buf2string,utf8border};function ZStream(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var zstream=ZStream;const BAD$1=16209,TYPE$1=16191;var inffast=function(e,s){let l,d,u,p,m,y,h,v,A,w,I,k,$,P,z,U,F,q,V,H,Z,ne,ee,le;const j=e.state;l=e.next_in,ee=e.input,d=l+(e.avail_in-5),u=e.next_out,le=e.output,p=u-(s-e.avail_out),m=u+(e.avail_out-257),y=j.dmax,h=j.wsize,v=j.whave,A=j.wnext,w=j.window,I=j.hold,k=j.bits,$=j.lencode,P=j.distcode,z=(1<<j.lenbits)-1,U=(1<<j.distbits)-1;e:do{k<15&&(I+=ee[l++]<<k,k+=8,I+=ee[l++]<<k,k+=8),F=$[I&z];t:for(;;){if(q=F>>>24,I>>>=q,k-=q,q=F>>>16&255,q===0)le[u++]=F&65535;else if(q&16){V=F&65535,q&=15,q&&(k<q&&(I+=ee[l++]<<k,k+=8),V+=I&(1<<q)-1,I>>>=q,k-=q),k<15&&(I+=ee[l++]<<k,k+=8,I+=ee[l++]<<k,k+=8),F=P[I&U];r:for(;;){if(q=F>>>24,I>>>=q,k-=q,q=F>>>16&255,q&16){if(H=F&65535,q&=15,k<q&&(I+=ee[l++]<<k,k+=8,k<q&&(I+=ee[l++]<<k,k+=8)),H+=I&(1<<q)-1,H>y){e.msg="invalid distance too far back",j.mode=BAD$1;break e}if(I>>>=q,k-=q,q=u-p,H>q){if(q=H-q,q>v&&j.sane){e.msg="invalid distance too far back",j.mode=BAD$1;break e}if(Z=0,ne=w,A===0){if(Z+=h-q,q<V){V-=q;do le[u++]=w[Z++];while(--q);Z=u-H,ne=le}}else if(A<q){if(Z+=h+A-q,q-=A,q<V){V-=q;do le[u++]=w[Z++];while(--q);if(Z=0,A<V){q=A,V-=q;do le[u++]=w[Z++];while(--q);Z=u-H,ne=le}}}else if(Z+=A-q,q<V){V-=q;do le[u++]=w[Z++];while(--q);Z=u-H,ne=le}for(;V>2;)le[u++]=ne[Z++],le[u++]=ne[Z++],le[u++]=ne[Z++],V-=3;V&&(le[u++]=ne[Z++],V>1&&(le[u++]=ne[Z++]))}else{Z=u-H;do le[u++]=le[Z++],le[u++]=le[Z++],le[u++]=le[Z++],V-=3;while(V>2);V&&(le[u++]=le[Z++],V>1&&(le[u++]=le[Z++]))}}else if(q&64){e.msg="invalid distance code",j.mode=BAD$1;break e}else{F=P[(F&65535)+(I&(1<<q)-1)];continue r}break}}else if(q&64)if(q&32){j.mode=TYPE$1;break e}else{e.msg="invalid literal/length code",j.mode=BAD$1;break e}else{F=$[(F&65535)+(I&(1<<q)-1)];continue t}break}}while(l<d&&u<m);V=k>>3,l-=V,k-=V<<3,I&=(1<<k)-1,e.next_in=l,e.next_out=u,e.avail_in=l<d?5+(d-l):5-(l-d),e.avail_out=u<m?257+(m-u):257-(u-m),j.hold=I,j.bits=k};const MAXBITS=15,ENOUGH_LENS$1=852,ENOUGH_DISTS$1=592,CODES$1=0,LENS$1=1,DISTS$1=2,lbase=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),lext=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),dbase=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),dext=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]),inflate_table=(t,e,s,l,d,u,p,m)=>{const y=m.bits;let h=0,v=0,A=0,w=0,I=0,k=0,$=0,P=0,z=0,U=0,F,q,V,H,Z,ne=null,ee;const le=new Uint16Array(MAXBITS+1),j=new Uint16Array(MAXBITS+1);let x=null,M,E,C;for(h=0;h<=MAXBITS;h++)le[h]=0;for(v=0;v<l;v++)le[e[s+v]]++;for(I=y,w=MAXBITS;w>=1&&le[w]===0;w--);if(I>w&&(I=w),w===0)return d[u++]=1<<24|64<<16|0,d[u++]=1<<24|64<<16|0,m.bits=1,0;for(A=1;A<w&&le[A]===0;A++);for(I<A&&(I=A),P=1,h=1;h<=MAXBITS;h++)if(P<<=1,P-=le[h],P<0)return-1;if(P>0&&(t===CODES$1||w!==1))return-1;for(j[1]=0,h=1;h<MAXBITS;h++)j[h+1]=j[h]+le[h];for(v=0;v<l;v++)e[s+v]!==0&&(p[j[e[s+v]]++]=v);if(t===CODES$1?(ne=x=p,ee=20):t===LENS$1?(ne=lbase,x=lext,ee=257):(ne=dbase,x=dext,ee=0),U=0,v=0,h=A,Z=u,k=I,$=0,V=-1,z=1<<I,H=z-1,t===LENS$1&&z>ENOUGH_LENS$1||t===DISTS$1&&z>ENOUGH_DISTS$1)return 1;for(;;){M=h-$,p[v]+1<ee?(E=0,C=p[v]):p[v]>=ee?(E=x[p[v]-ee],C=ne[p[v]-ee]):(E=96,C=0),F=1<<h-$,q=1<<k,A=q;do q-=F,d[Z+(U>>$)+q]=M<<24|E<<16|C|0;while(q!==0);for(F=1<<h-1;U&F;)F>>=1;if(F!==0?(U&=F-1,U+=F):U=0,v++,--le[h]===0){if(h===w)break;h=e[s+p[v]]}if(h>I&&(U&H)!==V){for($===0&&($=I),Z+=A,k=h-$,P=1<<k;k+$<w&&(P-=le[k+$],!(P<=0));)k++,P<<=1;if(z+=1<<k,t===LENS$1&&z>ENOUGH_LENS$1||t===DISTS$1&&z>ENOUGH_DISTS$1)return 1;V=U&H,d[V]=I<<24|k<<16|Z-u|0}}return U!==0&&(d[Z+U]=h-$<<24|64<<16|0),m.bits=I,0};var inftrees=inflate_table;const CODES=0,LENS=1,DISTS=2,{Z_FINISH:Z_FINISH$1,Z_BLOCK,Z_TREES,Z_OK:Z_OK$1,Z_STREAM_END:Z_STREAM_END$1,Z_NEED_DICT:Z_NEED_DICT$1,Z_STREAM_ERROR:Z_STREAM_ERROR$1,Z_DATA_ERROR:Z_DATA_ERROR$1,Z_MEM_ERROR:Z_MEM_ERROR$1,Z_BUF_ERROR,Z_DEFLATED}=constants$2,HEAD=16180,FLAGS=16181,TIME=16182,OS=16183,EXLEN=16184,EXTRA=16185,NAME=16186,COMMENT=16187,HCRC=16188,DICTID=16189,DICT=16190,TYPE=16191,TYPEDO=16192,STORED=16193,COPY_=16194,COPY=16195,TABLE=16196,LENLENS=16197,CODELENS=16198,LEN_=16199,LEN=16200,LENEXT=16201,DIST=16202,DISTEXT=16203,MATCH=16204,LIT=16205,CHECK=16206,LENGTH=16207,DONE=16208,BAD=16209,MEM=16210,SYNC=16211,ENOUGH_LENS=852,ENOUGH_DISTS=592,MAX_WBITS=15,DEF_WBITS=MAX_WBITS,zswap32=t=>(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24);function InflateState(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const inflateStateCheck=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode<HEAD||e.mode>SYNC?1:0},inflateResetKeep=t=>{if(inflateStateCheck(t))return Z_STREAM_ERROR$1;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=e.wrap&1),e.mode=HEAD,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(ENOUGH_LENS),e.distcode=e.distdyn=new Int32Array(ENOUGH_DISTS),e.sane=1,e.back=-1,Z_OK$1},inflateReset=t=>{if(inflateStateCheck(t))return Z_STREAM_ERROR$1;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,inflateResetKeep(t)},inflateReset2=(t,e)=>{let s;if(inflateStateCheck(t))return Z_STREAM_ERROR$1;const l=t.state;return e<0?(s=0,e=-e):(s=(e>>4)+5,e<48&&(e&=15)),e&&(e<8||e>15)?Z_STREAM_ERROR$1:(l.window!==null&&l.wbits!==e&&(l.window=null),l.wrap=s,l.wbits=e,inflateReset(t))},inflateInit2=(t,e)=>{if(!t)return Z_STREAM_ERROR$1;const s=new InflateState;t.state=s,s.strm=t,s.window=null,s.mode=HEAD;const l=inflateReset2(t,e);return l!==Z_OK$1&&(t.state=null),l},inflateInit=t=>inflateInit2(t,DEF_WBITS);let virgin=!0,lenfix,distfix;const fixedtables=t=>{if(virgin){lenfix=new Int32Array(512),distfix=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(inftrees(LENS,t.lens,0,288,lenfix,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;inftrees(DISTS,t.lens,0,32,distfix,0,t.work,{bits:5}),virgin=!1}t.lencode=lenfix,t.lenbits=9,t.distcode=distfix,t.distbits=5},updatewindow=(t,e,s,l)=>{let d;const u=t.state;return u.window===null&&(u.wsize=1<<u.wbits,u.wnext=0,u.whave=0,u.window=new Uint8Array(u.wsize)),l>=u.wsize?(u.window.set(e.subarray(s-u.wsize,s),0),u.wnext=0,u.whave=u.wsize):(d=u.wsize-u.wnext,d>l&&(d=l),u.window.set(e.subarray(s-l,s-l+d),u.wnext),l-=d,l?(u.window.set(e.subarray(s-l,s),0),u.wnext=l,u.whave=u.wsize):(u.wnext+=d,u.wnext===u.wsize&&(u.wnext=0),u.whave<u.wsize&&(u.whave+=d))),0},inflate$2=(t,e)=>{let s,l,d,u,p,m,y,h,v,A,w,I,k,$,P=0,z,U,F,q,V,H,Z,ne;const ee=new Uint8Array(4);let le,j;const x=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(inflateStateCheck(t)||!t.output||!t.input&&t.avail_in!==0)return Z_STREAM_ERROR$1;s=t.state,s.mode===TYPE&&(s.mode=TYPEDO),p=t.next_out,d=t.output,y=t.avail_out,u=t.next_in,l=t.input,m=t.avail_in,h=s.hold,v=s.bits,A=m,w=y,ne=Z_OK$1;e:for(;;)switch(s.mode){case HEAD:if(s.wrap===0){s.mode=TYPEDO;break}for(;v<16;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(s.wrap&2&&h===35615){s.wbits===0&&(s.wbits=15),s.check=0,ee[0]=h&255,ee[1]=h>>>8&255,s.check=crc32_1(s.check,ee,2,0),h=0,v=0,s.mode=FLAGS;break}if(s.head&&(s.head.done=!1),!(s.wrap&1)||(((h&255)<<8)+(h>>8))%31){t.msg="incorrect header check",s.mode=BAD;break}if((h&15)!==Z_DEFLATED){t.msg="unknown compression method",s.mode=BAD;break}if(h>>>=4,v-=4,Z=(h&15)+8,s.wbits===0&&(s.wbits=Z),Z>15||Z>s.wbits){t.msg="invalid window size",s.mode=BAD;break}s.dmax=1<<s.wbits,s.flags=0,t.adler=s.check=1,s.mode=h&512?DICTID:TYPE,h=0,v=0;break;case FLAGS:for(;v<16;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(s.flags=h,(s.flags&255)!==Z_DEFLATED){t.msg="unknown compression method",s.mode=BAD;break}if(s.flags&57344){t.msg="unknown header flags set",s.mode=BAD;break}s.head&&(s.head.text=h>>8&1),s.flags&512&&s.wrap&4&&(ee[0]=h&255,ee[1]=h>>>8&255,s.check=crc32_1(s.check,ee,2,0)),h=0,v=0,s.mode=TIME;case TIME:for(;v<32;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}s.head&&(s.head.time=h),s.flags&512&&s.wrap&4&&(ee[0]=h&255,ee[1]=h>>>8&255,ee[2]=h>>>16&255,ee[3]=h>>>24&255,s.check=crc32_1(s.check,ee,4,0)),h=0,v=0,s.mode=OS;case OS:for(;v<16;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}s.head&&(s.head.xflags=h&255,s.head.os=h>>8),s.flags&512&&s.wrap&4&&(ee[0]=h&255,ee[1]=h>>>8&255,s.check=crc32_1(s.check,ee,2,0)),h=0,v=0,s.mode=EXLEN;case EXLEN:if(s.flags&1024){for(;v<16;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}s.length=h,s.head&&(s.head.extra_len=h),s.flags&512&&s.wrap&4&&(ee[0]=h&255,ee[1]=h>>>8&255,s.check=crc32_1(s.check,ee,2,0)),h=0,v=0}else s.head&&(s.head.extra=null);s.mode=EXTRA;case EXTRA:if(s.flags&1024&&(I=s.length,I>m&&(I=m),I&&(s.head&&(Z=s.head.extra_len-s.length,s.head.extra||(s.head.extra=new Uint8Array(s.head.extra_len)),s.head.extra.set(l.subarray(u,u+I),Z)),s.flags&512&&s.wrap&4&&(s.check=crc32_1(s.check,l,I,u)),m-=I,u+=I,s.length-=I),s.length))break e;s.length=0,s.mode=NAME;case NAME:if(s.flags&2048){if(m===0)break e;I=0;do Z=l[u+I++],s.head&&Z&&s.length<65536&&(s.head.name+=String.fromCharCode(Z));while(Z&&I<m);if(s.flags&512&&s.wrap&4&&(s.check=crc32_1(s.check,l,I,u)),m-=I,u+=I,Z)break e}else s.head&&(s.head.name=null);s.length=0,s.mode=COMMENT;case COMMENT:if(s.flags&4096){if(m===0)break e;I=0;do Z=l[u+I++],s.head&&Z&&s.length<65536&&(s.head.comment+=String.fromCharCode(Z));while(Z&&I<m);if(s.flags&512&&s.wrap&4&&(s.check=crc32_1(s.check,l,I,u)),m-=I,u+=I,Z)break e}else s.head&&(s.head.comment=null);s.mode=HCRC;case HCRC:if(s.flags&512){for(;v<16;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(s.wrap&4&&h!==(s.check&65535)){t.msg="header crc mismatch",s.mode=BAD;break}h=0,v=0}s.head&&(s.head.hcrc=s.flags>>9&1,s.head.done=!0),t.adler=s.check=0,s.mode=TYPE;break;case DICTID:for(;v<32;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}t.adler=s.check=zswap32(h),h=0,v=0,s.mode=DICT;case DICT:if(s.havedict===0)return t.next_out=p,t.avail_out=y,t.next_in=u,t.avail_in=m,s.hold=h,s.bits=v,Z_NEED_DICT$1;t.adler=s.check=1,s.mode=TYPE;case TYPE:if(e===Z_BLOCK||e===Z_TREES)break e;case TYPEDO:if(s.last){h>>>=v&7,v-=v&7,s.mode=CHECK;break}for(;v<3;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}switch(s.last=h&1,h>>>=1,v-=1,h&3){case 0:s.mode=STORED;break;case 1:if(fixedtables(s),s.mode=LEN_,e===Z_TREES){h>>>=2,v-=2;break e}break;case 2:s.mode=TABLE;break;case 3:t.msg="invalid block type",s.mode=BAD}h>>>=2,v-=2;break;case STORED:for(h>>>=v&7,v-=v&7;v<32;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if((h&65535)!==(h>>>16^65535)){t.msg="invalid stored block lengths",s.mode=BAD;break}if(s.length=h&65535,h=0,v=0,s.mode=COPY_,e===Z_TREES)break e;case COPY_:s.mode=COPY;case COPY:if(I=s.length,I){if(I>m&&(I=m),I>y&&(I=y),I===0)break e;d.set(l.subarray(u,u+I),p),m-=I,u+=I,y-=I,p+=I,s.length-=I;break}s.mode=TYPE;break;case TABLE:for(;v<14;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(s.nlen=(h&31)+257,h>>>=5,v-=5,s.ndist=(h&31)+1,h>>>=5,v-=5,s.ncode=(h&15)+4,h>>>=4,v-=4,s.nlen>286||s.ndist>30){t.msg="too many length or distance symbols",s.mode=BAD;break}s.have=0,s.mode=LENLENS;case LENLENS:for(;s.have<s.ncode;){for(;v<3;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}s.lens[x[s.have++]]=h&7,h>>>=3,v-=3}for(;s.have<19;)s.lens[x[s.have++]]=0;if(s.lencode=s.lendyn,s.lenbits=7,le={bits:s.lenbits},ne=inftrees(CODES,s.lens,0,19,s.lencode,0,s.work,le),s.lenbits=le.bits,ne){t.msg="invalid code lengths set",s.mode=BAD;break}s.have=0,s.mode=CODELENS;case CODELENS:for(;s.have<s.nlen+s.ndist;){for(;P=s.lencode[h&(1<<s.lenbits)-1],z=P>>>24,U=P>>>16&255,F=P&65535,!(z<=v);){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(F<16)h>>>=z,v-=z,s.lens[s.have++]=F;else{if(F===16){for(j=z+2;v<j;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(h>>>=z,v-=z,s.have===0){t.msg="invalid bit length repeat",s.mode=BAD;break}Z=s.lens[s.have-1],I=3+(h&3),h>>>=2,v-=2}else if(F===17){for(j=z+3;v<j;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}h>>>=z,v-=z,Z=0,I=3+(h&7),h>>>=3,v-=3}else{for(j=z+7;v<j;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}h>>>=z,v-=z,Z=0,I=11+(h&127),h>>>=7,v-=7}if(s.have+I>s.nlen+s.ndist){t.msg="invalid bit length repeat",s.mode=BAD;break}for(;I--;)s.lens[s.have++]=Z}}if(s.mode===BAD)break;if(s.lens[256]===0){t.msg="invalid code -- missing end-of-block",s.mode=BAD;break}if(s.lenbits=9,le={bits:s.lenbits},ne=inftrees(LENS,s.lens,0,s.nlen,s.lencode,0,s.work,le),s.lenbits=le.bits,ne){t.msg="invalid literal/lengths set",s.mode=BAD;break}if(s.distbits=6,s.distcode=s.distdyn,le={bits:s.distbits},ne=inftrees(DISTS,s.lens,s.nlen,s.ndist,s.distcode,0,s.work,le),s.distbits=le.bits,ne){t.msg="invalid distances set",s.mode=BAD;break}if(s.mode=LEN_,e===Z_TREES)break e;case LEN_:s.mode=LEN;case LEN:if(m>=6&&y>=258){t.next_out=p,t.avail_out=y,t.next_in=u,t.avail_in=m,s.hold=h,s.bits=v,inffast(t,w),p=t.next_out,d=t.output,y=t.avail_out,u=t.next_in,l=t.input,m=t.avail_in,h=s.hold,v=s.bits,s.mode===TYPE&&(s.back=-1);break}for(s.back=0;P=s.lencode[h&(1<<s.lenbits)-1],z=P>>>24,U=P>>>16&255,F=P&65535,!(z<=v);){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(U&&!(U&240)){for(q=z,V=U,H=F;P=s.lencode[H+((h&(1<<q+V)-1)>>q)],z=P>>>24,U=P>>>16&255,F=P&65535,!(q+z<=v);){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}h>>>=q,v-=q,s.back+=q}if(h>>>=z,v-=z,s.back+=z,s.length=F,U===0){s.mode=LIT;break}if(U&32){s.back=-1,s.mode=TYPE;break}if(U&64){t.msg="invalid literal/length code",s.mode=BAD;break}s.extra=U&15,s.mode=LENEXT;case LENEXT:if(s.extra){for(j=s.extra;v<j;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}s.length+=h&(1<<s.extra)-1,h>>>=s.extra,v-=s.extra,s.back+=s.extra}s.was=s.length,s.mode=DIST;case DIST:for(;P=s.distcode[h&(1<<s.distbits)-1],z=P>>>24,U=P>>>16&255,F=P&65535,!(z<=v);){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(!(U&240)){for(q=z,V=U,H=F;P=s.distcode[H+((h&(1<<q+V)-1)>>q)],z=P>>>24,U=P>>>16&255,F=P&65535,!(q+z<=v);){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}h>>>=q,v-=q,s.back+=q}if(h>>>=z,v-=z,s.back+=z,U&64){t.msg="invalid distance code",s.mode=BAD;break}s.offset=F,s.extra=U&15,s.mode=DISTEXT;case DISTEXT:if(s.extra){for(j=s.extra;v<j;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}s.offset+=h&(1<<s.extra)-1,h>>>=s.extra,v-=s.extra,s.back+=s.extra}if(s.offset>s.dmax){t.msg="invalid distance too far back",s.mode=BAD;break}s.mode=MATCH;case MATCH:if(y===0)break e;if(I=w-y,s.offset>I){if(I=s.offset-I,I>s.whave&&s.sane){t.msg="invalid distance too far back",s.mode=BAD;break}I>s.wnext?(I-=s.wnext,k=s.wsize-I):k=s.wnext-I,I>s.length&&(I=s.length),$=s.window}else $=d,k=p-s.offset,I=s.length;I>y&&(I=y),y-=I,s.length-=I;do d[p++]=$[k++];while(--I);s.length===0&&(s.mode=LEN);break;case LIT:if(y===0)break e;d[p++]=s.length,y--,s.mode=LEN;break;case CHECK:if(s.wrap){for(;v<32;){if(m===0)break e;m--,h|=l[u++]<<v,v+=8}if(w-=y,t.total_out+=w,s.total+=w,s.wrap&4&&w&&(t.adler=s.check=s.flags?crc32_1(s.check,d,w,p-w):adler32_1(s.check,d,w,p-w)),w=y,s.wrap&4&&(s.flags?h:zswap32(h))!==s.check){t.msg="incorrect data check",s.mode=BAD;break}h=0,v=0}s.mode=LENGTH;case LENGTH:if(s.wrap&&s.flags){for(;v<32;){if(m===0)break e;m--,h+=l[u++]<<v,v+=8}if(s.wrap&4&&h!==(s.total&4294967295)){t.msg="incorrect length check",s.mode=BAD;break}h=0,v=0}s.mode=DONE;case DONE:ne=Z_STREAM_END$1;break e;case BAD:ne=Z_DATA_ERROR$1;break e;case MEM:return Z_MEM_ERROR$1;case SYNC:default:return Z_STREAM_ERROR$1}return t.next_out=p,t.avail_out=y,t.next_in=u,t.avail_in=m,s.hold=h,s.bits=v,(s.wsize||w!==t.avail_out&&s.mode<BAD&&(s.mode<CHECK||e!==Z_FINISH$1))&&updatewindow(t,t.output,t.next_out,w-t.avail_out),A-=t.avail_in,w-=t.avail_out,t.total_in+=A,t.total_out+=w,s.total+=w,s.wrap&4&&w&&(t.adler=s.check=s.flags?crc32_1(s.check,d,w,t.next_out-w):adler32_1(s.check,d,w,t.next_out-w)),t.data_type=s.bits+(s.last?64:0)+(s.mode===TYPE?128:0)+(s.mode===LEN_||s.mode===COPY_?256:0),(A===0&&w===0||e===Z_FINISH$1)&&ne===Z_OK$1&&(ne=Z_BUF_ERROR),ne},inflateEnd=t=>{if(inflateStateCheck(t))return Z_STREAM_ERROR$1;let e=t.state;return e.window&&(e.window=null),t.state=null,Z_OK$1},inflateGetHeader=(t,e)=>{if(inflateStateCheck(t))return Z_STREAM_ERROR$1;const s=t.state;return s.wrap&2?(s.head=e,e.done=!1,Z_OK$1):Z_STREAM_ERROR$1},inflateSetDictionary=(t,e)=>{const s=e.length;let l,d,u;return inflateStateCheck(t)||(l=t.state,l.wrap!==0&&l.mode!==DICT)?Z_STREAM_ERROR$1:l.mode===DICT&&(d=1,d=adler32_1(d,e,s,0),d!==l.check)?Z_DATA_ERROR$1:(u=updatewindow(t,e,s,s),u?(l.mode=MEM,Z_MEM_ERROR$1):(l.havedict=1,Z_OK$1))};var inflateReset_1=inflateReset,inflateReset2_1=inflateReset2,inflateResetKeep_1=inflateResetKeep,inflateInit_1=inflateInit,inflateInit2_1=inflateInit2,inflate_2$1=inflate$2,inflateEnd_1=inflateEnd,inflateGetHeader_1=inflateGetHeader,inflateSetDictionary_1=inflateSetDictionary,inflateInfo="pako inflate (from Nodeca project)",inflate_1$2={inflateReset:inflateReset_1,inflateReset2:inflateReset2_1,inflateResetKeep:inflateResetKeep_1,inflateInit:inflateInit_1,inflateInit2:inflateInit2_1,inflate:inflate_2$1,inflateEnd:inflateEnd_1,inflateGetHeader:inflateGetHeader_1,inflateSetDictionary:inflateSetDictionary_1,inflateInfo};function GZheader(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var gzheader=GZheader;const toString=Object.prototype.toString,{Z_NO_FLUSH,Z_FINISH,Z_OK,Z_STREAM_END,Z_NEED_DICT,Z_STREAM_ERROR,Z_DATA_ERROR,Z_MEM_ERROR}=constants$2;function Inflate$1(t){this.options=common.assign({chunkSize:1024*64,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15||(e.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new zstream,this.strm.avail_out=0;let s=inflate_1$2.inflateInit2(this.strm,e.windowBits);if(s!==Z_OK)throw new Error(messages[s]);if(this.header=new gzheader,inflate_1$2.inflateGetHeader(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=strings.string2buf(e.dictionary):toString.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(s=inflate_1$2.inflateSetDictionary(this.strm,e.dictionary),s!==Z_OK)))throw new Error(messages[s])}Inflate$1.prototype.push=function(t,e){const s=this.strm,l=this.options.chunkSize,d=this.options.dictionary;let u,p,m;if(this.ended)return!1;for(e===~~e?p=e:p=e===!0?Z_FINISH:Z_NO_FLUSH,toString.call(t)==="[object ArrayBuffer]"?s.input=new Uint8Array(t):s.input=t,s.next_in=0,s.avail_in=s.input.length;;){for(s.avail_out===0&&(s.output=new Uint8Array(l),s.next_out=0,s.avail_out=l),u=inflate_1$2.inflate(s,p),u===Z_NEED_DICT&&d&&(u=inflate_1$2.inflateSetDictionary(s,d),u===Z_OK?u=inflate_1$2.inflate(s,p):u===Z_DATA_ERROR&&(u=Z_NEED_DICT));s.avail_in>0&&u===Z_STREAM_END&&s.state.wrap>0&&t[s.next_in]!==0;)inflate_1$2.inflateReset(s),u=inflate_1$2.inflate(s,p);switch(u){case Z_STREAM_ERROR:case Z_DATA_ERROR:case Z_NEED_DICT:case Z_MEM_ERROR:return this.onEnd(u),this.ended=!0,!1}if(m=s.avail_out,s.next_out&&(s.avail_out===0||u===Z_STREAM_END))if(this.options.to==="string"){let y=strings.utf8border(s.output,s.next_out),h=s.next_out-y,v=strings.buf2string(s.output,y);s.next_out=h,s.avail_out=l-h,h&&s.output.set(s.output.subarray(y,y+h),0),this.onData(v)}else this.onData(s.output.length===s.next_out?s.output:s.output.subarray(0,s.next_out));if(!(u===Z_OK&&m===0)){if(u===Z_STREAM_END)return u=inflate_1$2.inflateEnd(this.strm),this.onEnd(u),this.ended=!0,!0;if(s.avail_in===0)break}}return!0};Inflate$1.prototype.onData=function(t){this.chunks.push(t)};Inflate$1.prototype.onEnd=function(t){t===Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=common.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function inflate$1(t,e){const s=new Inflate$1(e);if(s.push(t),s.err)throw s.msg||messages[s.err];return s.result}var inflate_2=inflate$1,inflate_1$1={inflate:inflate_2};const{inflate}=inflate_1$1;var inflate_1=inflate,eventemitter3={exports:{}};(function(t){var e=Object.prototype.hasOwnProperty,s="~";function l(){}Object.create&&(l.prototype=Object.create(null),new l().__proto__||(s=!1));function d(y,h,v){this.fn=y,this.context=h,this.once=v||!1}function u(y,h,v,A,w){if(typeof v!="function")throw new TypeError("The listener must be a function");var I=new d(v,A||y,w),k=s?s+h:h;return y._events[k]?y._events[k].fn?y._events[k]=[y._events[k],I]:y._events[k].push(I):(y._events[k]=I,y._eventsCount++),y}function p(y,h){--y._eventsCount===0?y._events=new l:delete y._events[h]}function m(){this._events=new l,this._eventsCount=0}m.prototype.eventNames=function(){var h=[],v,A;if(this._eventsCount===0)return h;for(A in v=this._events)e.call(v,A)&&h.push(s?A.slice(1):A);return Object.getOwnPropertySymbols?h.concat(Object.getOwnPropertySymbols(v)):h},m.prototype.listeners=function(h){var v=s?s+h:h,A=this._events[v];if(!A)return[];if(A.fn)return[A.fn];for(var w=0,I=A.length,k=new Array(I);w<I;w++)k[w]=A[w].fn;return k},m.prototype.listenerCount=function(h){var v=s?s+h:h,A=this._events[v];return A?A.fn?1:A.length:0},m.prototype.emit=function(h,v,A,w,I,k){var $=s?s+h:h;if(!this._events[$])return!1;var P=this._events[$],z=arguments.length,U,F;if(P.fn){switch(P.once&&this.removeListener(h,P.fn,void 0,!0),z){case 1:return P.fn.call(P.context),!0;case 2:return P.fn.call(P.context,v),!0;case 3:return P.fn.call(P.context,v,A),!0;case 4:return P.fn.call(P.context,v,A,w),!0;case 5:return P.fn.call(P.context,v,A,w,I),!0;case 6:return P.fn.call(P.context,v,A,w,I,k),!0}for(F=1,U=new Array(z-1);F<z;F++)U[F-1]=arguments[F];P.fn.apply(P.context,U)}else{var q=P.length,V;for(F=0;F<q;F++)switch(P[F].once&&this.removeListener(h,P[F].fn,void 0,!0),z){case 1:P[F].fn.call(P[F].context);break;case 2:P[F].fn.call(P[F].context,v);break;case 3:P[F].fn.call(P[F].context,v,A);break;case 4:P[F].fn.call(P[F].context,v,A,w);break;default:if(!U)for(V=1,U=new Array(z-1);V<z;V++)U[V-1]=arguments[V];P[F].fn.apply(P[F].context,U)}}return!0},m.prototype.on=function(h,v,A){return u(this,h,v,A,!1)},m.prototype.once=function(h,v,A){return u(this,h,v,A,!0)},m.prototype.removeListener=function(h,v,A,w){var I=s?s+h:h;if(!this._events[I])return this;if(!v)return p(this,I),this;var k=this._events[I];if(k.fn)k.fn===v&&(!w||k.once)&&(!A||k.context===A)&&p(this,I);else{for(var $=0,P=[],z=k.length;$<z;$++)(k[$].fn!==v||w&&!k[$].once||A&&k[$].context!==A)&&P.push(k[$]);P.length?this._events[I]=P.length===1?P[0]:P:p(this,I)}return this},m.prototype.removeAllListeners=function(h){var v;return h?(v=s?s+h:h,this._events[v]&&p(this,v)):(this._events=new l,this._eventsCount=0),this},m.prototype.off=m.prototype.removeListener,m.prototype.addListener=m.prototype.on,m.prefixed=s,m.EventEmitter=m,t.exports=m})(eventemitter3);var eventemitter3Exports=eventemitter3.exports;const EventEmitter=getDefaultExportFromCjs$2(eventemitter3Exports);function chunks(t,e){return Array.apply(0,new Array(Math.ceil(t.length/e))).map((s,l)=>t.slice(l*e,(l+1)*e))}const isVersionedTransaction=t=>"version"in t;function encode$3(t){return t.reduce((e,s)=>e+s.toString(16).padStart(2,"0"),"0x")}function decode$3(t){t.indexOf("0x")===0&&(t=t.substr(2)),t.length%2===1&&(t="0"+t);let e=t.match(/.{2}/g);return e===null?bufferPolyfill.Buffer.from([]):bufferPolyfill.Buffer.from(e.map(s=>parseInt(s,16)))}var hex=Object.freeze({__proto__:null,encode:encode$3,decode:decode$3});function decode$2(t){return new TextDecoder("utf-8").decode(t)}function encode$2(t){return new TextEncoder().encode(t)}var utf8=Object.freeze({__proto__:null,decode:decode$2,encode:encode$2});function encode$1(t){return bs58$6.encode(t)}function decode$1(t){return bs58$6.decode(t)}var bs58=Object.freeze({__proto__:null,encode:encode$1,decode:decode$1});function encode(t){return t.toString("base64")}function decode(t){return bufferPolyfill.Buffer.from(t,"base64")}var base64=Object.freeze({__proto__:null,encode,decode}),index$1$1=Object.freeze({__proto__:null,hex,utf8,bs58,base64});function parseIdlErrors(t){const e=new Map;return t.errors&&t.errors.forEach(s=>{var l;let d=(l=s.msg)!==null&&l!==void 0?l:s.name;e.set(s.code,d)}),e}function toInstruction(t,...e){if(t.args.length!=e.length)throw new Error("Invalid argument length");const s={};let l=0;return t.args.forEach(d=>{s[d.name]=e[l],l+=1}),s}function validateAccounts(t,e={}){t.forEach(s=>{if("accounts"in s)validateAccounts(s.accounts,e[s.name]);else if(e[s.name]===void 0)throw new Error(`Invalid arguments: ${s.name} not provided.`)})}function translateAddress(t){return t instanceof PublicKey?t:new PublicKey(t)}class StructError extends TypeError{constructor(e,s){let l;const{message:d,...u}=e,{path:p}=e,m=p.length===0?d:"At path: "+p.join(".")+" -- "+d;super(m),this.value=void 0,this.key=void 0,this.type=void 0,this.refinement=void 0,this.path=void 0,this.branch=void 0,this.failures=void 0,Object.assign(this,u),this.name=this.constructor.name,this.failures=()=>{var y;return(y=l)!=null?y:l=[e,...s()]}}}function isIterable(t){return isObject(t)&&typeof t[Symbol.iterator]=="function"}function isObject(t){return typeof t=="object"&&t!=null}function print(t){return typeof t=="string"?JSON.stringify(t):""+t}function shiftIterator(t){const{done:e,value:s}=t.next();return e?void 0:s}function toFailure(t,e,s,l){if(t===!0)return;t===!1?t={}:typeof t=="string"&&(t={message:t});const{path:d,branch:u}=e,{type:p}=s,{refinement:m,message:y="Expected a value of type `"+p+"`"+(m?" with refinement `"+m+"`":"")+", but received: `"+print(l)+"`"}=t;return{value:l,type:p,refinement:m,key:d[d.length-1],path:d,branch:u,...t,message:y}}function*toFailures(t,e,s,l){isIterable(t)||(t=[t]);for(const d of t){const u=toFailure(d,e,s,l);u&&(yield u)}}function*run(t,e,s){s===void 0&&(s={});const{path:l=[],branch:d=[t],coerce:u=!1,mask:p=!1}=s,m={path:l,branch:d};if(u&&(t=e.coercer(t,m),p&&e.type!=="type"&&isObject(e.schema)&&isObject(t)&&!Array.isArray(t)))for(const h in t)e.schema[h]===void 0&&delete t[h];let y=!0;for(const h of e.validator(t,m))y=!1,yield[h,void 0];for(let[h,v,A]of e.entries(t,m)){const w=run(v,A,{path:h===void 0?l:[...l,h],branch:h===void 0?d:[...d,v],coerce:u,mask:p});for(const I of w)I[0]?(y=!1,yield[I[0],void 0]):u&&(v=I[1],h===void 0?t=v:t instanceof Map?t.set(h,v):t instanceof Set?t.add(v):isObject(t)&&(t[h]=v))}if(y)for(const h of e.refiner(t,m))y=!1,yield[h,void 0];y&&(yield[void 0,t])}class Struct{constructor(e){this.TYPE=void 0,this.type=void 0,this.schema=void 0,this.coercer=void 0,this.validator=void 0,this.refiner=void 0,this.entries=void 0;const{type:s,schema:l,validator:d,refiner:u,coercer:p=y=>y,entries:m=function*(){}}=e;this.type=s,this.schema=l,this.entries=m,this.coercer=p,d?this.validator=(y,h)=>{const v=d(y,h);return toFailures(v,h,this,y)}:this.validator=()=>[],u?this.refiner=(y,h)=>{const v=u(y,h);return toFailures(v,h,this,y)}:this.refiner=()=>[]}assert(e){return assert$1(e,this)}create(e){return create(e,this)}is(e){return is(e,this)}mask(e){return mask(e,this)}validate(e,s){return s===void 0&&(s={}),validate$1(e,this,s)}}function assert$1(t,e){const s=validate$1(t,e);if(s[0])throw s[0]}function create(t,e){const s=validate$1(t,e,{coerce:!0});if(s[0])throw s[0];return s[1]}function mask(t,e){const s=validate$1(t,e,{coerce:!0,mask:!0});if(s[0])throw s[0];return s[1]}function is(t,e){return!validate$1(t,e)[0]}function validate$1(t,e,s){s===void 0&&(s={});const l=run(t,e,s),d=shiftIterator(l);return d[0]?[new StructError(d[0],function*(){for(const p of l)p[0]&&(yield p[0])}),void 0]:[void 0,d[1]]}function define(t,e){return new Struct({type:t,schema:null,validator:e})}function any(){return define("any",()=>!0)}function array(t){return new Struct({type:"array",schema:t,*entries(e){if(t&&Array.isArray(e))for(const[s,l]of e.entries())yield[s,l,t]},coercer(e){return Array.isArray(e)?e.slice():e},validator(e){return Array.isArray(e)||"Expected an array value, but received: "+print(e)}})}function boolean(){return define("boolean",t=>typeof t=="boolean")}function literal(t){const e=print(t);return new Struct({type:"literal",schema:t,validator(s){return s===t||"Expected the literal `"+e+"`, but received: "+print(s)}})}function nullable(t){return new Struct({...t,validator:(e,s)=>e===null||t.validator(e,s),refiner:(e,s)=>e===null||t.refiner(e,s)})}function number(){return define("number",t=>typeof t=="number"&&!isNaN(t)||"Expected a number, but received: "+print(t))}function optional(t){return new Struct({...t,validator:(e,s)=>e===void 0||t.validator(e,s),refiner:(e,s)=>e===void 0||t.refiner(e,s)})}function string(){return define("string",t=>typeof t=="string"||"Expected a string, but received: "+print(t))}function type(t){const e=Object.keys(t);return new Struct({type:"type",schema:t,*entries(s){if(isObject(s))for(const l of e)yield[l,s[l],t[l]]},validator(s){return isObject(s)||"Expected an object, but received: "+print(s)}})}function union$1(t){const e=t.map(s=>s.type).join(" | ");return new Struct({type:"union",schema:null,coercer(s,l){return(t.find(u=>{const[p]=u.validate(s,{coerce:!0});return!p})||unknown()).coercer(s,l)},validator(s,l){const d=[];for(const u of t){const[...p]=run(s,u,l),[m]=p;if(m[0])for(const[y]of p)y&&d.push(y);else return[]}return["Expected the value to satisfy a union of `"+e+"`, but received: "+print(s),...d]}})}function unknown(){return define("unknown",()=>!0)}function coerce(t,e,s){return new Struct({...t,coercer:(l,d)=>is(l,e)?t.coercer(s(l,d),d):t.coercer(l,d)})}async function invoke(t,e,s,l){t=translateAddress(t),l||(l=getProvider());const d=new Transaction;if(d.add(new TransactionInstruction({programId:t,keys:e??[],data:s})),l.sendAndConfirm===void 0)throw new Error("This function requires 'Provider.sendAndConfirm' to be implemented.");return await l.sendAndConfirm(d,[])}const GET_MULTIPLE_ACCOUNTS_LIMIT=99;async function getMultipleAccounts(t,e,s){return(await getMultipleAccountsAndContext(t,e,s)).map(d=>d?{publicKey:d.publicKey,account:d.account}:null)}async function getMultipleAccountsAndContext(t,e,s){if(e.length<=GET_MULTIPLE_ACCOUNTS_LIMIT)return await getMultipleAccountsAndContextCore(t,e,s);{const l=chunks(e,GET_MULTIPLE_ACCOUNTS_LIMIT);return(await Promise.all(l.map(u=>getMultipleAccountsAndContextCore(t,u,s)))).flat()}}async function getMultipleAccountsAndContextCore(t,e,s){const l=s??t.commitment,{value:d,context:u}=await t.getMultipleAccountsInfoAndContext(e,l);return d.map((m,y)=>m===null?null:{publicKey:e[y],account:m,context:u})}async function simulateTransaction(t,e,s,l,d){var u;s&&s.length>0&&e.sign(...s);const p=e._compile(),m=p.serialize(),h=e._serialize(m).toString("base64"),v={encoding:"base64",commitment:l??t.commitment};if(d){const k=(Array.isArray(d)?d:p.nonProgramIds()).map($=>$.toBase58());v.accounts={encoding:"base64",addresses:k}}s&&(v.sigVerify=!0);const A=[h,v],w=await t._rpcRequest("simulateTransaction",A),I=create(w,SimulatedTransactionResponseStruct);if("error"in I){let k;if("data"in I.error&&(k=(u=I.error.data)===null||u===void 0?void 0:u.logs,k&&Array.isArray(k))){const $=`
195
195
  `,P=$+k.join($);console.error(I.error.message,P)}throw new SendTransactionError("failed to simulate transaction: "+I.error.message,k)}return I.result}function jsonRpcResult(t){return coerce(createRpcResult(t),UnknownRpcResult,e=>"error"in e?e:{...e,result:create(e.result,t)})}const UnknownRpcResult=createRpcResult(unknown());function createRpcResult(t){return union$1([type({jsonrpc:literal("2.0"),id:string(),result:t}),type({jsonrpc:literal("2.0"),id:string(),error:type({code:unknown(),message:string(),data:optional(any())})})])}function jsonRpcResultAndContext(t){return jsonRpcResult(type({context:type({slot:number()}),value:t}))}const SimulatedTransactionResponseStruct=jsonRpcResultAndContext(type({err:nullable(union$1([type({}),string()])),logs:nullable(array(string())),accounts:optional(nullable(array(nullable(type({executable:boolean(),owner:string(),lamports:number(),data:array(string()),rentEpoch:optional(number())}))))),unitsConsumed:optional(number())}));var rpc=Object.freeze({__proto__:null,invoke,getMultipleAccounts,getMultipleAccountsAndContext,simulateTransaction});class AnchorProvider{constructor(e,s,l){this.connection=e,this.wallet=s,this.opts=l,this.publicKey=s==null?void 0:s.publicKey}static defaultOptions(){return{preflightCommitment:"processed",commitment:"processed"}}static local(e,s){throw new Error("Provider local is not available on browser.")}static env(){throw new Error("Provider env is not available on browser.")}async sendAndConfirm(e,s,l){var d,u,p,m;if(l===void 0&&(l=this.opts),isVersionedTransaction(e))s&&e.sign(s);else if(e.feePayer=(d=e.feePayer)!==null&&d!==void 0?d:this.wallet.publicKey,e.recentBlockhash=(await this.connection.getLatestBlockhash(l.preflightCommitment)).blockhash,s)for(const h of s)e.partialSign(h);e=await this.wallet.signTransaction(e);const y=e.serialize();try{return await sendAndConfirmRawTransaction(this.connection,y,l)}catch(h){if(h instanceof ConfirmError){const v=encode$1(isVersionedTransaction(e)?((u=e.signatures)===null||u===void 0?void 0:u[0])||new Uint8Array:(p=e.signature)!==null&&p!==void 0?p:new Uint8Array),A=await this.connection.getTransaction(v,{commitment:"confirmed"});if(A){const w=(m=A.meta)===null||m===void 0?void 0:m.logMessages;throw w?new SendTransactionError(h.message,w):h}else throw h}else throw h}}async sendAll(e,s){var l,d,u;s===void 0&&(s=this.opts);const p=(await this.connection.getLatestBlockhash(s.preflightCommitment)).blockhash;let m=e.map(v=>{var A,w;if(isVersionedTransaction(v.tx)){let I=v.tx;return v.signers&&I.sign(v.signers),I}else{let I=v.tx,k=(A=v.signers)!==null&&A!==void 0?A:[];return I.feePayer=(w=I.feePayer)!==null&&w!==void 0?w:this.wallet.publicKey,I.recentBlockhash=p,k.forEach($=>{I.partialSign($)}),I}});const y=await this.wallet.signAllTransactions(m),h=[];for(let v=0;v<m.length;v+=1){const A=y[v],w=A.serialize();try{h.push(await sendAndConfirmRawTransaction(this.connection,w,s))}catch(I){if(I instanceof ConfirmError){const k=encode$1(isVersionedTransaction(A)?((l=A.signatures)===null||l===void 0?void 0:l[0])||new Uint8Array:(d=A.signature)!==null&&d!==void 0?d:new Uint8Array),$=await this.connection.getTransaction(k,{commitment:"confirmed"});if($){const P=(u=$.meta)===null||u===void 0?void 0:u.logMessages;throw P?new SendTransactionError(I.message,P):I}else throw I}else throw I}}return h}async simulate(e,s,l,d){let u=(await this.connection.getLatestBlockhash(l??this.connection.commitment)).blockhash,p;if(isVersionedTransaction(e)?(s&&(e.sign(s),e=await this.wallet.signTransaction(e)),p=await this.connection.simulateTransaction(e,{commitment:l})):(e.feePayer=e.feePayer||this.wallet.publicKey,e.recentBlockhash=u,s&&(e=await this.wallet.signTransaction(e)),p=await simulateTransaction(this.connection,e,s,l,d)),p.value.err)throw new SimulateError(p.value);return p.value}}class SimulateError extends Error{constructor(e,s){super(s),this.simulationResponse=e}}async function sendAndConfirmRawTransaction(t,e,s){const l=s&&{skipPreflight:s.skipPreflight,preflightCommitment:s.preflightCommitment||s.commitment},d=await t.sendRawTransaction(e,l),u=(await t.confirmTransaction(d,s&&s.commitment)).value;if(u.err)throw new ConfirmError(`Raw transaction ${d} failed (${JSON.stringify(u)})`);return d}class ConfirmError extends Error{constructor(e){super(e)}}function getProvider(){return AnchorProvider.local()}const _AVAILABLE_FEATURES=new Set(["anchor-deprecated-state","debug-logs"]),_FEATURES=new Map;function set(t){if(!_AVAILABLE_FEATURES.has(t))throw new Error("Invalid feature");_FEATURES.set(t,!0)}function isSet(t){return _FEATURES.get(t)!==void 0}var features=Object.freeze({__proto__:null,set,isSet});class IdlError extends Error{constructor(e){super(e),this.name="IdlError"}}class ProgramErrorStack{constructor(e){this.stack=e}static parse(e){var s;const l=/^Program (\w*) invoke/,d=/^Program \w* success/,u=[];for(let p=0;p<e.length;p++){if(d.exec(e[p])){u.pop();continue}const m=(s=l.exec(e[p]))===null||s===void 0?void 0:s[1];m&&u.push(new PublicKey(m))}return new ProgramErrorStack(u)}}class AnchorError extends Error{constructor(e,s,l,d,u,p){super(l.join(`
196
196
  `).replace("Program log: ","")),this.errorLogs=l,this.logs=d,this.error={errorCode:e,errorMessage:s,comparedValues:p,origin:u},this._programErrorStack=ProgramErrorStack.parse(d)}static parse(e){if(!e)return null;const s=e.findIndex(w=>w.startsWith("Program log: AnchorError"));if(s===-1)return null;const l=e[s],d=[l];let u;if(s+1<e.length){if(e[s+1]==="Program log: Left:"){const w=/^Program log: (.*)$/,I=w.exec(e[s+2])[1],k=w.exec(e[s+4])[1];u=[new PublicKey(I),new PublicKey(k)],d.push(...e.slice(s+1,s+5))}else if(e[s+1].startsWith("Program log: Left:")){const w=/^Program log: (Left|Right): (.*)$/,I=w.exec(e[s+1])[2],k=w.exec(e[s+2])[2];d.push(...e.slice(s+1,s+3)),u=[I,k]}}const m=/^Program log: AnchorError occurred\. Error Code: (.*)\. Error Number: (\d*)\. Error Message: (.*)\./.exec(l),h=/^Program log: AnchorError thrown in (.*):(\d*)\. Error Code: (.*)\. Error Number: (\d*)\. Error Message: (.*)\./.exec(l),A=/^Program log: AnchorError caused by account: (.*)\. Error Code: (.*)\. Error Number: (\d*)\. Error Message: (.*)\./.exec(l);if(m){const[w,I,k]=m.slice(1,4),$={code:w,number:parseInt(I)};return new AnchorError($,k,d,e,void 0,u)}else if(h){const[w,I,k,$,P]=h.slice(1,6),z={code:k,number:parseInt($)},U={file:w,line:parseInt(I)};return new AnchorError(z,P,d,e,U,u)}else if(A){const[w,I,k,$]=A.slice(1,5),P=w,z={code:I,number:parseInt(k)};return new AnchorError(z,$,d,e,P,u)}else return null}get program(){return this._programErrorStack.stack[this._programErrorStack.stack.length-1]}get programErrorStack(){return this._programErrorStack.stack}toString(){return this.message}}class ProgramError extends Error{constructor(e,s,l){super(),this.code=e,this.msg=s,this.logs=l,l&&(this._programErrorStack=ProgramErrorStack.parse(l))}static parse(e,s){const l=e.toString();let d;if(l.includes("custom program error:")){let m=l.split("custom program error: ");if(m.length!==2)return null;d=m[1]}else{const m=l.match(/"Custom":([0-9]+)}/g);if(!m||m.length>1)return null;d=m[0].match(/([0-9]+)/g)[0]}let u;try{u=parseInt(d)}catch{return null}let p=s.get(u);return p!==void 0?new ProgramError(u,p,e.logs):(p=LangErrorMessage.get(u),p!==void 0?new ProgramError(u,p,e.logs):null)}get program(){var e;return(e=this._programErrorStack)===null||e===void 0?void 0:e.stack[this._programErrorStack.stack.length-1]}get programErrorStack(){var e;return(e=this._programErrorStack)===null||e===void 0?void 0:e.stack}toString(){return this.msg}}function translateError(t,e){isSet("debug-logs")&&console.log("Translating error:",t);const s=AnchorError.parse(t.logs);if(s)return s;const l=ProgramError.parse(t,e);if(l)return l;if(t.logs){const d={get:function(u,p){return p==="programErrorStack"?u.programErrorStack.stack:p==="program"?u.programErrorStack.stack[t.programErrorStack.stack.length-1]:Reflect.get(...arguments)}};return t.programErrorStack=ProgramErrorStack.parse(t.logs),new Proxy(t,d)}return t}const LangErrorCode={InstructionMissing:100,InstructionFallbackNotFound:101,InstructionDidNotDeserialize:102,InstructionDidNotSerialize:103,IdlInstructionStub:1e3,IdlInstructionInvalidProgram:1001,ConstraintMut:2e3,ConstraintHasOne:2001,ConstraintSigner:2002,ConstraintRaw:2003,ConstraintOwner:2004,ConstraintRentExempt:2005,ConstraintSeeds:2006,ConstraintExecutable:2007,ConstraintState:2008,ConstraintAssociated:2009,ConstraintAssociatedInit:2010,ConstraintClose:2011,ConstraintAddress:2012,ConstraintZero:2013,ConstraintTokenMint:2014,ConstraintTokenOwner:2015,ConstraintMintMintAuthority:2016,ConstraintMintFreezeAuthority:2017,ConstraintMintDecimals:2018,ConstraintSpace:2019,ConstraintAccountIsNone:2020,RequireViolated:2500,RequireEqViolated:2501,RequireKeysEqViolated:2502,RequireNeqViolated:2503,RequireKeysNeqViolated:2504,RequireGtViolated:2505,RequireGteViolated:2506,AccountDiscriminatorAlreadySet:3e3,AccountDiscriminatorNotFound:3001,AccountDiscriminatorMismatch:3002,AccountDidNotDeserialize:3003,AccountDidNotSerialize:3004,AccountNotEnoughKeys:3005,AccountNotMutable:3006,AccountOwnedByWrongProgram:3007,InvalidProgramId:3008,InvalidProgramExecutable:3009,AccountNotSigner:3010,AccountNotSystemOwned:3011,AccountNotInitialized:3012,AccountNotProgramData:3013,AccountNotAssociatedTokenAccount:3014,AccountSysvarMismatch:3015,AccountReallocExceedsLimit:3016,AccountDuplicateReallocs:3017,DeclaredProgramIdMismatch:4100,Deprecated:5e3},LangErrorMessage=new Map([[LangErrorCode.InstructionMissing,"8 byte instruction identifier not provided"],[LangErrorCode.InstructionFallbackNotFound,"Fallback functions are not supported"],[LangErrorCode.InstructionDidNotDeserialize,"The program could not deserialize the given instruction"],[LangErrorCode.InstructionDidNotSerialize,"The program could not serialize the given instruction"],[LangErrorCode.IdlInstructionStub,"The program was compiled without idl instructions"],[LangErrorCode.IdlInstructionInvalidProgram,"The transaction was given an invalid program for the IDL instruction"],[LangErrorCode.ConstraintMut,"A mut constraint was violated"],[LangErrorCode.ConstraintHasOne,"A has one constraint was violated"],[LangErrorCode.ConstraintSigner,"A signer constraint was violated"],[LangErrorCode.ConstraintRaw,"A raw constraint was violated"],[LangErrorCode.ConstraintOwner,"An owner constraint was violated"],[LangErrorCode.ConstraintRentExempt,"A rent exemption constraint was violated"],[LangErrorCode.ConstraintSeeds,"A seeds constraint was violated"],[LangErrorCode.ConstraintExecutable,"An executable constraint was violated"],[LangErrorCode.ConstraintState,"Deprecated Error, feel free to replace with something else"],[LangErrorCode.ConstraintAssociated,"An associated constraint was violated"],[LangErrorCode.ConstraintAssociatedInit,"An associated init constraint was violated"],[LangErrorCode.ConstraintClose,"A close constraint was violated"],[LangErrorCode.ConstraintAddress,"An address constraint was violated"],[LangErrorCode.ConstraintZero,"Expected zero account discriminant"],[LangErrorCode.ConstraintTokenMint,"A token mint constraint was violated"],[LangErrorCode.ConstraintTokenOwner,"A token owner constraint was violated"],[LangErrorCode.ConstraintMintMintAuthority,"A mint mint authority constraint was violated"],[LangErrorCode.ConstraintMintFreezeAuthority,"A mint freeze authority constraint was violated"],[LangErrorCode.ConstraintMintDecimals,"A mint decimals constraint was violated"],[LangErrorCode.ConstraintSpace,"A space constraint was violated"],[LangErrorCode.ConstraintAccountIsNone,"A required account for the constraint is None"],[LangErrorCode.RequireViolated,"A require expression was violated"],[LangErrorCode.RequireEqViolated,"A require_eq expression was violated"],[LangErrorCode.RequireKeysEqViolated,"A require_keys_eq expression was violated"],[LangErrorCode.RequireNeqViolated,"A require_neq expression was violated"],[LangErrorCode.RequireKeysNeqViolated,"A require_keys_neq expression was violated"],[LangErrorCode.RequireGtViolated,"A require_gt expression was violated"],[LangErrorCode.RequireGteViolated,"A require_gte expression was violated"],[LangErrorCode.AccountDiscriminatorAlreadySet,"The account discriminator was already set on this account"],[LangErrorCode.AccountDiscriminatorNotFound,"No 8 byte discriminator was found on the account"],[LangErrorCode.AccountDiscriminatorMismatch,"8 byte discriminator did not match what was expected"],[LangErrorCode.AccountDidNotDeserialize,"Failed to deserialize the account"],[LangErrorCode.AccountDidNotSerialize,"Failed to serialize the account"],[LangErrorCode.AccountNotEnoughKeys,"Not enough account keys given to the instruction"],[LangErrorCode.AccountNotMutable,"The given account is not mutable"],[LangErrorCode.AccountOwnedByWrongProgram,"The given account is owned by a different program than expected"],[LangErrorCode.InvalidProgramId,"Program ID was not as expected"],[LangErrorCode.InvalidProgramExecutable,"Program account is not executable"],[LangErrorCode.AccountNotSigner,"The given account did not sign"],[LangErrorCode.AccountNotSystemOwned,"The given account is not owned by the system program"],[LangErrorCode.AccountNotInitialized,"The program expected this account to be already initialized"],[LangErrorCode.AccountNotProgramData,"The given account is not a program data account"],[LangErrorCode.AccountNotAssociatedTokenAccount,"The given account is not the associated token account"],[LangErrorCode.AccountSysvarMismatch,"The given public key does not match the required sysvar"],[LangErrorCode.AccountReallocExceedsLimit,"The account reallocation exceeds the MAX_PERMITTED_DATA_INCREASE limit"],[LangErrorCode.AccountDuplicateReallocs,"The account was duplicated for more than one reallocation"],[LangErrorCode.DeclaredProgramIdMismatch,"The declared program id does not match the actual program id"],[LangErrorCode.Deprecated,"The API being used is deprecated and should no longer be used"]]);var __assign$1=function(){return __assign$1=Object.assign||function(e){for(var s,l=1,d=arguments.length;l<d;l++){s=arguments[l];for(var u in s)Object.prototype.hasOwnProperty.call(s,u)&&(e[u]=s[u])}return e},__assign$1.apply(this,arguments)},__assign=function(){return __assign=Object.assign||function(e){for(var s,l=1,d=arguments.length;l<d;l++){s=arguments[l];for(var u in s)Object.prototype.hasOwnProperty.call(s,u)&&(e[u]=s[u])}return e},__assign.apply(this,arguments)};function lowerCase(t){return t.toLowerCase()}var DEFAULT_SPLIT_REGEXP=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g],DEFAULT_STRIP_REGEXP=/[^A-Z0-9]+/gi;function noCase(t,e){e===void 0&&(e={});for(var s=e.splitRegexp,l=s===void 0?DEFAULT_SPLIT_REGEXP:s,d=e.stripRegexp,u=d===void 0?DEFAULT_STRIP_REGEXP:d,p=e.transform,m=p===void 0?lowerCase:p,y=e.delimiter,h=y===void 0?" ":y,v=replace(replace(t,l,"$1\0$2"),u,"\0"),A=0,w=v.length;v.charAt(A)==="\0";)A++;for(;v.charAt(w-1)==="\0";)w--;return v.slice(A,w).split("\0").map(m).join(h)}function replace(t,e,s){return e instanceof RegExp?t.replace(e,s):e.reduce(function(l,d){return l.replace(d,s)},t)}function dotCase(t,e){return e===void 0&&(e={}),noCase(t,__assign({delimiter:"."},e))}function snakeCase(t,e){return e===void 0&&(e={}),dotCase(t,__assign$1({delimiter:"_"},e))}let IdlCoder$1=class en{static fieldLayout(e,s){const l=e.name!==void 0?camelCase$1(e.name):void 0;switch(e.type){case"bool":return dist$1.bool(l);case"u8":return dist$1.u8(l);case"i8":return dist$1.i8(l);case"u16":return dist$1.u16(l);case"i16":return dist$1.i16(l);case"u32":return dist$1.u32(l);case"i32":return dist$1.i32(l);case"f32":return dist$1.f32(l);case"u64":return dist$1.u64(l);case"i64":return dist$1.i64(l);case"f64":return dist$1.f64(l);case"u128":return dist$1.u128(l);case"i128":return dist$1.i128(l);case"u256":return dist$1.u256(l);case"i256":return dist$1.i256(l);case"bytes":return dist$1.vecU8(l);case"string":return dist$1.str(l);case"publicKey":return dist$1.publicKey(l);default:{if("vec"in e.type)return dist$1.vec(en.fieldLayout({name:void 0,type:e.type.vec},s),l);if("option"in e.type)return dist$1.option(en.fieldLayout({name:void 0,type:e.type.option},s),l);if("defined"in e.type){if(!s)throw new IdlError("User defined types not provided");const d=e.type.defined,u=s.filter(p=>p.name===d);if(u.length!==1)throw new IdlError(`Type not found: ${JSON.stringify(e)}`);return en.typeDefLayout(u[0],s,l)}else if("array"in e.type){let d=e.type.array[0],u=e.type.array[1],p=en.fieldLayout({name:void 0,type:d},s);return dist$1.array(p,u,l)}else throw new Error(`Not yet implemented: ${e}`)}}}static typeDefLayout(e,s=[],l){switch(e.type.kind){case"struct":{const d=e.type.fields.map(u=>en.fieldLayout(u,s));return dist$1.struct(d,l)}case"enum":{let d=e.type.variants.map(u=>{const p=camelCase$1(u.name);if(!u.fields)return dist$1.struct([],p);const m=u.fields.map((y,h)=>y!=null&&y.name?en.fieldLayout(y,s):en.fieldLayout({type:y,name:h.toString()},s));return dist$1.struct(m,p)});return l!==void 0?dist$1.rustEnum(d).replicate(l):dist$1.rustEnum(d,l)}case"alias":return en.fieldLayout({type:e.type.value,name:e.name},s)}}};const SIGHASH_GLOBAL_NAMESPACE="global";class BorshInstructionCoder{constructor(e){this.idl=e,this.ixLayout=BorshInstructionCoder.parseIxLayout(e);const s=new Map;e.instructions.forEach(l=>{const d=sighash(SIGHASH_GLOBAL_NAMESPACE,l.name);s.set(bs58$6.encode(d),{layout:this.ixLayout.get(l.name),name:l.name})}),this.sighashLayouts=s}encode(e,s){return this._encode(SIGHASH_GLOBAL_NAMESPACE,e,s)}_encode(e,s,l){const d=bufferPolyfill.Buffer.alloc(1e3),u=camelCase$1(s),p=this.ixLayout.get(u);if(!p)throw new Error(`Unknown method: ${u}`);const m=p.encode(l,d),y=d.slice(0,m);return bufferPolyfill.Buffer.concat([sighash(e,s),y])}static parseIxLayout(e){const s=e.instructions.map(l=>{let d=l.args.map(p=>{var m,y;return IdlCoder$1.fieldLayout(p,Array.from([...(m=e.accounts)!==null&&m!==void 0?m:[],...(y=e.types)!==null&&y!==void 0?y:[]]))});const u=camelCase$1(l.name);return[u,dist$1.struct(d,u)]});return new Map(s)}decode(e,s="hex"){typeof e=="string"&&(e=s==="hex"?bufferPolyfill.Buffer.from(e,"hex"):bs58$6.decode(e));let l=bs58$6.encode(e.slice(0,8)),d=e.slice(8);const u=this.sighashLayouts.get(l);return u?{data:u.layout.decode(d),name:u.name}:null}format(e,s){return InstructionFormatter.format(e,s,this.idl)}}class InstructionFormatter{static format(e,s,l){const d=l.instructions.filter(y=>e.name===y.name)[0];if(d===void 0)return console.error("Invalid instruction given"),null;const u=d.args.map(y=>({name:y.name,type:InstructionFormatter.formatIdlType(y.type),data:InstructionFormatter.formatIdlData(y,e.data[y.name],l.types)})),p=InstructionFormatter.flattenIdlAccounts(d.accounts),m=s.map((y,h)=>h<p.length?{name:p[h].name,...y}:{name:void 0,...y});return{args:u,accounts:m}}static formatIdlType(e){if(typeof e=="string")return e;if("vec"in e)return`Vec<${this.formatIdlType(e.vec)}>`;if("option"in e)return`Option<${this.formatIdlType(e.option)}>`;if("defined"in e)return e.defined;if("array"in e)return`Array<${e.array[0]}; ${e.array[1]}>`;throw new Error(`Unknown IDL type: ${e}`)}static formatIdlData(e,s,l){if(typeof e.type=="string")return s.toString();if(e.type.hasOwnProperty("vec"))return"["+s.map(d=>this.formatIdlData({name:"",type:e.type.vec},d)).join(", ")+"]";if(e.type.hasOwnProperty("option"))return s===null?"null":this.formatIdlData({name:"",type:e.type.option},s,l);if(e.type.hasOwnProperty("defined")){if(l===void 0)throw new Error("User defined types not provided");const d=l.filter(u=>u.name===e.type.defined);if(d.length!==1)throw new Error(`Type not found: ${e.type.defined}`);return InstructionFormatter.formatIdlDataDefined(d[0],s,l)}return"unknown"}static formatIdlDataDefined(e,s,l){switch(e.type.kind){case"struct":{const d=e.type;return"{ "+Object.keys(s).map(p=>{const m=d.fields.find(y=>y.name===p);if(!m)throw new Error("Unable to find type");return p+": "+InstructionFormatter.formatIdlData(m,s[p],l)}).join(", ")+" }"}case"enum":{if(e.type.variants.length===0)return"{}";if(e.type.variants[0].name){const d=e.type.variants,u=Object.keys(s)[0],p=s[u],m=Object.keys(p).map(h=>{var v;const A=p[h],w=(v=d[u])===null||v===void 0?void 0:v.find(I=>I.name===h);if(!w)throw new Error("Unable to find variant");return h+": "+InstructionFormatter.formatIdlData(w,A,l)}).join(", "),y=camelCase$1(u,{pascalCase:!0});return m.length===0?y:`${y} { ${m} }`}else return"Tuple formatting not yet implemented"}case"alias":return InstructionFormatter.formatIdlType(e.type.value)}}static flattenIdlAccounts(e,s){return e.map(l=>{const d=sentenceCase(l.name);if(l.hasOwnProperty("accounts")){const u=s?`${s} > ${d}`:d;return InstructionFormatter.flattenIdlAccounts(l.accounts,u)}else return{...l,name:s?`${s} > ${d}`:d}}).flat()}}function sentenceCase(t){const e=t.replace(/([A-Z])/g," $1");return e.charAt(0).toUpperCase()+e.slice(1)}function sighash(t,e){let s=snakeCase(e),l=`${t}:${s}`;return bufferPolyfill.Buffer.from(sha256$4(l).slice(0,8))}function accountSize(t,e){switch(e.type.kind){case"struct":return e.type.fields.map(s=>typeSize(t,s.type)).reduce((s,l)=>s+l,0);case"enum":{const s=e.type.variants.map(l=>l.fields?l.fields.map(d=>typeof d=="object"&&"name"in d?typeSize(t,d.type):typeSize(t,d)).reduce((d,u)=>d+u,0):0);return Math.max(...s)+1}case"alias":return typeSize(t,e.type.value)}}function typeSize(t,e){var s,l;switch(e){case"bool":return 1;case"u8":return 1;case"i8":return 1;case"i16":return 2;case"u16":return 2;case"u32":return 4;case"i32":return 4;case"f32":return 4;case"u64":return 8;case"i64":return 8;case"f64":return 8;case"u128":return 16;case"i128":return 16;case"u256":return 32;case"i256":return 32;case"bytes":return 1;case"string":return 1;case"publicKey":return 32;default:if("vec"in e)return 1;if("option"in e)return 1+typeSize(t,e.option);if("coption"in e)return 4+typeSize(t,e.coption);if("defined"in e){const d=(l=(s=t.types)===null||s===void 0?void 0:s.filter(p=>p.name===e.defined))!==null&&l!==void 0?l:[];if(d.length!==1)throw new IdlError(`Type not found: ${JSON.stringify(e)}`);let u=d[0];return accountSize(t,u)}if("array"in e){let d=e.array[0],u=e.array[1];return typeSize(t,d)*u}throw new Error(`Invalid type ${JSON.stringify(e)}`)}}const DISCRIMINATOR_SIZE=8;function discriminator(t){return dist$2.Buffer.from(sha256$4(t).slice(0,DISCRIMINATOR_SIZE))}class BorshAccountsCoder{constructor(e){if(e.accounts===void 0){this.accountLayouts=new Map;return}const s=e.accounts.map(l=>[l.name,IdlCoder$1.typeDefLayout(l,e.types)]);this.accountLayouts=new Map(s),this.idl=e}async encode(e,s){const l=bufferPolyfill.Buffer.alloc(1e3),d=this.accountLayouts.get(e);if(!d)throw new Error(`Unknown account: ${e}`);const u=d.encode(s,l);let p=l.slice(0,u),m=BorshAccountsCoder.accountDiscriminator(e);return bufferPolyfill.Buffer.concat([m,p])}decode(e,s){if(BorshAccountsCoder.accountDiscriminator(e).compare(s.slice(0,8)))throw new Error("Invalid account discriminator");return this.decodeUnchecked(e,s)}decodeAny(e){const s=e.slice(0,8),l=Array.from(this.accountLayouts.keys()).find(d=>BorshAccountsCoder.accountDiscriminator(d).equals(s));if(!l)throw new Error("Account descriminator not found");return this.decodeUnchecked(l,e)}decodeUnchecked(e,s){const l=s.subarray(DISCRIMINATOR_SIZE),d=this.accountLayouts.get(e);if(!d)throw new Error(`Unknown account: ${e}`);return d.decode(l)}memcmp(e,s){const l=BorshAccountsCoder.accountDiscriminator(e);return{offset:0,bytes:bs58$6.encode(s?bufferPolyfill.Buffer.concat([l,s]):l)}}size(e){var s;return DISCRIMINATOR_SIZE+((s=accountSize(this.idl,e))!==null&&s!==void 0?s:0)}static accountDiscriminator(e){const s=`account:${camelCase$1(e,{pascalCase:!0,preserveConsecutiveUppercase:!0})}`;return discriminator(s)}}class BorshEventCoder{constructor(e){if(e.events===void 0){this.layouts=new Map;return}const s=e.events.map(l=>{let d={name:l.name,type:{kind:"struct",fields:l.fields.map(u=>({name:u.name,type:u.type}))}};return[l.name,IdlCoder$1.typeDefLayout(d,e.types)]});this.layouts=new Map(s),this.discriminators=new Map(e.events===void 0?[]:e.events.map(l=>[encode(eventDiscriminator(l.name)),l.name]))}decode(e){let s;try{s=decode(e)}catch{return null}const l=encode(s.slice(0,8)),d=this.discriminators.get(l);if(d===void 0)return null;const u=this.layouts.get(d);if(!u)throw new Error(`Unknown event: ${d}`);return{data:u.decode(s.slice(8)),name:d}}}function eventDiscriminator(t){return discriminator(`event:${t}`)}class BorshTypesCoder{constructor(e){if(e.types===void 0){this.typeLayouts=new Map;return}const s=e.types.map(l=>[l.name,IdlCoder$1.typeDefLayout(l,e.types)]);this.typeLayouts=new Map(s),this.idl=e}encode(e,s){const l=bufferPolyfill.Buffer.alloc(1e3),d=this.typeLayouts.get(e);if(!d)throw new Error(`Unknown type: ${e}`);const u=d.encode(s,l);return l.slice(0,u)}decode(e,s){const l=this.typeLayouts.get(e);if(!l)throw new Error(`Unknown type: ${e}`);return l.decode(s)}}class BorshCoder{constructor(e){this.instruction=new BorshInstructionCoder(e),this.accounts=new BorshAccountsCoder(e),this.events=new BorshEventCoder(e),this.types=new BorshTypesCoder(e)}}var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof dist$2.global<"u"?dist$2.global:typeof self<"u"?self:{};function getDefaultExportFromCjs(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}class Layout{constructor(e,s){if(!Number.isInteger(e))throw new TypeError("span must be an integer");this.span=e,this.property=s}makeDestinationObject(){return{}}decode(e,s){throw new Error("Layout is abstract")}encode(e,s,l){throw new Error("Layout is abstract")}getSpan(e,s){if(0>this.span)throw new RangeError("indeterminate span");return this.span}replicate(e){const s=Object.create(this.constructor.prototype);return Object.assign(s,this),s.property=e,s}fromArray(e){}}var Layout_2=Layout;function nameWithProperty(t,e){return e.property?t+"["+e.property+"]":t}class ExternalLayout extends Layout{isCount(){throw new Error("ExternalLayout is abstract")}}class OffsetLayout extends ExternalLayout{constructor(e,s,l){if(!(e instanceof Layout))throw new TypeError("layout must be a Layout");if(s===void 0)s=0;else if(!Number.isInteger(s))throw new TypeError("offset must be integer or undefined");super(e.span,l||e.property),this.layout=e,this.offset=s}isCount(){return this.layout instanceof UInt||this.layout instanceof UIntBE}decode(e,s){return s===void 0&&(s=0),this.layout.decode(e,s+this.offset)}encode(e,s,l){return l===void 0&&(l=0),this.layout.encode(e,s,l+this.offset)}}class UInt extends Layout{constructor(e,s){if(super(e,s),6<this.span)throw new RangeError("span must not exceed 6 bytes")}decode(e,s){return s===void 0&&(s=0),e.readUIntLE(s,this.span)}encode(e,s,l){return l===void 0&&(l=0),s.writeUIntLE(e,l,this.span),this.span}}class UIntBE extends Layout{constructor(e,s){if(super(e,s),6<this.span)throw new RangeError("span must not exceed 6 bytes")}decode(e,s){return s===void 0&&(s=0),e.readUIntBE(s,this.span)}encode(e,s,l){return l===void 0&&(l=0),s.writeUIntBE(e,l,this.span),this.span}}const V2E32=Math.pow(2,32);function divmodInt64(t){const e=Math.floor(t/V2E32),s=t-e*V2E32;return{hi32:e,lo32:s}}function roundedInt64(t,e){return t*V2E32+e}class NearUInt64 extends Layout{constructor(e){super(8,e)}decode(e,s){s===void 0&&(s=0);const l=e.readUInt32LE(s),d=e.readUInt32LE(s+4);return roundedInt64(d,l)}encode(e,s,l){l===void 0&&(l=0);const d=divmodInt64(e);return s.writeUInt32LE(d.lo32,l),s.writeUInt32LE(d.hi32,l+4),8}}class NearInt64 extends Layout{constructor(e){super(8,e)}decode(e,s){s===void 0&&(s=0);const l=e.readUInt32LE(s),d=e.readInt32LE(s+4);return roundedInt64(d,l)}encode(e,s,l){l===void 0&&(l=0);const d=divmodInt64(e);return s.writeUInt32LE(d.lo32,l),s.writeInt32LE(d.hi32,l+4),8}}class Structure extends Layout{constructor(e,s,l){if(!(Array.isArray(e)&&e.reduce((u,p)=>u&&p instanceof Layout,!0)))throw new TypeError("fields must be array of Layout instances");typeof s=="boolean"&&l===void 0&&(l=s,s=void 0);for(const u of e)if(0>u.span&&u.property===void 0)throw new Error("fields cannot contain unnamed variable-length layout");let d=-1;try{d=e.reduce((u,p)=>u+p.getSpan(),0)}catch{}super(d,s),this.fields=e,this.decodePrefixes=!!l}getSpan(e,s){if(0<=this.span)return this.span;s===void 0&&(s=0);let l=0;try{l=this.fields.reduce((d,u)=>{const p=u.getSpan(e,s);return s+=p,d+p},0)}catch{throw new RangeError("indeterminate span")}return l}decode(e,s){s===void 0&&(s=0);const l=this.makeDestinationObject();for(const d of this.fields)if(d.property!==void 0&&(l[d.property]=d.decode(e,s)),s+=d.getSpan(e,s),this.decodePrefixes&&e.length===s)break;return l}encode(e,s,l){l===void 0&&(l=0);const d=l;let u=0,p=0;for(const m of this.fields){let y=m.span;if(p=0<y?y:0,m.property!==void 0){const h=e[m.property];h!==void 0&&(p=m.encode(h,s,l),0>y&&(y=m.getSpan(s,l)))}u=l,l+=y}return u+p-d}fromArray(e){const s=this.makeDestinationObject();for(const l of this.fields)l.property!==void 0&&0<e.length&&(s[l.property]=e.shift());return s}layoutFor(e){if(typeof e!="string")throw new TypeError("property must be string");for(const s of this.fields)if(s.property===e)return s}offsetOf(e){if(typeof e!="string")throw new TypeError("property must be string");let s=0;for(const l of this.fields){if(l.property===e)return s;0>l.span?s=-1:0<=s&&(s+=l.span)}}}class UnionDiscriminator{constructor(e){this.property=e}decode(){throw new Error("UnionDiscriminator is abstract")}encode(){throw new Error("UnionDiscriminator is abstract")}}class UnionLayoutDiscriminator extends UnionDiscriminator{constructor(e,s){if(!(e instanceof ExternalLayout&&e.isCount()))throw new TypeError("layout must be an unsigned integer ExternalLayout");super(s||e.property||"variant"),this.layout=e}decode(e,s){return this.layout.decode(e,s)}encode(e,s,l){return this.layout.encode(e,s,l)}}class Union extends Layout{constructor(e,s,l){const d=e instanceof UInt||e instanceof UIntBE;if(d)e=new UnionLayoutDiscriminator(new OffsetLayout(e));else if(e instanceof ExternalLayout&&e.isCount())e=new UnionLayoutDiscriminator(e);else if(!(e instanceof UnionDiscriminator))throw new TypeError("discr must be a UnionDiscriminator or an unsigned integer layout");if(s===void 0&&(s=null),!(s===null||s instanceof Layout))throw new TypeError("defaultLayout must be null or a Layout");if(s!==null){if(0>s.span)throw new Error("defaultLayout must have constant span");s.property===void 0&&(s=s.replicate("content"))}let u=-1;s&&(u=s.span,0<=u&&d&&(u+=e.layout.span)),super(u,l),this.discriminator=e,this.usesPrefixDiscriminator=d,this.defaultLayout=s,this.registry={};let p=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(m){return p(m)},this.configGetSourceVariant=function(m){p=m.bind(this)}}getSpan(e,s){if(0<=this.span)return this.span;s===void 0&&(s=0);const l=this.getVariant(e,s);if(!l)throw new Error("unable to determine span for unrecognized variant");return l.getSpan(e,s)}defaultGetSourceVariant(e){if(e.hasOwnProperty(this.discriminator.property)){if(this.defaultLayout&&e.hasOwnProperty(this.defaultLayout.property))return;const s=this.registry[e[this.discriminator.property]];if(s&&(!s.layout||e.hasOwnProperty(s.property)))return s}else for(const s in this.registry){const l=this.registry[s];if(e.hasOwnProperty(l.property))return l}throw new Error("unable to infer src variant")}decode(e,s){s===void 0&&(s=0);let l;const d=this.discriminator,u=d.decode(e,s);let p=this.registry[u];if(p===void 0){let m=0;p=this.defaultLayout,this.usesPrefixDiscriminator&&(m=d.layout.span),l=this.makeDestinationObject(),l[d.property]=u,l[p.property]=this.defaultLayout.decode(e,s+m)}else l=p.decode(e,s);return l}encode(e,s,l){l===void 0&&(l=0);const d=this.getSourceVariant(e);if(d===void 0){const u=this.discriminator,p=this.defaultLayout;let m=0;return this.usesPrefixDiscriminator&&(m=u.layout.span),u.encode(e[u.property],s,l),m+p.encode(e[p.property],s,l+m)}return d.encode(e,s,l)}addVariant(e,s,l){const d=new VariantLayout(this,e,s,l);return this.registry[e]=d,d}getVariant(e,s){let l=e;return dist$2.Buffer.isBuffer(e)&&(s===void 0&&(s=0),l=this.discriminator.decode(e,s)),this.registry[l]}}class VariantLayout extends Layout{constructor(e,s,l,d){if(!(e instanceof Union))throw new TypeError("union must be a Union");if(!Number.isInteger(s)||0>s)throw new TypeError("variant must be a (non-negative) integer");if(typeof l=="string"&&d===void 0&&(d=l,l=null),l){if(!(l instanceof Layout))throw new TypeError("layout must be a Layout");if(e.defaultLayout!==null&&0<=l.span&&l.span>e.defaultLayout.span)throw new Error("variant span exceeds span of containing union");if(typeof d!="string")throw new TypeError("variant must have a String property")}let u=e.span;0>e.span&&(u=l?l.span:0,0<=u&&e.usesPrefixDiscriminator&&(u+=e.discriminator.layout.span)),super(u,d),this.union=e,this.variant=s,this.layout=l||null}getSpan(e,s){if(0<=this.span)return this.span;s===void 0&&(s=0);let l=0;return this.union.usesPrefixDiscriminator&&(l=this.union.discriminator.layout.span),l+this.layout.getSpan(e,s+l)}decode(e,s){const l=this.makeDestinationObject();if(s===void 0&&(s=0),this!==this.union.getVariant(e,s))throw new Error("variant mismatch");let d=0;return this.union.usesPrefixDiscriminator&&(d=this.union.discriminator.layout.span),this.layout?l[this.property]=this.layout.decode(e,s+d):this.property?l[this.property]=!0:this.union.usesPrefixDiscriminator&&(l[this.union.discriminator.property]=this.variant),l}encode(e,s,l){l===void 0&&(l=0);let d=0;if(this.union.usesPrefixDiscriminator&&(d=this.union.discriminator.layout.span),this.layout&&!e.hasOwnProperty(this.property))throw new TypeError("variant lacks property "+this.property);this.union.discriminator.encode(this.variant,s,l);let u=d;if(this.layout&&(this.layout.encode(e[this.property],s,l+d),u+=this.layout.getSpan(s,l+d),0<=this.union.span&&u>this.union.span))throw new Error("encoded variant overruns containing union");return u}fromArray(e){if(this.layout)return this.layout.fromArray(e)}}class Blob$1 extends Layout{constructor(e,s){if(!(e instanceof ExternalLayout&&e.isCount()||Number.isInteger(e)&&0<=e))throw new TypeError("length must be positive integer or an unsigned integer ExternalLayout");let l=-1;e instanceof ExternalLayout||(l=e),super(l,s),this.length=e}getSpan(e,s){let l=this.span;return 0>l&&(l=this.length.decode(e,s)),l}decode(e,s){s===void 0&&(s=0);let l=this.span;return 0>l&&(l=this.length.decode(e,s)),e.slice(s,s+l)}encode(e,s,l){let d=this.length;if(this.length instanceof ExternalLayout&&(d=e.length),!(dist$2.Buffer.isBuffer(e)&&d===e.length))throw new TypeError(nameWithProperty("Blob.encode",this)+" requires (length "+d+") Buffer as src");if(l+d>s.length)throw new RangeError("encoding overruns Buffer");return s.write(e.toString("hex"),l,d,"hex"),this.length instanceof ExternalLayout&&this.length.encode(d,s,l),d}}var offset$2=(t,e,s)=>new OffsetLayout(t,e,s),u8=t=>new UInt(1,t),u32=t=>new UInt(4,t),nu64=t=>new NearUInt64(t),ns64=t=>new NearInt64(t),struct=(t,e,s)=>new Structure(t,e,s),union=(t,e,s)=>new Union(t,e,s),blob=(t,e)=>new Blob$1(t,e);class RustStringLayout extends Layout_2{constructor(e){super(-1,e),this.property=e,this.layout=struct([u32("length"),u32("lengthPadding"),blob(offset$2(u32(),-8),"chars")],this.property)}encode(e,s,l=0){if(e==null)return this.layout.span;const d={chars:dist$2.Buffer.from(e,"utf8")};return this.layout.encode(d,s,l)}decode(e,s=0){return this.layout.decode(e,s).chars.toString()}getSpan(e,s=0){return u32().span+u32().span+new BN(new Uint8Array(e).slice(s,s+4),10,"le").toNumber()}}function rustStringLayout(t){return new RustStringLayout(t)}function publicKey$2(t){return blob(32,t)}const LAYOUT=union(u32("instruction"));LAYOUT.addVariant(0,struct([ns64("lamports"),ns64("space"),publicKey$2("owner")]),"createAccount");LAYOUT.addVariant(1,struct([publicKey$2("owner")]),"assign");LAYOUT.addVariant(2,struct([ns64("lamports")]),"transfer");LAYOUT.addVariant(3,struct([publicKey$2("base"),rustStringLayout("seed"),ns64("lamports"),ns64("space"),publicKey$2("owner")]),"createAccountWithSeed");LAYOUT.addVariant(4,struct([publicKey$2("authorized")]),"advanceNonceAccount");LAYOUT.addVariant(5,struct([ns64("lamports")]),"withdrawNonceAccount");LAYOUT.addVariant(6,struct([publicKey$2("authorized")]),"initializeNonceAccount");LAYOUT.addVariant(7,struct([publicKey$2("authorized")]),"authorizeNonceAccount");LAYOUT.addVariant(8,struct([ns64("space")]),"allocate");LAYOUT.addVariant(9,struct([publicKey$2("base"),rustStringLayout("seed"),ns64("space"),publicKey$2("owner")]),"allocateWithSeed");LAYOUT.addVariant(10,struct([publicKey$2("base"),rustStringLayout("seed"),publicKey$2("owner")]),"assignWithSeed");LAYOUT.addVariant(11,struct([ns64("lamports"),rustStringLayout("seed"),publicKey$2("owner")]),"transferWithSeed");Math.max(...Object.values(LAYOUT.registry).map(t=>t.span));class WrappedLayout$1 extends Layout_2{constructor(e,s,l,d){super(e.span,d),this.layout=e,this.decoder=s,this.encoder=l}decode(e,s){return this.decoder(this.layout.decode(e,s))}encode(e,s,l){return this.layout.encode(this.encoder(e),s,l)}getSpan(e,s){return this.layout.getSpan(e,s)}}function publicKey$1(t){return new WrappedLayout$1(blob(32),e=>new PublicKey(e),e=>e.toBuffer(),t)}struct([u32("version"),u32("state"),publicKey$1("authorizedPubkey"),publicKey$1("nonce"),struct([nu64("lamportsPerSignature")],"feeCalculator")]);function hash$2(t){return new TextDecoder().decode(sha256$4(t))}var sha256$1=Object.freeze({__proto__:null,hash:hash$2});function createWithSeedSync(t,e,s){const l=bufferPolyfill.Buffer.concat([t.toBuffer(),bufferPolyfill.Buffer.from(e),s.toBuffer()]);return new PublicKey(sha256$4(l))}function associated(t,...e){let s=[bufferPolyfill.Buffer.from([97,110,99,104,111,114])];e.forEach(d=>{s.push(d instanceof bufferPolyfill.Buffer?d:translateAddress(d).toBuffer())});const[l]=PublicKey.findProgramAddressSync(s,translateAddress(t));return l}var pubkey=Object.freeze({__proto__:null,createWithSeedSync,associated});const TOKEN_PROGRAM_ID$2=new PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),ASSOCIATED_PROGRAM_ID=new PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");function associatedAddress({mint:t,owner:e}){return PublicKey.findProgramAddressSync([e.toBuffer(),TOKEN_PROGRAM_ID$2.toBuffer(),t.toBuffer()],ASSOCIATED_PROGRAM_ID)[0]}var token=Object.freeze({__proto__:null,TOKEN_PROGRAM_ID:TOKEN_PROGRAM_ID$2,ASSOCIATED_PROGRAM_ID,associatedAddress}),browserPonyfill$1={exports:{}};(function(t,e){var s=typeof self<"u"?self:commonjsGlobal,l=function(){function u(){this.fetch=!1,this.DOMException=s.DOMException}return u.prototype=s,new u}();(function(u){(function(p){var m={searchParams:"URLSearchParams"in u,iterable:"Symbol"in u&&"iterator"in Symbol,blob:"FileReader"in u&&"Blob"in u&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in u,arrayBuffer:"ArrayBuffer"in u};function y(E){return E&&DataView.prototype.isPrototypeOf(E)}if(m.arrayBuffer)var h=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],v=ArrayBuffer.isView||function(E){return E&&h.indexOf(Object.prototype.toString.call(E))>-1};function A(E){if(typeof E!="string"&&(E=String(E)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(E))throw new TypeError("Invalid character in header field name");return E.toLowerCase()}function w(E){return typeof E!="string"&&(E=String(E)),E}function I(E){var C={next:function(){var D=E.shift();return{done:D===void 0,value:D}}};return m.iterable&&(C[Symbol.iterator]=function(){return C}),C}function k(E){this.map={},E instanceof k?E.forEach(function(C,D){this.append(D,C)},this):Array.isArray(E)?E.forEach(function(C){this.append(C[0],C[1])},this):E&&Object.getOwnPropertyNames(E).forEach(function(C){this.append(C,E[C])},this)}k.prototype.append=function(E,C){E=A(E),C=w(C);var D=this.map[E];this.map[E]=D?D+", "+C:C},k.prototype.delete=function(E){delete this.map[A(E)]},k.prototype.get=function(E){return E=A(E),this.has(E)?this.map[E]:null},k.prototype.has=function(E){return this.map.hasOwnProperty(A(E))},k.prototype.set=function(E,C){this.map[A(E)]=w(C)},k.prototype.forEach=function(E,C){for(var D in this.map)this.map.hasOwnProperty(D)&&E.call(C,this.map[D],D,this)},k.prototype.keys=function(){var E=[];return this.forEach(function(C,D){E.push(D)}),I(E)},k.prototype.values=function(){var E=[];return this.forEach(function(C){E.push(C)}),I(E)},k.prototype.entries=function(){var E=[];return this.forEach(function(C,D){E.push([D,C])}),I(E)},m.iterable&&(k.prototype[Symbol.iterator]=k.prototype.entries);function $(E){if(E.bodyUsed)return Promise.reject(new TypeError("Already read"));E.bodyUsed=!0}function P(E){return new Promise(function(C,D){E.onload=function(){C(E.result)},E.onerror=function(){D(E.error)}})}function z(E){var C=new FileReader,D=P(C);return C.readAsArrayBuffer(E),D}function U(E){var C=new FileReader,D=P(C);return C.readAsText(E),D}function F(E){for(var C=new Uint8Array(E),D=new Array(C.length),L=0;L<C.length;L++)D[L]=String.fromCharCode(C[L]);return D.join("")}function q(E){if(E.slice)return E.slice(0);var C=new Uint8Array(E.byteLength);return C.set(new Uint8Array(E)),C.buffer}function V(){return this.bodyUsed=!1,this._initBody=function(E){this._bodyInit=E,E?typeof E=="string"?this._bodyText=E:m.blob&&Blob.prototype.isPrototypeOf(E)?this._bodyBlob=E:m.formData&&FormData.prototype.isPrototypeOf(E)?this._bodyFormData=E:m.searchParams&&URLSearchParams.prototype.isPrototypeOf(E)?this._bodyText=E.toString():m.arrayBuffer&&m.blob&&y(E)?(this._bodyArrayBuffer=q(E.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):m.arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(E)||v(E))?this._bodyArrayBuffer=q(E):this._bodyText=E=Object.prototype.toString.call(E):this._bodyText="",this.headers.get("content-type")||(typeof E=="string"?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):m.searchParams&&URLSearchParams.prototype.isPrototypeOf(E)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},m.blob&&(this.blob=function(){var E=$(this);if(E)return E;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?$(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(z)}),this.text=function(){var E=$(this);if(E)return E;if(this._bodyBlob)return U(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(F(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},m.formData&&(this.formData=function(){return this.text().then(ee)}),this.json=function(){return this.text().then(JSON.parse)},this}var H=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];function Z(E){var C=E.toUpperCase();return H.indexOf(C)>-1?C:E}function ne(E,C){C=C||{};var D=C.body;if(E instanceof ne){if(E.bodyUsed)throw new TypeError("Already read");this.url=E.url,this.credentials=E.credentials,C.headers||(this.headers=new k(E.headers)),this.method=E.method,this.mode=E.mode,this.signal=E.signal,!D&&E._bodyInit!=null&&(D=E._bodyInit,E.bodyUsed=!0)}else this.url=String(E);if(this.credentials=C.credentials||this.credentials||"same-origin",(C.headers||!this.headers)&&(this.headers=new k(C.headers)),this.method=Z(C.method||this.method||"GET"),this.mode=C.mode||this.mode||null,this.signal=C.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&D)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(D)}ne.prototype.clone=function(){return new ne(this,{body:this._bodyInit})};function ee(E){var C=new FormData;return E.trim().split("&").forEach(function(D){if(D){var L=D.split("="),W=L.shift().replace(/\+/g," "),R=L.join("=").replace(/\+/g," ");C.append(decodeURIComponent(W),decodeURIComponent(R))}}),C}function le(E){var C=new k,D=E.replace(/\r?\n[\t ]+/g," ");return D.split(/\r?\n/).forEach(function(L){var W=L.split(":"),R=W.shift().trim();if(R){var T=W.join(":").trim();C.append(R,T)}}),C}V.call(ne.prototype);function j(E,C){C||(C={}),this.type="default",this.status=C.status===void 0?200:C.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in C?C.statusText:"OK",this.headers=new k(C.headers),this.url=C.url||"",this._initBody(E)}V.call(j.prototype),j.prototype.clone=function(){return new j(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new k(this.headers),url:this.url})},j.error=function(){var E=new j(null,{status:0,statusText:""});return E.type="error",E};var x=[301,302,303,307,308];j.redirect=function(E,C){if(x.indexOf(C)===-1)throw new RangeError("Invalid status code");return new j(null,{status:C,headers:{location:E}})},p.DOMException=u.DOMException;try{new p.DOMException}catch{p.DOMException=function(C,D){this.message=C,this.name=D;var L=Error(C);this.stack=L.stack},p.DOMException.prototype=Object.create(Error.prototype),p.DOMException.prototype.constructor=p.DOMException}function M(E,C){return new Promise(function(D,L){var W=new ne(E,C);if(W.signal&&W.signal.aborted)return L(new p.DOMException("Aborted","AbortError"));var R=new XMLHttpRequest;function T(){R.abort()}R.onload=function(){var B={status:R.status,statusText:R.statusText,headers:le(R.getAllResponseHeaders()||"")};B.url="responseURL"in R?R.responseURL:B.headers.get("X-Request-URL");var G="response"in R?R.response:R.responseText;D(new j(G,B))},R.onerror=function(){L(new TypeError("Network request failed"))},R.ontimeout=function(){L(new TypeError("Network request failed"))},R.onabort=function(){L(new p.DOMException("Aborted","AbortError"))},R.open(W.method,W.url,!0),W.credentials==="include"?R.withCredentials=!0:W.credentials==="omit"&&(R.withCredentials=!1),"responseType"in R&&m.blob&&(R.responseType="blob"),W.headers.forEach(function(B,G){R.setRequestHeader(G,B)}),W.signal&&(W.signal.addEventListener("abort",T),R.onreadystatechange=function(){R.readyState===4&&W.signal.removeEventListener("abort",T)}),R.send(typeof W._bodyInit>"u"?null:W._bodyInit)})}return M.polyfill=!0,u.fetch||(u.fetch=M,u.Headers=k,u.Request=ne,u.Response=j),p.Headers=k,p.Request=ne,p.Response=j,p.fetch=M,Object.defineProperty(p,"__esModule",{value:!0}),p})({})})(l),l.fetch.ponyfill=!0,delete l.fetch.polyfill;var d=l;e=d.fetch,e.default=d.fetch,e.fetch=d.fetch,e.Headers=d.Headers,e.Request=d.Request,e.Response=d.Response,t.exports=e})(browserPonyfill$1,browserPonyfill$1.exports);var fetch$1=getDefaultExportFromCjs(browserPonyfill$1.exports);async function verifiedBuild(t,e,s=5){const l=`https://api.apr.dev/api/v0/program/${e.toString()}/latest?limit=${s}`,[d,u]=await Promise.all([fetchData(t,e),fetch$1(l)]),p=(await u.json()).filter(y=>!y.aborted&&y.state==="Built"&&y.verified==="Verified");if(p.length===0)return null;const m=p[0];return d.slot.toNumber()!==m.verified_slot?null:m}async function fetchData(t,e){const s=await t.getAccountInfo(e);if(s===null)throw new Error("program account not found");const{program:l}=decodeUpgradeableLoaderState(s.data),d=await t.getAccountInfo(l.programdataAddress);if(d===null)throw new Error("program data account not found");const{programData:u}=decodeUpgradeableLoaderState(d.data);return u}const UPGRADEABLE_LOADER_STATE_LAYOUT=dist$1.rustEnum([dist$1.struct([],"uninitialized"),dist$1.struct([dist$1.option(dist$1.publicKey(),"authorityAddress")],"buffer"),dist$1.struct([dist$1.publicKey("programdataAddress")],"program"),dist$1.struct([dist$1.u64("slot"),dist$1.option(dist$1.publicKey(),"upgradeAuthorityAddress")],"programData")],void 0,dist$1.u32());function decodeUpgradeableLoaderState(t){return UPGRADEABLE_LOADER_STATE_LAYOUT.decode(t)}var registry=Object.freeze({__proto__:null,verifiedBuild,fetchData,decodeUpgradeableLoaderState}),index$2=Object.freeze({__proto__:null,sha256:sha256$1,rpc,publicKey:pubkey,bytes:index$1$1,token,features,registry});function isIdlAccounts(t){return"accounts"in t}async function idlAddress(t){const e=(await PublicKey.findProgramAddress([],t))[0];return await PublicKey.createWithSeed(e,seed(),t)}function seed(){return"anchor:idl"}const IDL_ACCOUNT_LAYOUT=dist$1.struct([dist$1.publicKey("authority"),dist$1.vecU8("data")]);function decodeIdlAccount(t){return IDL_ACCOUNT_LAYOUT.decode(t)}function splitArgsAndCtx(t,e){var s,l;let d={};const u=t.args?t.args.length:0;if(e.length>u){if(e.length!==u+1)throw new Error(`provided too many arguments ${e} to instruction ${t==null?void 0:t.name} expecting: ${(l=(s=t.args)===null||s===void 0?void 0:s.map(p=>p.name))!==null&&l!==void 0?l:[]}`);d=e.pop()}return[e,d]}class InstructionNamespaceFactory{static build(e,s,l){if(e.name==="_inner")throw new IdlError("the _inner name is reserved");const d=(...u)=>{const[p,m]=splitArgsAndCtx(e,[...u]);validateAccounts(e.accounts,m.accounts),validateInstruction(e,...u);const y=d.accounts(m.accounts);return m.remainingAccounts!==void 0&&y.push(...m.remainingAccounts),isSet("debug-logs")&&console.log("Outgoing account metas:",y),new TransactionInstruction({keys:y,programId:l,data:s(e.name,toInstruction(e,...p))})};return d.accounts=u=>InstructionNamespaceFactory.accountsArray(u,e.accounts,l,e.name),d}static accountsArray(e,s,l,d){return e?s.map(u=>{if(("accounts"in u?u.accounts:void 0)!==void 0){const m=e[u.name];return InstructionNamespaceFactory.accountsArray(m,u.accounts,l,d).flat()}else{const m=u;let y;try{y=translateAddress(e[u.name])}catch{throw new Error(`Wrong input type for account "${u.name}" in the instruction accounts object${d!==void 0?' for instruction "'+d+'"':""}. Expected PublicKey or string.`)}const h=m.isOptional&&y.equals(l),v=m.isMut&&!h,A=m.isSigner&&!h;return{pubkey:y,isWritable:v,isSigner:A}}}).flat():[]}}function validateInstruction(t,...e){}class TransactionFactory{static build(e,s){return(...d)=>{var u,p,m;const[,y]=splitArgsAndCtx(e,[...d]),h=new Transaction;if(y.preInstructions&&y.instructions)throw new Error("instructions is deprecated, use preInstructions");return(u=y.preInstructions)===null||u===void 0||u.forEach(v=>h.add(v)),(p=y.instructions)===null||p===void 0||p.forEach(v=>h.add(v)),h.add(s(...d)),(m=y.postInstructions)===null||m===void 0||m.forEach(v=>h.add(v)),h}}}class RpcFactory{static build(e,s,l,d){return async(...p)=>{var m;const y=s(...p),[,h]=splitArgsAndCtx(e,[...p]);if(d.sendAndConfirm===void 0)throw new Error("This function requires 'Provider.sendAndConfirm' to be implemented.");try{return await d.sendAndConfirm(y,(m=h.signers)!==null&&m!==void 0?m:[],h.options)}catch(v){throw translateError(v,l)}}}}class AccountFactory{static build(e,s,l,d){var u;const p={};return(u=e.accounts)===null||u===void 0||u.forEach(m=>{const y=camelCase$1(m.name);p[y]=new AccountClient(e,m,l,d,s)}),p}}class AccountClient{get size(){return this._size}get programId(){return this._programId}get provider(){return this._provider}get coder(){return this._coder}get idlAccount(){return this._idlAccount}constructor(e,s,l,d,u){this._idlAccount=s,this._programId=l,this._provider=d??getProvider(),this._coder=u??new BorshCoder(e),this._size=this._coder.accounts.size(s)}async fetchNullable(e,s){const{data:l}=await this.fetchNullableAndContext(e,s);return l}async fetchNullableAndContext(e,s){const l=await this.getAccountInfoAndContext(e,s),{value:d,context:u}=l;return{data:d&&d.data.length!==0?this._coder.accounts.decode(this._idlAccount.name,d.data):null,context:u}}async fetch(e,s){const{data:l}=await this.fetchNullableAndContext(e,s);if(l===null)throw new Error(`Account does not exist or has no data ${e.toString()}`);return l}async fetchAndContext(e,s){const{data:l,context:d}=await this.fetchNullableAndContext(e,s);if(l===null)throw new Error(`Account does not exist ${e.toString()}`);return{data:l,context:d}}async fetchMultiple(e,s){return(await this.fetchMultipleAndContext(e,s)).map(d=>d?d.data:null)}async fetchMultipleAndContext(e,s){return(await getMultipleAccountsAndContext(this._provider.connection,e.map(d=>translateAddress(d)),s)).map(d=>{if(d==null)return null;const{account:u,context:p}=d;return{data:this._coder.accounts.decode(this._idlAccount.name,u.data),context:p}})}async all(e){const s=this.coder.accounts.memcmp(this._idlAccount.name,e instanceof dist$2.Buffer?e:void 0),l=[];return(s==null?void 0:s.offset)!=null&&(s==null?void 0:s.bytes)!=null&&l.push({memcmp:{offset:s.offset,bytes:s.bytes}}),(s==null?void 0:s.dataSize)!=null&&l.push({dataSize:s.dataSize}),(await this._provider.connection.getProgramAccounts(this._programId,{commitment:this._provider.connection.commitment,filters:[...l,...Array.isArray(e)?e:[]]})).map(({pubkey:u,account:p})=>({publicKey:u,account:this._coder.accounts.decode(this._idlAccount.name,p.data)}))}subscribe(e,s){const l=subscriptions.get(e.toString());if(l)return l.ee;const d=new EventEmitter;e=translateAddress(e);const u=this._provider.connection.onAccountChange(e,p=>{const m=this._coder.accounts.decode(this._idlAccount.name,p.data);d.emit("change",m)},s);return subscriptions.set(e.toString(),{ee:d,listener:u}),d}async unsubscribe(e){let s=subscriptions.get(e.toString());if(!s){console.warn("Address is not subscribed");return}subscriptions&&await this._provider.connection.removeAccountChangeListener(s.listener).then(()=>{subscriptions.delete(e.toString())}).catch(console.error)}async createInstruction(e,s){const l=this.size;if(this._provider.publicKey===void 0)throw new Error("This function requires the Provider interface implementor to have a 'publicKey' field.");return SystemProgram.createAccount({fromPubkey:this._provider.publicKey,newAccountPubkey:e.publicKey,space:s??l,lamports:await this._provider.connection.getMinimumBalanceForRentExemption(s??l),programId:this._programId})}async associated(...e){const s=await this.associatedAddress(...e);return await this.fetch(s)}async associatedAddress(...e){return await associated(this._programId,...e)}async getAccountInfo(e,s){return await this._provider.connection.getAccountInfo(translateAddress(e),s)}async getAccountInfoAndContext(e,s){return await this._provider.connection.getAccountInfoAndContext(translateAddress(e),s)}}const subscriptions=new Map,PROGRAM_LOG="Program log: ",PROGRAM_DATA="Program data: ",PROGRAM_LOG_START_INDEX=PROGRAM_LOG.length,PROGRAM_DATA_START_INDEX=PROGRAM_DATA.length;class EventManager{constructor(e,s,l){this._programId=e,this._provider=s,this._eventParser=new EventParser(e,l),this._eventCallbacks=new Map,this._eventListeners=new Map,this._listenerIdCount=0}addEventListener(e,s){var l;let d=this._listenerIdCount;return this._listenerIdCount+=1,this._eventListeners.has(e)||this._eventListeners.set(e,[]),this._eventListeners.set(e,((l=this._eventListeners.get(e))!==null&&l!==void 0?l:[]).concat(d)),this._eventCallbacks.set(d,[e,s]),this._onLogsSubscriptionId!==void 0||(this._onLogsSubscriptionId=this._provider.connection.onLogs(this._programId,(u,p)=>{if(!u.err)for(const m of this._eventParser.parseLogs(u.logs)){const y=this._eventListeners.get(m.name);y&&y.forEach(h=>{const v=this._eventCallbacks.get(h);if(v){const[,A]=v;A(m.data,p.slot,u.signature)}})}})),d}async removeEventListener(e){const s=this._eventCallbacks.get(e);if(!s)throw new Error(`Event listener ${e} doesn't exist!`);const[l]=s;let d=this._eventListeners.get(l);if(!d)throw new Error(`Event listeners don't exist for ${l}!`);if(this._eventCallbacks.delete(e),d=d.filter(u=>u!==e),this._eventListeners.set(l,d),d.length===0&&this._eventListeners.delete(l),this._eventCallbacks.size===0){if(this._eventListeners.size!==0)throw new Error(`Expected event listeners size to be 0 but got ${this._eventListeners.size}`);this._onLogsSubscriptionId!==void 0&&(await this._provider.connection.removeOnLogsListener(this._onLogsSubscriptionId),this._onLogsSubscriptionId=void 0)}}}class EventParser{constructor(e,s){this.coder=s,this.programId=e}*parseLogs(e,s=!1){const l=new LogScanner(e),d=new ExecutionContext;let u=l.next();for(;u!==null;){let[p,m,y]=this.handleLog(d,u,s);p&&(yield p),m&&d.push(m),y&&d.pop(),u=l.next()}}handleLog(e,s,l){return e.stack.length>0&&e.program()===this.programId.toString()?this.handleProgramLog(s,l):[null,...this.handleSystemLog(s)]}handleProgramLog(e,s){if(e.startsWith(PROGRAM_LOG)||e.startsWith(PROGRAM_DATA)){const l=e.startsWith(PROGRAM_LOG)?e.slice(PROGRAM_LOG_START_INDEX):e.slice(PROGRAM_DATA_START_INDEX),d=this.coder.events.decode(l);if(s&&d===null)throw new Error(`Unable to decode event ${l}`);return[d,null,!1]}else return[null,...this.handleSystemLog(e)]}handleSystemLog(e){const s=e.split(":")[0];return s.match(/^Program (.*) success/g)!==null?[null,!0]:s.startsWith(`Program ${this.programId.toString()} invoke`)?[this.programId.toString(),!1]:s.includes("invoke")?["cpi",!1]:[null,!1]}}class ExecutionContext{constructor(){this.stack=[]}program(){if(!this.stack.length)throw new Error("Expected the stack to have elements");return this.stack[this.stack.length-1]}push(e){this.stack.push(e)}pop(){if(!this.stack.length)throw new Error("Expected the stack to have elements");this.stack.pop()}}class LogScanner{constructor(e){this.logs=e}next(){if(this.logs.length===0)return null;let e=this.logs[0];return this.logs=this.logs.slice(1),e}}class SimulateFactory{static build(e,s,l,d,u,p,m){return async(...h)=>{var v;const A=s(...h),[,w]=splitArgsAndCtx(e,[...h]);let I;if(d.simulate===void 0)throw new Error("This function requires 'Provider.simulate' to be implemented.");try{I=await d.simulate(A,w.signers,(v=w.options)===null||v===void 0?void 0:v.commitment)}catch(P){throw translateError(P,l)}if(I===void 0)throw new Error("Unable to simulate transaction");const k=I.logs;if(!k)throw new Error("Simulated logs not found");const $=[];if(m.events){let P=new EventParser(p,u);for(const z of P.parseLogs(k))$.push(z)}return{events:$,raw:k}}}}function uint64(t){return new WrappedLayout(blob(8),e=>u64.fromBuffer(e),e=>e.toBuffer(),t)}function publicKey(t){return new WrappedLayout(blob(32),e=>new PublicKey(e),e=>e.toBuffer(),t)}function coption(t,e){return new COptionLayout(t,e)}class WrappedLayout extends Layout_2{constructor(e,s,l,d){super(e.span,d),this.layout=e,this.decoder=s,this.encoder=l}decode(e,s){return this.decoder(this.layout.decode(e,s))}encode(e,s,l){return this.layout.encode(this.encoder(e),s,l)}getSpan(e,s){return this.layout.getSpan(e,s)}}class COptionLayout extends Layout_2{constructor(e,s){super(-1,s),this.layout=e,this.discriminator=u32()}encode(e,s,l=0){return e==null?this.layout.span+this.discriminator.encode(0,s,l):(this.discriminator.encode(1,s,l),this.layout.encode(e,s,l+4)+4)}decode(e,s=0){const l=this.discriminator.decode(e,s);if(l===0)return null;if(l===1)return this.layout.decode(e,s+4);throw new Error("Invalid coption "+this.layout.property)}getSpan(e,s=0){return this.layout.getSpan(e,s+4)+4}}class u64 extends BN{toBuffer(){const e=super.toArray().reverse(),s=dist$2.Buffer.from(e);if(s.length===8)return s;if(s.length>=8)throw new Error("u64 too large");const l=dist$2.Buffer.alloc(8);return s.copy(l),l}static fromBuffer(e){if(e.length!==8)throw new Error(`Invalid buffer length: ${e.length}`);return new u64([...e].reverse().map(s=>`00${s.toString(16)}`.slice(-2)).join(""),16)}}const TOKEN_ACCOUNT_LAYOUT=struct([publicKey("mint"),publicKey("owner"),uint64("amount"),coption(publicKey(),"delegate"),(t=>{const e=union(u8("discriminator"),null,t);return e.addVariant(0,struct([]),"uninitialized"),e.addVariant(1,struct([]),"initialized"),e.addVariant(2,struct([]),"frozen"),e})("state"),coption(uint64(),"isNative"),uint64("delegatedAmount"),coption(publicKey(),"closeAuthority")]);function decodeTokenAccount(t){return TOKEN_ACCOUNT_LAYOUT.decode(t)}class AccountsResolver{constructor(e,s,l,d,u,p,m,y){this._accounts=s,this._provider=l,this._programId=d,this._idlIx=u,this._idlTypes=m,this._customResolver=y,this._args=e,this._accountStore=new AccountStore(l,p,this._programId)}args(e){this._args=e}async resolve(){for(await this.resolveConst(this._idlIx.accounts),this._resolveEventCpi(this._idlIx.accounts);await this.resolvePdas(this._idlIx.accounts)+await this.resolveRelations(this._idlIx.accounts)+await this.resolveCustom()>0;);}async resolveCustom(){if(this._customResolver){const{accounts:e,resolved:s}=await this._customResolver({args:this._args,accounts:this._accounts,provider:this._provider,programId:this._programId,idlIx:this._idlIx});return this._accounts=e,s}return 0}resolveOptionalsHelper(e,s){const l={};for(const d of s){const u=d.name,p=e[u];p!==void 0&&(isPartialAccounts(p)?isIdlAccounts(d)?l[u]=this.resolveOptionalsHelper(p,d.accounts):l[u]=flattenPartialAccounts(p):p!==null?l[u]=translateAddress(p):d.isOptional&&(l[u]=this._programId))}return l}resolveOptionals(e){Object.assign(this._accounts,this.resolveOptionalsHelper(e,this._idlIx.accounts))}get(e){const s=e.reduce((l,d)=>l&&l[d],this._accounts);if(s&&s.toBase58)return s}set(e,s){let l=this._accounts;e.forEach((d,u)=>{u==e.length-1&&(l[d]=s),l[d]=l[d]||{},l=l[d]})}async resolveConst(e,s=[]){for(let l=0;l<e.length;l+=1){const d=e[l],u=d.accounts;u&&await this.resolveConst(u,[...s,camelCase$1(d.name)]);const p=d,m=camelCase$1(d.name);if(p.isSigner&&!this.get([...s,m])){if(this._provider.wallet===void 0)throw new Error("This function requires the Provider interface implementor to have a 'wallet' field.");this.set([...s,m],this._provider.wallet.publicKey)}Reflect.has(AccountsResolver.CONST_ACCOUNTS,m)&&!this.get([...s,m])&&this.set([...s,m],AccountsResolver.CONST_ACCOUNTS[m])}}_resolveEventCpi(e,s=[]){for(const l in e){const d=e[l],u=d.accounts;u&&this._resolveEventCpi(u,[...s,camelCase$1(d.name)]);const p=+l+1;if(p===e.length)return;const m=camelCase$1(e[l].name),y=camelCase$1(e[p].name);if(m==="eventAuthority"&&y==="program"){const h=[...s,m],v=[...s,y];this.get(h)||this.set(h,PublicKey.findProgramAddressSync([dist$2.Buffer.from("__event_authority")],this._programId)[0]),this.get(v)||this.set(v,this._programId);return}}}async resolvePdas(e,s=[]){let l=0;for(let d=0;d<e.length;d+=1){const u=e[d],p=u.accounts;p&&(l+=await this.resolvePdas(p,[...s,camelCase$1(u.name)]));const m=u,y=camelCase$1(u.name);m.pda&&m.pda.seeds.length>0&&!this.get([...s,y])&&await this.autoPopulatePda(m,s)&&(l+=1)}return l}async resolveRelations(e,s=[]){let l=0;for(let d=0;d<e.length;d+=1){const u=e[d],p=u.accounts;p&&(l+=await this.resolveRelations(p,[...s,camelCase$1(u.name)]));const m=u.relations||[],y=camelCase$1(u.name),h=[...s,y],v=this.get(h);if(v){const A=m.filter(w=>!this.get([...s,camelCase$1(w)]));if(l+=A.length,A.length>0){const w=await this._accountStore.fetchAccount({publicKey:v});await Promise.all(A.map(async I=>{const k=camelCase$1(I);return this.set([...s,k],w[k]),w[k]}))}}}return l}async autoPopulatePda(e,s=[]){if(!e.pda||!e.pda.seeds)throw new Error("Must have seeds");const l=await Promise.all(e.pda.seeds.map(p=>this.toBuffer(p,s)));if(l.some(p=>typeof p>"u"))return;const d=await this.parseProgramId(e,s);if(!d)return;const[u]=await PublicKey.findProgramAddress(l,d);this.set([...s,camelCase$1(e.name)],u)}async parseProgramId(e,s=[]){var l;if(!(!((l=e.pda)===null||l===void 0)&&l.programId))return this._programId;switch(e.pda.programId.kind){case"const":return new PublicKey(this.toBufferConst(e.pda.programId.value));case"arg":return this.argValue(e.pda.programId);case"account":return await this.accountValue(e.pda.programId,s);default:throw new Error(`Unexpected program seed kind: ${e.pda.programId.kind}`)}}async toBuffer(e,s=[]){switch(e.kind){case"const":return this.toBufferConst(e);case"arg":return await this.toBufferArg(e);case"account":return await this.toBufferAccount(e,s);default:throw new Error(`Unexpected seed kind: ${e.kind}`)}}getType(e,s=[]){if(s.length>0&&e.defined){const l=this._idlTypes.find(p=>p.name===e.defined);if(!l)throw new Error(`Cannot find type ${e.defined}`);const u=l.type.fields.find(p=>p.name===s[0]);return this.getType(u.type,s.slice(1))}return e}toBufferConst(e){return this.toBufferValue(this.getType(e.type,(e.path||"").split(".").slice(1)),e.value)}async toBufferArg(e){const s=this.argValue(e);if(!(typeof s>"u"))return this.toBufferValue(this.getType(e.type,(e.path||"").split(".").slice(1)),s)}argValue(e){const s=e.path.split("."),l=camelCase$1(s[0]),d=this._idlIx.args.findIndex(u=>u.name===l);if(d===-1)throw new Error(`Unable to find argument for seed: ${l}`);return s.slice(1).reduce((u,p)=>(u||{})[p],this._args[d])}async toBufferAccount(e,s=[]){const l=await this.accountValue(e,s);if(l)return this.toBufferValue(e.type,l)}async accountValue(e,s=[]){const l=e.path.split("."),d=l[0],u=this.get([...s,camelCase$1(d)]);if(u===null)throw new Error("fieldPubkey is null");if(l.length===1)return u;const p=await this._accountStore.fetchAccount({publicKey:u,name:e.account});return this.parseAccountValue(p,l.slice(1))}parseAccountValue(e,s){let l;for(;s.length>0;)l=e[camelCase$1(s[0])],s=s.slice(1);return l}toBufferValue(e,s){switch(e){case"u8":return dist$2.Buffer.from([s]);case"u16":let l=dist$2.Buffer.alloc(2);return l.writeUInt16LE(s),l;case"u32":let d=dist$2.Buffer.alloc(4);return d.writeUInt32LE(s),d;case"u64":let u=dist$2.Buffer.alloc(8);return u.writeBigUInt64LE(BigInt(s)),u;case"string":return dist$2.Buffer.from(encode$2(s));case"publicKey":return s.toBuffer();default:if(e.array)return dist$2.Buffer.from(s);throw new Error(`Unexpected seed type: ${e}`)}}}AccountsResolver.CONST_ACCOUNTS={associatedTokenProgram:ASSOCIATED_PROGRAM_ID,rent:SYSVAR_RENT_PUBKEY,systemProgram:SystemProgram.programId,tokenProgram:TOKEN_PROGRAM_ID$2,clock:SYSVAR_CLOCK_PUBKEY};class AccountStore{constructor(e,s,l){this._provider=e,this._programId=l,this._cache=new Map,this._idls={},this._idls[l.toBase58()]=s}async ensureIdl(e){if(!this._idls[e.toBase58()]){const s=await Program.fetchIdl(e,this._provider);if(s){const l=new Program(s,e,this._provider);this._idls[e.toBase58()]=l.account}}return this._idls[e.toBase58()]}async fetchAccount({publicKey:e,name:s,programId:l=this._programId}){const d=e.toString();if(!this._cache.has(d))if(s==="TokenAccount"){const u=await this._provider.connection.getAccountInfo(e);if(u===null)throw new Error(`invalid account info for ${d}`);const p=decodeTokenAccount(u.data);this._cache.set(d,p)}else if(s){const u=await this.ensureIdl(l);if(u){const p=u[camelCase$1(s)];if(p){const m=await p.fetch(e);this._cache.set(d,m)}}}else{const u=await this._provider.connection.getAccountInfo(e);if(u===null)throw new Error(`invalid account info for ${d}`);const p=u.data,m=await this.ensureIdl(u.owner);if(m){const y=Object.values(m)[0];if(!y)throw new Error("No accounts for this program");const h=y.coder.accounts.decodeAny(p);this._cache.set(d,h)}}return this._cache.get(d)}}class MethodsBuilderFactory{static build(e,s,l,d,u,p,m,y,h,v,A){return(...w)=>new MethodsBuilder(w,d,u,p,m,y,e,s,l,h,v,A)}}function isPartialAccounts(t){return typeof t=="object"&&t!==null&&!("_bn"in t)}function flattenPartialAccounts(t,e){const s={};for(const l in t){const d=t[l];if(d===null)throw new Error("Failed to resolve optionals due to IDL type mismatch with input accounts!");s[l]=isPartialAccounts(d)?flattenPartialAccounts(d):translateAddress(d)}return s}class MethodsBuilder{constructor(e,s,l,d,u,p,m,y,h,v,A,w){this._ixFn=s,this._txFn=l,this._rpcFn=d,this._simulateFn=u,this._viewFn=p,this._programId=y,this._accounts={},this._remainingAccounts=[],this._signers=[],this._preInstructions=[],this._postInstructions=[],this._autoResolveAccounts=!0,this._args=e,this._accountsResolver=new AccountsResolver(e,this._accounts,m,y,h,v,A,w)}args(e){this._args=e,this._accountsResolver.args(e)}async pubkeys(){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._accounts}accounts(e){return this._autoResolveAccounts=!0,this._accountsResolver.resolveOptionals(e),this}accountsStrict(e){return this._autoResolveAccounts=!1,this._accountsResolver.resolveOptionals(e),this}signers(e){return this._signers=this._signers.concat(e),this}remainingAccounts(e){return this._remainingAccounts=this._remainingAccounts.concat(e),this}preInstructions(e){return this._preInstructions=this._preInstructions.concat(e),this}postInstructions(e){return this._postInstructions=this._postInstructions.concat(e),this}async rpc(e){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._rpcFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:e})}async rpcAndKeys(e){return{pubkeys:await this.pubkeys(),signature:await this.rpc(e)}}async view(e){if(this._autoResolveAccounts&&await this._accountsResolver.resolve(),!this._viewFn)throw new Error("Method does not support views");return this._viewFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:e})}async simulate(e){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._simulateFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:e})}async instruction(){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._ixFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions})}async prepare(){return{instruction:await this.instruction(),pubkeys:await this.pubkeys(),signers:await this._signers}}async transaction(){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._txFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions})}}class ViewFactory{static build(e,s,l,d){const u=s.accounts.find(y=>y.isMut),p=!!s.returns;return u||!p?void 0:async(...y)=>{var h,v;let A=await l(...y);const w=`Program return: ${e} `;let I=A.raw.find(z=>z.startsWith(w));if(!I)throw new Error("View expected return log");let k=decode(I.slice(w.length)),$=s.returns;if(!$)throw new Error("View expected return type");return IdlCoder$1.fieldLayout({type:$},Array.from([...(h=d.accounts)!==null&&h!==void 0?h:[],...(v=d.types)!==null&&v!==void 0?v:[]])).decode(k)}}}class NamespaceFactory{static build(e,s,l,d,u){const p={},m={},y={},h={},v={},A={},w=parseIdlErrors(e),I=e.accounts?AccountFactory.build(e,s,l,d):{};return e.instructions.forEach(k=>{const $=InstructionNamespaceFactory.build(k,(H,Z)=>s.instruction.encode(H,Z),l),P=TransactionFactory.build(k,$),z=RpcFactory.build(k,P,w,d),U=SimulateFactory.build(k,P,w,d,s,l,e),F=ViewFactory.build(l,k,U,e),q=MethodsBuilderFactory.build(d,l,k,$,P,z,U,F,I,e.types||[],u&&u(k)),V=camelCase$1(k.name);m[V]=$,y[V]=P,p[V]=z,h[V]=U,v[V]=q,F&&(A[V]=F)}),[p,m,y,I,h,v,A]}}class Program{get programId(){return this._programId}get idl(){return this._idl}get coder(){return this._coder}get provider(){return this._provider}constructor(e,s,l,d,u){s=translateAddress(s),l||(l=getProvider()),this._idl=e,this._provider=l,this._programId=s,this._coder=d??new BorshCoder(e),this._events=new EventManager(this._programId,l,this._coder);const[p,m,y,h,v,A,w]=NamespaceFactory.build(e,this._coder,s,l,u??(()=>{}));this.rpc=p,this.instruction=m,this.transaction=y,this.account=h,this.simulate=v,this.methods=A,this.views=w}static async at(e,s){const l=translateAddress(e),d=await Program.fetchIdl(l,s);if(!d)throw new Error(`IDL not found for program: ${e.toString()}`);return new Program(d,l,s)}static async fetchIdl(e,s){s=s??getProvider();const l=translateAddress(e),d=await idlAddress(l),u=await s.connection.getAccountInfo(d);if(!u)return null;let p=decodeIdlAccount(u.data.slice(8));const m=inflate_1(p.data);return JSON.parse(decode$2(m))}addEventListener(e,s){return this._events.addEventListener(e,s)}async removeEventListener(e){return await this._events.removeEventListener(e)}}new PublicKey("11111111111111111111111111111111");const TOKEN_PROGRAM_ID$1=new PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const ASSOCIATED_TOKEN_PROGRAM_ID$1=new PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new PublicKey("So11111111111111111111111111111111111111112");new PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");let TokenError$1=class extends Error{constructor(e){super(e)}},TokenAccountNotFoundError$1=class extends TokenError$1{constructor(){super(...arguments),this.name="TokenAccountNotFoundError"}},TokenInvalidAccountOwnerError$1=class extends TokenError$1{constructor(){super(...arguments),this.name="TokenInvalidAccountOwnerError"}},TokenInvalidAccountSizeError$1=class extends TokenError$1{constructor(){super(...arguments),this.name="TokenInvalidAccountSizeError"}};class TokenInvalidMintError extends TokenError$1{constructor(){super(...arguments),this.name="TokenInvalidMintError"}}let TokenOwnerOffCurveError$1=class extends TokenError$1{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}};class TokenTransferHookAccountNotFound extends TokenError$1{constructor(){super(...arguments),this.name="TokenTransferHookAccountNotFound"}}class TokenTransferHookInvalidSeed extends TokenError$1{constructor(){super(...arguments),this.name="TokenTransferHookInvalidSeed"}}class TokenTransferHookAccountDataNotFound extends TokenError$1{constructor(){super(...arguments),this.name="TokenTransferHookAccountDataNotFound"}}var TokenInstruction;(function(t){t[t.InitializeMint=0]="InitializeMint",t[t.InitializeAccount=1]="InitializeAccount",t[t.InitializeMultisig=2]="InitializeMultisig",t[t.Transfer=3]="Transfer",t[t.Approve=4]="Approve",t[t.Revoke=5]="Revoke",t[t.SetAuthority=6]="SetAuthority",t[t.MintTo=7]="MintTo",t[t.Burn=8]="Burn",t[t.CloseAccount=9]="CloseAccount",t[t.FreezeAccount=10]="FreezeAccount",t[t.ThawAccount=11]="ThawAccount",t[t.TransferChecked=12]="TransferChecked",t[t.ApproveChecked=13]="ApproveChecked",t[t.MintToChecked=14]="MintToChecked",t[t.BurnChecked=15]="BurnChecked",t[t.InitializeAccount2=16]="InitializeAccount2",t[t.SyncNative=17]="SyncNative",t[t.InitializeAccount3=18]="InitializeAccount3",t[t.InitializeMultisig2=19]="InitializeMultisig2",t[t.InitializeMint2=20]="InitializeMint2",t[t.GetAccountDataSize=21]="GetAccountDataSize",t[t.InitializeImmutableOwner=22]="InitializeImmutableOwner",t[t.AmountToUiAmount=23]="AmountToUiAmount",t[t.UiAmountToAmount=24]="UiAmountToAmount",t[t.InitializeMintCloseAuthority=25]="InitializeMintCloseAuthority",t[t.TransferFeeExtension=26]="TransferFeeExtension",t[t.ConfidentialTransferExtension=27]="ConfidentialTransferExtension",t[t.DefaultAccountStateExtension=28]="DefaultAccountStateExtension",t[t.Reallocate=29]="Reallocate",t[t.MemoTransferExtension=30]="MemoTransferExtension",t[t.CreateNativeMint=31]="CreateNativeMint",t[t.InitializeNonTransferableMint=32]="InitializeNonTransferableMint",t[t.InterestBearingMintExtension=33]="InterestBearingMintExtension",t[t.CpiGuardExtension=34]="CpiGuardExtension",t[t.InitializePermanentDelegate=35]="InitializePermanentDelegate",t[t.TransferHookExtension=36]="TransferHookExtension",t[t.MetadataPointerExtension=39]="MetadataPointerExtension"})(TokenInstruction||(TokenInstruction={}));function addSigners(t,e,s){if(s.length){t.push({pubkey:e,isSigner:!1,isWritable:!1});for(const l of s)t.push({pubkey:l instanceof PublicKey?l:l.publicKey,isSigner:!0,isWritable:!1})}else t.push({pubkey:e,isSigner:!0,isWritable:!1});return t}const approveInstructionData=exports.struct([exports.u8("instruction"),u64$1("amount")]);function createApproveInstruction$1(t,e,s,l,d=[],u=TOKEN_PROGRAM_ID$1){const p=addSigners([{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1}],s,d),m=dist$2.Buffer.alloc(approveInstructionData.span);return approveInstructionData.encode({instruction:TokenInstruction.Approve,amount:BigInt(l)},m),new TransactionInstruction({keys:p,programId:u,data:m})}var AccountType$1;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Mint=1]="Mint",t[t.Account=2]="Account"})(AccountType$1||(AccountType$1={}));const ACCOUNT_TYPE_SIZE$1=1,MultisigLayout$1=exports.struct([exports.u8("m"),exports.u8("n"),bool("isInitialized"),publicKey$3("signer1"),publicKey$3("signer2"),publicKey$3("signer3"),publicKey$3("signer4"),publicKey$3("signer5"),publicKey$3("signer6"),publicKey$3("signer7"),publicKey$3("signer8"),publicKey$3("signer9"),publicKey$3("signer10"),publicKey$3("signer11")]),MULTISIG_SIZE$1=MultisigLayout$1.span;var AccountState$1;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Initialized=1]="Initialized",t[t.Frozen=2]="Frozen"})(AccountState$1||(AccountState$1={}));const AccountLayout$1=exports.struct([publicKey$3("mint"),publicKey$3("owner"),u64$1("amount"),exports.u32("delegateOption"),publicKey$3("delegate"),exports.u8("state"),exports.u32("isNativeOption"),u64$1("isNative"),u64$1("delegatedAmount"),exports.u32("closeAuthorityOption"),publicKey$3("closeAuthority")]),ACCOUNT_SIZE$1=AccountLayout$1.span,MintLayout$1=exports.struct([exports.u32("mintAuthorityOption"),publicKey$3("mintAuthority"),u64$1("supply"),exports.u8("decimals"),bool("isInitialized"),exports.u32("freezeAuthorityOption"),publicKey$3("freezeAuthority")]),MINT_SIZE=MintLayout$1.span;async function getMint(t,e,s,l=TOKEN_PROGRAM_ID$1){const d=await t.getAccountInfo(e,s);return unpackMint(e,d,l)}function unpackMint(t,e,s=TOKEN_PROGRAM_ID$1){if(!e)throw new TokenAccountNotFoundError$1;if(!e.owner.equals(s))throw new TokenInvalidAccountOwnerError$1;if(e.data.length<MINT_SIZE)throw new TokenInvalidAccountSizeError$1;const l=MintLayout$1.decode(e.data.slice(0,MINT_SIZE));let d=dist$2.Buffer.alloc(0);if(e.data.length>MINT_SIZE){if(e.data.length<=ACCOUNT_SIZE$1)throw new TokenInvalidAccountSizeError$1;if(e.data.length===MULTISIG_SIZE$1)throw new TokenInvalidAccountSizeError$1;if(e.data[ACCOUNT_SIZE$1]!=AccountType$1.Mint)throw new TokenInvalidMintError;d=e.data.slice(ACCOUNT_SIZE$1+ACCOUNT_TYPE_SIZE$1)}return{address:t,mintAuthority:l.mintAuthorityOption?l.mintAuthority:null,supply:l.supply,decimals:l.decimals,isInitialized:l.isInitialized,freezeAuthority:l.freezeAuthorityOption?l.freezeAuthority:null,tlvData:d}}async function getAssociatedTokenAddress$1(t,e,s=!1,l=TOKEN_PROGRAM_ID$1,d=ASSOCIATED_TOKEN_PROGRAM_ID$1){if(!s&&!PublicKey.isOnCurve(e.toBuffer()))throw new TokenOwnerOffCurveError$1;const[u]=await PublicKey.findProgramAddress([e.toBuffer(),l.toBuffer(),t.toBuffer()],d);return u}function getAssociatedTokenAddressSync$1(t,e,s=!1,l=TOKEN_PROGRAM_ID$1,d=ASSOCIATED_TOKEN_PROGRAM_ID$1){if(!s&&!PublicKey.isOnCurve(e.toBuffer()))throw new TokenOwnerOffCurveError$1;const[u]=PublicKey.findProgramAddressSync([e.toBuffer(),l.toBuffer(),t.toBuffer()],d);return u}const DISCRIMINATOR_SPAN=1,LITERAL_LENGTH_SPAN=1,INSTRUCTION_ARG_OFFSET_SPAN=1,INSTRUCTION_ARG_LENGTH_SPAN=1,ACCOUNT_KEY_INDEX_SPAN=1,ACCOUNT_DATA_ACCOUNT_INDEX_SPAN=1,ACCOUNT_DATA_OFFSET_SPAN=1,ACCOUNT_DATA_LENGTH_SPAN=1;function unpackSeedLiteral(t){if(t.length<1)throw new TokenTransferHookInvalidSeed;const[e,...s]=t;if(s.length<e)throw new TokenTransferHookInvalidSeed;return{data:dist$2.Buffer.from(s.slice(0,e)),packedLength:DISCRIMINATOR_SPAN+LITERAL_LENGTH_SPAN+e}}function unpackSeedInstructionArg(t,e){if(t.length<2)throw new TokenTransferHookInvalidSeed;const[s,l]=t;if(e.length<l+s)throw new TokenTransferHookInvalidSeed;return{data:e.subarray(s,s+l),packedLength:DISCRIMINATOR_SPAN+INSTRUCTION_ARG_OFFSET_SPAN+INSTRUCTION_ARG_LENGTH_SPAN}}function unpackSeedAccountKey(t,e){if(t.length<1)throw new TokenTransferHookInvalidSeed;const[s]=t;if(e.length<=s)throw new TokenTransferHookInvalidSeed;return{data:e[s].pubkey.toBuffer(),packedLength:DISCRIMINATOR_SPAN+ACCOUNT_KEY_INDEX_SPAN}}async function unpackSeedAccountData(t,e,s){if(t.length<3)throw new TokenTransferHookInvalidSeed;const[l,d,u]=t;if(e.length<=l)throw new TokenTransferHookInvalidSeed;const p=await s.getAccountInfo(e[l].pubkey);if(p==null)throw new TokenTransferHookAccountDataNotFound;if(p.data.length<d+u)throw new TokenTransferHookInvalidSeed;return{data:p.data.subarray(d,d+u),packedLength:DISCRIMINATOR_SPAN+ACCOUNT_DATA_ACCOUNT_INDEX_SPAN+ACCOUNT_DATA_OFFSET_SPAN+ACCOUNT_DATA_LENGTH_SPAN}}async function unpackFirstSeed(t,e,s,l){const[d,...u]=t,p=new Uint8Array(u);switch(d){case 0:return null;case 1:return unpackSeedLiteral(p);case 2:return unpackSeedInstructionArg(p,s);case 3:return unpackSeedAccountKey(p,e);case 4:return unpackSeedAccountData(p,e,l);default:throw new TokenTransferHookInvalidSeed}}async function unpackSeeds(t,e,s,l){const d=[];let u=0;for(;u<32;){const p=await unpackFirstSeed(t.slice(u),e,s,l);if(p==null)break;d.push(p.data),u+=p.packedLength}return d}const TransferHookLayout=exports.struct([publicKey$3("authority"),publicKey$3("programId")]);TransferHookLayout.span;function getTransferHook(t){const e=getExtensionData(ExtensionType.TransferHook,t.tlvData);return e!==null?TransferHookLayout.decode(e):null}const TransferHookAccountLayout=exports.struct([bool("transferring")]);TransferHookAccountLayout.span;function getExtraAccountMetaAddress(t,e){const s=[dist$2.Buffer.from("extra-account-metas"),t.toBuffer()];return PublicKey.findProgramAddressSync(s,e)[0]}const ExtraAccountMetaLayout=exports.struct([exports.u8("discriminator"),exports.blob(32,"addressConfig"),bool("isSigner"),bool("isWritable")]),ExtraAccountMetaListLayout=exports.struct([exports.u32("count"),exports.seq(ExtraAccountMetaLayout,exports.greedy(ExtraAccountMetaLayout.span),"extraAccounts")]),ExtraAccountMetaAccountDataLayout=exports.struct([u64$1("instructionDiscriminator"),exports.u32("length"),ExtraAccountMetaListLayout.replicate("extraAccountsList")]);function getExtraAccountMetas(t){const e=ExtraAccountMetaAccountDataLayout.decode(t.data).extraAccountsList;return e.extraAccounts.slice(0,e.count)}async function resolveExtraAccountMeta(t,e,s,l,d){if(e.discriminator===0)return{pubkey:new PublicKey(e.addressConfig),isSigner:e.isSigner,isWritable:e.isWritable};let u=PublicKey.default;if(e.discriminator===1)u=d;else{const y=e.discriminator-128;if(s.length<=y)throw new TokenTransferHookAccountNotFound;u=s[y].pubkey}const p=await unpackSeeds(e.addressConfig,s,l,t);return{pubkey:PublicKey.findProgramAddressSync(p,u)[0],isSigner:e.isSigner,isWritable:e.isWritable}}var TransferHookInstruction;(function(t){t[t.Initialize=0]="Initialize",t[t.Update=1]="Update"})(TransferHookInstruction||(TransferHookInstruction={}));exports.struct([exports.u8("instruction"),exports.u8("transferHookInstruction"),publicKey$3("authority"),publicKey$3("transferHookProgramId")]);exports.struct([exports.u8("instruction"),exports.u8("transferHookInstruction"),publicKey$3("transferHookProgramId")]);function createExecuteInstruction(t,e,s,l,d,u,p){const m=[e,s,l,d,u].map(h=>({pubkey:h,isSigner:!1,isWritable:!1})),y=dist$2.Buffer.alloc(16);return y.set(dist$2.Buffer.from([105,37,101,197,75,251,102,26]),0),y.writeBigUInt64LE(BigInt(p),8),new TransactionInstruction({keys:m,programId:t,data:y})}var ExtensionType;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.TransferFeeConfig=1]="TransferFeeConfig",t[t.TransferFeeAmount=2]="TransferFeeAmount",t[t.MintCloseAuthority=3]="MintCloseAuthority",t[t.ConfidentialTransferMint=4]="ConfidentialTransferMint",t[t.ConfidentialTransferAccount=5]="ConfidentialTransferAccount",t[t.DefaultAccountState=6]="DefaultAccountState",t[t.ImmutableOwner=7]="ImmutableOwner",t[t.MemoTransfer=8]="MemoTransfer",t[t.NonTransferable=9]="NonTransferable",t[t.InterestBearingConfig=10]="InterestBearingConfig",t[t.CpiGuard=11]="CpiGuard",t[t.PermanentDelegate=12]="PermanentDelegate",t[t.NonTransferableAccount=13]="NonTransferableAccount",t[t.TransferHook=14]="TransferHook",t[t.TransferHookAccount=15]="TransferHookAccount",t[t.MetadataPointer=18]="MetadataPointer",t[t.TokenMetadata=19]="TokenMetadata"})(ExtensionType||(ExtensionType={}));const TYPE_SIZE=2,LENGTH_SIZE=2;function addTypeAndLengthToLen(t){return t+TYPE_SIZE+LENGTH_SIZE}function getExtensionData(t,e){let s=0;for(;addTypeAndLengthToLen(s)<=e.length;){const l=e.readUInt16LE(s),d=e.readUInt16LE(s+TYPE_SIZE),u=addTypeAndLengthToLen(s);if(l==t)return e.slice(u,u+d);s=u+d}return null}function createAssociatedTokenAccountInstruction$1(t,e,s,l,d=TOKEN_PROGRAM_ID$1,u=ASSOCIATED_TOKEN_PROGRAM_ID$1){return buildAssociatedTokenAccountInstruction(t,e,s,l,dist$2.Buffer.alloc(0),d,u)}function buildAssociatedTokenAccountInstruction(t,e,s,l,d,u=TOKEN_PROGRAM_ID$1,p=ASSOCIATED_TOKEN_PROGRAM_ID$1){const m=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1}];return new TransactionInstruction({keys:m,programId:p,data:d})}const postMessageLayout=[{name:"discriminator",binary:"bytes",size:4},{name:"consistencyLevel",binary:"uint",size:1,endianness:"little"},{name:"emitterAuthority",...universalAddressItem},{name:"messageStatus",binary:"uint",size:1,endianness:"little"},{name:"gap",binary:"uint",size:3},{name:"timestamp",binary:"uint",size:4,endianness:"little"},{name:"nonce",binary:"uint",size:4,endianness:"little"},{name:"sequence",binary:"uint",size:8,endianness:"little"},{name:"emitterChain",binary:"uint",size:2,endianness:"little"},{name:"emitterAddress",...universalAddressItem},{name:"payloadLength",binary:"uint",size:4,endianness:"little"},{name:"payload",binary:"bytes"}];function deserializePostMessage(t){return deserialize$2(postMessageLayout,t)}function deriveClaimKey(t,e,s,l){const d=typeof e=="string"?dist$2.Buffer.from(e,"hex"):dist$2.Buffer.from(e);if(d.length!=32)throw Error("address.length != 32");const u=dist$2.Buffer.alloc(8);return u.writeBigUInt64BE(typeof l=="number"?BigInt(l):l),deriveAddress([d,(()=>{const p=dist$2.Buffer.alloc(2);return p.writeUInt16BE(s),p})(),u],t)}async function getClaim(t,e,s,l,d,u){return t.getAccountInfo(deriveClaimKey(e,s,l,d),u).then(p=>!!getAccountData(p)[0])}function deriveWormholeBridgeDataKey(t){return deriveAddress([dist$2.Buffer.from("Bridge")],t)}async function getWormholeBridgeData(t,e,s){return t.getAccountInfo(deriveWormholeBridgeDataKey(e),s).then(l=>BridgeData.deserialize(getAccountData(l)))}class BridgeConfig{constructor(e,s){Ae(this,"guardianSetExpirationTime");Ae(this,"fee");this.guardianSetExpirationTime=e,this.fee=s}static deserialize(e){if(e.length!=12)throw new Error("data.length != 12");const s=e.readUInt32LE(0),l=e.readBigUInt64LE(4);return new BridgeConfig(s,l)}}class BridgeData{constructor(e,s,l){Ae(this,"guardianSetIndex");Ae(this,"lastLamports");Ae(this,"config");this.guardianSetIndex=e,this.lastLamports=s,this.config=l}static deserialize(e){if(e.length!=24)throw new Error("data.length != 24");const s=e.readUInt32LE(0),l=e.readBigUInt64LE(4),d=BridgeConfig.deserialize(e.subarray(12));return new BridgeData(s,l,d)}}function deriveEmitterSequenceKey(t,e){return deriveAddress([dist$2.Buffer.from("Sequence"),new PublicKey(t).toBytes()],e)}async function getSequenceTracker(t,e,s,l){return t.getAccountInfo(deriveEmitterSequenceKey(e,s),l).then(d=>SequenceTracker.deserialize(getAccountData(d)))}class SequenceTracker{constructor(e,s,l){Ae(this,"sequence");Ae(this,"bump");Ae(this,"emitterType");this.sequence=e,this.bump=s,this.emitterType=l}static deserialize(e){if(e.length!==8&&e.length!==10)throw new Error("data.length != 8 or data.length != 10");let s,l;const d=e.readBigUInt64LE(0);return e.length===10&&(s=e[8],l=e[9]),new SequenceTracker(d,s,l)}value(){return this.sequence}}function deriveWormholeEmitterKey(t){return deriveAddress([dist$2.Buffer.from("emitter")],t)}function getEmitterKeys(t,e){const s=deriveWormholeEmitterKey(t);return{emitter:s,sequence:deriveEmitterSequenceKey(s,e)}}async function getProgramSequenceTracker(t,e,s,l){return getSequenceTracker(t,deriveWormholeEmitterKey(e),s,l)}function deriveFeeCollectorKey(t){return deriveAddress([dist$2.Buffer.from("fee_collector")],t)}const SIGNATURE_LENGTH=65,ETHEREUM_KEY_LENGTH=20;function createSecp256k1Instruction(t,e,s){return new TransactionInstruction({keys:[],programId:Secp256k1Program.programId,data:Secp256k1SignatureOffsets.serialize(t,e,s)})}class Secp256k1SignatureOffsets{static serialize(e,s,l){if(e.length==0)throw Error("signatures.length == 0");if(e.length!=s.length)throw Error("signatures.length != keys.length");if(l.length!=32)throw Error("message.length != 32");const d=e.length,u=11,p=1+d*u,m=SIGNATURE_LENGTH+ETHEREUM_KEY_LENGTH,y=p+d*m,h=32,v=dist$2.Buffer.alloc(y+h);v.writeUInt8(d,0),v.write(l.toString("hex"),y,"hex");for(let A=0;A<d;++A){const w=e.at(A);if((w==null?void 0:w.length)!=SIGNATURE_LENGTH)throw Error(`signatures[${A}].length != 65`);const I=s.at(A);if((I==null?void 0:I.length)!=ETHEREUM_KEY_LENGTH)throw Error(`keys[${A}].length != 20`);const k=p+m*A,$=k+65;v.writeUInt16LE(k,1+A*u),v.writeUInt8(0,3+A*u),v.writeUInt16LE($,4+A*u),v.writeUInt8(0,6+A*u),v.writeUInt16LE(y,7+A*u),v.writeUInt16LE(h,9+A*u),v.writeUInt8(0,10+A*u),v.write(w.toString("hex"),k,"hex"),v.write(I.toString("hex"),$,"hex")}return v}}function deriveGuardianSetKey(t,e){return deriveAddress([dist$2.Buffer.from("GuardianSet"),(()=>{const s=dist$2.Buffer.alloc(4);return s.writeUInt32BE(e),s})()],t)}async function getGuardianSet(t,e,s,l){return t.getAccountInfo(deriveGuardianSetKey(e,s),l).then(d=>GuardianSetData.deserialize(getAccountData(d)))}class GuardianSetData{constructor(e,s,l,d){Ae(this,"index");Ae(this,"keys");Ae(this,"creationTime");Ae(this,"expirationTime");this.index=e,this.keys=s,this.creationTime=l,this.expirationTime=d}static deserialize(e){const s=e.readUInt32LE(0),l=e.readUInt32LE(4),d=8+l*ETHEREUM_KEY_LENGTH,u=e.readUInt32LE(d),p=e.readUInt32LE(4+d),m=[];for(let y=0;y<l;++y){const h=8+y*ETHEREUM_KEY_LENGTH;m.push(e.subarray(h,h+ETHEREUM_KEY_LENGTH))}return new GuardianSetData(s,m,u,p)}}function derivePostedVaaKey(t,e){return deriveAddress([dist$2.Buffer.from("PostedVAA"),e],t)}async function getSignatureSetData(t,e,s){return t.getAccountInfo(new PublicKey(e),s).then(l=>SignatureSetData.deserialize(getAccountData(l)))}class SignatureSetData{constructor(e,s,l){Ae(this,"signatures");Ae(this,"hash");Ae(this,"guardianSetIndex");this.signatures=e,this.hash=s,this.guardianSetIndex=l}static deserialize(e){const s=e.readUInt32LE(0),l=[...e.subarray(4,4+s)].map(m=>m!=0),d=4+s,u=e.subarray(d,d+32),p=e.readUInt32LE(d+32);return new SignatureSetData(l,u,p)}}function deriveUpgradeAuthorityKey(t){return deriveAddress([dist$2.Buffer.from("upgrade")],t)}function createBridgeFeeTransferInstruction(t,e,s){return SystemProgram.transfer({fromPubkey:new PublicKey(e),toPubkey:deriveFeeCollectorKey(t),lamports:s})}class WormholeAccountsCoder{constructor(e){Ae(this,"idl");this.idl=e}async encode(e,s){switch(e){default:throw new Error(`Invalid account name: ${e}`)}}decode(e,s){return this.decodeUnchecked(e,s)}decodeUnchecked(e,s){switch(e){default:throw new Error(`Invalid account name: ${e}`)}}memcmp(e,s){switch(e){case"postVaa":return{dataSize:56};default:throw new Error(`Invalid account name: ${e}`)}}size(e){return accountSize$1(this.idl,e)??0}}class WormholeEventsCoder{constructor(e){}decode(e){throw new Error("Wormhole program does not have events")}}class IdlCoder{static fieldLayout(e,s){const l=e.name!==void 0?camelCase$2(e.name):void 0;switch(e.type){case"bool":return dist$1.bool(l);case"u8":return dist$1.u8(l);case"i8":return dist$1.i8(l);case"u16":return dist$1.u16(l);case"i16":return dist$1.i16(l);case"u32":return dist$1.u32(l);case"i32":return dist$1.i32(l);case"f32":return dist$1.f32(l);case"u64":return dist$1.u64(l);case"i64":return dist$1.i64(l);case"f64":return dist$1.f64(l);case"u128":return dist$1.u128(l);case"i128":return dist$1.i128(l);case"u256":return dist$1.u256(l);case"i256":return dist$1.i256(l);case"bytes":return dist$1.vecU8(l);case"string":return dist$1.str(l);case"publicKey":return dist$1.publicKey(l);default:{if("vec"in e.type)return dist$1.vec(IdlCoder.fieldLayout({name:void 0,type:e.type.vec},s),l);if("option"in e.type)return dist$1.option(IdlCoder.fieldLayout({name:void 0,type:e.type.option},s),l);if("array"in e.type){let d=e.type.array[0],u=e.type.array[1],p=IdlCoder.fieldLayout({name:void 0,type:d},s);return dist$1.array(p,u,l)}else throw new Error(`Not yet implemented: ${e}`)}}}}class WormholeInstructionCoder{constructor(e){Ae(this,"ixLayout");this.ixLayout=WormholeInstructionCoder.parseIxLayout(e)}static parseIxLayout(e){const l=(e.instructions?e.instructions:[]).map(d=>{let u=d.args.map(m=>IdlCoder.fieldLayout(m,Array.from([...e.accounts??[],...e.types??[]])));const p=camelCase$2(d.name);return[p,dist$1.struct(u,p)]}).concat(e.instructions.map(d=>{let u=d.args.map(m=>IdlCoder.fieldLayout(m,Array.from([...e.accounts??[],...e.types??[]])));const p=camelCase$2(d.name);return[p,dist$1.struct(u,p)]}));return new Map(l)}encode(e,s){const l=dist$2.Buffer.alloc(1e3),d=camelCase$2(e),u=this.ixLayout.get(d);if(!u)throw new Error(`Unknown method: ${d}`);const p=u.encode(s,l),m=l.slice(0,p);return encodeWormholeInstructionData(WormholeInstruction[upperFirst(d)],m)}encodeState(e,s){throw new Error("Wormhole program does not have state")}decode(e,s="hex"){var m;typeof e=="string"&&(e=s==="hex"?dist$2.Buffer.from(e,"hex"):b58.decode(e));let l=dist$2.Buffer.from(e.slice(0,1)).readInt8(),d=dist$2.Buffer.from(e.slice(1)),u=camelCase$2(WormholeInstruction[l]??"");return this.ixLayout.get(u)?{data:(m=this.ixLayout.get(u))==null?void 0:m.decode(d),name:u}:null}}var WormholeInstruction;(function(t){t[t.Initialize=0]="Initialize",t[t.PostMessage=1]="PostMessage",t[t.PostVaa=2]="PostVaa",t[t.SetFees=3]="SetFees",t[t.TransferFees=4]="TransferFees",t[t.UpgradeContract=5]="UpgradeContract",t[t.UpgradeGuardianSet=6]="UpgradeGuardianSet",t[t.VerifySignatures=7]="VerifySignatures",t[t.PostMessageUnreliable=8]="PostMessageUnreliable"})(WormholeInstruction||(WormholeInstruction={}));function encodeWormholeInstructionData(t,e){const s=dist$2.Buffer.alloc(1+(e===void 0?0:e.length));return s.writeUInt8(t,0),e!==void 0&&s.write(e.toString("hex"),1,"hex"),s}class WormholeStateCoder{constructor(e){}encode(e,s){throw new Error("Wormhole program does not have state")}decode(e){throw new Error("Wormhole program does not have state")}}class WormholeTypesCoder{constructor(e){}encode(e,s){throw new Error("Wormhole program does not have user-defined types")}decode(e,s){throw new Error("Wormhole program does not have user-defined types")}}class WormholeCoder{constructor(e){Ae(this,"instruction");Ae(this,"accounts");Ae(this,"state");Ae(this,"events");Ae(this,"types");this.instruction=new WormholeInstructionCoder(e),this.accounts=new WormholeAccountsCoder(e),this.state=new WormholeStateCoder(e),this.events=new WormholeEventsCoder(e),this.types=new WormholeTypesCoder(e)}}const IDL$b={version:"0.1.0",name:"wormhole",instructions:[{name:"initialize",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"guardianSet",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"guardianSetExpirationTime",type:"u32"},{name:"fee",type:"u64"},{name:"initialGuardians",type:{vec:{array:["u8",20]}}}]},{name:"postMessage",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"message",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!0},{name:"sequence",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"nonce",type:"u32"},{name:"payload",type:"bytes"},{name:"consistencyLevel",type:"u8"}]},{name:"postVaa",accounts:[{name:"guardianSet",isMut:!1,isSigner:!1},{name:"bridge",isMut:!1,isSigner:!1},{name:"signatureSet",isMut:!1,isSigner:!1},{name:"vaa",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"version",type:"u8"},{name:"guardianSetIndex",type:"u32"},{name:"timestamp",type:"u32"},{name:"nonce",type:"u32"},{name:"emitterChain",type:"u16"},{name:"emitterAddress",type:{array:["u8",32]}},{name:"sequence",type:"u64"},{name:"consistencyLevel",type:"u8"},{name:"payload",type:"bytes"}]},{name:"setFees",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"bridge",isMut:!0,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"claim",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"transferFees",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"bridge",isMut:!0,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"claim",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"upgradeContract",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"bridge",isMut:!0,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"claim",isMut:!0,isSigner:!1},{name:"upgradeAuthority",isMut:!1,isSigner:!1},{name:"spill",isMut:!0,isSigner:!1},{name:"implementation",isMut:!0,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"wormholeProgram",isMut:!0,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeable",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"upgradeGuardianSet",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"bridge",isMut:!0,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"claim",isMut:!0,isSigner:!1},{name:"guardianSetOld",isMut:!0,isSigner:!1},{name:"guardianSetNew",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"verifySignatures",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"guardianSet",isMut:!1,isSigner:!1},{name:"signatureSet",isMut:!0,isSigner:!0},{name:"instructions",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"signatureStatus",type:{array:["i8",19]}}]},{name:"postMessageUnreliable",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"message",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!0},{name:"sequence",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"nonce",type:"u32"},{name:"payload",type:"bytes"},{name:"consistencyLevel",type:"u8"}]}],accounts:[{name:"PostedMessage",type:{kind:"struct",fields:[{name:"vaaVersion",type:"u8"},{name:"consistencyLevel",type:"u8"},{name:"vaaTime",type:"u32"},{name:"vaaSignatureAccount",type:"publicKey"},{name:"submissionTime",type:"u32"},{name:"nonce",type:"u32"},{name:"sequence",type:"u64"},{name:"emitterChain",type:"u16"},{name:"emitterAddress",type:{array:["u8",32]}},{name:"payload",type:"bytes"}]}},{name:"PostedVAA",type:{kind:"struct",fields:[{name:"vaaVersion",type:"u8"},{name:"consistencyLevel",type:"u8"},{name:"vaaTime",type:"u32"},{name:"vaaSignatureAccount",type:"publicKey"},{name:"submissionTime",type:"u32"},{name:"nonce",type:"u32"},{name:"sequence",type:"u64"},{name:"emitterChain",type:"u16"},{name:"emitterAddress",type:{array:["u8",32]}},{name:"payload",type:"bytes"}]}}]};function createWormholeProgramInterface(t,e){return new Program(IDL$b,new PublicKey(t),e===void 0?{connection:null}:e,coder())}function createReadOnlyWormholeProgramInterface(t,e){return createWormholeProgramInterface(t,createReadOnlyProvider(e))}function coder(){return new WormholeCoder(IDL$b)}function createSetFeesInstruction(t,e,s,l){const d=createReadOnlyWormholeProgramInterface(e,t).methods.setFees();return d._ixFn(...d._args,{accounts:getSetFeesAccounts(e,s,l),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function getSetFeesAccounts(t,e,s){return{payer:new PublicKey(e),bridge:deriveWormholeBridgeDataKey(t),vaa:derivePostedVaaKey(t,dist$2.Buffer.from(s.hash)),claim:deriveClaimKey(t,s.emitterAddress.toString(),toChainId(s.emitterChain),s.sequence),systemProgram:SystemProgram.programId}}function createTransferFeesInstruction(t,e,s,l,d){const u=createReadOnlyWormholeProgramInterface(e,t).methods.transferFees();return u._ixFn(...u._args,{accounts:getTransferFeesAccounts(e,s,l,d),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function getTransferFeesAccounts(t,e,s,l){return{payer:new PublicKey(e),bridge:deriveWormholeBridgeDataKey(t),vaa:derivePostedVaaKey(t,dist$2.Buffer.from(l.hash)),claim:deriveClaimKey(t,l.emitterAddress.toString(),toChainId(l.emitterChain),l.sequence),feeCollector:deriveFeeCollectorKey(t),recipient:new PublicKey(s),rent:SYSVAR_RENT_PUBKEY,systemProgram:SystemProgram.programId}}function createUpgradeGuardianSetInstruction(t,e,s,l){const d=createReadOnlyWormholeProgramInterface(e,t).methods.upgradeGuardianSet();return d._ixFn(...d._args,{accounts:getUpgradeGuardianSetAccounts(e,s,l),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function getUpgradeGuardianSetAccounts(t,e,s){return{payer:new PublicKey(e),bridge:deriveWormholeBridgeDataKey(t),vaa:derivePostedVaaKey(t,dist$2.Buffer.from(s.hash)),claim:deriveClaimKey(t,s.emitterAddress.toString(),toChainId(s.emitterChain),s.sequence),guardianSetOld:deriveGuardianSetKey(t,s.guardianSet),guardianSetNew:deriveGuardianSetKey(t,s.guardianSet+1),systemProgram:SystemProgram.programId}}function createUpgradeContractInstruction(t,e,s,l){const d=createReadOnlyWormholeProgramInterface(e,t).methods.upgradeContract();return d._ixFn(...d._args,{accounts:getUpgradeContractAccounts(e,s,l),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function getUpgradeContractAccounts(t,e,s,l){const{newContract:d}=s.payload.actionArgs;return{payer:new PublicKey(e),bridge:deriveWormholeBridgeDataKey(t),vaa:derivePostedVaaKey(t,dist$2.Buffer.from(s.hash)),claim:deriveClaimKey(t,s.emitterAddress.toString(),toChainId(s.emitterChain),s.sequence),upgradeAuthority:deriveUpgradeAuthorityKey(t),spill:new PublicKey(l===void 0?e:l),implementation:new SolanaAddress(d).unwrap(),programData:deriveProgramDataAddress(t),wormholeProgram:new PublicKey(t),rent:SYSVAR_RENT_PUBKEY,clock:SYSVAR_CLOCK_PUBKEY,bpfLoaderUpgradeable:BPF_LOADER_UPGRADEABLE_PROGRAM_ID$1,systemProgram:SystemProgram.programId}}function createInitializeInstruction(t,e,s,l,d,u){const p=createReadOnlyWormholeProgramInterface(e,t).methods.initialize(l,new BN(d.toString()),[...u.map(m=>[...new Uint8Array(m)])]);return p._ixFn(...p._args,{accounts:getInitializeAccounts(e,s),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function getInitializeAccounts(t,e){return{bridge:deriveWormholeBridgeDataKey(t),guardianSet:deriveGuardianSetKey(t,0),feeCollector:deriveFeeCollectorKey(t),payer:new PublicKey(e),clock:SYSVAR_CLOCK_PUBKEY,rent:SYSVAR_RENT_PUBKEY,systemProgram:SystemProgram.programId}}function createPostMessageInstruction(t,e,s,l,d,u,p){const m=createReadOnlyWormholeProgramInterface(e,t).methods.postMessage(u,dist$2.Buffer.from(d),p);return m._ixFn(...m._args,{accounts:getPostMessageAccounts(e,s,l),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function getPostMessageAccounts(t,e,s,l){let d;return l?{emitter:l,sequence:d}=getEmitterKeys(l,t):(l=e,d=deriveEmitterSequenceKey(l,t)),{bridge:deriveWormholeBridgeDataKey(t),message:new PublicKey(s),emitter:new PublicKey(l),sequence:d,payer:new PublicKey(e),feeCollector:deriveFeeCollectorKey(t),clock:SYSVAR_CLOCK_PUBKEY,rent:SYSVAR_RENT_PUBKEY,systemProgram:SystemProgram.programId}}function createPostVaaInstruction(t,e,s,l,d){const u=createReadOnlyWormholeProgramInterface(e,t).methods.postVaa(1,l.guardianSet,l.timestamp,l.nonce,toChainId(l.emitterChain),[...l.emitterAddress.toUint8Array()],new BN(l.sequence.toString()),l.consistencyLevel,dist$2.Buffer.from(serializePayload(l.payloadLiteral,l.payload)));return u._ixFn(...u._args,{accounts:getPostVaaAccounts(e,s,d,l),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function getPostVaaAccounts(t,e,s,l){return{guardianSet:deriveGuardianSetKey(t,l.guardianSet),bridge:deriveWormholeBridgeDataKey(t),signatureSet:new PublicKey(s),vaa:derivePostedVaaKey(t,dist$2.Buffer.from(l.hash)),payer:new PublicKey(e),clock:SYSVAR_CLOCK_PUBKEY,rent:SYSVAR_RENT_PUBKEY,systemProgram:SystemProgram.programId}}const MAX_LEN_GUARDIAN_KEYS=19;async function createVerifySignaturesInstructions(t,e,s,l,d,u){const p=l.guardianSet,m=await getGuardianSet(t,e,p,u),y=l.signatures,h=m.keys,v=7,A=[];for(let w=0;w<Math.ceil(y.length/v);++w){const I=w*v,k=Math.min(y.length,(w+1)*v),$=new Array(MAX_LEN_GUARDIAN_KEYS).fill(-1),P=[],z=[];for(let U=0;U<k-I;++U){const F=y.at(U+I);P.push(dist$2.Buffer.from(F.signature.encode())),z.push(h.at(F.guardianIndex)),$[F.guardianIndex]=U}A.push(createSecp256k1Instruction(P,z,dist$2.Buffer.from(l.hash))),A.push(createVerifySignaturesInstruction(t,e,s,l,d,$))}return A}function createVerifySignaturesInstruction(t,e,s,l,d,u){const p=createReadOnlyWormholeProgramInterface(e,t).methods.verifySignatures(u);return p._ixFn(...p._args,{accounts:getVerifySignatureAccounts(e,s,d,l),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function getVerifySignatureAccounts(t,e,s,l){return{payer:new PublicKey(e),guardianSet:deriveGuardianSetKey(t,l.guardianSet),signatureSet:new PublicKey(s),instructions:SYSVAR_INSTRUCTIONS_PUBKEY,rent:SYSVAR_RENT_PUBKEY,systemProgram:SystemProgram.programId}}function getWormholeDerivedAccounts(t,e){const{emitter:s,sequence:l}=getEmitterKeys(t,e);return{wormholeBridge:deriveWormholeBridgeDataKey(e),wormholeEmitter:s,wormholeSequence:l,wormholeFeeCollector:deriveFeeCollectorKey(e)}}function getPostMessageCpiAccounts(t,e,s,l){const d=getPostMessageAccounts(e,s,l,t);return{payer:d.payer,wormholeBridge:d.bridge,wormholeMessage:d.message,wormholeEmitter:d.emitter,wormholeSequence:d.sequence,wormholeFeeCollector:d.feeCollector,clock:d.clock,rent:d.rent,systemProgram:d.systemProgram}}const index$1=Object.freeze(Object.defineProperty({__proto__:null,BridgeConfig,BridgeData,GuardianSetData,SequenceTracker,SignatureSetData,coder,createBridgeFeeTransferInstruction,createInitializeInstruction,createPostMessageInstruction,createPostVaaInstruction,createReadOnlyWormholeProgramInterface,createSetFeesInstruction,createTransferFeesInstruction,createUpgradeContractInstruction,createUpgradeGuardianSetInstruction,createVerifySignaturesInstructions,createWormholeProgramInterface,deriveClaimKey,deriveEmitterSequenceKey,deriveFeeCollectorKey,deriveGuardianSetKey,derivePostedVaaKey,deriveUpgradeAuthorityKey,deriveWormholeBridgeDataKey,deriveWormholeEmitterKey,getClaim,getEmitterKeys,getGuardianSet,getInitializeAccounts,getPostMessageAccounts,getPostMessageCpiAccounts,getPostVaaAccounts,getProgramSequenceTracker,getSequenceTracker,getSetFeesAccounts,getSignatureSetData,getTransferFeesAccounts,getUpgradeContractAccounts,getUpgradeGuardianSetAccounts,getVerifySignatureAccounts,getWormholeBridgeData,getWormholeDerivedAccounts},Symbol.toStringTag,{value:"Module"})),SOLANA_SEQ_LOG="Program log: Sequence: ";class SolanaWormholeCore{constructor(e,s,l,d){Ae(this,"network");Ae(this,"chain");Ae(this,"connection");Ae(this,"contracts");Ae(this,"chainId");Ae(this,"coreBridge");Ae(this,"address");Ae(this,"bridgeData");this.network=e,this.chain=s,this.connection=l,this.contracts=d,this.chainId=toChainId(s);const u=d.coreBridge;if(!u)throw new Error(`CoreBridge contract Address for chain ${s} not found`);this.address=u,this.coreBridge=createReadOnlyWormholeProgramInterface(u,l)}async getGuardianSet(e){const s=await getGuardianSet(this.connection,this.coreBridge.programId,e);return{index:s.index,keys:s.keys.map(l=>l.toString("hex")),expiry:BigInt(s.expirationTime)}}static async fromRpc(e,s){const[l,d]=await SolanaPlatform.chainFromRpc(e),u=s[d];if(u.network!==l)throw new Error(`Network mismatch for chain ${d}: ${u.network} != ${l}`);return new SolanaWormholeCore(l,d,e,s[d].contracts)}async ensureBridgeConfig(){this.bridgeData||(this.bridgeData=await getWormholeBridgeData(this.connection,this.coreBridge.programId))}async getMessageFee(){return await this.ensureBridgeConfig(),this.bridgeData.config.fee}async getGuardianSetIndex(){return await this.ensureBridgeConfig(),this.bridgeData.guardianSetIndex}async*publishMessage(e,s,l,d){const u=Keypair.generate(),p=new SolanaAddress(e).unwrap(),m=createPostMessageInstruction(this.connection,this.coreBridge.programId,p,u.publicKey,s,l,d),y=await this.getMessageFee(),h=createBridgeFeeTransferInstruction(this.coreBridge.programId,p,y),v=new Transaction;v.feePayer=p,v.add(h,m),yield this.createUnsignedTx({transaction:v,signers:[u]},"Core.PublishMessage")}async*verifyMessage(e,s){yield*this.postVaa(e,s)}async*postVaa(e,s){const l=derivePostedVaaKey(this.coreBridge.programId,dist$2.Buffer.from(s.hash));if(await this.connection.getAccountInfo(l))return;const u=new SolanaAddress(e).unwrap(),p=Keypair.generate(),m=await createVerifySignaturesInstructions(this.connection,this.coreBridge.programId,u,s,p.publicKey);for(let h=0;h<m.length;h+=2){const v=new Transaction().add(...m.slice(h,h+2));v.feePayer=u,yield this.createUnsignedTx({transaction:v,signers:[p]},"Core.VerifySignature",!0)}const y=new Transaction().add(createPostVaaInstruction(this.connection,this.coreBridge.programId,u,s,p.publicKey));y.feePayer=u,yield this.createUnsignedTx({transaction:y},"Core.PostVAA")}static parseSequenceFromLog(e,s){var y,h,v,A;const{meta:l,transaction:{message:d}}=s;if(!((y=l==null?void 0:l.innerInstructions)!=null&&y.length))return[];const u=d.staticAccountKeys;if(u.filter(w=>w.toString()===e).length===0)return[];const p=(A=(v=(h=l==null?void 0:l.logMessages)==null?void 0:h.filter(w=>w.startsWith(SOLANA_SEQ_LOG)))==null?void 0:v[0])==null?void 0:A.replace(SOLANA_SEQ_LOG,"");if(!p)return[];const m=[];for(const w of l==null?void 0:l.innerInstructions){const I=w.instructions;m.push(...I.filter(k=>k.programIdIndex in u&&u[k.programIdIndex].toString()===e))}return m.length<1?[]:u.length<3?[]:m.map(w=>[new SolanaAddress(u[w.accounts[2]]).toUniversalAddress(),BigInt(p)]).filter(w=>w!==null)}async getMessageAccountKeys(e){let s;if(typeof e.transaction.message.version!="string")if(e.meta.loadedAddresses)s=e.transaction.message.getAccountKeys({accountKeysFromLookups:e.meta.loadedAddresses});else{const l=await Promise.all(e.transaction.message.addressTableLookups.map(async d=>{const u=await this.connection.getAddressLookupTable(d.accountKey);if(!u||!u.value)throw new Error("Could not resolve lookup table: "+d.accountKey.toBase58());return u.value}));s=e.transaction.message.getAccountKeys({addressLookupTableAccounts:l})}else s=e.transaction.message.getAccountKeys();return s}async findInstructions(e,s){var y;const{meta:l,transaction:{message:d}}=s,u=this.coreBridge.programId,p=(y=l.innerInstructions)==null?void 0:y.flatMap(h=>h.instructions.filter(v=>u.toString()===e.get(v.programIdIndex).toString())).map(h=>({programIdIndex:h.programIdIndex,accountKeyIndexes:h.accounts})),m=d.compiledInstructions.filter(h=>u.toString()===e.get(h.programIdIndex).toString());return[...p,...m]}async parsePostMessageAccount(e){const s=await this.connection.getAccountInfo(e);if(!(s!=null&&s.data))throw new Error("No data found in message account");const{timestamp:l,emitterAddress:d,emitterChain:u,consistencyLevel:p,sequence:m,nonce:y,payload:h}=deserializePostMessage(new Uint8Array(s==null?void 0:s.data));return createVAA("Uint8Array",{guardianSet:await this.getGuardianSetIndex(),emitterChain:toChain(u),timestamp:l,emitterAddress:d,consistencyLevel:p,sequence:m,nonce:y,payload:h,signatures:[]})}async parseTransaction(e){const s=await this.connection.getTransaction(e,{maxSupportedTransactionVersion:0});if(!s||!s.meta||!s.meta.innerInstructions)throw new Error("transaction not found");try{const p=SolanaWormholeCore.parseSequenceFromLog(this.coreBridge.programId.toBase58(),s);if(p.length>0){const[m,y]=p[0];return[{chain:this.chain,emitter:m,sequence:y}]}}catch{}const l=await this.getMessageAccountKeys(s),d=await this.findInstructions(l,s);if(!d||d.length===0)throw new Error("no bridge messages found");const u=d.map(async p=>{const m=l.get(p.accountKeyIndexes[1]),y=await this.parsePostMessageAccount(m);return{chain:y.emitterChain,emitter:y.emitterAddress,sequence:y.sequence}});return await Promise.all(u)}async parseMessages(e){const s=await this.connection.getTransaction(e,{maxSupportedTransactionVersion:0});if(!s||!s.meta||!s.meta.innerInstructions)throw new Error("transaction not found");const l=await this.getMessageAccountKeys(s),d=await this.findInstructions(l,s);if(!d||d.length===0)throw new Error("no bridge messages found");const u=d.map(async p=>{const m=l.get(p.accountKeyIndexes[1]);return await this.parsePostMessageAccount(m)});return await Promise.all(u)}createUnsignedTx(e,s,l=!1){return new SolanaUnsignedTransaction(e,this.network,this.chain,s,l)}}registerProtocol(_platform,"WormholeCore",SolanaWormholeCore);const index=Object.freeze(Object.defineProperty({__proto__:null,IDL:IDL$b,SolanaWormholeCore,deserializePostMessage,postMessageLayout,utils:index$1},Symbol.toStringTag,{value:"Module"})),IDL$a={version:"1.0.0",name:"example_native_token_transfers",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"deployer",isMut:!1,isSigner:!0},{name:"programData",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rateLimit",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["The custody account that holds tokens in locking mode.","NOTE: the account is unconditionally initialized, but not used in","burning mode.","function if the token account has already been created."]},{name:"tokenProgram",isMut:!1,isSigner:!1,docs:["associated token account for the given mint."]},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"version",accounts:[],args:[],returns:"string"},{name:"transferBurn",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"transferLock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"redeem",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!1,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"inboxItem",isMut:!0,isSigner:!1,docs:["NOTE: This account is content-addressed (PDA seeded by the message hash).","This is because in a multi-transceiver configuration, the different",'transceivers "vote" on messages (by delivering them). By making the inbox',"items content-addressed, we can ensure that disagreeing votes don't","interfere with each other.","On the first call to [`redeem()`], [`InboxItem`] will be allocated and initialized with","default values.",'On subsequent calls, we want to modify the `InboxItem` by "voting" on it. Therefore the',"program should not fail which would occur when using the `init` constraint.","The [`InboxItem::init`] field is used to guard against malicious or accidental modification","InboxItem fields that should remain constant."]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RedeemArgs"}}]},{name:"releaseInboundMint",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"releaseInboundUnlock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}]},{name:"custody",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"transferOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"newOwner",isMut:!1,isSigner:!0},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setPaused",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"pause",type:"bool"}]},{name:"setPeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!0,isSigner:!1},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetPeerArgs"}}]},{name:"registerTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"transceiver",isMut:!1,isSigner:!1},{name:"registeredTransceiver",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setOutboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetOutboundLimitArgs"}}]},{name:"setInboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetInboundLimitArgs"}}]},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"nttManagerPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}},{name:"tokenDecimals",type:"u8"}]}},{name:"inboxItem",type:{kind:"struct",fields:[{name:"init",type:"bool"},{name:"bump",type:"u8"},{name:"amount",type:"u64"},{name:"recipientAddress",type:"publicKey"},{name:"votes",type:{defined:"Bitmap"}},{name:"releaseStatus",type:{defined:"ReleaseStatus"}}]}},{name:"inboxRateLimit",docs:["Inbound rate limit per chain.","SECURITY: must check the PDA (since there are multiple PDAs, namely one for each chain.)"],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"outboxRateLimit",type:{kind:"struct",fields:[{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"SetInboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"},{name:"chainId",type:{defined:"ChainId"}}]}},{name:"SetOutboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"}]}},{name:"SetPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}},{name:"limit",type:"u64"},{name:"tokenDecimals",docs:["The token decimals on the peer chain."],type:"u8"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"},{name:"limit",type:"u64"},{name:"mode",type:{defined:"Mode"}}]}},{name:"RedeemArgs",type:{kind:"struct",fields:[]}},{name:"ReleaseInboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"TransferArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"shouldQueue",type:"bool"}]}},{name:"ReleaseStatus",docs:["The status of an InboxItem. This determines whether the tokens are minted/unlocked to the recipient. As","such, this must be used as a state machine that moves forward in a linear manner. A state",'should never "move backward" to a previous state (e.g. should never move from `Released` to',"`ReleaseAfter`)."],type:{kind:"enum",variants:[{name:"NotApproved"},{name:"ReleaseAfter",fields:["i64"]},{name:"Released"}]}},{name:"RateLimitState",type:{kind:"struct",fields:[{name:"limit",docs:["The maximum capacity of the rate limiter."],type:"u64"},{name:"capacityAtLastTx",docs:["The capacity of the rate limiter at `last_tx_timestamp`.","The actual current capacity is calculated in `capacity_at`, by","accounting for the time that has passed since `last_tx_timestamp` and","the refill rate."],type:"u64"},{name:"lastTxTimestamp",docs:["The timestamp of the last transaction that counted towards the current","capacity. Transactions that exceeded the capacity do not count, they are","just delayed."],type:"i64"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}],errors:[{code:6e3,name:"CantReleaseYet",msg:"CantReleaseYet"},{code:6001,name:"InvalidPendingOwner",msg:"InvalidPendingOwner"},{code:6002,name:"InvalidChainId",msg:"InvalidChainId"},{code:6003,name:"InvalidRecipientAddress",msg:"InvalidRecipientAddress"},{code:6004,name:"InvalidTransceiverPeer",msg:"InvalidTransceiverPeer"},{code:6005,name:"InvalidNttManagerPeer",msg:"InvalidNttManagerPeer"},{code:6006,name:"InvalidRecipientNttManager",msg:"InvalidRecipientNttManager"},{code:6007,name:"TransferAlreadyRedeemed",msg:"TransferAlreadyRedeemed"},{code:6008,name:"TransferCannotBeRedeemed",msg:"TransferCannotBeRedeemed"},{code:6009,name:"TransferNotApproved",msg:"TransferNotApproved"},{code:6010,name:"MessageAlreadySent",msg:"MessageAlreadySent"},{code:6011,name:"InvalidMode",msg:"InvalidMode"},{code:6012,name:"InvalidMintAuthority",msg:"InvalidMintAuthority"},{code:6013,name:"TransferExceedsRateLimit",msg:"TransferExceedsRateLimit"},{code:6014,name:"Paused",msg:"Paused"},{code:6015,name:"DisabledTransceiver",msg:"DisabledTransceiver"},{code:6016,name:"InvalidDeployer",msg:"InvalidDeployer"},{code:6017,name:"BadAmountAfterTransfer",msg:"BadAmountAfterTransfer"},{code:6018,name:"BadAmountAfterBurn",msg:"BadAmountAfterBurn"},{code:6019,name:"ZeroThreshold",msg:"ZeroThreshold"},{code:6020,name:"OverflowExponent",msg:"OverflowExponent"},{code:6021,name:"OverflowScaledAmount",msg:"OverflowScaledAmount"},{code:6022,name:"BitmapIndexOutOfBounds",msg:"BitmapIndexOutOfBounds"}]},IDL$9={version:"2.0.0",name:"ntt_quoter",instructions:[{name:"requestRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!1,isSigner:!1,docs:["and checking the release constraint into a single function"]},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RequestRelayArgs"}}]},{name:"closeRelay",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"feeRecipient",isMut:!0,isSigner:!1},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"initialize",accounts:[{name:"owner",isMut:!0,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1,docs:["We use the program data to make sure this owner is the upgrade authority (the true owner,","who deployed this program)."]},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAssistant",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"assistant",isMut:!1,isSigner:!1,isOptional:!0}],args:[]},{name:"setFeeRecipient",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1}],args:[]},{name:"registerChain",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainArgs"}}]},{name:"registerNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterNttArgs"}}]},{name:"deregisterNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"DeregisterNttArgs"}}]},{name:"updateSolPrice",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateSolPriceArgs"}}]},{name:"updateChainPrices",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainPricesArgs"}}]},{name:"updateChainParams",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainParamsArgs"}}]}],accounts:[{name:"instance",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"assistant",type:"publicKey"},{name:"feeRecipient",type:"publicKey"},{name:"solPrice",type:"u64"}]}},{name:"registeredChain",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"},{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"registeredNtt",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"relayRequest",type:{kind:"struct",fields:[{name:"requestedGasDropoff",type:"u64"}]}}],types:[{name:"RegisterChainArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"RegisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"DeregisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"}]}},{name:"RequestRelayArgs",type:{kind:"struct",fields:[{name:"gasDropoff",type:"u64"},{name:"maxFee",type:"u64"}]}},{name:"UpdateSolPriceArgs",type:{kind:"struct",fields:[{name:"solPrice",type:"u64"}]}},{name:"UpdateChainPricesArgs",type:{kind:"struct",fields:[{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"UpdateChainParamsArgs",type:{kind:"struct",fields:[{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"}]}}],errors:[{code:6001,name:"ExceedsUserMaxFee",msg:"Relay fees exceeds specified max"},{code:6002,name:"ExceedsMaxGasDropoff",msg:"Requested gas dropoff exceeds max allowed for chain"},{code:6003,name:"InvalidFeeRecipient",msg:"The specified fee recipient does not match the address in the instance accound"},{code:6004,name:"RelayingToChainDisabled",msg:"Relaying to the specified chain is disabled"},{code:6005,name:"OutboxItemNotReleased",msg:"Relaying to the specified chain is disabled"},{code:6006,name:"ScalingOverflow",msg:"Scaled value exceeds u64::MAX"},{code:6007,name:"DivByZero",msg:"Cannot divide by zero"},{code:6257,name:"FeeRecipientCannotBeDefault",msg:"The fee recipient cannot be the default address (0x0)"},{code:6258,name:"NotAuthorized",msg:"Must be owner or assistant"},{code:6259,name:"PriceCannotBeZero",msg:"The price cannot be zero"}]},IDL$8={version:"1.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"}]};var _1_0_0;(function(t){t.idl={ntt:IDL$a,transceiver:IDL$a,quoter:IDL$9,governance:IDL$8}})(_1_0_0||(_1_0_0={}));const IDL$7={version:"2.0.0",name:"example_native_token_transfers",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"deployer",isMut:!1,isSigner:!0},{name:"programData",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rateLimit",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["In any case, this function is used to set the Config and initialize the program so we","assume the caller of this function will have total control over the program.","",'TODO: Using `UncheckedAccount` here leads to "Access violation in stack frame ...".',"Could refactor code to use `Box<_>` to reduce stack size."]},{name:"custody",isMut:!0,isSigner:!1,docs:["The custody account that holds tokens in locking mode and temporarily","holds tokens in burning mode.","function if the token account has already been created."]},{name:"tokenProgram",isMut:!1,isSigner:!1,docs:["associated token account for the given mint."]},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializeLut",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"authority",isMut:!1,isSigner:!1},{name:"lutAddress",isMut:!0,isSigner:!1},{name:"lut",isMut:!0,isSigner:!1},{name:"lutProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"entries",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"custody",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"outboxRateLimit",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}]}],args:[{name:"recentSlot",type:"u64"}]},{name:"version",accounts:[],args:[],returns:"string"},{name:"transferBurn",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]},{name:"tokenAuthority",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"transferLock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"redeem",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!1,isSigner:!1,docs:["`Account<T>` and `owner` constraints are mutually-exclusive"]},{name:"transceiver",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"inboxItem",isMut:!0,isSigner:!1,docs:["NOTE: This account is content-addressed (PDA seeded by the message hash).","This is because in a multi-transceiver configuration, the different",'transceivers "vote" on messages (by delivering them). By making the inbox',"items content-addressed, we can ensure that disagreeing votes don't","interfere with each other.","On the first call to [`redeem()`], [`InboxItem`] will be allocated and initialized with","default values.",'On subsequent calls, we want to modify the `InboxItem` by "voting" on it. Therefore the',"program should not fail which would occur when using the `init` constraint.","The [`InboxItem::init`] field is used to guard against malicious or accidental modification","InboxItem fields that should remain constant."]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RedeemArgs"}}]},{name:"releaseInboundMint",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["CHECK The seeds constraint ensures that this is the correct address"]},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"releaseInboundUnlock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["CHECK The seeds constraint ensures that this is the correct address"]},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"transferOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"newOwner",isMut:!1,isSigner:!0},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setPaused",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"pause",type:"bool"}]},{name:"setPeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!0,isSigner:!1},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetPeerArgs"}}]},{name:"registerTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"transceiver",isMut:!1,isSigner:!1,docs:["used here that wraps the Transceiver account type."]},{name:"registeredTransceiver",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setOutboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetOutboundLimitArgs"}}]},{name:"setInboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetInboundLimitArgs"}}]},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"LUT",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:"publicKey"}]}},{name:"nttManagerPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}},{name:"tokenDecimals",type:"u8"}]}},{name:"inboxItem",type:{kind:"struct",fields:[{name:"init",type:"bool"},{name:"bump",type:"u8"},{name:"amount",type:"u64"},{name:"recipientAddress",type:"publicKey"},{name:"votes",type:{defined:"Bitmap"}},{name:"releaseStatus",type:{defined:"ReleaseStatus"}}]}},{name:"inboxRateLimit",docs:["Inbound rate limit per chain.","SECURITY: must check the PDA (since there are multiple PDAs, namely one for each chain.)"],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"outboxRateLimit",type:{kind:"struct",fields:[{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"SetInboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"},{name:"chainId",type:{defined:"ChainId"}}]}},{name:"SetOutboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"}]}},{name:"SetPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}},{name:"limit",type:"u64"},{name:"tokenDecimals",docs:["The token decimals on the peer chain."],type:"u8"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"},{name:"limit",type:"u64"},{name:"mode",type:{defined:"Mode"}}]}},{name:"RedeemArgs",type:{kind:"struct",fields:[]}},{name:"ReleaseInboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"TransferArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"shouldQueue",type:"bool"}]}},{name:"ReleaseStatus",docs:["The status of an InboxItem. This determines whether the tokens are minted/unlocked to the recipient. As","such, this must be used as a state machine that moves forward in a linear manner. A state",'should never "move backward" to a previous state (e.g. should never move from `Released` to',"`ReleaseAfter`)."],type:{kind:"enum",variants:[{name:"NotApproved"},{name:"ReleaseAfter",fields:["i64"]},{name:"Released"}]}},{name:"RateLimitState",type:{kind:"struct",fields:[{name:"limit",docs:["The maximum capacity of the rate limiter."],type:"u64"},{name:"capacityAtLastTx",docs:["The capacity of the rate limiter at `last_tx_timestamp`.","The actual current capacity is calculated in `capacity_at`, by","accounting for the time that has passed since `last_tx_timestamp` and","the refill rate."],type:"u64"},{name:"lastTxTimestamp",docs:["The timestamp of the last transaction that counted towards the current","capacity. Transactions that exceeded the capacity do not count, they are","just delayed."],type:"i64"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}],errors:[{code:6e3,name:"CantReleaseYet",msg:"CantReleaseYet"},{code:6001,name:"InvalidPendingOwner",msg:"InvalidPendingOwner"},{code:6002,name:"InvalidChainId",msg:"InvalidChainId"},{code:6003,name:"InvalidRecipientAddress",msg:"InvalidRecipientAddress"},{code:6004,name:"InvalidTransceiverPeer",msg:"InvalidTransceiverPeer"},{code:6005,name:"InvalidNttManagerPeer",msg:"InvalidNttManagerPeer"},{code:6006,name:"InvalidRecipientNttManager",msg:"InvalidRecipientNttManager"},{code:6007,name:"TransferAlreadyRedeemed",msg:"TransferAlreadyRedeemed"},{code:6008,name:"TransferCannotBeRedeemed",msg:"TransferCannotBeRedeemed"},{code:6009,name:"TransferNotApproved",msg:"TransferNotApproved"},{code:6010,name:"MessageAlreadySent",msg:"MessageAlreadySent"},{code:6011,name:"InvalidMode",msg:"InvalidMode"},{code:6012,name:"InvalidMintAuthority",msg:"InvalidMintAuthority"},{code:6013,name:"TransferExceedsRateLimit",msg:"TransferExceedsRateLimit"},{code:6014,name:"Paused",msg:"Paused"},{code:6015,name:"DisabledTransceiver",msg:"DisabledTransceiver"},{code:6016,name:"InvalidDeployer",msg:"InvalidDeployer"},{code:6017,name:"BadAmountAfterTransfer",msg:"BadAmountAfterTransfer"},{code:6018,name:"BadAmountAfterBurn",msg:"BadAmountAfterBurn"},{code:6019,name:"ZeroThreshold",msg:"ZeroThreshold"},{code:6020,name:"OverflowExponent",msg:"OverflowExponent"},{code:6021,name:"OverflowScaledAmount",msg:"OverflowScaledAmount"},{code:6022,name:"BitmapIndexOutOfBounds",msg:"BitmapIndexOutOfBounds"},{code:6023,name:"NoRegisteredTransceivers",msg:"NoRegisteredTransceivers"}]},IDL$6={version:"2.0.0",name:"ntt_quoter",instructions:[{name:"requestRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!1,isSigner:!1,docs:["and checking the release constraint into a single function"]},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RequestRelayArgs"}}]},{name:"closeRelay",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"feeRecipient",isMut:!0,isSigner:!1},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"initialize",accounts:[{name:"owner",isMut:!0,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1,docs:["We use the program data to make sure this owner is the upgrade authority (the true owner,","who deployed this program)."]},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAssistant",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"assistant",isMut:!1,isSigner:!1,isOptional:!0}],args:[]},{name:"setFeeRecipient",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1}],args:[]},{name:"registerChain",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainArgs"}}]},{name:"registerNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterNttArgs"}}]},{name:"deregisterNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"DeregisterNttArgs"}}]},{name:"updateSolPrice",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateSolPriceArgs"}}]},{name:"updateChainPrices",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainPricesArgs"}}]},{name:"updateChainParams",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainParamsArgs"}}]}],accounts:[{name:"instance",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"assistant",type:"publicKey"},{name:"feeRecipient",type:"publicKey"},{name:"solPrice",type:"u64"}]}},{name:"registeredChain",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"},{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"registeredNtt",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"relayRequest",type:{kind:"struct",fields:[{name:"requestedGasDropoff",type:"u64"}]}}],types:[{name:"RegisterChainArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"RegisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"DeregisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"}]}},{name:"RequestRelayArgs",type:{kind:"struct",fields:[{name:"gasDropoff",type:"u64"},{name:"maxFee",type:"u64"}]}},{name:"UpdateSolPriceArgs",type:{kind:"struct",fields:[{name:"solPrice",type:"u64"}]}},{name:"UpdateChainPricesArgs",type:{kind:"struct",fields:[{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"UpdateChainParamsArgs",type:{kind:"struct",fields:[{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"}]}}],errors:[{code:6001,name:"ExceedsUserMaxFee",msg:"Relay fees exceeds specified max"},{code:6002,name:"ExceedsMaxGasDropoff",msg:"Requested gas dropoff exceeds max allowed for chain"},{code:6003,name:"InvalidFeeRecipient",msg:"The specified fee recipient does not match the address in the instance accound"},{code:6004,name:"RelayingToChainDisabled",msg:"Relaying to the specified chain is disabled"},{code:6005,name:"OutboxItemNotReleased",msg:"Relaying to the specified chain is disabled"},{code:6006,name:"ScalingOverflow",msg:"Scaled value exceeds u64::MAX"},{code:6007,name:"DivByZero",msg:"Cannot divide by zero"},{code:6257,name:"FeeRecipientCannotBeDefault",msg:"The fee recipient cannot be the default address (0x0)"},{code:6258,name:"NotAuthorized",msg:"Must be owner or assistant"},{code:6259,name:"PriceCannotBeZero",msg:"The price cannot be zero"}]},IDL$5={version:"2.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1,docs:["governed program. This account is validated by Wormhole, not this program."]},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"},{code:6002,name:"InvalidGovernanceProgram",msg:"InvalidGovernanceProgram"}]};var _2_0_0;(function(t){t.idl={ntt:IDL$7,transceiver:IDL$7,quoter:IDL$6,governance:IDL$5}})(_2_0_0||(_2_0_0={}));const IDL$4={version:"3.0.0",name:"example_native_token_transfers",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"deployer",isMut:!1,isSigner:!0},{name:"programData",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rateLimit",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["In any case, this function is used to set the Config and initialize the program so we","assume the caller of this function will have total control over the program.","",'TODO: Using `UncheckedAccount` here leads to "Access violation in stack frame ...".',"Could refactor code to use `Box<_>` to reduce stack size."]},{name:"custody",isMut:!0,isSigner:!1,docs:["The custody account that holds tokens in locking mode and temporarily","holds tokens in burning mode.","function if the token account has already been created."]},{name:"tokenProgram",isMut:!1,isSigner:!1,docs:["associated token account for the given mint."]},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializeLut",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"authority",isMut:!1,isSigner:!1},{name:"lutAddress",isMut:!0,isSigner:!1},{name:"lut",isMut:!0,isSigner:!1},{name:"lutProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"entries",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"custody",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"outboxRateLimit",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}]}],args:[{name:"recentSlot",type:"u64"}]},{name:"version",accounts:[],args:[],returns:"string"},{name:"transferBurn",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]},{name:"tokenAuthority",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"transferLock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"redeem",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!1,isSigner:!1,docs:["`Account<T>` and `owner` constraints are mutually-exclusive"]},{name:"transceiver",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"inboxItem",isMut:!0,isSigner:!1,docs:["NOTE: This account is content-addressed (PDA seeded by the message hash).","This is because in a multi-transceiver configuration, the different",'transceivers "vote" on messages (by delivering them). By making the inbox',"items content-addressed, we can ensure that disagreeing votes don't","interfere with each other.","On the first call to [`redeem()`], [`InboxItem`] will be allocated and initialized with","default values.",'On subsequent calls, we want to modify the `InboxItem` by "voting" on it. Therefore the',"program should not fail which would occur when using the `init` constraint.","The [`InboxItem::init`] field is used to guard against malicious or accidental modification","InboxItem fields that should remain constant."]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RedeemArgs"}}]},{name:"releaseInboundMint",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["CHECK The seeds constraint ensures that this is the correct address"]},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"releaseInboundUnlock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["CHECK The seeds constraint ensures that this is the correct address"]},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"transferOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"transferOwnershipOneStepUnchecked",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"newOwner",isMut:!1,isSigner:!0},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setPaused",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"pause",type:"bool"}]},{name:"setPeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!0,isSigner:!1},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetPeerArgs"}}]},{name:"registerTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"transceiver",isMut:!1,isSigner:!1,docs:["used here that wraps the Transceiver account type."]},{name:"registeredTransceiver",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setOutboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetOutboundLimitArgs"}}]},{name:"setInboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetInboundLimitArgs"}}]},{name:"markOutboxItemAsReleased",accounts:[{name:"signer",isMut:!1,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1}],args:[],returns:"bool"},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"LUT",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:"publicKey"}]}},{name:"nttManagerPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}},{name:"tokenDecimals",type:"u8"}]}},{name:"inboxItem",type:{kind:"struct",fields:[{name:"init",type:"bool"},{name:"bump",type:"u8"},{name:"amount",type:"u64"},{name:"recipientAddress",type:"publicKey"},{name:"votes",type:{defined:"Bitmap"}},{name:"releaseStatus",type:{defined:"ReleaseStatus"}}]}},{name:"inboxRateLimit",docs:["Inbound rate limit per chain.","SECURITY: must check the PDA (since there are multiple PDAs, namely one for each chain.)"],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"outboxRateLimit",type:{kind:"struct",fields:[{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"SetInboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"},{name:"chainId",type:{defined:"ChainId"}}]}},{name:"SetOutboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"}]}},{name:"SetPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}},{name:"limit",type:"u64"},{name:"tokenDecimals",docs:["The token decimals on the peer chain."],type:"u8"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"},{name:"limit",type:"u64"},{name:"mode",type:{defined:"Mode"}}]}},{name:"RedeemArgs",type:{kind:"struct",fields:[]}},{name:"ReleaseInboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"TransferArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"shouldQueue",type:"bool"}]}},{name:"ReleaseStatus",docs:["The status of an InboxItem. This determines whether the tokens are minted/unlocked to the recipient. As","such, this must be used as a state machine that moves forward in a linear manner. A state",'should never "move backward" to a previous state (e.g. should never move from `Released` to',"`ReleaseAfter`)."],type:{kind:"enum",variants:[{name:"NotApproved"},{name:"ReleaseAfter",fields:["i64"]},{name:"Released"}]}},{name:"RateLimitState",type:{kind:"struct",fields:[{name:"limit",docs:["The maximum capacity of the rate limiter."],type:"u64"},{name:"capacityAtLastTx",docs:["The capacity of the rate limiter at `last_tx_timestamp`.","The actual current capacity is calculated in `capacity_at`, by","accounting for the time that has passed since `last_tx_timestamp` and","the refill rate."],type:"u64"},{name:"lastTxTimestamp",docs:["The timestamp of the last transaction that counted towards the current","capacity. Transactions that exceeded the capacity do not count, they are","just delayed."],type:"i64"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}],errors:[{code:6e3,name:"CantReleaseYet",msg:"CantReleaseYet"},{code:6001,name:"InvalidPendingOwner",msg:"InvalidPendingOwner"},{code:6002,name:"InvalidChainId",msg:"InvalidChainId"},{code:6003,name:"InvalidRecipientAddress",msg:"InvalidRecipientAddress"},{code:6004,name:"InvalidTransceiverPeer",msg:"InvalidTransceiverPeer"},{code:6005,name:"InvalidNttManagerPeer",msg:"InvalidNttManagerPeer"},{code:6006,name:"InvalidRecipientNttManager",msg:"InvalidRecipientNttManager"},{code:6007,name:"TransferAlreadyRedeemed",msg:"TransferAlreadyRedeemed"},{code:6008,name:"TransferCannotBeRedeemed",msg:"TransferCannotBeRedeemed"},{code:6009,name:"TransferNotApproved",msg:"TransferNotApproved"},{code:6010,name:"MessageAlreadySent",msg:"MessageAlreadySent"},{code:6011,name:"InvalidMode",msg:"InvalidMode"},{code:6012,name:"InvalidMintAuthority",msg:"InvalidMintAuthority"},{code:6013,name:"TransferExceedsRateLimit",msg:"TransferExceedsRateLimit"},{code:6014,name:"Paused",msg:"Paused"},{code:6015,name:"DisabledTransceiver",msg:"DisabledTransceiver"},{code:6016,name:"InvalidDeployer",msg:"InvalidDeployer"},{code:6017,name:"BadAmountAfterTransfer",msg:"BadAmountAfterTransfer"},{code:6018,name:"BadAmountAfterBurn",msg:"BadAmountAfterBurn"},{code:6019,name:"ZeroThreshold",msg:"ZeroThreshold"},{code:6020,name:"OverflowExponent",msg:"OverflowExponent"},{code:6021,name:"OverflowScaledAmount",msg:"OverflowScaledAmount"},{code:6022,name:"BitmapIndexOutOfBounds",msg:"BitmapIndexOutOfBounds"},{code:6023,name:"NoRegisteredTransceivers",msg:"NoRegisteredTransceivers"}]},IDL$3={version:"3.0.0",name:"ntt_transceiver",instructions:[{name:"transceiverType",accounts:[],args:[],returns:"string"},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]},{name:"manager",isMut:!1,isSigner:!1},{name:"outboxItemSigner",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}]},IDL$2={version:"3.0.0",name:"ntt_quoter",instructions:[{name:"requestRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!1,isSigner:!1,docs:["and checking the release constraint into a single function"]},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RequestRelayArgs"}}]},{name:"closeRelay",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"feeRecipient",isMut:!0,isSigner:!1},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"initialize",accounts:[{name:"owner",isMut:!0,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1,docs:["We use the program data to make sure this owner is the upgrade authority (the true owner,","who deployed this program)."]},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAssistant",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"assistant",isMut:!1,isSigner:!1,isOptional:!0}],args:[]},{name:"setFeeRecipient",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1}],args:[]},{name:"registerChain",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainArgs"}}]},{name:"registerNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterNttArgs"}}]},{name:"deregisterNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"DeregisterNttArgs"}}]},{name:"updateSolPrice",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateSolPriceArgs"}}]},{name:"updateChainPrices",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainPricesArgs"}}]},{name:"updateChainParams",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainParamsArgs"}}]}],accounts:[{name:"instance",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"assistant",type:"publicKey"},{name:"feeRecipient",type:"publicKey"},{name:"solPrice",type:"u64"}]}},{name:"registeredChain",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"},{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"registeredNtt",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"relayRequest",type:{kind:"struct",fields:[{name:"requestedGasDropoff",type:"u64"}]}}],types:[{name:"RegisterChainArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"RegisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"DeregisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"}]}},{name:"RequestRelayArgs",type:{kind:"struct",fields:[{name:"gasDropoff",type:"u64"},{name:"maxFee",type:"u64"}]}},{name:"UpdateSolPriceArgs",type:{kind:"struct",fields:[{name:"solPrice",type:"u64"}]}},{name:"UpdateChainPricesArgs",type:{kind:"struct",fields:[{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"UpdateChainParamsArgs",type:{kind:"struct",fields:[{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"}]}}],errors:[{code:6001,name:"ExceedsUserMaxFee",msg:"Relay fees exceeds specified max"},{code:6002,name:"ExceedsMaxGasDropoff",msg:"Requested gas dropoff exceeds max allowed for chain"},{code:6003,name:"InvalidFeeRecipient",msg:"The specified fee recipient does not match the address in the instance accound"},{code:6004,name:"RelayingToChainDisabled",msg:"Relaying to the specified chain is disabled"},{code:6005,name:"OutboxItemNotReleased",msg:"Relaying to the specified chain is disabled"},{code:6006,name:"ScalingOverflow",msg:"Scaled value exceeds u64::MAX"},{code:6007,name:"DivByZero",msg:"Cannot divide by zero"},{code:6257,name:"FeeRecipientCannotBeDefault",msg:"The fee recipient cannot be the default address (0x0)"},{code:6258,name:"NotAuthorized",msg:"Must be owner or assistant"},{code:6259,name:"PriceCannotBeZero",msg:"The price cannot be zero"}]},IDL$1={version:"3.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1,docs:["governed program. This account is validated by Wormhole, not this program."]},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"},{code:6002,name:"InvalidGovernanceProgram",msg:"InvalidGovernanceProgram"}]};var _3_0_0;(function(t){t.idl={ntt:IDL$4,transceiver:IDL$3,quoter:IDL$2,governance:IDL$1}})(_3_0_0||(_3_0_0={}));const IdlVersions=[["3.0.0",_3_0_0],["2.0.0",_2_0_0],["1.0.0",_1_0_0]];function loadIdlVersion(t){for(const[e,s]of IdlVersions)if(Ntt.abiVersionMatches(t,e))return s;throw new Error(`Unknown IDL version: ${t}`)}function getNttProgram(t,e,s){const{idl:{ntt:l}}=loadIdlVersion(s);return new Program(l,e,{connection:t})}function getTransceiverProgram(t,e,s){const{idl:{transceiver:l}}=loadIdlVersion(s);return new Program(l,e,{connection:t})}const BPF_LOADER_UPGRADEABLE_PROGRAM_ID=new PublicKey("BPFLoaderUpgradeab1e11111111111111111111111");function programDataAddress(t){return PublicKey.findProgramAddressSync([new PublicKey(t).toBytes()],BPF_LOADER_UPGRADEABLE_PROGRAM_ID)[0]}function parseVersion(t){const e=t.split(".");if(e.length<3)throw new Error("Invalid version string");const s=e[2],l=s.split(/[^0-9]/)[0],d=s.slice(l.length);return[Number(e[0]),Number(e[1]),Number(l),d]}const pubKeyConversion={to:t=>new PublicKey(t),from:t=>t.toBytes()},programDataLayout=[{name:"slot",binary:"uint",endianness:"little",size:8},{name:"upgradeAuthority",binary:"switch",idSize:1,idTag:"isSome",layouts:[[[0,!1],[]],[[1,!0],[{name:"value",binary:"bytes",size:32,custom:pubKeyConversion}]]]}],programVersionLayout=[{name:"length",binary:"uint",endianness:"little",size:4},{name:"version",binary:"bytes"}],U64={MAX:new BN((2n**64n-1n).toString()),to:(t,e)=>{const s=new BN(Math.round(t*e));if(s.isNeg())throw new Error("Value negative");if(s.bitLength()>64)throw new Error("Value too large");return s},from:(t,e)=>t.toNumber()/e};function derivePda(t,e){const s=l=>typeof l=="string"?bytes$1.encode(l):l;return PublicKey.findProgramAddressSync(Array.isArray(t)?t.map(s):[s(t)],new PublicKey(e))[0]}const chainToBytes=t=>bignum.toBytes(toChainId(t),2),quoterAddresses=t=>({relayRequestAccount:u=>derivePda(["relay_request",u.toBytes()],t),instanceAccount:()=>derivePda("instance",t),registeredChainAccount:u=>derivePda(["registered_chain",chainToBytes(u)],t),registeredNttAccount:u=>derivePda(["registered_ntt",u.toBytes()],t)});var NTT$1;(function(t){function e(F,q,V){return{amount:new BN(F.toString()),recipientChain:{id:toChainId(q.chain)},recipientAddress:Array.from(q.address.toUniversalAddress().toUint8Array()),shouldQueue:V}}t.transferArgs=e,t.pdas=F=>({configAccount:()=>derivePda("config",F),outboxRateLimitAccount:()=>derivePda("outbox_rate_limit",F),inboxRateLimitAccount:E=>derivePda(["inbox_rate_limit",chainToBytes(E)],F),inboxItemAccount:(E,C)=>derivePda(["inbox_item",Ntt.messageDigest(E,C)],F),sessionAuthority:(E,C)=>derivePda(["session_authority",E.toBytes(),keccak_256(bytes$1.concat(bytes$1.zpad(new Uint8Array(C.amount.toArray()),8),chainToBytes(C.recipientChain.id),new Uint8Array(C.recipientAddress),new Uint8Array([C.shouldQueue?1:0])))],F),tokenAuthority:()=>derivePda("token_authority",F),peerAccount:E=>derivePda(["peer",chainToBytes(E)],F),registeredTransceiver:E=>derivePda(["registered_transceiver",E.toBytes()],F),lutAccount:()=>derivePda("lut",F),lutAuthority:()=>derivePda("lut_authority",F)}),t.transceiverPdas=F=>({emitterAccount:()=>derivePda("emitter",F),outboxItemSigner:()=>derivePda(["outbox_item_signer"],F),transceiverPeerAccount:ee=>derivePda(["transceiver_peer",chainToBytes(ee)],F),transceiverMessageAccount:(ee,le)=>derivePda(["transceiver_message",chainToBytes(ee),le],F),wormholeMessageAccount:ee=>derivePda(["message",ee.toBytes()],F)});async function s(F,q,V){var C;if(!V){const D=F.rpcEndpoint===rpcAddress("Devnet","Solana")?"6sbzC1eH4FTujJXWj51eQe25cYvr4xfXbJ1vAj7j2k5J":F.rpcEndpoint.startsWith("http://localhost")?"98evdAiWr7ey9MAQzoQQMwFQkTsSR6KkWQuFqKrgwNwb":"Hk3SdYTJFpawrvRz4qRztuEt2SqoCG7BGj2yJfDJSFbJ";V=new PublicKey(D)}const H=getNttProgram(F,q.toString(),"1.0.0"),Z=await H.methods.version().accountsStrict({}).instruction(),{blockhash:ne}=await H.provider.connection.getLatestBlockhash("finalized"),ee=new TransactionMessage({payerKey:V,recentBlockhash:ne,instructions:[Z]}).compileToV0Message(),le=new VersionedTransaction(ee),j=await H.provider.connection.simulateTransaction(le,{sigVerify:!1});if(!j.value.returnData||j.value.err)throw new Error("Could not fetch IDL version: "+JSON.stringify(translateError(j.value.err,parseIdlErrors(H.idl))));const x=b64.decode((C=j.value.returnData)==null?void 0:C.data[0]),M=deserialize$2(programVersionLayout,x),E=bytes$1.decode(M.version);for(const[D]of IdlVersions)if(Ntt.abiVersionMatches(E,D))return D;throw new Error(`Unknown IDL version: ${E}`)}t.getVersion=s;async function l(F,q,V){const H=q.mode==="burning"?{burning:{}}:{locking:{}},Z=toChainId(q.chain);V=V??t.pdas(F.programId);const ne=new BN(q.outboundLimit.toString());return await F.methods.initialize({chainId:Z,limit:ne,mode:H}).accountsStrict({payer:q.payer,deployer:q.owner,programData:programDataAddress(F.programId),config:V.configAccount(),mint:q.mint,rateLimit:V.outboxRateLimitAccount(),tokenProgram:q.tokenProgram,tokenAuthority:V.tokenAuthority(),custody:await t.custodyAccountAddress(V,q.mint,q.tokenProgram),bpfLoaderUpgradeableProgram:BPF_LOADER_UPGRADEABLE_PROGRAM_ID,associatedTokenProgram:ASSOCIATED_TOKEN_PROGRAM_ID$1,systemProgram:SystemProgram.programId}).instruction()}t.createInitializeInstruction=l;async function d(F,q,V,H,Z){var L;const[ne,,,]=parseVersion(F.idl.version);if(ne<2)return;Z=Z??t.pdas(F.programId);const ee=await F.provider.connection.getSlot()-1,[le,j]=AddressLookupTableProgram.createLookupTable({authority:Z.lutAuthority(),payer:H.payer,recentSlot:ee}),x=getWormholeDerivedAccounts(V,H.wormholeId.toString()),M={config:Z.configAccount(),custody:q.custody,tokenProgram:q.tokenProgram,mint:q.mint,tokenAuthority:Z.tokenAuthority(),outboxRateLimit:Z.outboxRateLimitAccount(),wormhole:{bridge:x.wormholeBridge,feeCollector:x.wormholeFeeCollector,sequence:x.wormholeSequence,program:H.wormholeId,systemProgram:SystemProgram.programId,clock:SYSVAR_CLOCK_PUBKEY,rent:SYSVAR_RENT_PUBKEY}},E=W=>{const R=new Array;for(const T in W){const B=W[T];B instanceof PublicKey?R.push(B):typeof B=="object"&&R.push(...E(B))}return R},C=E(M).map(W=>W.toBase58()),D=await z(F,Z);if(D!==null){const W=((L=D.state.addresses)==null?void 0:L.map(T=>T.toBase58()))??[];if(C.filter(T=>!W.includes(T)).length===0)return null}return await F.methods.initializeLut(new BN(ee)).accountsStrict({payer:H.payer,authority:Z.lutAuthority(),lutAddress:j,lut:Z.lutAccount(),lutProgram:AddressLookupTableProgram.programId,systemProgram:SystemProgram.programId,entries:M}).instruction()}t.initializeOrUpdateLUT=d;async function u(F,q,V,H){H=H??t.pdas(F.programId);const Z=await U(H,q),ne=toChain(V.transferArgs.recipientChain.id),ee=await F.methods.transferBurn(V.transferArgs).accountsStrict({common:{payer:V.payer,config:{config:H.configAccount()},mint:q.mint,from:V.from,tokenProgram:q.tokenProgram,outboxItem:V.outboxItem,outboxRateLimit:H.outboxRateLimitAccount(),systemProgram:SystemProgram.programId,custody:Z},peer:H.peerAccount(ne),inboxRateLimit:H.inboxRateLimitAccount(ne),sessionAuthority:H.sessionAuthority(V.fromAuthority,V.transferArgs),tokenAuthority:H.tokenAuthority()}).instruction(),le=await getMint(F.provider.connection,q.mint,void 0,q.tokenProgram),j=getTransferHook(le);if(j){const x=V.from,M=q.mint,E=await U(H,q),C=H.sessionAuthority(V.fromAuthority,V.transferArgs);await addExtraAccountMetasForExecute(F.provider.connection,ee,j.programId,x,M,E,C,0)}return ee}t.createTransferBurnInstruction=u;async function p(F,q,V,H){if(q.paused)throw new Error("Contract is paused");H=H??t.pdas(F.programId);const Z=toChain(V.transferArgs.recipientChain.id),ne=await U(H,q),ee=await F.methods.transferLock(V.transferArgs).accountsStrict({common:{payer:V.payer,config:{config:H.configAccount()},mint:q.mint,from:V.from,tokenProgram:q.tokenProgram,outboxItem:V.outboxItem,outboxRateLimit:H.outboxRateLimitAccount(),custody:ne,systemProgram:SystemProgram.programId},peer:H.peerAccount(Z),inboxRateLimit:H.inboxRateLimitAccount(Z),sessionAuthority:H.sessionAuthority(V.fromAuthority,V.transferArgs),custody:ne}).instruction(),le=await getMint(F.provider.connection,q.mint,void 0,q.tokenProgram),j=getTransferHook(le);if(j){const x=V.from,M=await U(H,q),E=H.sessionAuthority(V.fromAuthority,V.transferArgs);await addExtraAccountMetasForExecute(F.provider.connection,ee,j.programId,x,q.mint,M,E,0)}return ee}t.createTransferLockInstruction=p;async function m(F,q,V,H){H=H??t.pdas(F.programId);const Z=V.recipient??(await P(F,V.chain,V.nttMessage)).recipientAddress,ne=await F.methods.releaseInboundMint({revertOnDelay:V.revertOnDelay}).accountsStrict({common:{payer:V.payer,config:{config:H.configAccount()},inboxItem:H.inboxItemAccount(V.chain,V.nttMessage),recipient:getAssociatedTokenAddressSync$1(q.mint,Z,!0,q.tokenProgram),mint:q.mint,tokenAuthority:H.tokenAuthority(),tokenProgram:q.tokenProgram,custody:await U(H,q)}}).instruction(),ee=await getMint(F.provider.connection,q.mint,void 0,q.tokenProgram),le=getTransferHook(ee);if(le){const j=await U(H,q),x=q.mint,M=getAssociatedTokenAddressSync$1(x,Z,!0,q.tokenProgram),E=H.tokenAuthority();await addExtraAccountMetasForExecute(F.provider.connection,ne,le.programId,j,x,M,E,0)}return ne}t.createReleaseInboundMintInstruction=m;async function y(F,q,V,H){const Z=V.recipient??(await t.getInboxItem(F,V.chain,V.nttMessage)).recipientAddress;H=H??t.pdas(F.programId);const ne=await U(H,q),ee=await F.methods.releaseInboundUnlock({revertOnDelay:V.revertOnDelay}).accountsStrict({common:{payer:V.payer,config:{config:H.configAccount()},inboxItem:H.inboxItemAccount(V.chain,V.nttMessage),recipient:getAssociatedTokenAddressSync$1(q.mint,Z,!0,q.tokenProgram),mint:q.mint,tokenAuthority:H.tokenAuthority(),tokenProgram:q.tokenProgram,custody:ne},custody:ne}).instruction(),le=await getMint(F.provider.connection,q.mint,void 0,q.tokenProgram),j=getTransferHook(le);if(j){const x=await U(H,q),M=q.mint,E=getAssociatedTokenAddressSync$1(M,Z,!0,q.tokenProgram),C=H.tokenAuthority();await addExtraAccountMetasForExecute(F.provider.connection,ee,j.programId,x,M,E,C,0)}return ee}t.createReleaseInboundUnlockInstruction=y;async function h(F,q,V){return V=V??t.pdas(F.programId),await F.methods.transferOwnership().accounts({config:V.configAccount(),newOwner:q.newOwner}).instruction()}t.createTransferOwnershipInstruction=h;async function v(F,q,V){return V=V??t.pdas(F.programId),await F.methods.setPeer({chainId:{id:toChainId(q.chain)},address:Array.from(q.address),limit:q.limit,tokenDecimals:q.tokenDecimals}).accounts({payer:q.payer,owner:q.owner,config:V.configAccount(),peer:V.peerAccount(q.chain),inboxRateLimit:V.inboxRateLimitAccount(q.chain)}).instruction()}t.createSetPeerInstruction=v;async function A(F,q,V){return V=V??t.pdas(F.programId),await F.methods.setPaused(q.paused).accountsStrict({owner:q.owner,config:V.configAccount()}).instruction()}t.createSetPausedInstruction=A;async function w(F,q,V){return V=V??t.pdas(F.programId),await F.methods.setOutboundLimit({limit:q.limit}).accounts({owner:q.owner,config:V.configAccount(),rateLimit:V.outboxRateLimitAccount()}).instruction()}t.createSetOutboundLimitInstruction=w;async function I(F,q,V){return V=V??t.pdas(F.programId),await F.methods.setInboundLimit({chainId:{id:toChainId(q.chain)},limit:q.limit}).accounts({owner:q.owner,config:V.configAccount(),rateLimit:V.inboxRateLimitAccount(q.chain)}).instruction()}t.setInboundLimit=I;async function k(F,q,V,H,Z,ne){Z=Z??t.pdas(F.programId),ne=ne??t.transceiverPdas(V);const ee=H.vaa,le=ee.payload.nttManagerPayload,j=ee.emitterChain;return F.methods.redeem({}).accounts({payer:H.payer,config:Z.configAccount(),peer:Z.peerAccount(j),transceiverMessage:ne.transceiverMessageAccount(j,le.id),transceiver:Z.registeredTransceiver(V),mint:q.mint,inboxItem:Z.inboxItemAccount(j,le),inboxRateLimit:Z.inboxRateLimitAccount(j),outboxRateLimit:Z.outboxRateLimitAccount()}).instruction()}t.createRedeemInstruction=k;async function $(F,q){return await F.account.config.fetch(q.configAccount())}t.getConfig=$;async function P(F,q,V){return await F.account.inboxItem.fetch(t.pdas(F.programId).inboxItemAccount(q,V))}t.getInboxItem=P;async function z(F,q){const[V,,,]=parseVersion(F.idl.version);if(V<2)return null;q=q??t.pdas(F.programId);const H=await F.account.lut.fetchNullable(q.lutAccount());if(!H)return null;const Z=await F.provider.connection.getAddressLookupTable(H.address);if(Z.value===null)throw new Error("Could not fetch LUT");return Z.value}t.getAddressLookupTable=z;async function U(F,q,V=TOKEN_PROGRAM_ID$1){return q instanceof PublicKey?getAssociatedTokenAddress$1(q,F.tokenAuthority(),!0,V):getAssociatedTokenAddress$1(q.mint,F.tokenAuthority(),!0,q.tokenProgram)}t.custodyAccountAddress=U})(NTT$1||(NTT$1={}));async function addExtraAccountMetasForExecute(t,e,s,l,d,u,p,m,y){const h=getExtraAccountMetaAddress(d,s),v=await t.getAccountInfo(h,y);if(v==null)return e;const A=getExtraAccountMetas(v);if(![l,d,u,p].every(I=>e.keys.some(k=>k.pubkey.equals(I))))throw new Error("Missing required account in instruction");const w=createExecuteInstruction(s,l,d,u,p,h,BigInt(m));for(const I of A)w.keys.push(deEscalateAccountMeta(await resolveExtraAccountMeta(t,I,w.keys,w.data,w.programId),w.keys));e.keys.push(...w.keys.slice(5)),e.keys.push({pubkey:s,isSigner:!1,isWritable:!1}),e.keys.push({pubkey:h,isSigner:!1,isWritable:!1})}function deEscalateAccountMeta(t,e){const s=e.filter(l=>l.pubkey.equals(t.pubkey)).reduce((l,d)=>l?{isSigner:l.isSigner||d.isSigner,isWritable:l.isWritable||d.isWritable}:{isSigner:d.isSigner,isWritable:d.isWritable},void 0);if(s){const{isSigner:l,isWritable:d}=s;!l&&l!==t.isSigner&&(t.isSigner=!1),!d&&d!==t.isWritable&&(t.isWritable=!1)}return t}const version="2.0.0",name="ntt_quoter",instructions=[{name:"requestRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!1,isSigner:!1,docs:["and checking the release constraint into a single function"]},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RequestRelayArgs"}}]},{name:"closeRelay",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"feeRecipient",isMut:!0,isSigner:!1},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"initialize",accounts:[{name:"owner",isMut:!0,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1,docs:["We use the program data to make sure this owner is the upgrade authority (the true owner,","who deployed this program)."]},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAssistant",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"assistant",isMut:!1,isSigner:!1,isOptional:!0}],args:[]},{name:"setFeeRecipient",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1}],args:[]},{name:"registerChain",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainArgs"}}]},{name:"registerNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterNttArgs"}}]},{name:"deregisterNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"DeregisterNttArgs"}}]},{name:"updateSolPrice",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateSolPriceArgs"}}]},{name:"updateChainPrices",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainPricesArgs"}}]},{name:"updateChainParams",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainParamsArgs"}}]}],accounts=[{name:"Instance",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"assistant",type:"publicKey"},{name:"feeRecipient",type:"publicKey"},{name:"solPrice",type:"u64"}]}},{name:"RegisteredChain",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"},{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"RegisteredNtt",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"RelayRequest",type:{kind:"struct",fields:[{name:"requestedGasDropoff",type:"u64"}]}}],types=[{name:"RegisterChainArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"RegisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"DeregisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"}]}},{name:"RequestRelayArgs",type:{kind:"struct",fields:[{name:"gasDropoff",type:"u64"},{name:"maxFee",type:"u64"}]}},{name:"UpdateSolPriceArgs",type:{kind:"struct",fields:[{name:"solPrice",type:"u64"}]}},{name:"UpdateChainPricesArgs",type:{kind:"struct",fields:[{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"UpdateChainParamsArgs",type:{kind:"struct",fields:[{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"}]}}],errors=[{code:6001,name:"ExceedsUserMaxFee",msg:"Relay fees exceeds specified max"},{code:6002,name:"ExceedsMaxGasDropoff",msg:"Requested gas dropoff exceeds max allowed for chain"},{code:6003,name:"InvalidFeeRecipient",msg:"The specified fee recipient does not match the address in the instance accound"},{code:6004,name:"RelayingToChainDisabled",msg:"Relaying to the specified chain is disabled"},{code:6005,name:"OutboxItemNotReleased",msg:"Relaying to the specified chain is disabled"},{code:6006,name:"ScalingOverflow",msg:"Scaled value exceeds u64::MAX"},{code:6007,name:"DivByZero",msg:"Cannot divide by zero"},{code:6257,name:"FeeRecipientCannotBeDefault",msg:"The fee recipient cannot be the default address (0x0)"},{code:6258,name:"NotAuthorized",msg:"Must be owner or assistant"},{code:6259,name:"PriceCannotBeZero",msg:"The price cannot be zero"}],IDL={version,name,instructions,accounts,types,errors},USD_UNIT=1e6,GWEI_PER_ETH=1e9,WEI_PER_GWEI=1e9,SEED_PREFIX_INSTANCE="instance",SEED_PREFIX_REGISTERED_CHAIN="registered_chain",SEED_PREFIX_REGISTERED_NTT="registered_ntt",SEED_PREFIX_RELAY_REQUEST="relay_request";class NttQuoter{constructor(e,s,l){Ae(this,"instance");Ae(this,"program");Ae(this,"nttProgramId");Ae(this,"pdas");this.program=new Program(IDL,new PublicKey(s),{connection:e}),this.nttProgramId=new PublicKey(l),this.pdas=quoterAddresses(this.program.programId),this.instance=derivePda([SEED_PREFIX_INSTANCE],this.program.programId)}async isRelayEnabled(e){var s;try{const{paused:l}=await this.getRegisteredChain(e);return!l}catch(l){if((s=l.message)!=null&&s.includes("Account does not exist"))return!1;throw l}}async calcRelayCostInSol(e,s,l){const[d,u,p,m]=await Promise.all([this.getRegisteredChain(s),this.getRegisteredNtt(e),this.getInstance(),this.program.provider.connection.getMinimumBalanceForRentExemption(this.program.account.relayRequest.size)]);if(l>d.maxGasDropoffEth)throw new Error("Requested gas dropoff exceeds allowed maximum");const y=d.nativePriceUsd*(l+d.gasPriceGwei*u.gasCost/GWEI_PER_ETH);return m/LAMPORTS_PER_SOL+(d.basePriceUsd+y)/p.solPriceUsd}async quoteDeliveryPrice(e,s){if(chainToPlatform(e)!=="Evm")throw new Error("Only EVM chains are supported");const l=whole(fromBaseUnits(s??0n,18)),[d,u,p,m]=await Promise.all([this.getRegisteredChain(e),this.getInstance(),this.getRegisteredNtt(this.nttProgramId),this.program.provider.connection.getMinimumBalanceForRentExemption(this.program.account.relayRequest.size)]);if(d.nativePriceUsd===0)throw new Error("Native price is 0");if(u.solPriceUsd===0)throw new Error("SOL price is 0");if(l>d.maxGasDropoffEth)throw new Error("Requested gas dropoff exceeds allowed maximum");const y=d.nativePriceUsd*(l+d.gasPriceGwei*p.gasCost/GWEI_PER_ETH),h=m/LAMPORTS_PER_SOL+(d.basePriceUsd+y)/u.solPriceUsd;return BigInt(U64.to(h*1.05,LAMPORTS_PER_SOL).toString())}async createRequestRelayInstruction(e,s,l,d,u){return this.program.methods.requestRelay({maxFee:U64.to(d,LAMPORTS_PER_SOL),gasDropoff:U64.to(u,GWEI_PER_ETH)}).accountsStrict({payer:e,instance:this.instance,registeredChain:this.registeredChainPda(l),outboxItem:s,relayRequest:this.relayRequestPda(s),systemProgram:SystemProgram.programId,registeredNtt:this.pdas.registeredNttAccount(this.nttProgramId)}).instruction()}async getInstance(){const e=await this.program.account.instance.fetch(this.instance);return{owner:e.owner,assistant:e.assistant,feeRecipient:e.feeRecipient,solPriceUsd:U64.from(e.solPrice,USD_UNIT)}}async getRegisteredChain(e){const s=await this.program.account.registeredChain.fetch(this.registeredChainPda(e));return{paused:s.basePrice.eq(U64.MAX),maxGasDropoffEth:U64.from(s.maxGasDropoff,GWEI_PER_ETH),basePriceUsd:U64.from(s.basePrice,USD_UNIT),nativePriceUsd:U64.from(s.nativePrice,USD_UNIT),gasPriceGwei:U64.from(s.gasPrice,WEI_PER_GWEI)}}async getRegisteredNtt(e){const s=await this.program.account.registeredNtt.fetch(this.registeredNttPda(e));return{gasCost:s.gasCost,wormholeTransceiverIndex:s.wormholeTransceiverIndex}}async wasRelayRequested(e){const s=await this.program.account.relayRequest.fetchNullable(this.relayRequestPda(e));return s?U64.from(s.requestedGasDropoff,GWEI_PER_ETH):null}async createInitalizeInstruction(e){if(!this.program.account.instance.fetchNullable(this.instance))throw new Error("Already initialized");const s=programDataAddress(this.program.programId),l=await this.program.provider.connection.getAccountInfo(s);if(!l)throw new Error("Could not find program data account");const d=deserialize$2(programDataLayout,l.data);if(!d.upgradeAuthority.isSome)throw new Error("Could not determine program owner from program data.");return this.program.methods.initialize().accounts({owner:d.upgradeAuthority.value,instance:this.instance,feeRecipient:e,programData:s,systemProgram:SystemProgram.programId}).instruction()}async createSetAssistantInstruction(e){const{owner:s,assistant:l}=await this.getInstance();if(l.equals(e))throw new Error("Is already assistant");return this.program.methods.setAssistant().accounts({owner:s,instance:this.instance,assistant:e}).instruction()}async createSetFeeRecipientInstruction(e){if(e.equals(PublicKey.default))throw new Error("Fee recipient cannot be default public key");const{owner:s,feeRecipient:l}=await this.getInstance();if(l.equals(e))throw new Error("Is already feeRecipient");return this.program.methods.setFeeRecipient().accounts({owner:s,instance:this.instance,feeRecipient:e}).instruction()}async createRegisterChainInstruction(e,s){const l=toChainId(s);return this.program.methods.registerChain({chainId:l}).accounts({authority:e,instance:this.instance,registeredChain:this.registeredChainPda(s),systemProgram:SystemProgram.programId}).instruction()}async createRegisterNttInstruction(e,s,l,d){return this.program.methods.registerNtt({nttProgramId:s,gasCost:l,wormholeTransceiverIndex:d}).accounts({authority:e,instance:this.instance,registeredNtt:this.registeredNttPda(s),systemProgram:SystemProgram.programId}).instruction()}async createDeregisterNttInstruction(e,s){return this.program.methods.deregisterNtt({nttProgramId:s}).accounts({authority:e,instance:this.instance,registeredNtt:this.registeredNttPda(s),systemProgram:SystemProgram.programId}).instruction()}async createUpdateSolPriceInstruction(e,s){return this.program.methods.updateSolPrice({solPrice:U64.to(s,USD_UNIT)}).accounts({authority:e,instance:this.instance}).instruction()}async createUpdateChainParamsInstruction(e,s,l,d){return this.program.methods.updateChainParams({maxGasDropoff:U64.to(l,GWEI_PER_ETH),basePrice:U64.to(d,USD_UNIT)}).accounts({authority:e,instance:this.instance,registeredChain:this.registeredChainPda(s)}).instruction()}async createPauseRelayForChainInstruction(e,s){return this.program.methods.updateChainParams({maxGasDropoff:U64.to(0,1),basePrice:U64.MAX}).accounts({authority:e,instance:this.instance,registeredChain:this.registeredChainPda(s)}).instruction()}async createUpdateChainPricesInstruction(e,s,l,d){return this.program.methods.updateChainPrices({nativePrice:U64.to(l,USD_UNIT),gasPrice:U64.to(d,WEI_PER_GWEI)}).accounts({authority:e,instance:this.instance,registeredChain:this.registeredChainPda(s)}).instruction()}async createCloseRelayInstruction(e,s){return this.program.methods.closeRelay().accounts({authority:e,instance:this.instance,relayRequest:this.relayRequestPda(s)}).instruction()}registeredChainPda(e){return derivePda([SEED_PREFIX_REGISTERED_CHAIN,chainToBytes(e)],this.program.programId)}registeredNttPda(e){return derivePda([SEED_PREFIX_REGISTERED_NTT,e.toBytes()],this.program.programId)}relayRequestPda(e){return derivePda([SEED_PREFIX_RELAY_REQUEST,e.toBytes()],this.program.programId)}}class SolanaNttWormholeTransceiver{constructor(e,s,l="3.0.0"){Ae(this,"manager");Ae(this,"program");Ae(this,"version");Ae(this,"programId");Ae(this,"pdas");this.manager=e,this.program=s,this.version=l,this.programId=s.programId,this.pdas=NTT$1.transceiverPdas(s.programId)}async getPauser(){return null}async*setPauser(e,s){throw new Error("Method not implemented.")}async*receive(e,s){if(e.payloadName!=="WormholeTransfer")throw new Error("Invalid attestation payload");const l=new SolanaAddress(s).unwrap(),d=await this.createReceiveIx(e,l),u=new Transaction;u.feePayer=l,u.add(d),yield this.manager.createUnsignedTx({transaction:u},"Ntt.Redeem")}async createReceiveIx(e,s){const l=e.payload.nttManagerPayload,d=e.emitterChain;return this.program.methods.receiveWormholeMessage().accounts({payer:s,config:{config:this.manager.pdas.configAccount()},peer:this.pdas.transceiverPeerAccount(d),vaa:derivePostedVaaKey(this.manager.core.address,dist$2.Buffer.from(e.hash)),transceiverMessage:this.pdas.transceiverMessageAccount(d,l.id)}).instruction()}async getTransceiverType(e){var h,v;const[s,,,]=parseVersion(this.version);if(s<3)return"wormhole";const l=new SolanaAddress(e).unwrap(),d=await this.program.methods.transceiverType().accountsStrict({}).instruction(),u=await this.program.provider.connection.getLatestBlockhash(),p=new TransactionMessage({payerKey:l,recentBlockhash:u.blockhash,instructions:[d]}).compileToV0Message(),m=new VersionedTransaction(p),y=await this.program.provider.connection.simulateTransaction(m,{sigVerify:!1});if((h=y.value.returnData)!=null&&h.data[0]){const A=dist$2.Buffer.from((v=y.value.returnData)==null?void 0:v.data[0],"base64"),w=A.readUInt32LE(0);return A.subarray(4,w+4).toString()}else throw new Error("no transceiver type found")}getAddress(){return{chain:this.manager.chain,address:toUniversal(this.manager.chain,this.pdas.emitterAccount().toBase58())}}async*setPeer(e,s){const l=new SolanaAddress(s).unwrap(),d=await this.program.methods.setWormholePeer({chainId:{id:toChainId(e.chain)},address:Array.from(e.address.toUniversalAddress().toUint8Array())}).accounts({payer:l,owner:l,config:this.manager.pdas.configAccount(),peer:this.pdas.transceiverPeerAccount(e.chain)}).instruction(),u=Keypair.generate(),p=await this.createBroadcastWormholePeerIx(e.chain,l,u.publicKey),m=new Transaction;m.feePayer=l,m.add(d,p),yield this.manager.createUnsignedTx({transaction:m,signers:[u]},"Ntt.SetWormholeTransceiverPeer")}async getPeer(e){const s=await this.manager.program.account.transceiverPeer.fetchNullable(this.pdas.transceiverPeerAccount(e));return s?{chain:e,address:toUniversal(e,new Uint8Array(s.address))}:null}async createBroadcastWormholeIdIx(e,s,l){const d=getWormholeDerivedAccounts(this.program.programId,this.manager.core.address);return this.program.methods.broadcastWormholeId().accountsStrict({payer:e,config:this.manager.pdas.configAccount(),mint:s.mint,wormholeMessage:l,emitter:d.wormholeEmitter,wormhole:{bridge:d.wormholeBridge,feeCollector:d.wormholeFeeCollector,sequence:d.wormholeSequence,program:this.manager.core.address,systemProgram:SystemProgram.programId,clock:SYSVAR_CLOCK_PUBKEY,rent:SYSVAR_RENT_PUBKEY}}).instruction()}async createBroadcastWormholePeerIx(e,s,l){const d=getWormholeDerivedAccounts(this.program.programId,this.manager.core.address);return this.program.methods.broadcastWormholePeer({chainId:toChainId(e)}).accounts({payer:s,config:this.manager.pdas.configAccount(),peer:this.pdas.transceiverPeerAccount(e),wormholeMessage:l,emitter:d.wormholeEmitter,wormhole:{bridge:d.wormholeBridge,feeCollector:d.wormholeFeeCollector,sequence:d.wormholeSequence,program:this.manager.core.address}}).instruction()}async createReleaseWormholeOutboundIx(e,s,l){const[d,,,]=parseVersion(this.version),u=getWormholeDerivedAccounts(this.program.programId,this.manager.core.address);return this.program.methods.releaseWormholeOutbound({revertOnDelay:l}).accounts({payer:e,config:{config:this.manager.pdas.configAccount()},outboxItem:s,wormholeMessage:this.pdas.wormholeMessageAccount(s),emitter:u.wormholeEmitter,transceiver:this.manager.pdas.registeredTransceiver(this.program.programId),wormhole:{bridge:u.wormholeBridge,feeCollector:u.wormholeFeeCollector,sequence:u.wormholeSequence,program:this.manager.core.address},...d>=3&&{manager:this.manager.program.programId,outboxItemSigner:this.pdas.outboxItemSigner()}}).instruction()}}class SolanaNtt{constructor(e,s,l,d,u="3.0.0"){Ae(this,"network");Ae(this,"chain");Ae(this,"connection");Ae(this,"contracts");Ae(this,"version");Ae(this,"core");Ae(this,"pdas");Ae(this,"program");Ae(this,"config");Ae(this,"quoter");Ae(this,"addressLookupTable");Ae(this,"transceivers");Ae(this,"managerAddress");Ae(this,"tokenAddress");var p;if(this.network=e,this.chain=s,this.connection=l,this.contracts=d,this.version=u,!d.ntt)throw new Error("Ntt contracts not found");this.program=getNttProgram(l,d.ntt.manager,u),this.transceivers=[],"wormhole"in d.ntt.transceiver&&d.ntt.transceiver.wormhole&&["wormhole",...Object.keys(d.ntt.transceiver).filter(y=>{})].map(y=>{if(y!=="wormhole")throw new Error(`Unsupported transceiver type: ${y}`);const h=new PublicKey(d.ntt.transceiver[y]);if(PublicKey.isOnCurve(h))this.transceivers.push(getTransceiverProgram(l,d.ntt.transceiver[y],u));else{const v=new SolanaNttWormholeTransceiver(this,getTransceiverProgram(l,d.ntt.manager,u),u);if(!v.pdas.emitterAccount().equals(h))throw new Error(`Invalid emitterAccount provided. Expected: ${v.pdas.emitterAccount().toBase58()}; Actual: ${h.toBase58()}`);this.transceivers.push(v.program)}}),this.managerAddress=d.ntt.manager,this.tokenAddress=d.ntt.token,(p=this.contracts.ntt)!=null&&p.quoter&&(this.quoter=new NttQuoter(l,this.contracts.ntt.quoter,this.contracts.ntt.manager)),this.core=new SolanaWormholeCore(e,s,l,d),this.pdas=NTT$1.pdas(this.program.programId)}async getTransceiver(e){const s=this.transceivers[e]??null;return s&&e===0?new SolanaNttWormholeTransceiver(this,s,this.version):null}async getWormholeTransceiver(){return this.getTransceiver(0)}async getMode(){return(await this.getConfig()).mode.locking!=null?"locking":"burning"}async isPaused(){return(await this.getConfig()).paused}async*pause(e){const s=new SolanaAddress(e).unwrap(),l=await NTT$1.createSetPausedInstruction(this.program,{owner:s,paused:!0}),d=new Transaction;d.feePayer=s,d.add(l),yield this.createUnsignedTx({transaction:d},"Ntt.Pause")}async*unpause(e){const s=new SolanaAddress(e).unwrap(),l=await NTT$1.createSetPausedInstruction(this.program,{owner:s,paused:!1}),d=new Transaction;d.feePayer=s,d.add(l),yield this.createUnsignedTx({transaction:d},"Ntt.Unpause")}async getThreshold(){return(await this.getConfig()).threshold}async getOwner(){const e=await this.getConfig();return new SolanaAddress(e.owner)}async getPauser(){return null}async*setOwner(e,s){const l=new SolanaAddress(s).unwrap(),d=await NTT$1.createTransferOwnershipInstruction(this.program,{newOwner:new SolanaAddress(e).unwrap()}),u=new Transaction;u.feePayer=l,u.add(d),yield this.createUnsignedTx({transaction:u},"Ntt.SetOwner")}async*setPauser(e,s){throw new Error("Pauser role not supported on Solana.")}async isRelayingAvailable(e){return this.quoter?await this.quoter.isRelayEnabled(e):!1}async quoteDeliveryPrice(e,s){if(!this.quoter)throw new Error("Quoter not available");if(!this.quoter.isRelayEnabled(e))throw new Error("Relay not enabled");return await this.quoter.quoteDeliveryPrice(e,s.gasDropoff)}static async fromRpc(e,s){const[l,d]=await SolanaPlatform.chainFromRpc(e),u=s[d];if(u.network!==l)throw new Error(`Network mismatch: ${u.network} != ${l}`);if(!("ntt"in u.contracts))throw new Error("Ntt contracts not found");const p=u.contracts.ntt,m=await SolanaNtt.getVersion(e,u.contracts);return new SolanaNtt(l,d,e,{...u.contracts,ntt:p},m)}async getConfig(){return this.config=this.config??await NTT$1.getConfig(this.program,this.pdas),this.config}async getTokenDecimals(){const e=await this.getConfig();return await SolanaPlatform.getDecimals(this.chain,this.connection,e.mint)}async getPeer(e){const s=await this.program.account.nttManagerPeer.fetchNullable(this.pdas.peerAccount(e));return s?{address:{chain:e,address:toUniversal(e,new Uint8Array(s.address))},tokenDecimals:s.tokenDecimals,inboundLimit:await this.getInboundLimit(e)}:null}async getCustodyAddress(){return(await this.getConfig()).custody.toBase58()}static async getVersion(e,s,l){try{return await NTT$1.getVersion(e,new PublicKey(s.ntt.manager),l?new SolanaAddress(l).unwrap():void 0)}catch{return"3.0.0"}}async*initialize(e,s){const l=await this.connection.getAccountInfo(s.mint);if(l===null)throw new Error("Couldn't determine token program. Mint account is null.");const d=new SolanaAddress(e).unwrap(),u=await NTT$1.createInitializeInstruction(this.program,{...s,payer:d,owner:d,chain:this.chain,tokenProgram:l.owner},this.pdas),p=new Transaction;p.feePayer=d,p.add(u),yield this.createUnsignedTx({transaction:p,signers:[]},"Ntt.Initialize"),yield*this.initializeOrUpdateLUT({payer:d})}async*initializeOrUpdateLUT(e){const s=await this.getConfig(),l=await this.getWormholeTransceiver();if(!l)throw new Error("wormhole transceiver not found");const d=l.programId,u=await NTT$1.initializeOrUpdateLUT(this.program,s,d,{payer:e.payer,wormholeId:new PublicKey(this.core.address)});if(!u)return;const p=new Transaction().add(u);p.feePayer=e.payer,yield this.createUnsignedTx({transaction:p},"Ntt.InitializeLUT")}async*registerWormholeTransceiver(e){const s=new SolanaAddress(e.payer).unwrap(),l=new SolanaAddress(e.owner).unwrap(),d=await this.getConfig();if(d.paused)throw new Error("Contract is paused");const u=await this.createRegisterTransceiverIx(0,s,l),p=await this.getWormholeTransceiver(),m=Keypair.generate(),y=await p.createBroadcastWormholeIdIx(s,d,m.publicKey),h=new Transaction;h.feePayer=s,h.add(u,y),yield this.createUnsignedTx({transaction:h,signers:[m]},"Ntt.RegisterTransceiver")}async createRegisterTransceiverIx(e,s,l){const d=await this.getTransceiver(e);if(!d)throw new Error("Transceiver not found");const u=d.programId;return this.program.methods.registerTransceiver().accountsStrict({payer:s,owner:l,config:this.pdas.configAccount(),transceiver:u,registeredTransceiver:this.pdas.registeredTransceiver(u),systemProgram:SystemProgram.programId}).instruction()}async*setWormholeTransceiverPeer(e,s){yield*this.setTransceiverPeer(0,e,s)}async*setTransceiverPeer(e,s,l){const d=await this.getTransceiver(e);if(!d)throw new Error("Transceiver not found");yield*d.setPeer(s,l)}async*setPeer(e,s,l,d){const u=new SolanaAddress(d).unwrap(),p=await NTT$1.createSetPeerInstruction(this.program,{payer:u,owner:u,chain:e.chain,address:e.address.toUniversalAddress().toUint8Array(),limit:new BN(l.toString()),tokenDecimals:s}),m=new Transaction;m.feePayer=u,m.add(p),yield this.createUnsignedTx({transaction:m},"Ntt.SetPeer")}async*transfer(e,s,l,d,u){const p=await this.getConfig();if(p.paused)throw new Error("Contract is paused");u=u??Keypair.generate();const m=new SolanaAddress(e).unwrap(),y=m,h=await this.getTokenAccount(y),v=NTT$1.transferArgs(s,l,d.queue),A={transferArgs:v,payer:m,from:h,fromAuthority:y,outboxItem:u.publicKey},w=createApproveInstruction$1(h,this.pdas.sessionAuthority(y,v),y,s,[],p.tokenProgram),I=[],k=p.mode.locking!=null?NTT$1.createTransferLockInstruction(this.program,p,A,this.pdas):NTT$1.createTransferBurnInstruction(this.program,p,A,this.pdas);I.push(k);for(let F=0;F<this.transceivers.length;++F)if(F===0){const q=await this.getWormholeTransceiver();if(!q)throw new Error("wormhole transceiver not found");const V=q.createReleaseWormholeOutboundIx(m,u.publicKey,!d.queue);I.push(V)}const $=new Transaction;if($.feePayer=m,$.add(w,...await Promise.all(I)),d.automatic){if(!this.quoter)throw new Error("No quoter available, cannot initiate an automatic transfer.");const F=await this.quoteDeliveryPrice(l.chain,d),q=await this.quoter.createRequestRelayInstruction(m,u.publicKey,l.chain,Number(F)/LAMPORTS_PER_SOL,Number(d.gasDropoff??0n)/WEI_PER_GWEI);$.add(q)}const P=[];try{P.push(await this.getAddressLookupTable())}catch{}const z=new TransactionMessage({payerKey:m,instructions:$.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(P),U=new VersionedTransaction(z);yield this.createUnsignedTx({transaction:U,signers:[u]},"Ntt.Transfer")}async getTokenAccount(e){const s=await this.getConfig();return await getAssociatedTokenAddress$1(s.mint,e,!0,s.tokenProgram)}async*createAta(e){const s=await this.getConfig(),l=new SolanaAddress(e).unwrap(),d=await this.getTokenAccount(l);if(await this.connection.getAccountInfo(d)===null){const p=new Transaction().add(createAssociatedTokenAccountInstruction$1(l,d,l,s.mint,s.tokenProgram));p.feePayer=l,yield this.createUnsignedTx({transaction:p},"Redeem.CreateATA")}}async*redeem(e,s){const l=await this.getConfig();if(l.paused)throw new Error("Contract is paused");if(e.length!==this.transceivers.length)throw new Error("Not enough attestations provided");for(const{attestation:d,ix:u}of e.map((p,m)=>({attestation:p,ix:m})))if(u===0){const p=d;if(p.payloadName!=="WormholeTransfer")throw new Error("Invalid attestation payload");const m=await this.getWormholeTransceiver();if(!m)throw new Error("wormhole transceiver not found");yield*this.createAta(s),yield*this.core.postVaa(s,p);const y=new SolanaAddress(s).unwrap(),h=m.createReceiveIx(p,y),v=NTT$1.createRedeemInstruction(this.program,l,m.program.programId,{payer:y,vaa:p}),A=p.payload.nttManagerPayload,w=p.emitterChain,I={payer:y,config:l,nttMessage:A,recipient:new PublicKey(A.payload.recipientAddress.toUint8Array()),chain:w,revertOnDelay:!1},k=l.mode.locking!=null?NTT$1.createReleaseInboundUnlockInstruction(this.program,l,I):NTT$1.createReleaseInboundMintInstruction(this.program,l,I),$=new Transaction;$.feePayer=y,$.add(...await Promise.all([h,v,k]));const P=[];try{P.push(await this.getAddressLookupTable())}catch{}const z=new TransactionMessage({payerKey:y,instructions:$.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(P),U=new VersionedTransaction(z);yield this.createUnsignedTx({transaction:U},"Ntt.Redeem")}}async getCurrentOutboundCapacity(){const e=await this.program.account.outboxRateLimit.fetch(this.pdas.outboxRateLimitAccount());return BigInt(e.rateLimit.capacityAtLastTx.toString())}async getOutboundLimit(){const e=await this.program.account.outboxRateLimit.fetch(this.pdas.outboxRateLimitAccount());return BigInt(e.rateLimit.limit.toString())}async*setOutboundLimit(e,s){const l=new SolanaAddress(s).unwrap(),d=await NTT$1.createSetOutboundLimitInstruction(this.program,{owner:l,limit:new BN(e.toString())}),u=new Transaction;u.feePayer=l,u.add(d),yield this.createUnsignedTx({transaction:u},"Ntt.SetOutboundLimit")}async getCurrentInboundCapacity(e){const s=await this.program.account.inboxRateLimit.fetch(this.pdas.inboxRateLimitAccount(e));return BigInt(s.rateLimit.capacityAtLastTx.toString())}async getRateLimitDuration(){return BigInt(24*60*60)}async getInboundLimit(e){const s=await this.program.account.inboxRateLimit.fetch(this.pdas.inboxRateLimitAccount(e));return BigInt(s.rateLimit.limit.toString())}async*setInboundLimit(e,s,l){const d=new SolanaAddress(l).unwrap(),u=await NTT$1.setInboundLimit(this.program,{owner:d,chain:e,limit:new BN(s.toString())}),p=new Transaction;p.feePayer=d,p.add(u),yield this.createUnsignedTx({transaction:p},"Ntt.SetInboundLimit")}async getIsExecuted(e){var d;if(e.payloadName!=="WormholeTransfer")return!1;const s=e.payload.nttManagerPayload;let l;try{l=await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e.emitterChain,s))}catch(u){if((d=u.message)!=null&&d.includes("Account does not exist"))return!1;throw u}return!!l.releaseStatus.released}async getIsTransferInboundQueued(e){var d;if(e.payloadName!=="WormholeTransfer")return!1;const s=e.payload.nttManagerPayload;let l;try{l=await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e.emitterChain,s))}catch(u){if((d=u.message)!=null&&d.includes("Account does not exist"))return!1;throw u}return!!l.releaseStatus.releaseAfter}async getIsApproved(e){var l;if(e.payloadName!=="WormholeTransfer")throw new Error(`Invalid payload: ${e.payloadName}`);const s=e.payload.nttManagerPayload;try{return(await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e.emitterChain,s))).init}catch(d){if((l=d.message)!=null&&l.includes("Account does not exist"))return!1;throw d}}async*completeInboundQueuedTransfer(e,s,l){const d=await this.getConfig();if(d.paused)throw new Error("Contract is paused");const u=new SolanaAddress(l).unwrap(),p=new Transaction;p.feePayer=u;const m={payer:u,config:d,nttMessage:s,recipient:new PublicKey(s.payload.recipientAddress.toUint8Array()),chain:e,revertOnDelay:!1};p.add(await(d.mode.locking!=null?NTT$1.createReleaseInboundUnlockInstruction(this.program,d,m):NTT$1.createReleaseInboundMintInstruction(this.program,d,m))),yield this.createUnsignedTx({transaction:p},"Ntt.CompleteInboundTransfer")}async getInboundQueuedTransfer(e,s){var d;let l;try{l=await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e,s))}catch(u){if((d=u.message)!=null&&d.includes("Account does not exist"))return null;throw u}if(l.releaseStatus.releaseAfter){const{recipientAddress:u,amount:p,releaseStatus:m}=l,y=m.releaseAfter[0].toNumber();return{recipient:new SolanaAddress(u),amount:BigInt(p.toString()),rateLimitExpiryTimestamp:y}}return null}async verifyAddresses(){const e=await this.getWormholeTransceiver(),s={manager:this.managerAddress,token:this.tokenAddress,transceiver:{...e&&{wormhole:e.pdas.emitterAccount().toBase58()}}},l={manager:this.program.programId.toBase58(),token:(await this.getConfig()).mint.toBase58(),transceiver:{wormhole:NTT$1.transceiverPdas(this.program.programId).emitterAccount().toBase58()}},d=(u,p)=>{for(const m in u)typeof u[m]=="object"?(d(u[m],p[m]),Object.keys(u[m]).length===0&&delete u[m]):u[m]===p[m]&&delete u[m]};return d(l,s),Object.keys(l).length>0?l:null}async getAddressLookupTable(e=!0){if(!e||!this.addressLookupTable){const s=await NTT$1.getAddressLookupTable(this.program,this.pdas);s&&(this.addressLookupTable=s)}if(!this.addressLookupTable)throw new Error("Address lookup table not found. Did you forget to call initializeLUT?");return this.addressLookupTable}createUnsignedTx(e,s,l=!1){return new SolanaUnsignedTransaction(e,this.network,this.chain,s,l)}}registerProtocol(_platform,"Ntt",SolanaNtt);const DEFAULT_ROUTES=[AutomaticCCTPRoute$1,CCTPRoute$1,AutomaticTokenBridgeRoute$1,TokenBridgeRoute$1,AutomaticPorticoRoute$1];class RouteOperator{constructor(e=DEFAULT_ROUTES){Ae(this,"preference");Ae(this,"routes");Ae(this,"quoteCache");const s={},l=[];for(const d of e){const u=d.meta.name;if(u==="")throw new Error("Route has empty meta.name");if(u in s)throw new Error(`Route has duplicate meta.name: ${u}`);l.push(u),s[u]=new SDKv2Route(d)}this.routes=s,this.preference=l,this.quoteCache=new QuoteCache(15e3)}get(e){return this.routes[e]}async forEach(e){return Promise.all(this.preference.map(s=>e(s,this.routes[s])))}async resumeFromTx(e){return new Promise((s,l)=>{const d=Object.keys(this.routes).length;let u=0;this.forEach((p,m)=>{m.resumeIfManual(e).then(y=>{y!==null?s({route:p,receipt:y}):u+=1}).catch(y=>{u+=1}).finally(()=>{u===d&&s(null)})})})}allSupportedChains(){const e=new Set;for(const s in config$1.chains){const l=s;this.forEach(async(d,u)=>{e.has(l)||u.isSupportedChain(l)&&e.add(l)})}return Array.from(e)}async allSupportedDestTokens(e,s,l){const d=new Set;return await this.forEach(async(u,p)=>{try{if(u.includes("Mayan"))config$1.tokens.getAllForChain(l).map(m=>{d.add(m.key)});else{const m=await p.supportedDestTokens(e,s,l);for(const y of m)d.add(tokenKey(y))}}catch(m){console.error(m)}}),Array.from(d).map(parseTokenKey)}async getQuotes(e,s){return(await Promise.allSettled(e.map(l=>{const d=this.quoteCache.get(l,s);return d||this.quoteCache.fetch(l,s,this.get(l))}))).map(l=>l.status==="rejected"?{success:!1,error:l.reason}:l.value)}}class QuoteCache{constructor(e){Ae(this,"ttl");Ae(this,"cache");Ae(this,"pending");this.ttl=e,this.cache={},this.pending={}}quoteParamsKey(e,s){return`${e}:${s.sourceChain}:${s.sourceToken.address.toString()}:${s.destChain}:${s.destToken.address.toString()}:${units(s.amount)}:${s.nativeGas}`}get(e,s){const l=this.quoteParamsKey(e,s),d=this.cache[l];if(d){if(d.age()<this.ttl)return d.result;delete this.cache[l]}return null}async fetch(e,s,l){const d=this.quoteParamsKey(e,s),u=this.pending[d];if(u)return new Promise((p,m)=>{u.push({resolve:p,reject:m})});{const p=new Promise((m,y)=>{this.pending[d]=[{resolve:m,reject:y}]});return l.computeQuote(s.amount,s.sourceToken,s.destToken,s.sourceChain,s.destChain,{nativeGas:s.nativeGas}).then(m=>{const y=this.pending[d];for(const{resolve:h}of y)h(m);delete this.pending[d],this.cache[d]=new QuoteCacheEntry(m)}).catch(m=>{const y=this.pending[d];for(const{reject:h}of y)h(m);delete this.pending[d]}),p}}}class QuoteCacheEntry{constructor(e){Ae(this,"result");Ae(this,"timestamp");this.result=e,this.timestamp=new Date}age(){return new Date().valueOf()-this.timestamp.valueOf()}}const nttRoutes=t=>[nttManualRoute(t),nttAutomaticRoute(t)];function createUiConfig(t){return{...t,walletConnectProjectId:(t==null?void 0:t.walletConnectProjectId)??void 0}}function buildConfig(t={}){var h;const e=capitalize$1(t.network||void 0||"Mainnet");if(!["Mainnet","Testnet","Devnet"].includes(e))throw new Error(`Invalid env "${e}": Use "Testnet", "Devnet", or "Mainnet"`);const s={MAINNET,DEVNET,TESTNET}[e.toUpperCase()],l=mergeCustomWrappedTokens(s.wrappedTokens,t.wrappedTokens),d=buildTokenCache(e,[...s.tokens,...t.tokensConfig?Object.values(t.tokensConfig):[]],l),u=WormholeContext.getConfig(e),p=Object.assign({},u.rpcs,s.rpcs,t.rpcs),m=getLegacyWormholeContext(e,u,p);(h=t.ui)!=null&&h.defaultInputs&&validateDefaults(t.ui.defaultInputs,s.chains,d);const y=createUiConfig(t.ui??{});return t.tokens&&t.tokens.length>0&&y.disableUserInputtedTokens===void 0&&(y.disableUserInputtedTokens=!0),{whLegacy:m,sdkConfig:u,network:e,isMainnet:e==="Mainnet",rpcs:p,mayanApi:"https://explorer-api.mayan.finance",wormholeApi:{Mainnet:"https://api.wormholescan.io/",Testnet:"https://api.testnet.wormholescan.io/",Devnet:""}[e],wormholeRpcHosts:{Mainnet:["https://wormhole-v2-mainnet-api.mcf.rocks","https://wormhole-v2-mainnet-api.chainlayer.network","https://wormhole-v2-mainnet-api.staking.fund"],Testnet:["https://guardian.testnet.xlabs.xyz","https://guardian-01.testnet.xlabs.xyz","https://guardian-02.testnet.xlabs.xyz"],Devnet:["http://localhost:7071"]}[e],coingecko:t.coingecko,triggerEvent:wrapEventHandler(t.eventHandler),validateTransfer:t.validateTransferHandler,isRouteSupportedHandler:t.isRouteSupportedHandler,chains:s.chains,chainsArr:Object.values(s.chains).filter(v=>t.chains?t.chains.includes(v.key):!0).sort((v,A)=>{const w=CHAIN_ORDER.indexOf(v.key),I=CHAIN_ORDER.indexOf(A.key);return w>=0&&I>=0?w-I:w===-1?1:I===-1?-1:0}),tokens:d,tokenWhitelist:t.tokens,routes:new RouteOperator(t.routes),ui:createUiConfig({...t.ui}),guardianSet:s.guardianSet,transactionSettings:(t==null?void 0:t.transactionSettings)||{}}}const config$1=buildConfig();function getLegacyWormholeContext(t,e,s){return new WormholeContext(t,{...e,rpcs:s})}async function getWormholeContextV2(){return config$1._v2Wormhole||(config$1._v2Wormhole=await newWormholeContextV2()),config$1._v2Wormhole}async function clearWormholeContextV2(){delete config$1._v2Wormhole}async function newWormholeContextV2(){const t={chains:{}};for(const e in config$1.chains){const s=e,l=config$1.rpcs[s],d={};for(const u of config$1.tokens.getAllForChain(s)){const p={key:u.key,chain:s,symbol:u.symbol,address:u.address.toString(),decimals:u.decimals};d[u.address.toString()]=p}t.chains[s]={rpc:l,tokenMap:d}}return await wormhole(config$1.network,[evm,solana$1,aptos$1,sui],t)}function setConfig(t={}){const e=buildConfig(t);for(const s in e)config$1[s]=e[s];typeof window<"u"&&(window._connectConfig=config$1)}function getEmptyDataWrapper(){return{data:null,error:null,isFetching:!1,receivedAt:null}}function receiveDataWrapper(t){return{data:t,error:null,isFetching:!1,receivedAt:new Date().toISOString()}}function errorDataWrapper(t){return{data:null,error:t,isFetching:!1,receivedAt:null}}function fetchDataWrapper(){return{data:null,error:null,isFetching:!0,receivedAt:null}}const accessChainBalances=(t,e,s)=>{if(!s||!t||!e)return;const l=t[e];if(!l)return;const d=l[s];if(d)return d},accessBalance=(t,e,s,l)=>{const d=accessChainBalances(t,e,s);if(d)return d.balances[l.key]};function getInitialState(){var p,m,y;const{fromChain:t,toChain:e,fromToken:s,toToken:l}=config$1.ui.defaultInputs||{},d=t&&s?(p=config$1.tokens.findByAddressOrSymbol(t,s))==null?void 0:p.tuple:void 0,u=e&&l?(m=config$1.tokens.findByAddressOrSymbol(e,l))==null?void 0:m.tuple:void 0;return{showValidationState:!1,validations:{fromChain:"",toChain:"",amount:"",toNativeToken:"",sendingWallet:"",receivingWallet:"",relayerFee:"",receiveAmount:""},fromChain:t,toChain:e,token:d,destToken:u,amount:void 0,receiveAmount:getEmptyDataWrapper(),preferredRouteName:(y=config$1.ui.defaultInputs)==null?void 0:y.preferredRouteName,route:void 0,balances:{},foreignAsset:"",associatedTokenAddress:"",gasEst:{send:"",claim:""},isTransactionInProgress:!1,receiverNativeBalance:""}}const performModificationsIfFromChainChanged=t=>{const{fromChain:e}=t;if(t.token){const s=config$1.tokens.get(t.token);if(s&&e&&s.chain!==e&&s.symbol){const l=config$1.tokens.findBySymbol(e,s.symbol);l&&(t.token=l.tuple)}}},performModificationsIfToChainChanged=t=>{const{toChain:e}=t;if(t.destToken){const s=config$1.tokens.get(t.destToken);if(s&&e&&s.chain!==e&&s.symbol){const l=config$1.tokens.findBySymbol(e,s.symbol);l&&(t.destToken=l.tuple)}}},transferInputSlice=createSlice({name:"transfer",initialState:getInitialState(),reducers:{setValidations:(t,{payload:{showValidationState:e,validations:s}})=>{Object.keys(s).forEach(l=>{t.validations[l]=s[l]}),t.showValidationState=e},setToken:(t,{payload:e})=>{t.token=e},clearToken:t=>{t.token=void 0},setDestToken:(t,{payload:e})=>{t.destToken=e},clearDestToken:t=>{t.destToken=void 0},setFromChain:(t,{payload:e})=>{t.fromChain=e,performModificationsIfFromChainChanged(t)},setToChain:(t,{payload:e})=>{t.toChain=e,performModificationsIfToChainChanged(t)},setAmount:(t,{payload:e})=>{if(t.token&&t.fromChain){const s=config$1.tokens.get(t.token);if(s){const{decimals:l}=s,d=parse$5(e,l);units(d)===0n?t.amount=void 0:t.amount=d}}else console.warn("Can't call setAmount without a fromChain and token")},setReceiveAmount:(t,{payload:e})=>{t.receiveAmount=receiveDataWrapper(e)},setFetchingReceiveAmount:t=>{t.receiveAmount=fetchDataWrapper()},setReceiveAmountError:(t,{payload:e})=>{t.receiveAmount=errorDataWrapper(e)},updateBalances:(t,{payload:e})=>{var u,p;const{chain:s,balances:l,address:d}=e;d&&((u=t.balances)[d]??(u[d]={}),(p=t.balances[d])[s]??(p[s]={balances:{}}),t.balances[d][s].balances={...t.balances[d][s].balances,...l})},setTransferRoute:(t,{payload:e})=>{if(!e){t.route=void 0;return}t.route=e},clearTransfer:t=>{const e=getInitialState();Object.keys(t).forEach(s=>{t[s]=e[s]})},setIsTransactionInProgress:(t,{payload:e})=>{t.isTransactionInProgress=e},swapInputs:t=>{const e=t.fromChain;t.fromChain=t.toChain,t.toChain=e;const s=t.token;t.token=t.destToken,t.destToken=s,performModificationsIfFromChainChanged(t),performModificationsIfToChainChanged(t)}}}),isDisabledChain=(t,e)=>e.name==="OKX Wallet"&&t==="Evmos"?!0:!walletAcceptedChains(e.type).includes(t),selectFromChain=async(t,e,s)=>{selectChain(TransferWallet.SENDING,t,e,s)},selectToChain=async(t,e,s)=>{selectChain(TransferWallet.RECEIVING,t,e,s)},selectChain=async(t,e,s,l)=>{isDisabledChain(s,l)&&(e(clearWallet(t)),e(setWalletError({type:t,error:"Wallet disconnected, please connect a supported wallet"}))),config$1.chains[s]&&e(t===TransferWallet.SENDING?setFromChain(s):setToChain(s))},{setValidations,setToken,clearToken,setDestToken,clearDestToken,setFromChain,setToChain,setAmount,setTransferRoute,updateBalances,clearTransfer,setIsTransactionInProgress,swapInputs}=transferInputSlice.actions,transferInputReducer=transferInputSlice.reducer,initialState$1={maxSwapAmt:void 0,toNativeToken:0,receiveNativeAmt:void 0,relayerFee:void 0,receiverNativeBalance:""},relaySlice=createSlice({name:"transfer",initialState:initialState$1,reducers:{setToNativeToken:(t,{payload:e})=>{t.toNativeToken=e},clearRelay:t=>{Object.keys(t).forEach(e=>{t[e]=initialState$1[e]})}}}),{setToNativeToken}=relaySlice.actions,relayReducer=relaySlice.reducer,initialState={route:"bridge",showFromChainsModal:!1,showToChainsModal:!1,showTokensModal:!1,showWalletModal:!1},routerSlice=createSlice({name:"router",initialState,reducers:{setRoute:(t,{payload:e})=>{t.route=e}}}),{setRoute}=routerSlice.actions,routerReducer=routerSlice.reducer,store=configureStore({reducer:{redeem:redeemReducer,transferInput:transferInputReducer,router:routerReducer,wallet:walletReducer,relay:relayReducer}}),objectFromEntries=Object.fromEntries?Object.fromEntries:t=>{if(!t||!t[Symbol.iterator])throw new Error("Object.fromEntries() requires a single iterable argument");const e={};return Object.keys(t).forEach(s=>{const[l,d]=t[s];e[l]=d}),e};function objectKeys(t){return Object.keys(t)}function assert(t,e){if(!t)throw new Error(e)}function typeGuard(t,e){return e}const classnames=t=>{const e=t.length;let s=0,l="";for(;s<e;s++){const d=t[s];if(d==null)continue;let u;switch(typeof d){case"boolean":break;case"object":{if(Array.isArray(d))u=classnames(d);else{assert(!typeGuard(d,!1)),dist$2.process.env.NODE_ENV!=="production"&&d.styles!==void 0&&d.name!==void 0&&console.error("You have passed styles created with `css` from `@emotion/react` package to the `cx`.\n`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component."),u="";for(const p in d)d[p]&&p&&(u&&(u+=" "),u+=p)}break}default:u=d}u&&(l&&(l+=" "),l+=u)}return l};function murmur2(t){for(var e=0,s,l=0,d=t.length;d>=4;++l,d-=4)s=t.charCodeAt(l)&255|(t.charCodeAt(++l)&255)<<8|(t.charCodeAt(++l)&255)<<16|(t.charCodeAt(++l)&255)<<24,s=(s&65535)*1540483477+((s>>>16)*59797<<16),s^=s>>>24,e=(s&65535)*1540483477+((s>>>16)*59797<<16)^(e&65535)*1540483477+((e>>>16)*59797<<16);switch(d){case 3:e^=(t.charCodeAt(l+2)&255)<<16;case 2:e^=(t.charCodeAt(l+1)&255)<<8;case 1:e^=t.charCodeAt(l)&255,e=(e&65535)*1540483477+((e>>>16)*59797<<16)}return e^=e>>>13,e=(e&65535)*1540483477+((e>>>16)*59797<<16),((e^e>>>15)>>>0).toString(36)}var unitlessKeys={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},hyphenateRegex=/[A-Z]|^ms/g,animationRegex=/_EMO_([^_]+?)_([^]*?)_EMO_/g,isCustomProperty=function(e){return e.charCodeAt(1)===45},isProcessableValue=function(e){return e!=null&&typeof e!="boolean"},processStyleName=memoize$1(function(t){return isCustomProperty(t)?t:t.replace(hyphenateRegex,"-$&").toLowerCase()}),processStyleValue=function(e,s){switch(e){case"animation":case"animationName":if(typeof s=="string")return s.replace(animationRegex,function(l,d,u){return cursor={name:d,styles:u,next:cursor},d})}return unitlessKeys[e]!==1&&!isCustomProperty(e)&&typeof s=="number"&&s!==0?s+"px":s};function handleInterpolation(t,e,s){if(s==null)return"";var l=s;if(l.__emotion_styles!==void 0)return l;switch(typeof s){case"boolean":return"";case"object":{var d=s;if(d.anim===1)return cursor={name:d.name,styles:d.styles,next:cursor},d.name;var u=s;if(u.styles!==void 0){var p=u.next;if(p!==void 0)for(;p!==void 0;)cursor={name:p.name,styles:p.styles,next:cursor},p=p.next;var m=u.styles+";";return m}return createStringFromObject(t,e,s)}}var y=s;if(e==null)return y;var h=e[y];return h!==void 0?h:y}function createStringFromObject(t,e,s){var l="";if(Array.isArray(s))for(var d=0;d<s.length;d++)l+=handleInterpolation(t,e,s[d])+";";else for(var u in s){var p=s[u];if(typeof p!="object"){var m=p;e!=null&&e[m]!==void 0?l+=u+"{"+e[m]+"}":isProcessableValue(m)&&(l+=processStyleName(u)+":"+processStyleValue(u,m)+";")}else if(Array.isArray(p)&&typeof p[0]=="string"&&(e==null||e[p[0]]===void 0))for(var y=0;y<p.length;y++)isProcessableValue(p[y])&&(l+=processStyleName(u)+":"+processStyleValue(u,p[y])+";");else{var h=handleInterpolation(t,e,p);switch(u){case"animation":case"animationName":{l+=processStyleName(u)+":"+h+";";break}default:l+=u+"{"+h+"}"}}}return l}var labelPattern=/label:\s*([^\s;{]+)\s*(;|$)/g,cursor;function serializeStyles(t,e,s){if(t.length===1&&typeof t[0]=="object"&&t[0]!==null&&t[0].styles!==void 0)return t[0];var l=!0,d="";cursor=void 0;var u=t[0];if(u==null||u.raw===void 0)l=!1,d+=handleInterpolation(s,e,u);else{var p=u;d+=p[0]}for(var m=1;m<t.length;m++)if(d+=handleInterpolation(s,e,t[m]),l){var y=u;d+=y[m]}labelPattern.lastIndex=0;for(var h="",v;(v=labelPattern.exec(d))!==null;)h+="-"+v[1];var A=murmur2(d)+h;return{name:A,styles:d,next:cursor}}function getRegisteredStyles(t,e,s){var l="";return s.split(" ").forEach(function(d){t[d]!==void 0?e.push(t[d]+";"):d&&(l+=d+" ")}),l}var registerStyles=function(e,s,l){var d=e.key+"-"+s.name;e.registered[d]===void 0&&(e.registered[d]=s.styles)},insertStyles=function(e,s,l){registerStyles(e,s);var d=e.key+"-"+s.name;if(e.inserted[s.name]===void 0){var u=s;do e.insert(s===u?"."+d:"",u,e.sheet,!0),u=u.next;while(u!==void 0)}};function useGuaranteedMemo(t,e){var s;const l=React$1.useRef();return(!l.current||e.length!==((s=l.current.prevDeps)===null||s===void 0?void 0:s.length)||l.current.prevDeps.map((d,u)=>d===e[u]).indexOf(!1)>=0)&&(l.current={v:t(),prevDeps:[...e]}),l.current.v}function matchCSSObject(t){return t instanceof Object&&!("styles"in t)&&!("length"in t)&&!("__emotion_styles"in t)}const{createCssAndCx}=(()=>{function t(s,l,d){const u=[],p=getRegisteredStyles(s,u,d);return u.length<2?d:p+l(u)}function e(s){const{cache:l}=s,d=(...p)=>{const m=serializeStyles(p,l.registered);insertStyles(l,m);const y=`${l.key}-${m.name}`;e:{const h=p[0];if(!matchCSSObject(h))break e;increaseSpecificityToTakePrecedenceOverMediaQueries.saveClassNameCSSObjectMapping(l,y,h)}return y};return{css:d,cx:(...p)=>{const m=classnames(p),y=increaseSpecificityToTakePrecedenceOverMediaQueries.fixClassName(l,m,d);return t(l.registered,d,y)}}}return{createCssAndCx:e}})();function createUseCssAndCx(t){const{useCache:e}=t;function s(){const l=e(),{css:d,cx:u}=useGuaranteedMemo(()=>createCssAndCx({cache:l}),[l]);return{css:d,cx:u}}return{useCssAndCx:s}}const increaseSpecificityToTakePrecedenceOverMediaQueries=(()=>{const t=new WeakMap;return{saveClassNameCSSObjectMapping:(e,s,l)=>{let d=t.get(e);d===void 0&&(d=new Map,t.set(e,d)),d.set(s,l)},fixClassName:(()=>{function e(s){let l=!1;return s.map(([d,u])=>{if(u===void 0)return d;let p;if(l)p={"&&":u};else{p=d;for(const m in u)if(m.startsWith("@media")){l=!0;break}}return p})}return(s,l,d)=>{const u=t.get(s);return classnames(e(l.split(" ").map(p=>[p,u==null?void 0:u.get(p)])).map(p=>typeof p=="string"?p:d(p)))}})()}})();function getDependencyArrayRef(t){if(!(t instanceof Object)||typeof t=="function")return t;const e=[];for(const s in t){const l=t[s],d=typeof l;if(!(d==="string"||d==="number"&&!isNaN(l)||d==="boolean"||l===void 0||l===null))return t;e.push(`${s}:${d}_${l}`)}return"xSqLiJdLMd9s"+e.join("|")}function mergeClasses(t,e,s){if(!(e instanceof Object))return t;const l={};return objectKeys(t).forEach(d=>l[d]=s(t[d],e[d])),objectKeys(e).forEach(d=>{if(d in t)return;const u=e[d];typeof u=="string"&&(l[d]=u)}),l}const useMuiThemeStyleOverridesPlugin=({classes:t,theme:e,muiStyleOverridesParams:s,css:l,cx:d,name:u})=>{var p,m;e:{if(u==="makeStyle no name"){u=void 0;break e}if(s!==void 0&&u===void 0)throw new Error("To use muiStyleOverridesParams, you must specify a name using .withName('MyComponent')")}let y;try{y=u===void 0?void 0:((m=(p=e.components)===null||p===void 0?void 0:p[u])===null||m===void 0?void 0:m.styleOverrides)||void 0}catch{}const h=React$1.useMemo(()=>{if(y===void 0)return;const v={};for(const A in y){const w=y[A];w instanceof Object&&(v[A]=l(typeof w=="function"?w({theme:e,ownerState:s==null?void 0:s.ownerState,...s==null?void 0:s.props}):w))}return v},[y,getDependencyArrayRef(s==null?void 0:s.props),getDependencyArrayRef(s==null?void 0:s.ownerState),l]);return t=React$1.useMemo(()=>mergeClasses(t,h,d),[t,h,d]),{classes:t}};let counter$1=0;function createMakeStyles(t){const{useTheme:e,cache:s}=t,{useCache:l}=createUseCache({cacheProvidedAtInception:s}),{useCssAndCx:d}=createUseCssAndCx({useCache:l});function u(m){const{name:y,uniqId:h=`${counter$1++}`}=m??{},v=typeof y!="object"?y:Object.keys(y)[0];return function(A){const w=typeof A=="function"?A:()=>A;return function(k,$){const P=e();let{css:z,cx:U}=d();const F=l();let q=React$1.useMemo(()=>{const V={},H=typeof Proxy<"u"&&new Proxy({},{get:(ee,le)=>(typeof le=="symbol"&&assert(!1),V[le]=`${F.key}-${h}${v!==void 0?`-${v}`:""}-${le}-ref`)}),Z=w(P,k,H||{}),ne=objectFromEntries(objectKeys(Z).map(ee=>{const le=Z[ee];return le.label||(le.label=`${v!==void 0?`${v}-`:""}${ee}`),[ee,`${z(le)}${typeGuard(ee,ee in V)?` ${V[ee]}`:""}`]}));return objectKeys(V).forEach(ee=>{ee in ne||(ne[ee]=V[ee])}),ne},[F,z,U,P,getDependencyArrayRef(k)]);{const V=$==null?void 0:$.props.classes;q=React$1.useMemo(()=>mergeClasses(q,V,U),[q,getDependencyArrayRef(V),U])}{const V=useMuiThemeStyleOverridesPlugin({classes:q,css:z,cx:U,name:v??"makeStyle no name",muiStyleOverridesParams:$,theme:P});V.classes!==void 0&&(q=V.classes),V.css!==void 0&&(z=V.css),V.cx!==void 0&&(U=V.cx)}return{classes:q,theme:P,css:z,cx:U}}}}function p(){const m=e(),{css:y,cx:h}=d();return{theme:m,css:y,cx:h}}return{makeStyles:u,useStyles:p}}const reactContext=React$1.createContext(void 0),{createUseCache}=(()=>{function t(){return React$1.useContext(reactContext)}function e(s){const{cacheProvidedAtInception:l}=s;function d(){var u;const p=reactEmotion.__unsafe_useEmotionCache(),m=t(),y=(u=l??m)!==null&&u!==void 0?u:p;if(y===null)throw new Error(["In order to get SSR working with tss-react you need to explicitly provide an Emotion cache.","MUI users be aware: This is not an error strictly related to tss-react, with or without tss-react,","MUI needs an Emotion cache to be provided for SSR to work.","Here is the MUI documentation related to SSR setup: https://mui.com/material-ui/guides/server-rendering/","TSS provides helper that makes the process of setting up SSR easier: https://docs.tss-react.dev/ssr"].join(`
197
197
  `));return y}return{useCache:d}}return{createUseCache:e}})();function capitalize(t){return t.charAt(0).toUpperCase()+t.slice(1)}function createWithStyles(t){const{useTheme:e,cache:s}=t,{makeStyles:l}=createMakeStyles({useTheme:e,cache:s});function d(u,p,m){const y=typeof u=="string"?(()=>{const I=u,k=function({children:$,...P}){return React$1.createElement(I,P,$)};return Object.defineProperty(k,"name",{value:capitalize(I)}),k})():u,h=(()=>{{const{name:k}=m??{};if(k!==void 0)return typeof k!="object"?k:Object.keys(k)[0]}let I;e:{const k=y.displayName;if(typeof k!="string"||k==="")break e;I=k}e:{if(I!==void 0)break e;const k=y.name;if(typeof k!="string"||k==="")break e;I=k}if(I!==void 0)return I=I.replace(/\$/g,"usd"),I=I.replace(/\(/g,"_").replace(/\)/g,"_"),I=I.replace(/[^a-zA-Z0-9-_]/g,"_"),I})(),v=l({...m,name:h})(typeof p=="function"?(I,k,$)=>incorporateMediaQueries(p(I,k,$)):incorporateMediaQueries(p));function A(I){for(const k in I)if(k!=="root")return!0;return!1}const w=React$1.forwardRef(function(I,k){const{className:$,classes:P,...z}=I,{classes:U,cx:F}=v(I,{props:I}),q=F(U.root,$);return fixedClassesByClasses.set(U,{...U,root:q}),React$1.createElement(y,{ref:k,className:A(U)?$:q,...typeof u=="string"?{}:{classes:U},...z})});return h!==void 0&&(w.displayName=`${capitalize(h)}WithStyles`,Object.defineProperty(w,"name",{value:w.displayName})),w}return d.getClasses=getClasses,{withStyles:d}}const fixedClassesByClasses=new WeakMap,errorMessageGetClasses="getClasses should only be used in conjunction with withStyles";function getClasses(t){const e=t.classes;if(e===void 0)throw new Error(errorMessageGetClasses);const s=fixedClassesByClasses.get(e);if(s===void 0)throw new Error(errorMessageGetClasses);return s}function incorporateMediaQueries(t){const e={},s={};return Object.keys(t).forEach(l=>(l.startsWith("@media")?s:e)[l]=t[l]),Object.keys(s).forEach(l=>{const d=s[l];Object.keys(d).forEach(u=>{var p;return e[u]={...(p=e[u])!==null&&p!==void 0?p:{},[l]:d[u]}})}),e}const isSSR=!(typeof document=="object"&&typeof(document==null?void 0:document.getElementById)=="function")&&!(typeof jest<"u")&&!(typeof mocha<"u")&&!(typeof __vitest_worker__<"u");function createTss(t){counter=0,nestedSelectorUsageTrackRecord.splice(0,nestedSelectorUsageTrackRecord.length);const{useContext:e,usePlugin:s,cache:l}=t,{useCache:d}=createUseCache({cacheProvidedAtInception:l}),{useCssAndCx:u}=createUseCssAndCx({useCache:d});return{tss:createTss_internal({useContext:e,useCache:d,useCssAndCx:u,usePlugin:s??(({classes:y,cx:h,css:v})=>({classes:y,cx:h,css:v})),name:void 0,doesUseNestedSelectors:!1})}}let counter=0;const nestedSelectorUsageTrackRecord=[];function createTss_internal(t){const{useContext:e,useCache:s,useCssAndCx:l,usePlugin:d,name:u,doesUseNestedSelectors:p}=t;return{withParams:()=>createTss_internal({...t}),withName:m=>createTss_internal({...t,name:typeof m!="object"?m:Object.keys(m)[0]}),withNestedSelectors:()=>createTss_internal({...t,doesUseNestedSelectors:!0}),create:m=>{const y=`x${counter++}`;if(u!==void 0)for(;;){const v=nestedSelectorUsageTrackRecord.find(A=>A.name===u);if(v===void 0)break;nestedSelectorUsageTrackRecord.splice(nestedSelectorUsageTrackRecord.indexOf(v),1)}const h=typeof m=="function"?m:()=>m;return function(A){var w,I,k;const{classesOverrides:$,...P}=A??{},z=e(),{css:U,cx:F}=l(),q=s(),V=()=>{const ne={},ee=h({...A,...z,...p?{classes:typeof Proxy>"u"?{}:new Proxy({},{get:(j,x)=>{if(typeof x=="symbol"&&assert(!1),isSSR&&u===void 0)throw new Error(["tss-react: In SSR setups, in order to use nested selectors, you must also give a unique name to the useStyle function.",'Solution: Use tss.withName("ComponentName").withNestedSelectors<...>()... to set a name.'].join(`