@wormhole-foundation/wormhole-connect 3.0.0-beta.8-development → 3.0.0-beta.9-development
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.
- package/dist/assets/{aptos-174MkQkp.js → aptos-D9VsvuGi.js} +2 -2
- package/dist/assets/{ccip-Clh7lDFd.js → ccip-u-dcupj6.js} +1 -1
- package/dist/assets/{create-BrCILL-b.js → create-CPwTP7kz.js} +1 -1
- package/dist/assets/{evm-Dxka2v4f.js → evm-BsYn5oKw.js} +3 -3
- package/dist/assets/{evm-zU4C--zf.js → evm-PXwgtnG4.js} +2 -2
- package/dist/assets/{index-VJdR0Vsp.js → index-B3ZaqhJg.js} +1 -1
- package/dist/assets/{index-CVMIiUin.js → index-B5MVX_TK.js} +1 -1
- package/dist/assets/{index-4D-1dcJ9.js → index-B6dxRQ86.js} +1 -1
- package/dist/assets/{index-CBLLe3hL.js → index-B8PSBQZ9.js} +1 -1
- package/dist/assets/{index-CvMogzDh.js → index-BjJiAUgL.js} +1 -1
- package/dist/assets/{index-DsjGpXT9.js → index-Bpj3nBYn.js} +1 -1
- package/dist/assets/{index-CW9rA1zL.js → index-CCKwEjtb.js} +1 -1
- package/dist/assets/{index-CxTqvuay.js → index-CMzm2YRG.js} +1 -1
- package/dist/assets/{index-CAi0XN_b.js → index-C_fbsqYy.js} +1 -1
- package/dist/assets/{index-5IQaHp4s.js → index-CeaghD18.js} +1 -1
- package/dist/assets/{index-BcCKudwp.js → index-CgFxnAZU.js} +2 -2
- package/dist/assets/{index-toVQVrsP.js → index-Ci4biYvU.js} +1 -1
- package/dist/assets/{index-B6DtW1dg.js → index-Cz_gZSPA.js} +1 -1
- package/dist/assets/{index-CbDl1Nk6.js → index-D7mpnTIe.js} +1 -1
- package/dist/assets/{index-GUU3bnHw.js → index-DGS3sLO1.js} +1 -1
- package/dist/assets/{index-CTAjt_cp.js → index-DL0M3nJj.js} +1 -1
- package/dist/assets/{index-CbV0zEo3.js → index-DNbxAEYp.js} +1 -1
- package/dist/assets/{index-CdW-fp8-.js → index-DtRRvCNn.js} +1 -1
- package/dist/assets/{index-6HbyQ3jY.js → index-ZIIwf20G.js} +1 -1
- package/dist/assets/{index-DN2i-14o.js → index-wvkrobsf.js} +1 -1
- package/dist/assets/{index-Bi_XAyhv.js → index-xgCvqsOD.js} +1 -1
- package/dist/assets/{index.es-BK07yBK8.js → index.es-Cw18p-se.js} +6 -6
- package/dist/assets/{signer-Cqdo4YRC.js → signer-C3DgLdvN.js} +2 -2
- package/dist/assets/{solana-CeiXWtGd.js → solana-CGFN2NGX.js} +2 -2
- package/dist/assets/solana-D-RpLbqD.js +2 -0
- package/dist/assets/solanaEmbed.esm-BkAurkzW.js +37 -0
- package/dist/assets/{sui-TntjpiE6.js → sui-CnHcn_0B.js} +2 -2
- package/dist/assets/{tokens-wBpWq5l5.js → tokens-FDI1dtAz.js} +1 -1
- package/dist/main.js +50 -50
- package/dist/src/contexts/TokensContext.d.ts.map +1 -1
- package/dist/src/utils/errors.d.ts +1 -0
- package/dist/src/utils/errors.d.ts.map +1 -1
- package/dist/src/views/v2/Bridge/WalletConnector/Sidebar.d.ts.map +1 -1
- package/lib/{account-QG_Hi4er.js → account-BSFuCEgk.js} +1 -1
- package/lib/{account-BK8xMTUI.mjs → account-y1ICRMSr.mjs} +1 -1
- package/lib/{address-B-_yHNB2.js → address-BwcXVurJ.js} +1 -1
- package/lib/{address-CNhzoegm.js → address-D8qNQEOW.js} +1 -1
- package/lib/{address-BWXkejmE.mjs → address-DaoiwqzU.mjs} +1 -1
- package/lib/{address-RcMobNYE.js → address-DnSRsubO.js} +7 -7
- package/lib/{address-CBux52Na.mjs → address-DqsMcbcT.mjs} +612 -588
- package/lib/{address-DKHa7TFU.mjs → address-S7wMItHX.mjs} +1 -1
- package/lib/{aptos-CgZRp0hq.mjs → aptos-CSVdIYqJ.mjs} +3 -3
- package/lib/{aptos-DJMgh1Hl.js → aptos-C_j04MF5.js} +1 -1
- package/lib/{aptos-C180o9od.mjs → aptos-C_sLjrbm.mjs} +15 -15
- package/lib/{aptos-BZ2mcuTd.js → aptos-ma6bumqy.js} +2 -2
- package/lib/{base64-Dmj19Uvu.mjs → base64-B2xumR3a.mjs} +3 -2
- package/lib/{base64-BfY07bq5.js → base64-a1Dr6hMt.js} +1 -1
- package/lib/{blake2b-CgbIfNRX.mjs → blake2b-CR50AGep.mjs} +1 -1
- package/lib/{blake2b-CoM94_cH.js → blake2b-Dkm1d7Wp.js} +1 -1
- package/lib/{browser-ponyfill-BAEAyXvw.js → browser-ponyfill-BTt_ELXG.js} +1 -1
- package/lib/{browser-ponyfill-BecG2Lnb.mjs → browser-ponyfill-uCX78ltK.mjs} +1 -1
- package/lib/{ccip-XKKSPS06.mjs → ccip-69mFHkV9.mjs} +1 -1
- package/lib/{ccip-Cm8Vj9wX.js → ccip-BFyWlloE.js} +1 -1
- package/lib/{chain-itK5uGYL.js → chain-Cio41-Lr.js} +1 -1
- package/lib/{chain-sKZNJgPZ.mjs → chain-DbmG-oEQ.mjs} +1 -1
- package/lib/{chunk-IMTC3J2M-DKLPKqnP.mjs → chunk-IMTC3J2M-CmFt3nz5.mjs} +137 -135
- package/lib/chunk-IMTC3J2M-NMBEZ4p8.js +471 -0
- package/lib/{constants-JjSEj47h.mjs → constants-JcrZQeMq.mjs} +1 -1
- package/lib/constants-lsjPx3va.js +1 -0
- package/lib/{contract-MJZ8ZoSX.js → contract-CcVq6MSa.js} +1 -1
- package/lib/{contract-BVaUamai.mjs → contract-DrK81GRi.mjs} +109 -109
- package/lib/create-BtJgfMdJ.mjs +18 -0
- package/lib/{create-DO_-1_Hb.js → create-Q6N34YQz.js} +1 -1
- package/lib/{evm-DFri8vrk.mjs → evm--hXXT-db.mjs} +9 -9
- package/lib/{evm-C-aa4dBG.mjs → evm-BBqhcxFC.mjs} +83 -83
- package/lib/{evm-B6WNiS3O.js → evm-CNq2zXwl.js} +3 -3
- package/lib/{evm-ZSzF-61X.js → evm-l0300AWS.js} +2 -2
- package/lib/executor.js +470 -1
- package/lib/executor.mjs +7106 -560
- package/lib/hosted.js +1 -1
- package/lib/hosted.mjs +1 -1
- package/lib/{index-aA-2Ygs3.mjs → index-98w8rrCe.mjs} +1 -1
- package/lib/{index-Bb8InrQU.mjs → index-9dr91dtY.mjs} +2 -2
- package/lib/{index-DNaxNpBa.js → index-BABC5__9.js} +1 -1
- package/lib/{index-CapdlI6H.js → index-BAjc-UZH.js} +1 -1
- package/lib/{index-Cx-ODuWg.mjs → index-BN-aj3dN.mjs} +4 -4
- package/lib/{index-BeQ668oT.js → index-BV7XVrd8.js} +1 -1
- package/lib/{index-CKaF7Gzs.mjs → index-BbUxOO56.mjs} +14 -14
- package/lib/{index-D3cDkU4S.js → index-BfPE3vDw.js} +1 -1
- package/lib/{index-Batb-GTa.mjs → index-BlCHxlUD.mjs} +5 -5
- package/lib/{index-CZYUYK5K.js → index-BnCQiOiA.js} +1 -1
- package/lib/{index-CsdQttEt.mjs → index-BqmCeCU_.mjs} +5 -5
- package/lib/{index-CP-oqZKO.mjs → index-BtrXSq3R.mjs} +5 -5
- package/lib/{index-CE0rxdUf.js → index-C-ORpsiU.js} +1 -1
- package/lib/{index-DyE-3pz1.js → index-C0un9IYm.js} +1 -1
- package/lib/{index-DdvRmaTh.mjs → index-C4HPXgbm.mjs} +7 -7
- package/lib/{index-DgIxcujP.mjs → index-COkYtNvE.mjs} +36 -36
- package/lib/{index-CLy98PXT.mjs → index-COs6VyCx.mjs} +13 -13
- package/lib/{index-DkC5j2nL.js → index-COsUDXFI.js} +1 -1
- package/lib/{index-B36we0ml.mjs → index-CUYHyKgr.mjs} +7 -7
- package/lib/{index-RPBmg_bG.js → index-CUyxr8OX.js} +1 -1
- package/lib/{index-DDBLdcME.mjs → index-CX0qxE9A.mjs} +11 -11
- package/lib/{index-C2Pe6i5V.js → index-CiFTvTwg.js} +1 -1
- package/lib/{index-DNcx7dMI.mjs → index-CofxOTyV.mjs} +5 -5
- package/lib/{index-BGqRY1Ww.js → index-CsR_y9ji.js} +1 -1
- package/lib/{index-CA5XKv-J.js → index-CuoxLyOv.js} +1 -1
- package/lib/{index-DRCX2iXw.js → index-CvEfOpn2.js} +1 -1
- package/lib/{index-CV3K6bKD.js → index-Cxwfq1al.js} +1 -1
- package/lib/{index-CjroDahP.mjs → index-D0tl0B36.mjs} +2 -2
- package/lib/{index-f_27F6WX.js → index-D4KtQtgE.js} +1 -1
- package/lib/{index-D2o0FZvZ.js → index-D74ZE0n9.js} +1 -1
- package/lib/{index-DkZjpCle.js → index-DLFGcXjy.js} +1 -1
- package/lib/{index-07cEoDZD.mjs → index-DNvr2HlM.mjs} +13 -13
- package/lib/{index-Cu7gFSJv.mjs → index-DPfKYdEf.mjs} +1 -1
- package/lib/{index-Bogu114a.js → index-Db3GFx2x.js} +1 -1
- package/lib/{index-BT-OIQwY.js → index-DbJV-Hi3.js} +1 -1
- package/lib/{index-B-S6avdv.js → index-DebLDCcs.js} +1 -1
- package/lib/{index-DC1ot7tO.js → index-DjbQ-yfQ.js} +1 -1
- package/lib/{index-Cry2AYTm.mjs → index-DsKRmXnW.mjs} +3 -3
- package/lib/{index-FCA-cXcS.js → index-DtUeWT1n.js} +1 -1
- package/lib/{index-DyvQhGPY.mjs → index-DtfwfGsA.mjs} +2 -2
- package/lib/{index-B2r7NIEm.mjs → index-DvozGHS-.mjs} +6959 -6952
- package/lib/{index-BHNTmtV8.mjs → index-Dx7nqevs.mjs} +2 -2
- package/lib/{index-Blzzdktm.js → index-LJw0S70V.js} +1 -1
- package/lib/{index-rAnJYuJr.mjs → index-Nh2mSVy3.mjs} +9 -9
- package/lib/{index-B5XhLD_L.mjs → index-S_O9ybUy.mjs} +5 -5
- package/lib/{index-DNaz7STA.js → index-S_dcknx7.js} +79 -79
- package/lib/{index-Dsaj5lf_.js → index-U1ceHkB6.js} +1 -1
- package/lib/{index-BUlzgqNa.mjs → index-Yp3NfcfI.mjs} +4 -4
- package/lib/{index-DRleG63r.mjs → index-Z48MvcFr.mjs} +1 -1
- package/lib/{index-B9hin5U8.mjs → index-ejTR4WLF.mjs} +5 -5
- package/lib/{index-BUfjw4S2.mjs → index-kyD2rWx8.mjs} +11 -11
- package/lib/{index-BL4H4RbP.js → index-lG1-neJv.js} +1 -1
- package/lib/{index-Ckh8NjIm.mjs → index-sz4KACqf.mjs} +5 -5
- package/lib/{index-dpkTW-H8.js → index-vIUqmO0o.js} +1 -1
- package/lib/{index.es-CzD-3fzz.js → index.es-C4RhqFy8.js} +2 -2
- package/lib/{index.es-7bSe0KCN.mjs → index.es-D5O0G4Af.mjs} +7 -7
- package/lib/index.js +1 -1
- package/lib/index.mjs +1 -1
- package/lib/mayan.js +1 -1
- package/lib/mayan.mjs +10 -10
- package/lib/{mint-C3SdQH_S.mjs → mint-CKsi-DrV.mjs} +2 -2
- package/lib/{mint-BxtkCWBh.js → mint-DNcbNuI1.js} +1 -1
- package/lib/ntt.js +1 -1
- package/lib/ntt.mjs +10 -10
- package/lib/{platform-Czq0KkFa.mjs → platform-BCxJ-CNM.mjs} +7 -7
- package/lib/{platform-CG_VHRJU.js → platform-BqUizEYV.js} +1 -1
- package/lib/{platform-CUeBR_i4.mjs → platform-CB3TPh7I.mjs} +17 -17
- package/lib/{platform-CyTWPtDR.js → platform-CGIgJRY3.js} +1 -1
- package/lib/{platform-PNwsacZi.js → platform-D7pe3gG2.js} +1 -1
- package/lib/{platform-Droe0nZu.mjs → platform-DTVt42uH.mjs} +4 -4
- package/lib/provider-jsonrpc-DYBOGqdj.js +1 -0
- package/lib/{provider-jsonrpc-CVWSLk8g.mjs → provider-jsonrpc-MOE1VIOF.mjs} +155 -155
- package/lib/{sha3-BMK6V2DM.mjs → sha3-BZUtvEPh.mjs} +1 -1
- package/lib/{sha3-uufRWTnZ.js → sha3-c6o5MDKC.js} +1 -1
- package/lib/{signer-L9IdBy4K.js → signer-BAFbrQDv.js} +1 -1
- package/lib/{signer-CYkXKdE1.mjs → signer-CwtXMDcn.mjs} +25 -25
- package/lib/solana-Cg0N1W8e.js +1 -0
- package/lib/{solana-B-sX3ewB.js → solana-DIO5mbHM.js} +1 -1
- package/lib/{solana-zah3hXXp.mjs → solana-Dr5BmG1x.mjs} +6 -6
- package/lib/solana-mJ922Ek9.mjs +18 -0
- package/lib/{solanaEmbed.esm-Bo-T9aD6.mjs → solanaEmbed.esm-C4t2kCSL.mjs} +3 -3
- package/lib/{solanaEmbed.esm-b6-lO7lS.js → solanaEmbed.esm-D0xXx6VI.js} +1 -1
- package/lib/src/contexts/TokensContext.d.ts.map +1 -1
- package/lib/src/utils/errors.d.ts +1 -0
- package/lib/src/utils/errors.d.ts.map +1 -1
- package/lib/src/views/v2/Bridge/WalletConnector/Sidebar.d.ts.map +1 -1
- package/lib/{sui-B0UAmItb.mjs → sui-AbsMI4yt.mjs} +3 -3
- package/lib/{sui-CaL9gZpl.js → sui-BSJIqJNt.js} +1 -1
- package/lib/{sui-Dva2w10T.js → sui-Bzh8kAZm.js} +1 -1
- package/lib/{sui-BJsKaZg2.mjs → sui-CZTSBdD4.mjs} +16 -16
- package/lib/{tokens-CgVzNNl_.js → tokens-BUeRxOcP.js} +1 -1
- package/lib/{tokens-DYmluOBf.mjs → tokens-Vm--egzg.mjs} +4 -4
- package/lib/{units-CPUigdwl.js → units-LPlUOt3D.js} +1 -1
- package/lib/{units-YkCOGDr9.mjs → units-b10-QTSu.mjs} +28 -28
- package/lib/{unsignedTransaction-C0WXQMmv.mjs → unsignedTransaction-BJw0T6uN.mjs} +28 -28
- package/lib/{unsignedTransaction-DFUF8DSp.js → unsignedTransaction-CIkLJt6N.js} +1 -1
- package/lib/{web3-B3Usc-Qj.mjs → web3-BHuP7CTp.mjs} +7 -7
- package/lib/{web3-CjTx3huW.js → web3-SO_UBSxv.js} +1 -1
- package/package.json +2 -2
- package/dist/assets/events-Qrc8Qc0_.js +0 -1
- package/dist/assets/solana-DqfcEf7L.js +0 -2
- package/dist/assets/solanaEmbed.esm-BW4sfcDG.js +0 -37
- package/lib/chunk-IMTC3J2M-D-un3eDX.js +0 -471
- package/lib/constants-CsOtqTjr.js +0 -1
- package/lib/create-CQ6n4Ga8.mjs +0 -18
- package/lib/provider-jsonrpc-1gjszS3Q.js +0 -1
- package/lib/solana-BRQmi9BN.js +0 -1
- package/lib/solana-Bs7_C3BS.mjs +0 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var d=Object.defineProperty;var h=(i,e,r)=>e in i?d(i,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):i[e]=r;var o=(i,e,r)=>h(i,typeof e!="symbol"?e+"":e,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("./address-
|
|
1
|
+
"use strict";var d=Object.defineProperty;var h=(i,e,r)=>e in i?d(i,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):i[e]=r;var o=(i,e,r)=>h(i,typeof e!="symbol"?e+"":e,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("./address-DnSRsubO.js"),u=require("./platform-D7pe3gG2.js"),w=require("./create-Q6N34YQz.js"),g=require("./address-D8qNQEOW.js"),l=require("./chain-Cio41-Lr.js");class c{constructor(e,r,t,n){o(this,"network");o(this,"chain");o(this,"provider");o(this,"contracts");o(this,"chainId");o(this,"coreBridgePackageId");this.network=e,this.chain=r,this.provider=t,this.contracts=n,this.chainId=m.toChainId(r);const s=n.coreBridge;if(!s)throw new Error(`CoreBridge contract Address for chain ${r} not found`);this.coreBridgePackageId=s}getGuardianSet(e){throw new Error("Method not implemented.")}getMessageFee(){throw new Error("Method not implemented.")}static async fromRpc(e,r){const[t,n]=await u.SuiPlatform.chainFromRpc(e),s=r[n];if(s.network!==t)throw new Error(`Network mismatch: ${s.network} !== ${t}`);return new c(t,n,e,s.contracts)}async*verifyMessage(e,r){throw new Error("Method not implemented.")}async*publishMessage(e,r){throw new Error("Method not implemented.")}async parseTransaction(e){return(await this.parseMessages(e)).map(t=>({emitter:t.emitterAddress,sequence:t.sequence,chain:this.chain}))}async getGuardianSetIndex(){throw new Error("Method not implemented.")}async parseMessages(e){var n;const t=(n=(await this.provider.getTransactionBlock({digest:e,options:{showEvents:!0,showEffects:!0,showInput:!0}})).events)==null?void 0:n.filter(s=>s.type.endsWith("WormholeMessage"));if(!t||t.length==0)throw new Error("WormholeMessage not found");return t.map(s=>{const a=s.parsedJson;return w.createVAA("Uint8Array",{emitterChain:this.chain,emitterAddress:new g.SuiAddress(a.sender).toUniversalAddress(),sequence:BigInt(a.sequence),guardianSet:0,timestamp:Number(a.timestamp),consistencyLevel:a.consistency_level,nonce:a.nonce,signatures:[],payload:new Uint8Array(a.payload)})})}}l.registerProtocol("Sui","WormholeCore",c);exports.SuiWormholeCore=c;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { T as f, A as c } from "./unsignedTransaction-
|
|
2
|
-
import { c as K } from "./unsignedTransaction-
|
|
3
|
-
import { ae as e, ar as p, aG as s, au as O } from "./address-
|
|
4
|
-
import { p as o, u as m, b as A } from "./web3-
|
|
1
|
+
import { T as f, A as c } from "./unsignedTransaction-BJw0T6uN.mjs";
|
|
2
|
+
import { c as K } from "./unsignedTransaction-BJw0T6uN.mjs";
|
|
3
|
+
import { ae as e, ar as p, aG as s, au as O } from "./address-DqsMcbcT.mjs";
|
|
4
|
+
import { p as o, u as m, b as A } from "./web3-BHuP7CTp.mjs";
|
|
5
5
|
class d extends Error {
|
|
6
6
|
constructor(r) {
|
|
7
7
|
super(r);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var k=Object.defineProperty;var C=(g,s,t)=>s in g?k(g,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[s]=t;var i=(g,s,t)=>C(g,typeof s!="symbol"?s+"":s,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("./platform-
|
|
1
|
+
"use strict";var k=Object.defineProperty;var C=(g,s,t)=>s in g?k(g,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[s]=t;var i=(g,s,t)=>C(g,typeof s!="symbol"?s+"":s,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("./platform-D7pe3gG2.js"),d=require("./address-DnSRsubO.js"),v=require("./unsignedTransaction-DzSLsK-p.js"),S=require("./chain-Cio41-Lr.js"),b=[["Testnet",{tokenMessengerState:"0x5252abd1137094ed1db3e0d75bc36abcd287aee4bc310f8e047727ef5682e7c2",messageTransmitterState:"0x98234bd0fa9ac12cc0a20a144a22e36d6a32f7e0a97baaeaf9c76cdc6d122d2e",usdcTreasury:"0x7170137d4a6431bf83351ac025baf462909bffe2877d87716374fb42b9629ebe"}],["Mainnet",{tokenMessengerState:"0x45993eecc0382f37419864992c12faee2238f5cfe22b98ad3bf455baf65c8a2f",messageTransmitterState:"0xf68268c3d9b1df3215f2439400c1c4ea08ac4ef4bb7d6f3ca6a2a239e17510af",usdcTreasury:"0x57d6725e7a8b49a7b2a612f6bd66ab5f39fc95332ca48be421c3229d514a6de7"}]],T=d.constMap(b,[0,1]);class p{constructor(s,t,r,e){i(this,"network");i(this,"chain");i(this,"provider");i(this,"contracts");i(this,"usdcId");i(this,"usdcTreasuryId");i(this,"tokenMessengerId");i(this,"tokenMessengerStateId");i(this,"messageTransmitterId");i(this,"messageTransmitterStateId");var u,m,f,l;if(this.network=s,this.chain=t,this.provider=r,this.contracts=e,s==="Devnet")throw new Error("CircleBridge not supported on Devnet");const n=d.usdcContract.get(this.network,this.chain);if(!n)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);const{tokenMessengerState:o,messageTransmitterState:a,usdcTreasury:c}=T(s);if(!((u=e.cctp)!=null&&u.tokenMessenger))throw new Error(`Circle Token Messenger contract for domain ${t} not found`);if(!((m=e.cctp)!=null&&m.messageTransmitter))throw new Error(`Circle Message Transmitter contract for domain ${t} not found`);this.usdcId=n,this.usdcTreasuryId=c,this.tokenMessengerId=(f=e.cctp)==null?void 0:f.tokenMessenger,this.messageTransmitterId=(l=e.cctp)==null?void 0:l.messageTransmitter,this.tokenMessengerStateId=o,this.messageTransmitterStateId=a}async*transfer(s,t,r){const e=new h.Transaction,n=d.circleChainId.get(this.network,t.chain),[o,...a]=await h.SuiPlatform.getCoins(this.provider,s,this.usdcId);if(o===void 0)throw new Error("No USDC in wallet");const c=e.object(o.coinObjectId);a.length>0&&e.mergeCoins(c,a.map(m=>e.object(m.coinObjectId)));const[u]=e.splitCoins(c,[r]);e.moveCall({target:`${this.tokenMessengerId}::deposit_for_burn::deposit_for_burn`,arguments:[u,e.pure.u32(n),e.pure.address(t.address.toUniversalAddress().toString()),e.object(this.tokenMessengerStateId),e.object(this.messageTransmitterStateId),e.object("0x403"),e.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]}),yield this.createUnsignedTx(e,"Sui.CircleBridge.Transfer")}async isTransferCompleted(s){const t=new h.Transaction;t.moveCall({target:`${this.messageTransmitterId}::state::is_nonce_used`,arguments:[t.object(this.messageTransmitterStateId),t.pure.u32(s.sourceDomain),t.pure.u64(s.nonce)]});const r=await this.provider.devInspectTransactionBlock({sender:"0x0000000000000000000000000000000000000000000000000000000000000000",transactionBlock:t});try{return!!r.results[0].returnValues[0][0][0]}catch(e){return console.error(`Error reading if nonce was used: ${e}`),!1}}async*redeem(s,t,r){const e=new h.Transaction,[n]=e.moveCall({target:`${this.messageTransmitterId}::receive_message::receive_message`,arguments:[e.pure.vector("u8",d.CircleBridge.serialize(t)),e.pure.vector("u8",d.hex.decode(r)),e.object(this.messageTransmitterStateId)]});if(!n)throw new Error("Failed to produce receipt");const[o]=e.moveCall({target:`${this.tokenMessengerId}::handle_receive_message::handle_receive_message`,arguments:[n,e.object(this.tokenMessengerStateId),e.object("0x403"),e.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]});if(!o)throw new Error("Failed to produce stamp receipt ticket with burn message");const[a]=e.moveCall({target:`${this.tokenMessengerId}::handle_receive_message::deconstruct_stamp_receipt_ticket_with_burn_message`,arguments:[o]});if(!a)throw new Error("Failed to produce stamp receipt ticket");const[c]=e.moveCall({target:`${this.messageTransmitterId}::receive_message::stamp_receipt`,arguments:[a,e.object(this.messageTransmitterStateId)],typeArguments:[`${this.tokenMessengerId}::message_transmitter_authenticator::MessageTransmitterAuthenticator`]});if(!c)throw new Error("Failed to produce stamped receipt");e.moveCall({target:`${this.messageTransmitterId}::receive_message::complete_receive_message`,arguments:[c,e.object(this.messageTransmitterStateId)]}),yield this.createUnsignedTx(e,"Sui.CircleBridge.Redeem")}async parseTransactionDetails(s){var w;const t=await this.provider.waitForTransaction({digest:s,options:{showEvents:!0,showEffects:!0,showInput:!0}});if(!t)throw new Error("Transaction not found");if(!t.events)throw new Error("Transaction events not found");const r=(w=t.events)==null?void 0:w.find(I=>I.type.includes("send_message::MessageSent"));if(!r)throw new Error("No MessageSent event found");const e=new Uint8Array((r==null?void 0:r.parsedJson).message),[n,o]=d.CircleBridge.deserialize(e),{payload:a}=n,c=a.messageSender,u=a.mintRecipient,m=d.toCircleChain(this.network,n.sourceDomain),f=d.toCircleChain(this.network,n.destinationDomain),l={chain:m,address:a.burnToken};return{from:{chain:m,address:c},to:{chain:f,address:u},token:l,amount:a.amount,message:n,id:{hash:o}}}static async fromRpc(s,t){const[r,e]=await h.SuiPlatform.chainFromRpc(s),n=t[e];if(n.network!==r)throw new Error(`Network mismatch: ${n.network} != ${r}`);return new p(r,e,s,n.contracts)}createUnsignedTx(s,t,r=!1){return new v.SuiUnsignedTransaction(s,this.network,this.chain,t,r)}}S.registerProtocol("Sui","CircleBridge",p);exports.SuiCircleBridge=p;exports._suiCircleObjects=b;exports.suiCircleObjects=T;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
var K = Object.defineProperty;
|
|
2
2
|
var L = (i, e, b) => e in i ? K(i, e, { enumerable: !0, configurable: !0, writable: !0, value: b }) : i[e] = b;
|
|
3
3
|
var d = (i, e, b) => L(i, typeof e != "symbol" ? e + "" : e, b);
|
|
4
|
-
import { EvmWormholeCore as D } from "./index-
|
|
5
|
-
import { aF as U,
|
|
6
|
-
import { E as l, C as q } from "./platform-
|
|
7
|
-
import { I as O, C as H } from "./contract-
|
|
4
|
+
import { EvmWormholeCore as D } from "./index-S_O9ybUy.mjs";
|
|
5
|
+
import { aF as U, cP as W, aP as m, aA as j, _ as Q, aR as c, k, bW as Z, aO as G, N as A, cQ as E, cR as h, aU as s, a7 as P, aV as _, aW as N } from "./address-DqsMcbcT.mjs";
|
|
6
|
+
import { E as l, C as q } from "./platform-CB3TPh7I.mjs";
|
|
7
|
+
import { I as O, C as H } from "./contract-DrK81GRi.mjs";
|
|
8
8
|
import { E as V } from "./unsignedTransaction-C0V0UbsS.mjs";
|
|
9
|
-
import { r as $ } from "./chain-
|
|
9
|
+
import { r as $ } from "./chain-DbmG-oEQ.mjs";
|
|
10
10
|
const z = {
|
|
11
11
|
Mainnet: {
|
|
12
12
|
Acala: "0x0000000000000000000000000000000000000000",
|
|
@@ -91,7 +91,7 @@ class R {
|
|
|
91
91
|
throw W(e.toString());
|
|
92
92
|
const b = l.getTokenImplementation(this.provider, e.toString()), [a, t] = await Promise.all([
|
|
93
93
|
b.chainId().then(Number).then(m).then(j),
|
|
94
|
-
b.nativeContract().then((n) => new
|
|
94
|
+
b.nativeContract().then((n) => new Q(n))
|
|
95
95
|
]);
|
|
96
96
|
return { chain: a, address: t };
|
|
97
97
|
}
|
|
@@ -112,12 +112,12 @@ class R {
|
|
|
112
112
|
if (k(e.address))
|
|
113
113
|
throw new Error("native asset cannot be a wrapped asset");
|
|
114
114
|
const b = await this.tokenBridge.wrappedAsset(m(e.chain), e.address.toUniversalAddress().toString());
|
|
115
|
-
if (b ===
|
|
115
|
+
if (b === Z)
|
|
116
116
|
throw W(e.address.toUniversalAddress().toString());
|
|
117
117
|
return new c(b);
|
|
118
118
|
}
|
|
119
119
|
async isTransferCompleted(e) {
|
|
120
|
-
return this.tokenBridge.isTransferCompleted(
|
|
120
|
+
return this.tokenBridge.isTransferCompleted(G(e.hash));
|
|
121
121
|
}
|
|
122
122
|
async *createAttestation(e) {
|
|
123
123
|
const b = await this.core.getMessageFee();
|
|
@@ -171,14 +171,14 @@ class R {
|
|
|
171
171
|
}
|
|
172
172
|
async getWrappedNative() {
|
|
173
173
|
const e = await this.getWeth();
|
|
174
|
-
return
|
|
174
|
+
return P(this.chain, e);
|
|
175
175
|
}
|
|
176
176
|
async getWeth() {
|
|
177
177
|
var e;
|
|
178
178
|
return ((e = z[this.network]) == null ? void 0 : e[this.chain]) ?? this.tokenBridge.WETH();
|
|
179
179
|
}
|
|
180
180
|
createUnsignedTx(e, b, a = !1) {
|
|
181
|
-
return new V(
|
|
181
|
+
return new V(_(e, this.chainId), this.network, this.chain, b, a);
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
class I {
|
|
@@ -252,7 +252,7 @@ class I {
|
|
|
252
252
|
return this.tokenBridgeRelayer.calculateMaxSwapAmountIn(b);
|
|
253
253
|
}
|
|
254
254
|
async getRegisteredTokens() {
|
|
255
|
-
return (await this.tokenBridgeRelayer.getAcceptedTokensList()).map((b) =>
|
|
255
|
+
return (await this.tokenBridgeRelayer.getAcceptedTokensList()).map((b) => P(this.chain, b));
|
|
256
256
|
}
|
|
257
257
|
async isRegisteredToken(e) {
|
|
258
258
|
const b = await this.tokenAddress(e);
|
|
@@ -266,7 +266,7 @@ class I {
|
|
|
266
266
|
return ((e = z[this.network]) == null ? void 0 : e[this.chain]) ?? this.tokenBridge.WETH();
|
|
267
267
|
}
|
|
268
268
|
createUnsignedTx(e, b, a = !1) {
|
|
269
|
-
return new V(
|
|
269
|
+
return new V(_(e, this.chainId), this.network, this.chain, b, a);
|
|
270
270
|
}
|
|
271
271
|
}
|
|
272
272
|
const w = [
|
|
@@ -1478,10 +1478,10 @@ const w = [
|
|
|
1478
1478
|
stateMutability: "payable",
|
|
1479
1479
|
type: "receive"
|
|
1480
1480
|
}
|
|
1481
|
-
], S = "0x6080806040523461001b576001600d5561522990816100218239f35b600080fdfe608060405260043610156200001d575b36156200001b57600080fd5b005b60003560e01c806301f5325514620002fe57806307dfd8fb14620002f85780630f50900814620002f25780630f5287b014620002ec578063178149e714620002e65780631a2be4da14620002e05780631c8475e414620002da5780631ff1e28614620002d45780632539464514620002ce5780632b51137514620002c85780632c3c02a414620002c25780632f3a3d5d14620002bc5780635f85426614620002b657806364d42b1714620002b0578063739fc8d114620002aa57806384acd1bb14620002a45780639981509f146200029e5780639a8a05921462000298578063a5799f931462000292578063aa4efa5b146200028c578063ad5c46481462000286578063ad66a5f11462000280578063b046223b146200027a578063b172b2221462000274578063b96c7e4d146200026e578063bee9cdfc1462000268578063c3f511c11462000262578063c48fa115146200025c578063c5a5ebda1462000256578063c68785191462000250578063cb4cfea8146200024a578063d56e2e241462000244578063d60b347f146200023e578063e039f2241462000238578063e80598101462000232578063e89bc401146200022c578063ea63738d1462000226578063f768441f1462000220578063fbe3c2cd146200021a578063fbeeacd914620002145763ff200cde036200000f5762001a10565b620019c5565b6200199e565b62001903565b6200186e565b6200184f565b6200174c565b62001729565b620016e6565b62001616565b620015cb565b620015b6565b6200150d565b62001305565b620012e6565b620010ae565b62001070565b62001050565b62000fd3565b62000fa4565b62000f79565b62000f49565b62000e2b565b62000e07565b62000bb6565b62000b8b565b62000b66565b62000b46565b62000ab8565b62000a74565b62000a2e565b620009b7565b620008e2565b6200088f565b6200085b565b620007b9565b620006df565b62000632565b620005bb565b62000559565b62000502565b634e487b7160e01b600052604160045260246000fd5b60e081019081106001600160401b038211176200033657604052565b62000304565b60c081019081106001600160401b038211176200033657604052565b6001600160401b0381116200033657604052565b608081019081106001600160401b038211176200033657604052565b60a081019081106001600160401b038211176200033657604052565b604081019081106001600160401b038211176200033657604052565b90601f801991011681019081106001600160401b038211176200033657604052565b60405190620003f1826200033c565b565b6040519061010082018281106001600160401b038211176200033657604052565b60405190620003f18262000388565b60405190620003f1826200031a565b6040519061016082018281106001600160401b038211176200033657604052565b90620003f16040519283620003c0565b6001600160401b0381116200033657601f01601f191660200190565b81601f82011215620004cc57803590620004998262000463565b92620004a96040519485620003c0565b82845260208383010111620004cc57816000926020809301838601378301015290565b600080fd5b6020600319820112620004cc57600435906001600160401b038211620004cc57620004ff916004016200047f565b90565b34620004cc5760a06200051f6200051936620004d1565b62004421565b6080604051918051835260ff602082015116602084015261ffff806040830151166040850152606082015116606084015201516080820152f35b34620004cc5760c0620005766200057036620004d1565b62003a18565b60a06040519160ff81511683526020810151602084015261ffff604082015116604084015260ff606082015116606084015260808101516080840152015160a0820152f35b34620004cc576020620005d8620005d236620004d1565b620047a1565b60ff60405191168152f35b600435906001600160a01b0382168203620004cc57565b61ffff811603620004cc57565b60a43590620003f182620005fa565b3590620003f182620005fa565b63ffffffff811603620004cc57565b60c0366003190112620004cc57620006db620006bc62000651620005e3565b6044356200065f81620005fa565b6200069660a43592620006728462000623565b620006836002600d54141562001cbd565b6002600d5560843590602435906200208d565b61ffff815116602082015192604083015160806060850151940151946064359362002421565b6001600d556040516001600160401b0390911681529081906020820190565b0390f35b34620004cc57620006f036620004d1565b600c54461462000787576200077560606200074f60e062000723620007196200001b966200410f565b909291926200276b565b6200074761014082015160005260056020526040600020600160ff19825416179055565b015162004591565b6200076c60408201620007654682511462003fa3565b5162004645565b015161ffff1690565b61ffff1661ffff196002541617600255565b60405162461bcd60e51b815260206004820152600a6024820152696e6f74206120666f726b60b01b6044820152606490fd5b34620004cc576020366003190112620004cc576001600160a01b03620007de620005e3565b166000526009602052602060ff604060002054166040519015158152f35b60005b838110620008105750506000910152565b8181015183820152602001620007ff565b906020916200083c81518092818552858086019101620007fc565b601f01601f1916010190565b906020620004ff92818152019062000821565b34620004cc57620006db6200087a6200087436620004d1565b62002e3d565b60405191829160208352602083019062000821565b34620004cc576040366003190112620004cc5761ffff600435620008b381620005fa565b1660005260086020526040600020602435600052602052602060018060a01b0360406000205416604051908152f35b34620004cc576200094260e062000916620007196200090136620004d1565b62000910600c544614620037ea565b6200410f565b6200093a61014082015160005260056020526040600020600160ff19825416179055565b01516200451f565b61ffff806040830151169060025416036200098157606001516200001b906200097b906001600160a01b03165b6001600160a01b031690565b62004236565b60405162461bcd60e51b815260206004820152600e60248201526d1ddc9bdb99c818da185a5b881a5960921b6044820152606490fd5b34620004cc57620006db620009d6620009d036620004d1565b62003b94565b6040519182918291909160c08060e083019460ff8151168452602081015160208501526040810151604085015261ffff8060608301511660608601526080820151608086015260a08201511660a08501520151910152565b34620004cc576020366003190112620004cc57602062000a5e600435600052600560205260ff6040600020541690565b6040519015158152f35b6000910312620004cc57565b34620004cc576000366003190112620004cc576001546040516001600160a01b039091168152602090f35b60ff811603620004cc57565b3590620003f18262000a9f565b34620004cc5760e0366003190112620004cc57620006db62000b3960405162000ae1816200031a565b60043562000aef8162000a9f565b81526024356020820152604435604082015260643562000b0f81620005fa565b6060820152608435608082015262000b2662000607565b60a082015260c43560c0820152620038c9565b6040519182918262000848565b34620004cc576000366003190112620004cc576020600c54604051908152f35b34620004cc576000366003190112620004cc57602060025460ff60405191831c168152f35b34620004cc576000366003190112620004cc576000546040516001600160a01b039091168152602090f35b6080366003190112620004cc576004803562000bd281620005fa565b604435916064359062000be58262000623565b62000bef62001b7d565b50600080546001600160a01b0394839160209062000c0f9088166200096f565b604051631a90a21960e01b815295869182905afa93841562000d9b57839462000dd0575b5062000c4134851062001bc9565b62000c4d843462001c4d565b9662000c5c8882111562001c5b565b6402540be40080890491049362000c7e62000c77836200238f565b8a62001c4d565b818115801562000da5575b5050845462000cb0919062000ca9908b166001600160a01b03166200096f565b9a62001c4d565b98803b1562000da15784604051809b8193630d0e30db60e41b83525af196871562000d9b5760209862000d6c9862000d7d575b50835462000d0990839062000d039084166001600160a01b03166200096f565b620036f6565b62000d306200096f6200096f6200096f61ffff94856002541698541660018060a01b031690565b9062000d4962000d3f62000414565b61ffff9096168652565b818a86015282604086015285606086015286608086015260243594511662002421565b6001600160401b0360405191168152f35b8062000d8d62000d949262000358565b8062000a68565b3862000ce3565b62001b71565b5080fd5b82829162000dc5575b8280929181923390f11562000d9b57813862000c89565b6108fc915062000dae565b62000df791945060203d811162000dff575b62000dee8183620003c0565b81019062001bb9565b923862000c33565b503d62000de2565b34620004cc576000366003190112620004cc57602061ffff60025416604051908152f35b34620004cc576200001b62000e7a60e062000e4e620007196200091036620004d1565b62000e7261014082015160005260056020526040600020600160ff19825416179055565b015162004421565b62000ec662000e8e604083015161ffff1690565b61ffff62000eaa62000ea360025461ffff1690565b61ffff1690565b9116908114908162000f2b575b811562000f21575b5062003f16565b608062000f096060830162000f0162000efa62000ee5835161ffff1690565b61ffff16600052600b60205260406000205490565b1562003f56565b5161ffff1690565b9101519061ffff16600052600b602052604060002055565b9050153862000ebf565b905062000f4262000f3e600c5446141590565b1590565b9062000eb7565b34620004cc576020366003190112620004cc57602062000a5e600435600052600660205260ff6040600020541690565b34620004cc576000366003190112620004cc576004546040516001600160a01b039091168152602090f35b34620004cc576020366003190112620004cc57602062000fcb60043562000ee581620005fa565b604051908152f35b34620004cc5760c0366003190112620004cc57620006db62000b3960405162000ffc816200033c565b6004356200100a8162000a9f565b815260243560208201526044356200102281620005fa565b6040820152606435620010358162000a9f565b6060820152608435608082015260a43560a082015262003860565b34620004cc576000366003190112620004cc576020600354604051908152f35b34620004cc576020366003190112620004cc576001600160a01b0362001095620005e3565b16600052600a6020526020604060002054604051908152f35b6080366003190112620004cc576004803590620010cb82620005fa565b604435620010d98162000623565b6064356001600160401b038111620004cc57620010fa90369084016200047f565b906200110562001b7d565b506000805490946001600160a01b039491829190602090620011299088166200096f565b604051631a90a21960e01b815294859182905afa92831562000d9b578793620012c1575b506200115b34841062001bc9565b62001167833462001c4d565b966402540be4008804906200118062000c77836200238f565b818115801562001296575b50508454620011ab919062000ca9908b166001600160a01b03166200096f565b98803b1562000da157819085604051809c8193630d0e30db60e41b83525af197881562000d9b57620006db9962001265996200127f575b5084546200120290849062000d039084166001600160a01b03166200096f565b620012296200096f6200096f6200096f61ffff94856002541699541660018060a01b031690565b91620012426200123862000414565b61ffff9097168752565b8260208701528360408701526060860152856080860152602435945116620024fd565b6040516001600160401b0390911681529081906020820190565b8062000d8d6200128f9262000358565b38620011e2565b828291620012b6575b8280929181923390f11562000d9b5781386200118b565b6108fc91506200129f565b620012de91935060203d811162000dff5762000dee8183620003c0565b91386200114d565b34620004cc57620006db6200087a620012ff36620004d1565b62003263565b604080600319360112620004cc576200131d620005e3565b602435916200132c8362000623565b805192602080938186019563313ce56760e01b8752600481526200135081620003a4565b6000809781925190845afa506200136662001a49565b86808651858101906395d89b4160e01b8252600481526200138781620003a4565b5190855afa5060ff6200147d6200096f6200146c88620013a662001a49565b958c8083518b8101906306fdde0360e01b825260048152620013c881620003a4565b51908b5afa5088806200141662001406620013f6620013e662001a49565b9584808251830101910162001a8b565b9a83808251830101910162001aed565b9382808251830101910162001aed565b920151910151906200145c600254986200145262001433620003e2565b60028152956001600160a01b039c8d16878f015261ffff8c1690870152565b60ff166060850152565b608083015260a082015262003860565b8a549095166001600160a01b031690565b91620014a38751968795869485946358cd21bf60e11b8652891c16916004850162001b42565b039134905af192831562000d9b57620006db9493620014d7575b5050516001600160401b0390911681529081906020820190565b620014fc929350803d1062001505575b620014f38183620003c0565b81019062001b2b565b903880620014bd565b503d620014e7565b60c0366003190112620004cc5762001524620005e3565b604435906200153382620005fa565b60843590620015428262000623565b60a435916001600160401b038311620004cc57620006db936200159362001572620006bc9536906004016200047f565b93620015846002600d54141562001cbd565b6002600d556024359062001d2f565b9061ffff82511690602083015192608060408201519101519360643593620024fd565b34620004cc576200001b620012ff36620004d1565b34620004cc576080620015e8620015e236620004d1565b62004591565b61ffff6060604051928051845260ff6020820151166020850152604081015160408501520151166060820152f35b34620004cc57600319602036820112620004cc576004356001600160401b0391828211620004cc57610100908236030112620004cc5762001656620003f3565b620016648260040162000aab565b81526024820135602082015260448201356040820152620016886064830162000616565b606082015260848201356080820152620016a560a4830162000616565b60a082015260c482013560c082015260e4820135928311620004cc57620016db62000b39926004620006db95369201016200047f565b60e08201526200393f565b34620004cc576020366003190112620004cc576001600160a01b036200170b620005e3565b166000526007602052602060ff604060002054166040519015158152f35b34620004cc576000366003190112620004cc576020600c54604051904614158152f35b34620004cc57620017916200176136620004d1565b6000805460405163607ec5ef60e11b8152939192839285926001600160a01b031691839182916004830162000848565b03915afa90811562000d9b57620006db9262001801928291839084926200181b575b50620017c19293506200276b565b620017d6620017d08262003826565b6200279e565b620017fa60a0620017eb60e084015162003a18565b9201516001600160401b031690565b9062002a65565b6040516001600160a01b0390911681529081906020820190565b915050620018439150620017c1923d8091833e6200183a8183620003c0565b81019062002632565b909291928392620017b3565b34620004cc57620006db620009d66200186836620004d1565b62003d2e565b34620004cc5760e06200188b6200188536620004d1565b62003c3f565b620006db6040519283926020845260ff8151166020850152602081015160408501526040810151606085015261ffff6060820151166080850152608081015160a0850152620018e560a082015160c086019061ffff169052565b60c08101518285015201516101008084015261012083019062000821565b34620004cc57620019186200176136620004d1565b03915afa90811562000d9b57620006db92620018019282918390849262001973575b50620019489293506200276b565b62001957620017d08262003826565b6200196c60a0620017eb60e084015162003a18565b9062002813565b91505062001992915062001948923d8091833e6200183a8183620003c0565b9092919283926200193a565b34620004cc576000366003190112620004cc57602061ffff60025460101c16604051908152f35b34620004cc576080620019e2620019dc36620004d1565b6200451f565b6060604051918051835260ff602082015116602084015261ffff604082015116604084015201516060820152f35b34620004cc576200001b6200087436620004d1565b60405190602082018281106001600160401b03821117620003365760405260008252565b3d1562001a79573d9062001a5d8262000463565b9162001a6d6040519384620003c0565b82523d6000602084013e565b606090565b5190620003f18262000a9f565b90816020910312620004cc5751620004ff8162000a9f565b81601f82011215620004cc57805162001abc8162000463565b9262001acc6040519485620003c0565b81845260208284010111620004cc57620004ff9160208085019101620007fc565b90602082820312620004cc5781516001600160401b038111620004cc57620004ff920162001aa3565b51906001600160401b0382168203620004cc57565b90816020910312620004cc57620004ff9062001b16565b9162001b6a60ff9163ffffffff60409497969716855260606020860152606085019062000821565b9416910152565b6040513d6000823e3d90fd5b6040519060a082018281106001600160401b03821117620003365760405260006080838281528260208201528260408201528260608201520152565b90816020910312620004cc575190565b1562001bd157565b60405162461bcd60e51b815260206004820152602260248201527f76616c756520697320736d616c6c6572207468616e20776f726d686f6c652066604482015261656560f01b6064820152608490fd5b634e487b7160e01b600052601160045260246000fd5b60841981019190821162001c4757565b62001c21565b9190820391821162001c4757565b1562001c6357565b60405162461bcd60e51b815260206004820152602c60248201527f66656520697320626967676572207468616e20616d6f756e74206d696e75732060448201526b776f726d686f6c652066656560a01b6064820152608490fd5b1562001cc557565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b5190620003f182620005fa565b90816020910312620004cc5751620004ff81620005fa565b9062001d3a62001b7d565b506001600160a01b038216600090815260096020526040902062001d60905b5460ff1690565b156200206f57604051634d4502c960e11b81526001600160a01b0383169260209290918381600481885afa90811562000d9b5760049185916000916200203b575b509560405192838092633d6c043b60e01b82525afa90811562000d9b5762001e289460009262002019575b5050905b62001e2e604051916000806020948581019063313ce56760e01b82526004815262001dfb81620003a4565b5190885afa5062001e1e62001e0f62001a49565b84808251830101910162001a8b565b958680926200234d565b620023aa565b9261ffff9462001e43866002541661ffff1690565b87871690810362001f935762001f5362001f3e8362001f388660008062001f479c8b62001f0f60405162001eed8382019486806370a0823160e01b978881528562001ea03060248301919091602081019260018060a01b03169052565b039562001eb6601f1997888101835282620003c0565b51908c5afa5062001ed962001eca62001a49565b86808251830101910162001bb9565b98309033906001600160a01b031662004942565b60405192830193845230602484015282604481015b03908101835282620003c0565b51908b5afa5062001f3262001f2362001a49565b8a808251830101910162001bb9565b62001c4d565b6200234d565b96879362002308565b976002541661ffff1690565b1462001f80575b505062001f6a62000d3f62000414565b8401526040830152606082015234608082015290565b62001f8b91620036f6565b388362001f5a565b6001600160a01b0383169562001fac8130338a62004942565b863b15620004cc57604051632770a7eb60e21b815230600482015260248101829052966000908890604490829084905af196871562000d9b578362001f539262001f3e9262001f479a62002002575b506200234d565b8062000d8d620020129262000358565b3862001ffb565b620020339250803d1062000dff5762000dee8183620003c0565b388062001dcc565b620020609150823d841162002067575b620020578183620003c0565b81019062001d17565b3862001da1565b503d6200204b565b60025461ffff169162001e28916001600160a01b0382169062001dd0565b91906200209962001b7d565b506001600160a01b0383166000908152600960205260409020620020bd9062001d59565b15620022c457604051634d4502c960e11b81526001600160a01b0384169360209290918381600481895afa90811562000d9b576004918591600091620022a2575b509660405192838092633d6c043b60e01b82525afa90811562000d9b5762001e289460009262002280575b5050915b6200217b604051926000806020958681019063313ce56760e01b8252600481526200215881620003a4565b5190865afa5062001e1e6200216c62001a49565b85808251830101910162001a8b565b60025461ffff969188881691879085908a16840362002210576040516370a0823160e01b81890181815230602484015262001f539562001f47956200220795909462001f389491936000938493928f92620021e49262001eed9187908190856044810162001ea0565b51908c5afa5062001f32620021f862001a49565b8b808251830101910162001bb9565b9788946200234d565b50506001600160a01b038416906200222b8130338562004942565b813b15620004cc57604051632770a7eb60e21b815230600482015260248101829052916000908390604490829084905af191821562000d9b578862001f4792620022079262001f53956200200257506200234d565b6200229a9250803d1062000dff5762000dee8183620003c0565b388062002129565b620022bd9150823d84116200206757620020578183620003c0565b38620020fe565b60025461ffff169262001e28916001600160a01b038216916200212d565b60ff6007199116019060ff821162001c4757565b60ff16604d811162001c4757600a0a90565b600090600860ff8216116200231b575090565b6200232a6200233091620022e2565b620022f6565b15620023395790565b634e487b7160e01b81526012600452602490fd5b90600860ff8216116200235e575090565b6200232a6200236d91620022e2565b90811562002379570490565b634e487b7160e01b600052601260045260246000fd5b6402540be4009081810291818304149015171562001c475790565b90600860ff821611620023bb575090565b6200232a620023ca91620022e2565b9081810291818304149015171562001c475790565b15620023e757565b60405162461bcd60e51b815260206004820152601260248201527119995948195e18d959591cc8185b5bdd5b9d60721b6044820152606490fd5b92620024c997959294620024696020989562002479946200244589881115620023df565b6200244f62000423565b60018152985b898c0152604089015261ffff166060880152565b608086015261ffff1660a0850152565b60c0830152600054620024a1906200249a906001600160a01b03166200096f565b92620038c9565b6002546040516358cd21bf60e11b81529687958694938593891c60ff16916004850162001b42565b03925af190811562000d9b57600091620024e1575090565b620004ff915060203d81116200150557620014f38183620003c0565b92620024c997929462002469602098979562002528946200251d620003f3565b600381529862002455565b3360c084015260e0830152600054620024a1906200254f906001600160a01b03166200096f565b926200393f565b5190620003f18262000623565b9080601f83011215620004cc578151916001600160401b03831162000336576040918251936020916200259c838360051b0187620003c0565b818652828087019260071b85010193818511620004cc578301915b848310620025c85750505050505090565b608083830312620004cc57836080918751620025e4816200036c565b85518152828601518382015288860151620025ff8162000a9f565b8982015260608087015190620026158262000a9f565b820152815201920191620025b7565b51908115158203620004cc57565b9091606082840312620004cc578151916001600160401b0392838111620004cc57810161016081860312620004cc576200266b62000432565b90620026778162001a7e565b8252620026876020820162002556565b60208301526200269a6040820162002556565b6040830152620026ad6060820162001d0a565b606083015260808101516080830152620026ca60a0820162001b16565b60a0830152620026dd60c0820162001a7e565b60c083015260e0810151858111620004cc5786620026fd91830162001aa3565b60e08301526101006200271281830162002556565b9083015261012080820151868111620004cc57876200273391840162002563565b90830152610140809101519082015293620027516020830162002624565b936040830151908111620004cc57620004ff920162001aa3565b15620027745750565b60405162461bcd60e51b8152602060048201529081906200279a90602483019062000821565b0390fd5b15620027a657565b60405162461bcd60e51b815260206004820152600f60248201526e34b73b30b634b21032b6b4ba3a32b960891b6044820152606490fd5b9162001b6a6001600160401b03916200280460409497969760608752606087019062000821565b90858203602087015262000821565b906200285061ffff60408401511660208401519061ffff16600052600860205260406000209060005260205260018060a01b036040600020541690565b916001600160a01b038316918215620028d5576200288160806200287860a085015162003e8a565b93015162003e8a565b92803b15620004cc57620028b19360008094604051968795869485936350c66be360e11b855260048501620027dd565b03925af1801562000d9b57620028c5575090565b8062000d8d620004ff9262000358565b60405162461bcd60e51b815260206004820152601d60248201527f7772617070656420617373657420646f6573206e6f74206578697374730000006044820152606490fd5b156200292257565b60405162461bcd60e51b815260206004820152602860248201527f63616e206f6e6c79207772617020746f6b656e732066726f6d20666f726569676044820152676e20636861696e7360c01b6064820152608490fd5b156200298057565b60405162461bcd60e51b815260206004820152601c60248201527f7772617070656420617373657420616c726561647920657869737473000000006044820152606490fd5b936001600160401b039060ff62002a0361ffff969b9a9995620029f460c09a9660e08b5260e08b019062000821565b9089820360208b015262000821565b9a1660408701521660608501526001600160a01b031660808401521660a08201520152565b6001600160a01b039091168152604060208201819052620004ff9291019062000821565b9062002a6160209282815194859201620007fc565b0190565b91909162002bb262002b68604083019462002a9962002a86875161ffff1690565b60025461ffff908116911614156200291a565b85516020858101805161ffff909316600090815260088352604080822094825293835292909220549195909162002b75919062002ae0906001600160a01b03161562002978565b62002b4262002af360a083015162003e8a565b9462002b12606062002b09608086015162003e8a565b94015160ff1690565b9562002b208c5161ffff1690565b908a519260405198899663c71f461560e01b8a890152309360248901620029c5565b039262002b58601f1994858101835282620003c0565b6040519485913085840162002a28565b03838101855284620003c0565b62002bbf6106f69362002b8a83860162000453565b9480865262004afe8487013960405195869162002bab858401809862002a4c565b9062002a4c565b03838101865285620003c0565b62002bfd62002bd0885161ffff1690565b865160405160f09290921b6001600160f01b03191693820193845260028401529192826022850162001f02565b5190209151906000f592833b15620004cc5751905161ffff909116600090815260086020908152604080832093835292815282822080546001600160a01b0319166001600160a01b03871690811790915582526009905220805460ff19166001179055565b1562002c6a57565b60405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21039b2b73232b960911b6044820152606490fd5b1562002ca857565b60405162461bcd60e51b815260206004820152601a60248201527f7472616e7366657220616c726561647920636f6d706c657465640000000000006044820152606490fd5b1562002cf557565b60405162461bcd60e51b815260206004820152601460248201527334b73b30b634b2103a30b933b2ba1031b430b4b760611b6044820152606490fd5b1562002d3957565b60405162461bcd60e51b815260206004820152602560248201527f6e6f207772617070657220666f72207468697320746f6b656e2063726561746560448201526419081e595d60da1b6064820152608490fd5b1562002d9457565b60405162461bcd60e51b815260206004820152602360248201527f696e76616c696420746f6b656e2c2063616e206f6e6c7920756e77726170205760448201526208aa8960eb1b6064820152608490fd5b1562002ded57565b60405162461bcd60e51b815260206004820152602260248201527f66656520686967686572207468616e207472616e7366657272656420616d6f756044820152611b9d60f21b6064820152608490fd5b600080546001600160a01b039062002e579082166200096f565b604093838551809363607ec5ef60e11b8252818062002e7b60049687830162000848565b03915afa801562000d9b578492859086926200323c575b509062002e9f916200276b565b62002eae620017d08362003826565b60e082019462002ebf865162003d2e565b8462002ecf608083015162003681565b94600360ff62002ee0855160ff1690565b161462003227575b62002f34610140820162002f1962002f1362000f3e8351600052600660205260ff6040600020541690565b62002ca0565b5160005260066020526040600020600160ff19825416179055565b606081015161ffff16906001600160401b0362002f6060a060808401519301516001600160401b031690565b169061ffff8093167fcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c1698b80a48062002fbb62002fa160a086015161ffff1690565b62002fb1836002541661ffff1690565b9216821462002ced565b606084015161ffff1691821603620031df575062002fe06200096f8484015162003681565b62002ff26020840151838316620037a9565b1686806200300c6200096f8988541660018060a01b031690565b926200301c898516821462002d8c565b855163313ce56760e01b60208201908152888252906200303c81620003a4565b51915afa506200307e620030636200305362001a49565b6020808251830101910162001a8b565b60c062003075826020870151620023aa565b940151620023aa565b9081151580620031d2575b15620031c3576200309d8383111562002de5565b803b15620031bf578784518092632e1a7d4d60e01b8252818381620030c9888c83019190602083019252565b03925af1801562000d9b57620031a8575b5086808280156200319d575b8280929181923390f11562000d9b57620031009162001c4d565b82549092906200311b9086166001600160a01b03166200096f565b91823b15620031995751632e1a7d4d60e01b815290810183815290939291869185919082908490829060200103925af191821562000d9b5785948594859462003182575b508391831562003177575b1690f11562000d9b575190565b6108fc92506200316a565b8062000d8d620031929262000358565b386200315f565b8680fd5b6108fc9150620030e6565b8062000d8d620031b89262000358565b38620030da565b8780fd5b50506200310090869062001c4d565b5033878716141562003089565b620032138291858501519061ffff16600052600860205260406000209060005260205260018060a01b036040600020541690565b166200322181151562002d31565b62002ff2565b62003236828716331462002c62565b62002ee8565b905062002e9f93506200325b91503d8087833e6200183a8183620003c0565b919362002e92565b600080546001600160a01b03906200327d9082166200096f565b92604093838551809263607ec5ef60e11b82528180620032a260049788830162000848565b03915afa801562000d9b57849085869162003658575b620032c59293506200276b565b620032d4620017d08262003826565b60e0810194620032e5865162003d2e565b92620032f5608085015162003681565b93600360ff62003306835160ff1690565b161462003643575b62003339610140850162002f1962002f1362000f3e8351600052600660205260ff6040600020541690565b606084015161ffff16936001600160401b036200336560a060808401519301516001600160401b031690565b169061ffff8096167fcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c1698a80a483620033c0620033a660a084015161ffff1690565b620033b6836002541661ffff1690565b9616861462002ced565b866060830195620033d3875161ffff1690565b908382160362003602575050620033f16200096f8584015162003681565b90620034046020840151898416620037a9565b8782169289808751602081019063313ce56760e01b82528881526200342981620003a4565b5190875afa506200345c620034416200305362001a49565b60c062003453826020860151620023aa565b930151620023aa565b998a151580620035f5575b15620035e6576200347b828c111562002de5565b9962003489885161ffff1690565b836200349a816002541661ffff1690565b911614620035d457843b15620004cc5786516340c10f1960e01b81523387820190815260208101839052909290600090849081906040010381838a5af192831562000d9b57620034f193620035bd575b5062001c4d565b9589156200351657505082546200311b925087166001600160a01b031690506200096f565b909295969498506200352d919397505161ffff1690565b906200353e816002541661ffff1690565b911614620035ac5750813b15620004cc5793516340c10f1960e01b81526001600160a01b03909416928401928352602083019190915260009183919082908490829060400103925af1801562000d9b576200359857505190565b8062000d8d620035a89262000358565b5190565b9150919250620035a89350620048fd565b8062000d8d620035cd9262000358565b38620034ea565b620034f19162001f32823387620048fd565b9950620034f1908a9062001c4d565b50338a8a16141562003467565b8386015161ffff909116600090815260086020908152604080832093835292905220546001600160a01b0316166200363c81151562002d31565b9062003404565b62003652868616331462002c62565b6200330e565b50505062003675620032c5913d8087833e6200183a8183620003c0565b919250829190620032b8565b6001600160a01b031981166200369d576001600160a01b031690565b60405162461bcd60e51b8152602060048201526013602482015272696e76616c69642045564d206164647265737360681b6044820152606490fd5b90601f820180921162001c4757565b608501908160851162001c4757565b6001600160a01b0381166000908152600a60205260409020549091810190811062001c47576001600160401b03811162003746576001600160a01b039091166000908152600a6020526040902055565b60405162461bcd60e51b815260206004820152603560248201527f7472616e736665722065786365656473206d6178206f75747374616e64696e6760448201527408189c9a5919d959081d1bdad95b88185b5bdd5b9d605a1b6064820152608490fd5b6001600160a01b0381166000908152600a60205260409020549091810390811162001c47576001600160a01b039091166000908152600a6020526040902055565b15620037f257565b60405162461bcd60e51b815260206004820152600c60248201526b696e76616c696420666f726b60a01b6044820152606490fd5b62003835600c544614620037ea565b60806200385961ffff60608401511661ffff16600052600b60205260406000205490565b9101511490565b8051602082015191604081015191606082015160a06080840151930151936040519560ff60f81b809460f81b166020880152602187015261ffff60f01b9060f01b16604186015260f81b1660438401526044830152606482015260648152620004ff8162000388565b80519060208101519060408101519060608101519160808201519060c060a0840151930151946040519660ff60f81b9060f81b1660208801526021870152604186015261ffff60f01b809360f01b166061860152606385015260f01b166083830152608582015260858152620004ff816200033c565b620004ff60a582516020840151936040810151906060810151608082015160a08301519060e060c085015194015194604051998a9760ff60f81b9060f81b1660208901526021880152604187015261ffff60f01b809360f01b166061870152606386015260f01b1660838401526085830152620039c68151809260208686019101620007fc565b8101036085810184520182620003c0565b15620039df57565b60405162461bcd60e51b8152602060048201526011602482015270696e76616c69642041737365744d65746160781b6044820152606490fd5b906040519162003a28836200033c565b600090818452602084019082825260408501928084526060860193818552608087019082825260a0880192835262003a7460028960ff62003a6988620047a1565b1680915214620039d7565b602184511062003add57620003f19562003aa962003abb926064976021880151905262003aa18762004831565b61ffff169052565b62003ab485620047fe565b60ff169052565b62003ac683620048b9565b905262003ad382620048db565b90525114620039d7565b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6040519062003b29826200031a565b8160c06000918281528260208201528260408201528260608201528260808201528260a08201520152565b1562003b5c57565b60405162461bcd60e51b815260206004820152601060248201526f34b73b30b634b2102a3930b739b332b960811b6044820152606490fd5b9062003b9f62003b1a565b9162003bbe600160ff62003bb384620047a1565b168086521462003b54565b62003bc98162004853565b602084015262003bd98162004897565b604084015261ffff62003bec8262004820565b166060840152606381511062003add576085816063620003f1930151608086015262003c2762003c1c8262004842565b61ffff1660a0870152565b62003c328162004864565b60c0860152511462003b54565b906040519161010083018381106001600160401b03821117620003365760405260009081845260208401918083526040850181815260608601828152608087019083825260a088019284845260c0890194855260e0890196606088528962003ca788620047a1565b60ff169081905262003cbc9060031462003b54565b62003cc78762004853565b905262003cd48662004897565b905262003ce18562004820565b61ffff16905262003cf284620048ca565b905262003cff8362004842565b61ffff16905262003d1082620048ec565b9052805162003d1f9062001c37565b62003d2a916200470b565b9052565b9062003d3962003b1a565b9160ff62003d4782620047a1565b166001810362003d5f5750620004ff91925062003b94565b60030362003dda5762003dc660a062003d7c62003dd19362003c3f565b60038652602081015160208701526040810151604087015262003db362003da8606083015161ffff1690565b61ffff166060880152565b60808101516080870152015161ffff1690565b61ffff1660a0840152565b600060c0830152565b60405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081c185e5b1bd859081a5960721b6044820152606490fd5b634e487b7160e01b600052603260045260246000fd5b600019811462001c475760010190565b9062003e468262000463565b62003e556040519182620003c0565b828152809262003e68601f199162000463565b0190602036910137565b90815181101562003e84570160200190565b62003e14565b60005b602081108062003ef8575b1562003eaf5762003ea99062003e2a565b62003e8d565b9062003ebb8262003e3a565b9160005b81811062003ecd5750505090565b602081101562003e8457808362003ef2921a62003eeb828762003e72565b5362003e2a565b62003ebf565b1562003e845781811a60f81b6001600160f81b031916151562003e98565b1562003f1e57565b60405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a590818da185a5b881a5960821b6044820152606490fd5b1562003f5e57565b60405162461bcd60e51b815260206004820152601860248201527f636861696e20616c7265616479207265676973746572656400000000000000006044820152606490fd5b1562003fab57565b60405162461bcd60e51b815260206004820152601160248201527034b73b30b634b21022ab269021b430b4b760791b6044820152606490fd5b6040519061016082018281106001600160401b038211176200033657604052816101406000918281528260208201528260408201528260608201528260808201528260a08201528260c0820152606060e08201528261010082015260606101208201520152565b604051906200405a82620003a4565b60168252753bb937b7339033b7bb32b93730b731b29031b430b4b760511b6020830152565b604051906200408e82620003a4565b601982527f77726f6e6720676f7665726e616e636520636f6e7472616374000000000000006020830152565b60405190606082018281106001600160401b0382111762000336576040526022825261195960f21b6040837f676f7665726e616e636520616374696f6e20616c726561647920636f6e73756d60208201520152565b62004159906200411e62003fe4565b5060008054909182916200413d906200096f906001600160a01b031681565b604051808096819463607ec5ef60e11b83526004830162000848565b03915afa91821562000d9b5781928291839162004211575b50811562004209575050606082015161ffff1661ffff6200419d62000ea360025461ffff9060101c1690565b911603620041fd57608082015160035403620041f157620041d1610140830151600052600560205260ff6040600020541690565b620041e5575090600190620004ff62001a25565b9091620004ff620040ba565b9091620004ff6200407f565b9091620004ff6200404b565b929390929150565b9150506200422c9192503d8084833e6200183a8183620003c0565b9192913862004171565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc908154813b1562004312577f2e4cc16c100f0b55e2df82ab0b1a7e294aa9cbd01b48fbaf622683fbc0507a499060018060a01b039081841694856bffffffffffffffffffffffff60a01b83161790556200430c604051600080968192897fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a263204a7f0760e21b602082019081526004825290620042f781620003a4565b51915af46200430562001a49565b906200276b565b169180a3565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b156200437557565b60405162461bcd60e51b815260206004820152600c60248201526b77726f6e67206d6f64756c6560a01b6044820152606490fd5b15620043b157565b60405162461bcd60e51b815260206004820152600c60248201526b3bb937b7339030b1ba34b7b760a11b6044820152606490fd5b15620043ed57565b60405162461bcd60e51b815260206004820152600c60248201526b0eee4dedcce40d8cadccee8d60a31b6044820152606490fd5b906200442c62001b7d565b91620044526a546f6b656e427269646765620044488362004875565b808652146200436d565b62004473600160ff6200446584620047ed565b1680602087015214620043a9565b6023815110620044bc576045620003f19161ffff8060238301511660408701526200449e826200480f565b166060860152620044af81620048a8565b60808601525114620043e5565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b6044820152606490fd5b6040519062004507826200036c565b60006060838281528260208201528260408201520152565b906200452a620044f8565b91620045466a546f6b656e427269646765620044488362004875565b62004559600260ff6200446584620047ed565b6023815110620044bc57602381015161ffff166040840152620003f190604390620045848162004886565b60608601525114620043e5565b906200459c620044f8565b91620045b86a546f6b656e427269646765620044488362004875565b620045cb600360ff6200446584620047ed565b604181511062004608576043816041620003f1930151604086015262004600620045f58262004820565b61ffff166060870152565b5114620043e5565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b4681036200465257600c55565b60405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a5908195d9b50da185a5b925960721b6044820152606490fd5b156200469457565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b15620046d257565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b62004723826200471b81620036d8565b10156200468c565b6200473c81516200473484620036e7565b1115620046ca565b8162004755575050604051600081526020810160405290565b60405191601f8116916085831560051b80858701019484860193010101905b8084106200478d5750508252601f01601f191660405290565b909283518152602080910193019062004774565b6001815110620047b2576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6021815110620047b2576021015190565b6024815110620047b2576024015190565b6025815110620044bc576025015190565b6043815110620044bc576043015190565b6023815110620044bc576023015190565b6065815110620044bc576065015190565b602181511062004608576021015190565b608581511062004608576085015190565b602081511062003add576020015190565b604381511062003add576043015190565b604181511062003add576041015190565b604581511062003add576045015190565b604481511062003add576044015190565b606381511062003add576063015190565b606481511062003add576064015190565b608581511062003add576085015190565b60405163a9059cbb60e01b60208201526001600160a01b03929092166024830152604480830193909352918152620003f1916200493c606483620003c0565b620049fe565b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152620003f1916200493c8262000388565b90816020910312620004cc57620004ff9062002624565b15620049a657565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b6040516001600160a01b03919091169162004a1982620003a4565b6020928383527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656484840152803b1562004a9a576000828192828762004a709796519301915af162004a6962001a49565b9062004adf565b8051908162004a7e57505050565b82620003f19362004a9493830101910162004987565b6200499e565b60405162461bcd60e51b815260048101859052601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b9091901562004aec575090565b815115620027745750805190602001fdfe6080604052346100a3576106f6803803809161001a826100be565b60803960408160800191126100a35761003161010c565b60a05191906001600160401b0383116100a35781609f840112156100a35782608001519261005e84610122565b9261006c60405194856100e9565b84845260a085830101116100a3576100949361008f9160a060208601910161013d565b610160565b6040516101f690816105008239f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b6080601f91909101601f19168101906001600160401b038211908210176100e457604052565b6100a8565b601f909101601f19168101906001600160401b038211908210176100e457604052565b608051906001600160a01b03821682036100a357565b6001600160401b0381116100e457601f01601f191660200190565b60005b8381106101505750506000910152565b8181015183820152602001610140565b90813b156102c257604051635c60da1b60e01b8082526020939092916001600160a01b038216918582600481865afa918215610298576101ef926101af916000916102a5575b503b1515610340565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b03909216919091179055565b60405192817f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e600080a282511580159061029d575b610230575b5050505050565b6004848693819382525afa9182156102985761025e93600093610269575b50506102586103a5565b916103fe565b503880808080610229565b610289929350803d10610291575b61028181836100e9565b810190610315565b90388061024e565b503d610277565b610334565b506000610224565b6102bc9150883d8a116102915761028181836100e9565b386101a6565b60405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b6064820152608490fd5b908160209103126100a357516001600160a01b03811681036100a35790565b6040513d6000823e3d90fd5b1561034757565b60405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608490fd5b60405190606082016001600160401b038111838210176100e45760405260278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b15610451576000816104469460208394519201905af43d15610449573d9061042982610122565b9161043760405193846100e9565b82523d6000602084013e6104a5565b90565b6060906104a5565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b909190156104b1575090565b8151156104c15750805190602001fd5b6044604051809262461bcd60e51b8252602060048301526104f1815180928160248601526020868601910161013d565b601f01601f19168101030190fdfe608080604052366100c4577fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5054635c60da1b60e01b8252602090829060049082906001600160a01b03165afa9081156100b857600091610060575b5061015b565b6020903d82116100b0575b601f8201601f1916810167ffffffffffffffff81118282101761009c5761009693506040520161017a565b3861005a565b634e487b7160e01b84526041600452602484fd5b3d915061006b565b6040513d6000823e3d90fd5b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5054604051635c60da1b60e01b815290602090829060049082906001600160a01b03165afa9081156100b85760009161011d575061015b565b60203d8111610154575b601f8101601f1916820167ffffffffffffffff81118382101761009c5761009693506040528101906101a1565b503d610127565b6000808092368280378136915af43d82803e15610176573d90f35b3d90fd5b602090607f19011261019c576080516001600160a01b038116810361019c5790565b600080fd5b9081602091031261019c57516001600160a01b038116810361019c579056fea2646970667358221220a928e3b00b7d19d8e2f067361e93c7712de3e243b0b8be428e9ac989960b767464736f6c63430008130033a26469706673582212200ab8408b24ad8ea6b955a8d00252b04da580f860c567cd433865e841fd49531564736f6c63430008130033", Q = (i) => i.length > 1;
|
|
1481
|
+
], S = "0x6080806040523461001b576001600d5561522990816100218239f35b600080fdfe608060405260043610156200001d575b36156200001b57600080fd5b005b60003560e01c806301f5325514620002fe57806307dfd8fb14620002f85780630f50900814620002f25780630f5287b014620002ec578063178149e714620002e65780631a2be4da14620002e05780631c8475e414620002da5780631ff1e28614620002d45780632539464514620002ce5780632b51137514620002c85780632c3c02a414620002c25780632f3a3d5d14620002bc5780635f85426614620002b657806364d42b1714620002b0578063739fc8d114620002aa57806384acd1bb14620002a45780639981509f146200029e5780639a8a05921462000298578063a5799f931462000292578063aa4efa5b146200028c578063ad5c46481462000286578063ad66a5f11462000280578063b046223b146200027a578063b172b2221462000274578063b96c7e4d146200026e578063bee9cdfc1462000268578063c3f511c11462000262578063c48fa115146200025c578063c5a5ebda1462000256578063c68785191462000250578063cb4cfea8146200024a578063d56e2e241462000244578063d60b347f146200023e578063e039f2241462000238578063e80598101462000232578063e89bc401146200022c578063ea63738d1462000226578063f768441f1462000220578063fbe3c2cd146200021a578063fbeeacd914620002145763ff200cde036200000f5762001a10565b620019c5565b6200199e565b62001903565b6200186e565b6200184f565b6200174c565b62001729565b620016e6565b62001616565b620015cb565b620015b6565b6200150d565b62001305565b620012e6565b620010ae565b62001070565b62001050565b62000fd3565b62000fa4565b62000f79565b62000f49565b62000e2b565b62000e07565b62000bb6565b62000b8b565b62000b66565b62000b46565b62000ab8565b62000a74565b62000a2e565b620009b7565b620008e2565b6200088f565b6200085b565b620007b9565b620006df565b62000632565b620005bb565b62000559565b62000502565b634e487b7160e01b600052604160045260246000fd5b60e081019081106001600160401b038211176200033657604052565b62000304565b60c081019081106001600160401b038211176200033657604052565b6001600160401b0381116200033657604052565b608081019081106001600160401b038211176200033657604052565b60a081019081106001600160401b038211176200033657604052565b604081019081106001600160401b038211176200033657604052565b90601f801991011681019081106001600160401b038211176200033657604052565b60405190620003f1826200033c565b565b6040519061010082018281106001600160401b038211176200033657604052565b60405190620003f18262000388565b60405190620003f1826200031a565b6040519061016082018281106001600160401b038211176200033657604052565b90620003f16040519283620003c0565b6001600160401b0381116200033657601f01601f191660200190565b81601f82011215620004cc57803590620004998262000463565b92620004a96040519485620003c0565b82845260208383010111620004cc57816000926020809301838601378301015290565b600080fd5b6020600319820112620004cc57600435906001600160401b038211620004cc57620004ff916004016200047f565b90565b34620004cc5760a06200051f6200051936620004d1565b62004421565b6080604051918051835260ff602082015116602084015261ffff806040830151166040850152606082015116606084015201516080820152f35b34620004cc5760c0620005766200057036620004d1565b62003a18565b60a06040519160ff81511683526020810151602084015261ffff604082015116604084015260ff606082015116606084015260808101516080840152015160a0820152f35b34620004cc576020620005d8620005d236620004d1565b620047a1565b60ff60405191168152f35b600435906001600160a01b0382168203620004cc57565b61ffff811603620004cc57565b60a43590620003f182620005fa565b3590620003f182620005fa565b63ffffffff811603620004cc57565b60c0366003190112620004cc57620006db620006bc62000651620005e3565b6044356200065f81620005fa565b6200069660a43592620006728462000623565b620006836002600d54141562001cbd565b6002600d5560843590602435906200208d565b61ffff815116602082015192604083015160806060850151940151946064359362002421565b6001600d556040516001600160401b0390911681529081906020820190565b0390f35b34620004cc57620006f036620004d1565b600c54461462000787576200077560606200074f60e062000723620007196200001b966200410f565b909291926200276b565b6200074761014082015160005260056020526040600020600160ff19825416179055565b015162004591565b6200076c60408201620007654682511462003fa3565b5162004645565b015161ffff1690565b61ffff1661ffff196002541617600255565b60405162461bcd60e51b815260206004820152600a6024820152696e6f74206120666f726b60b01b6044820152606490fd5b34620004cc576020366003190112620004cc576001600160a01b03620007de620005e3565b166000526009602052602060ff604060002054166040519015158152f35b60005b838110620008105750506000910152565b8181015183820152602001620007ff565b906020916200083c81518092818552858086019101620007fc565b601f01601f1916010190565b906020620004ff92818152019062000821565b34620004cc57620006db6200087a6200087436620004d1565b62002e3d565b60405191829160208352602083019062000821565b34620004cc576040366003190112620004cc5761ffff600435620008b381620005fa565b1660005260086020526040600020602435600052602052602060018060a01b0360406000205416604051908152f35b34620004cc576200094260e062000916620007196200090136620004d1565b62000910600c544614620037ea565b6200410f565b6200093a61014082015160005260056020526040600020600160ff19825416179055565b01516200451f565b61ffff806040830151169060025416036200098157606001516200001b906200097b906001600160a01b03165b6001600160a01b031690565b62004236565b60405162461bcd60e51b815260206004820152600e60248201526d1ddc9bdb99c818da185a5b881a5960921b6044820152606490fd5b34620004cc57620006db620009d6620009d036620004d1565b62003b94565b6040519182918291909160c08060e083019460ff8151168452602081015160208501526040810151604085015261ffff8060608301511660608601526080820151608086015260a08201511660a08501520151910152565b34620004cc576020366003190112620004cc57602062000a5e600435600052600560205260ff6040600020541690565b6040519015158152f35b6000910312620004cc57565b34620004cc576000366003190112620004cc576001546040516001600160a01b039091168152602090f35b60ff811603620004cc57565b3590620003f18262000a9f565b34620004cc5760e0366003190112620004cc57620006db62000b3960405162000ae1816200031a565b60043562000aef8162000a9f565b81526024356020820152604435604082015260643562000b0f81620005fa565b6060820152608435608082015262000b2662000607565b60a082015260c43560c0820152620038c9565b6040519182918262000848565b34620004cc576000366003190112620004cc576020600c54604051908152f35b34620004cc576000366003190112620004cc57602060025460ff60405191831c168152f35b34620004cc576000366003190112620004cc576000546040516001600160a01b039091168152602090f35b6080366003190112620004cc576004803562000bd281620005fa565b604435916064359062000be58262000623565b62000bef62001b7d565b50600080546001600160a01b0394839160209062000c0f9088166200096f565b604051631a90a21960e01b815295869182905afa93841562000d9b57839462000dd0575b5062000c4134851062001bc9565b62000c4d843462001c4d565b9662000c5c8882111562001c5b565b6402540be40080890491049362000c7e62000c77836200238f565b8a62001c4d565b818115801562000da5575b5050845462000cb0919062000ca9908b166001600160a01b03166200096f565b9a62001c4d565b98803b1562000da15784604051809b8193630d0e30db60e41b83525af196871562000d9b5760209862000d6c9862000d7d575b50835462000d0990839062000d039084166001600160a01b03166200096f565b620036f6565b62000d306200096f6200096f6200096f61ffff94856002541698541660018060a01b031690565b9062000d4962000d3f62000414565b61ffff9096168652565b818a86015282604086015285606086015286608086015260243594511662002421565b6001600160401b0360405191168152f35b8062000d8d62000d949262000358565b8062000a68565b3862000ce3565b62001b71565b5080fd5b82829162000dc5575b8280929181923390f11562000d9b57813862000c89565b6108fc915062000dae565b62000df791945060203d811162000dff575b62000dee8183620003c0565b81019062001bb9565b923862000c33565b503d62000de2565b34620004cc576000366003190112620004cc57602061ffff60025416604051908152f35b34620004cc576200001b62000e7a60e062000e4e620007196200091036620004d1565b62000e7261014082015160005260056020526040600020600160ff19825416179055565b015162004421565b62000ec662000e8e604083015161ffff1690565b61ffff62000eaa62000ea360025461ffff1690565b61ffff1690565b9116908114908162000f2b575b811562000f21575b5062003f16565b608062000f096060830162000f0162000efa62000ee5835161ffff1690565b61ffff16600052600b60205260406000205490565b1562003f56565b5161ffff1690565b9101519061ffff16600052600b602052604060002055565b9050153862000ebf565b905062000f4262000f3e600c5446141590565b1590565b9062000eb7565b34620004cc576020366003190112620004cc57602062000a5e600435600052600660205260ff6040600020541690565b34620004cc576000366003190112620004cc576004546040516001600160a01b039091168152602090f35b34620004cc576020366003190112620004cc57602062000fcb60043562000ee581620005fa565b604051908152f35b34620004cc5760c0366003190112620004cc57620006db62000b3960405162000ffc816200033c565b6004356200100a8162000a9f565b815260243560208201526044356200102281620005fa565b6040820152606435620010358162000a9f565b6060820152608435608082015260a43560a082015262003860565b34620004cc576000366003190112620004cc576020600354604051908152f35b34620004cc576020366003190112620004cc576001600160a01b0362001095620005e3565b16600052600a6020526020604060002054604051908152f35b6080366003190112620004cc576004803590620010cb82620005fa565b604435620010d98162000623565b6064356001600160401b038111620004cc57620010fa90369084016200047f565b906200110562001b7d565b506000805490946001600160a01b039491829190602090620011299088166200096f565b604051631a90a21960e01b815294859182905afa92831562000d9b578793620012c1575b506200115b34841062001bc9565b62001167833462001c4d565b966402540be4008804906200118062000c77836200238f565b818115801562001296575b50508454620011ab919062000ca9908b166001600160a01b03166200096f565b98803b1562000da157819085604051809c8193630d0e30db60e41b83525af197881562000d9b57620006db9962001265996200127f575b5084546200120290849062000d039084166001600160a01b03166200096f565b620012296200096f6200096f6200096f61ffff94856002541699541660018060a01b031690565b91620012426200123862000414565b61ffff9097168752565b8260208701528360408701526060860152856080860152602435945116620024fd565b6040516001600160401b0390911681529081906020820190565b8062000d8d6200128f9262000358565b38620011e2565b828291620012b6575b8280929181923390f11562000d9b5781386200118b565b6108fc91506200129f565b620012de91935060203d811162000dff5762000dee8183620003c0565b91386200114d565b34620004cc57620006db6200087a620012ff36620004d1565b62003263565b604080600319360112620004cc576200131d620005e3565b602435916200132c8362000623565b805192602080938186019563313ce56760e01b8752600481526200135081620003a4565b6000809781925190845afa506200136662001a49565b86808651858101906395d89b4160e01b8252600481526200138781620003a4565b5190855afa5060ff6200147d6200096f6200146c88620013a662001a49565b958c8083518b8101906306fdde0360e01b825260048152620013c881620003a4565b51908b5afa5088806200141662001406620013f6620013e662001a49565b9584808251830101910162001a8b565b9a83808251830101910162001aed565b9382808251830101910162001aed565b920151910151906200145c600254986200145262001433620003e2565b60028152956001600160a01b039c8d16878f015261ffff8c1690870152565b60ff166060850152565b608083015260a082015262003860565b8a549095166001600160a01b031690565b91620014a38751968795869485946358cd21bf60e11b8652891c16916004850162001b42565b039134905af192831562000d9b57620006db9493620014d7575b5050516001600160401b0390911681529081906020820190565b620014fc929350803d1062001505575b620014f38183620003c0565b81019062001b2b565b903880620014bd565b503d620014e7565b60c0366003190112620004cc5762001524620005e3565b604435906200153382620005fa565b60843590620015428262000623565b60a435916001600160401b038311620004cc57620006db936200159362001572620006bc9536906004016200047f565b93620015846002600d54141562001cbd565b6002600d556024359062001d2f565b9061ffff82511690602083015192608060408201519101519360643593620024fd565b34620004cc576200001b620012ff36620004d1565b34620004cc576080620015e8620015e236620004d1565b62004591565b61ffff6060604051928051845260ff6020820151166020850152604081015160408501520151166060820152f35b34620004cc57600319602036820112620004cc576004356001600160401b0391828211620004cc57610100908236030112620004cc5762001656620003f3565b620016648260040162000aab565b81526024820135602082015260448201356040820152620016886064830162000616565b606082015260848201356080820152620016a560a4830162000616565b60a082015260c482013560c082015260e4820135928311620004cc57620016db62000b39926004620006db95369201016200047f565b60e08201526200393f565b34620004cc576020366003190112620004cc576001600160a01b036200170b620005e3565b166000526007602052602060ff604060002054166040519015158152f35b34620004cc576000366003190112620004cc576020600c54604051904614158152f35b34620004cc57620017916200176136620004d1565b6000805460405163607ec5ef60e11b8152939192839285926001600160a01b031691839182916004830162000848565b03915afa90811562000d9b57620006db9262001801928291839084926200181b575b50620017c19293506200276b565b620017d6620017d08262003826565b6200279e565b620017fa60a0620017eb60e084015162003a18565b9201516001600160401b031690565b9062002a65565b6040516001600160a01b0390911681529081906020820190565b915050620018439150620017c1923d8091833e6200183a8183620003c0565b81019062002632565b909291928392620017b3565b34620004cc57620006db620009d66200186836620004d1565b62003d2e565b34620004cc5760e06200188b6200188536620004d1565b62003c3f565b620006db6040519283926020845260ff8151166020850152602081015160408501526040810151606085015261ffff6060820151166080850152608081015160a0850152620018e560a082015160c086019061ffff169052565b60c08101518285015201516101008084015261012083019062000821565b34620004cc57620019186200176136620004d1565b03915afa90811562000d9b57620006db92620018019282918390849262001973575b50620019489293506200276b565b62001957620017d08262003826565b6200196c60a0620017eb60e084015162003a18565b9062002813565b91505062001992915062001948923d8091833e6200183a8183620003c0565b9092919283926200193a565b34620004cc576000366003190112620004cc57602061ffff60025460101c16604051908152f35b34620004cc576080620019e2620019dc36620004d1565b6200451f565b6060604051918051835260ff602082015116602084015261ffff604082015116604084015201516060820152f35b34620004cc576200001b6200087436620004d1565b60405190602082018281106001600160401b03821117620003365760405260008252565b3d1562001a79573d9062001a5d8262000463565b9162001a6d6040519384620003c0565b82523d6000602084013e565b606090565b5190620003f18262000a9f565b90816020910312620004cc5751620004ff8162000a9f565b81601f82011215620004cc57805162001abc8162000463565b9262001acc6040519485620003c0565b81845260208284010111620004cc57620004ff9160208085019101620007fc565b90602082820312620004cc5781516001600160401b038111620004cc57620004ff920162001aa3565b51906001600160401b0382168203620004cc57565b90816020910312620004cc57620004ff9062001b16565b9162001b6a60ff9163ffffffff60409497969716855260606020860152606085019062000821565b9416910152565b6040513d6000823e3d90fd5b6040519060a082018281106001600160401b03821117620003365760405260006080838281528260208201528260408201528260608201520152565b90816020910312620004cc575190565b1562001bd157565b60405162461bcd60e51b815260206004820152602260248201527f76616c756520697320736d616c6c6572207468616e20776f726d686f6c652066604482015261656560f01b6064820152608490fd5b634e487b7160e01b600052601160045260246000fd5b60841981019190821162001c4757565b62001c21565b9190820391821162001c4757565b1562001c6357565b60405162461bcd60e51b815260206004820152602c60248201527f66656520697320626967676572207468616e20616d6f756e74206d696e75732060448201526b776f726d686f6c652066656560a01b6064820152608490fd5b1562001cc557565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b5190620003f182620005fa565b90816020910312620004cc5751620004ff81620005fa565b9062001d3a62001b7d565b506001600160a01b038216600090815260096020526040902062001d60905b5460ff1690565b156200206f57604051634d4502c960e11b81526001600160a01b0383169260209290918381600481885afa90811562000d9b5760049185916000916200203b575b509560405192838092633d6c043b60e01b82525afa90811562000d9b5762001e289460009262002019575b5050905b62001e2e604051916000806020948581019063313ce56760e01b82526004815262001dfb81620003a4565b5190885afa5062001e1e62001e0f62001a49565b84808251830101910162001a8b565b958680926200234d565b620023aa565b9261ffff9462001e43866002541661ffff1690565b87871690810362001f935762001f5362001f3e8362001f388660008062001f479c8b62001f0f60405162001eed8382019486806370a0823160e01b978881528562001ea03060248301919091602081019260018060a01b03169052565b039562001eb6601f1997888101835282620003c0565b51908c5afa5062001ed962001eca62001a49565b86808251830101910162001bb9565b98309033906001600160a01b031662004942565b60405192830193845230602484015282604481015b03908101835282620003c0565b51908b5afa5062001f3262001f2362001a49565b8a808251830101910162001bb9565b62001c4d565b6200234d565b96879362002308565b976002541661ffff1690565b1462001f80575b505062001f6a62000d3f62000414565b8401526040830152606082015234608082015290565b62001f8b91620036f6565b388362001f5a565b6001600160a01b0383169562001fac8130338a62004942565b863b15620004cc57604051632770a7eb60e21b815230600482015260248101829052966000908890604490829084905af196871562000d9b578362001f539262001f3e9262001f479a62002002575b506200234d565b8062000d8d620020129262000358565b3862001ffb565b620020339250803d1062000dff5762000dee8183620003c0565b388062001dcc565b620020609150823d841162002067575b620020578183620003c0565b81019062001d17565b3862001da1565b503d6200204b565b60025461ffff169162001e28916001600160a01b0382169062001dd0565b91906200209962001b7d565b506001600160a01b0383166000908152600960205260409020620020bd9062001d59565b15620022c457604051634d4502c960e11b81526001600160a01b0384169360209290918381600481895afa90811562000d9b576004918591600091620022a2575b509660405192838092633d6c043b60e01b82525afa90811562000d9b5762001e289460009262002280575b5050915b6200217b604051926000806020958681019063313ce56760e01b8252600481526200215881620003a4565b5190865afa5062001e1e6200216c62001a49565b85808251830101910162001a8b565b60025461ffff969188881691879085908a16840362002210576040516370a0823160e01b81890181815230602484015262001f539562001f47956200220795909462001f389491936000938493928f92620021e49262001eed9187908190856044810162001ea0565b51908c5afa5062001f32620021f862001a49565b8b808251830101910162001bb9565b9788946200234d565b50506001600160a01b038416906200222b8130338562004942565b813b15620004cc57604051632770a7eb60e21b815230600482015260248101829052916000908390604490829084905af191821562000d9b578862001f4792620022079262001f53956200200257506200234d565b6200229a9250803d1062000dff5762000dee8183620003c0565b388062002129565b620022bd9150823d84116200206757620020578183620003c0565b38620020fe565b60025461ffff169262001e28916001600160a01b038216916200212d565b60ff6007199116019060ff821162001c4757565b60ff16604d811162001c4757600a0a90565b600090600860ff8216116200231b575090565b6200232a6200233091620022e2565b620022f6565b15620023395790565b634e487b7160e01b81526012600452602490fd5b90600860ff8216116200235e575090565b6200232a6200236d91620022e2565b90811562002379570490565b634e487b7160e01b600052601260045260246000fd5b6402540be4009081810291818304149015171562001c475790565b90600860ff821611620023bb575090565b6200232a620023ca91620022e2565b9081810291818304149015171562001c475790565b15620023e757565b60405162461bcd60e51b815260206004820152601260248201527119995948195e18d959591cc8185b5bdd5b9d60721b6044820152606490fd5b92620024c997959294620024696020989562002479946200244589881115620023df565b6200244f62000423565b60018152985b898c0152604089015261ffff166060880152565b608086015261ffff1660a0850152565b60c0830152600054620024a1906200249a906001600160a01b03166200096f565b92620038c9565b6002546040516358cd21bf60e11b81529687958694938593891c60ff16916004850162001b42565b03925af190811562000d9b57600091620024e1575090565b620004ff915060203d81116200150557620014f38183620003c0565b92620024c997929462002469602098979562002528946200251d620003f3565b600381529862002455565b3360c084015260e0830152600054620024a1906200254f906001600160a01b03166200096f565b926200393f565b5190620003f18262000623565b9080601f83011215620004cc578151916001600160401b03831162000336576040918251936020916200259c838360051b0187620003c0565b818652828087019260071b85010193818511620004cc578301915b848310620025c85750505050505090565b608083830312620004cc57836080918751620025e4816200036c565b85518152828601518382015288860151620025ff8162000a9f565b8982015260608087015190620026158262000a9f565b820152815201920191620025b7565b51908115158203620004cc57565b9091606082840312620004cc578151916001600160401b0392838111620004cc57810161016081860312620004cc576200266b62000432565b90620026778162001a7e565b8252620026876020820162002556565b60208301526200269a6040820162002556565b6040830152620026ad6060820162001d0a565b606083015260808101516080830152620026ca60a0820162001b16565b60a0830152620026dd60c0820162001a7e565b60c083015260e0810151858111620004cc5786620026fd91830162001aa3565b60e08301526101006200271281830162002556565b9083015261012080820151868111620004cc57876200273391840162002563565b90830152610140809101519082015293620027516020830162002624565b936040830151908111620004cc57620004ff920162001aa3565b15620027745750565b60405162461bcd60e51b8152602060048201529081906200279a90602483019062000821565b0390fd5b15620027a657565b60405162461bcd60e51b815260206004820152600f60248201526e34b73b30b634b21032b6b4ba3a32b960891b6044820152606490fd5b9162001b6a6001600160401b03916200280460409497969760608752606087019062000821565b90858203602087015262000821565b906200285061ffff60408401511660208401519061ffff16600052600860205260406000209060005260205260018060a01b036040600020541690565b916001600160a01b038316918215620028d5576200288160806200287860a085015162003e8a565b93015162003e8a565b92803b15620004cc57620028b19360008094604051968795869485936350c66be360e11b855260048501620027dd565b03925af1801562000d9b57620028c5575090565b8062000d8d620004ff9262000358565b60405162461bcd60e51b815260206004820152601d60248201527f7772617070656420617373657420646f6573206e6f74206578697374730000006044820152606490fd5b156200292257565b60405162461bcd60e51b815260206004820152602860248201527f63616e206f6e6c79207772617020746f6b656e732066726f6d20666f726569676044820152676e20636861696e7360c01b6064820152608490fd5b156200298057565b60405162461bcd60e51b815260206004820152601c60248201527f7772617070656420617373657420616c726561647920657869737473000000006044820152606490fd5b936001600160401b039060ff62002a0361ffff969b9a9995620029f460c09a9660e08b5260e08b019062000821565b9089820360208b015262000821565b9a1660408701521660608501526001600160a01b031660808401521660a08201520152565b6001600160a01b039091168152604060208201819052620004ff9291019062000821565b9062002a6160209282815194859201620007fc565b0190565b91909162002bb262002b68604083019462002a9962002a86875161ffff1690565b60025461ffff908116911614156200291a565b85516020858101805161ffff909316600090815260088352604080822094825293835292909220549195909162002b75919062002ae0906001600160a01b03161562002978565b62002b4262002af360a083015162003e8a565b9462002b12606062002b09608086015162003e8a565b94015160ff1690565b9562002b208c5161ffff1690565b908a519260405198899663c71f461560e01b8a890152309360248901620029c5565b039262002b58601f1994858101835282620003c0565b6040519485913085840162002a28565b03838101855284620003c0565b62002bbf6106f69362002b8a83860162000453565b9480865262004afe8487013960405195869162002bab858401809862002a4c565b9062002a4c565b03838101865285620003c0565b62002bfd62002bd0885161ffff1690565b865160405160f09290921b6001600160f01b03191693820193845260028401529192826022850162001f02565b5190209151906000f592833b15620004cc5751905161ffff909116600090815260086020908152604080832093835292815282822080546001600160a01b0319166001600160a01b03871690811790915582526009905220805460ff19166001179055565b1562002c6a57565b60405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21039b2b73232b960911b6044820152606490fd5b1562002ca857565b60405162461bcd60e51b815260206004820152601a60248201527f7472616e7366657220616c726561647920636f6d706c657465640000000000006044820152606490fd5b1562002cf557565b60405162461bcd60e51b815260206004820152601460248201527334b73b30b634b2103a30b933b2ba1031b430b4b760611b6044820152606490fd5b1562002d3957565b60405162461bcd60e51b815260206004820152602560248201527f6e6f207772617070657220666f72207468697320746f6b656e2063726561746560448201526419081e595d60da1b6064820152608490fd5b1562002d9457565b60405162461bcd60e51b815260206004820152602360248201527f696e76616c696420746f6b656e2c2063616e206f6e6c7920756e77726170205760448201526208aa8960eb1b6064820152608490fd5b1562002ded57565b60405162461bcd60e51b815260206004820152602260248201527f66656520686967686572207468616e207472616e7366657272656420616d6f756044820152611b9d60f21b6064820152608490fd5b600080546001600160a01b039062002e579082166200096f565b604093838551809363607ec5ef60e11b8252818062002e7b60049687830162000848565b03915afa801562000d9b578492859086926200323c575b509062002e9f916200276b565b62002eae620017d08362003826565b60e082019462002ebf865162003d2e565b8462002ecf608083015162003681565b94600360ff62002ee0855160ff1690565b161462003227575b62002f34610140820162002f1962002f1362000f3e8351600052600660205260ff6040600020541690565b62002ca0565b5160005260066020526040600020600160ff19825416179055565b606081015161ffff16906001600160401b0362002f6060a060808401519301516001600160401b031690565b169061ffff8093167fcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c1698b80a48062002fbb62002fa160a086015161ffff1690565b62002fb1836002541661ffff1690565b9216821462002ced565b606084015161ffff1691821603620031df575062002fe06200096f8484015162003681565b62002ff26020840151838316620037a9565b1686806200300c6200096f8988541660018060a01b031690565b926200301c898516821462002d8c565b855163313ce56760e01b60208201908152888252906200303c81620003a4565b51915afa506200307e620030636200305362001a49565b6020808251830101910162001a8b565b60c062003075826020870151620023aa565b940151620023aa565b9081151580620031d2575b15620031c3576200309d8383111562002de5565b803b15620031bf578784518092632e1a7d4d60e01b8252818381620030c9888c83019190602083019252565b03925af1801562000d9b57620031a8575b5086808280156200319d575b8280929181923390f11562000d9b57620031009162001c4d565b82549092906200311b9086166001600160a01b03166200096f565b91823b15620031995751632e1a7d4d60e01b815290810183815290939291869185919082908490829060200103925af191821562000d9b5785948594859462003182575b508391831562003177575b1690f11562000d9b575190565b6108fc92506200316a565b8062000d8d620031929262000358565b386200315f565b8680fd5b6108fc9150620030e6565b8062000d8d620031b89262000358565b38620030da565b8780fd5b50506200310090869062001c4d565b5033878716141562003089565b620032138291858501519061ffff16600052600860205260406000209060005260205260018060a01b036040600020541690565b166200322181151562002d31565b62002ff2565b62003236828716331462002c62565b62002ee8565b905062002e9f93506200325b91503d8087833e6200183a8183620003c0565b919362002e92565b600080546001600160a01b03906200327d9082166200096f565b92604093838551809263607ec5ef60e11b82528180620032a260049788830162000848565b03915afa801562000d9b57849085869162003658575b620032c59293506200276b565b620032d4620017d08262003826565b60e0810194620032e5865162003d2e565b92620032f5608085015162003681565b93600360ff62003306835160ff1690565b161462003643575b62003339610140850162002f1962002f1362000f3e8351600052600660205260ff6040600020541690565b606084015161ffff16936001600160401b036200336560a060808401519301516001600160401b031690565b169061ffff8096167fcaf280c8cfeba144da67230d9b009c8f868a75bac9a528fa0474be1ba317c1698a80a483620033c0620033a660a084015161ffff1690565b620033b6836002541661ffff1690565b9616861462002ced565b866060830195620033d3875161ffff1690565b908382160362003602575050620033f16200096f8584015162003681565b90620034046020840151898416620037a9565b8782169289808751602081019063313ce56760e01b82528881526200342981620003a4565b5190875afa506200345c620034416200305362001a49565b60c062003453826020860151620023aa565b930151620023aa565b998a151580620035f5575b15620035e6576200347b828c111562002de5565b9962003489885161ffff1690565b836200349a816002541661ffff1690565b911614620035d457843b15620004cc5786516340c10f1960e01b81523387820190815260208101839052909290600090849081906040010381838a5af192831562000d9b57620034f193620035bd575b5062001c4d565b9589156200351657505082546200311b925087166001600160a01b031690506200096f565b909295969498506200352d919397505161ffff1690565b906200353e816002541661ffff1690565b911614620035ac5750813b15620004cc5793516340c10f1960e01b81526001600160a01b03909416928401928352602083019190915260009183919082908490829060400103925af1801562000d9b576200359857505190565b8062000d8d620035a89262000358565b5190565b9150919250620035a89350620048fd565b8062000d8d620035cd9262000358565b38620034ea565b620034f19162001f32823387620048fd565b9950620034f1908a9062001c4d565b50338a8a16141562003467565b8386015161ffff909116600090815260086020908152604080832093835292905220546001600160a01b0316166200363c81151562002d31565b9062003404565b62003652868616331462002c62565b6200330e565b50505062003675620032c5913d8087833e6200183a8183620003c0565b919250829190620032b8565b6001600160a01b031981166200369d576001600160a01b031690565b60405162461bcd60e51b8152602060048201526013602482015272696e76616c69642045564d206164647265737360681b6044820152606490fd5b90601f820180921162001c4757565b608501908160851162001c4757565b6001600160a01b0381166000908152600a60205260409020549091810190811062001c47576001600160401b03811162003746576001600160a01b039091166000908152600a6020526040902055565b60405162461bcd60e51b815260206004820152603560248201527f7472616e736665722065786365656473206d6178206f75747374616e64696e6760448201527408189c9a5919d959081d1bdad95b88185b5bdd5b9d605a1b6064820152608490fd5b6001600160a01b0381166000908152600a60205260409020549091810390811162001c47576001600160a01b039091166000908152600a6020526040902055565b15620037f257565b60405162461bcd60e51b815260206004820152600c60248201526b696e76616c696420666f726b60a01b6044820152606490fd5b62003835600c544614620037ea565b60806200385961ffff60608401511661ffff16600052600b60205260406000205490565b9101511490565b8051602082015191604081015191606082015160a06080840151930151936040519560ff60f81b809460f81b166020880152602187015261ffff60f01b9060f01b16604186015260f81b1660438401526044830152606482015260648152620004ff8162000388565b80519060208101519060408101519060608101519160808201519060c060a0840151930151946040519660ff60f81b9060f81b1660208801526021870152604186015261ffff60f01b809360f01b166061860152606385015260f01b166083830152608582015260858152620004ff816200033c565b620004ff60a582516020840151936040810151906060810151608082015160a08301519060e060c085015194015194604051998a9760ff60f81b9060f81b1660208901526021880152604187015261ffff60f01b809360f01b166061870152606386015260f01b1660838401526085830152620039c68151809260208686019101620007fc565b8101036085810184520182620003c0565b15620039df57565b60405162461bcd60e51b8152602060048201526011602482015270696e76616c69642041737365744d65746160781b6044820152606490fd5b906040519162003a28836200033c565b600090818452602084019082825260408501928084526060860193818552608087019082825260a0880192835262003a7460028960ff62003a6988620047a1565b1680915214620039d7565b602184511062003add57620003f19562003aa962003abb926064976021880151905262003aa18762004831565b61ffff169052565b62003ab485620047fe565b60ff169052565b62003ac683620048b9565b905262003ad382620048db565b90525114620039d7565b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b6040519062003b29826200031a565b8160c06000918281528260208201528260408201528260608201528260808201528260a08201520152565b1562003b5c57565b60405162461bcd60e51b815260206004820152601060248201526f34b73b30b634b2102a3930b739b332b960811b6044820152606490fd5b9062003b9f62003b1a565b9162003bbe600160ff62003bb384620047a1565b168086521462003b54565b62003bc98162004853565b602084015262003bd98162004897565b604084015261ffff62003bec8262004820565b166060840152606381511062003add576085816063620003f1930151608086015262003c2762003c1c8262004842565b61ffff1660a0870152565b62003c328162004864565b60c0860152511462003b54565b906040519161010083018381106001600160401b03821117620003365760405260009081845260208401918083526040850181815260608601828152608087019083825260a088019284845260c0890194855260e0890196606088528962003ca788620047a1565b60ff169081905262003cbc9060031462003b54565b62003cc78762004853565b905262003cd48662004897565b905262003ce18562004820565b61ffff16905262003cf284620048ca565b905262003cff8362004842565b61ffff16905262003d1082620048ec565b9052805162003d1f9062001c37565b62003d2a916200470b565b9052565b9062003d3962003b1a565b9160ff62003d4782620047a1565b166001810362003d5f5750620004ff91925062003b94565b60030362003dda5762003dc660a062003d7c62003dd19362003c3f565b60038652602081015160208701526040810151604087015262003db362003da8606083015161ffff1690565b61ffff166060880152565b60808101516080870152015161ffff1690565b61ffff1660a0840152565b600060c0830152565b60405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081c185e5b1bd859081a5960721b6044820152606490fd5b634e487b7160e01b600052603260045260246000fd5b600019811462001c475760010190565b9062003e468262000463565b62003e556040519182620003c0565b828152809262003e68601f199162000463565b0190602036910137565b90815181101562003e84570160200190565b62003e14565b60005b602081108062003ef8575b1562003eaf5762003ea99062003e2a565b62003e8d565b9062003ebb8262003e3a565b9160005b81811062003ecd5750505090565b602081101562003e8457808362003ef2921a62003eeb828762003e72565b5362003e2a565b62003ebf565b1562003e845781811a60f81b6001600160f81b031916151562003e98565b1562003f1e57565b60405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a590818da185a5b881a5960821b6044820152606490fd5b1562003f5e57565b60405162461bcd60e51b815260206004820152601860248201527f636861696e20616c7265616479207265676973746572656400000000000000006044820152606490fd5b1562003fab57565b60405162461bcd60e51b815260206004820152601160248201527034b73b30b634b21022ab269021b430b4b760791b6044820152606490fd5b6040519061016082018281106001600160401b038211176200033657604052816101406000918281528260208201528260408201528260608201528260808201528260a08201528260c0820152606060e08201528261010082015260606101208201520152565b604051906200405a82620003a4565b60168252753bb937b7339033b7bb32b93730b731b29031b430b4b760511b6020830152565b604051906200408e82620003a4565b601982527f77726f6e6720676f7665726e616e636520636f6e7472616374000000000000006020830152565b60405190606082018281106001600160401b0382111762000336576040526022825261195960f21b6040837f676f7665726e616e636520616374696f6e20616c726561647920636f6e73756d60208201520152565b62004159906200411e62003fe4565b5060008054909182916200413d906200096f906001600160a01b031681565b604051808096819463607ec5ef60e11b83526004830162000848565b03915afa91821562000d9b5781928291839162004211575b50811562004209575050606082015161ffff1661ffff6200419d62000ea360025461ffff9060101c1690565b911603620041fd57608082015160035403620041f157620041d1610140830151600052600560205260ff6040600020541690565b620041e5575090600190620004ff62001a25565b9091620004ff620040ba565b9091620004ff6200407f565b9091620004ff6200404b565b929390929150565b9150506200422c9192503d8084833e6200183a8183620003c0565b9192913862004171565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc908154813b1562004312577f2e4cc16c100f0b55e2df82ab0b1a7e294aa9cbd01b48fbaf622683fbc0507a499060018060a01b039081841694856bffffffffffffffffffffffff60a01b83161790556200430c604051600080968192897fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a263204a7f0760e21b602082019081526004825290620042f781620003a4565b51915af46200430562001a49565b906200276b565b169180a3565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b156200437557565b60405162461bcd60e51b815260206004820152600c60248201526b77726f6e67206d6f64756c6560a01b6044820152606490fd5b15620043b157565b60405162461bcd60e51b815260206004820152600c60248201526b3bb937b7339030b1ba34b7b760a11b6044820152606490fd5b15620043ed57565b60405162461bcd60e51b815260206004820152600c60248201526b0eee4dedcce40d8cadccee8d60a31b6044820152606490fd5b906200442c62001b7d565b91620044526a546f6b656e427269646765620044488362004875565b808652146200436d565b62004473600160ff6200446584620047ed565b1680602087015214620043a9565b6023815110620044bc576045620003f19161ffff8060238301511660408701526200449e826200480f565b166060860152620044af81620048a8565b60808601525114620043e5565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b6044820152606490fd5b6040519062004507826200036c565b60006060838281528260208201528260408201520152565b906200452a620044f8565b91620045466a546f6b656e427269646765620044488362004875565b62004559600260ff6200446584620047ed565b6023815110620044bc57602381015161ffff166040840152620003f190604390620045848162004886565b60608601525114620043e5565b906200459c620044f8565b91620045b86a546f6b656e427269646765620044488362004875565b620045cb600360ff6200446584620047ed565b604181511062004608576043816041620003f1930151604086015262004600620045f58262004820565b61ffff166060870152565b5114620043e5565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b4681036200465257600c55565b60405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a5908195d9b50da185a5b925960721b6044820152606490fd5b156200469457565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b15620046d257565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b62004723826200471b81620036d8565b10156200468c565b6200473c81516200473484620036e7565b1115620046ca565b8162004755575050604051600081526020810160405290565b60405191601f8116916085831560051b80858701019484860193010101905b8084106200478d5750508252601f01601f191660405290565b909283518152602080910193019062004774565b6001815110620047b2576001015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6021815110620047b2576021015190565b6024815110620047b2576024015190565b6025815110620044bc576025015190565b6043815110620044bc576043015190565b6023815110620044bc576023015190565b6065815110620044bc576065015190565b602181511062004608576021015190565b608581511062004608576085015190565b602081511062003add576020015190565b604381511062003add576043015190565b604181511062003add576041015190565b604581511062003add576045015190565b604481511062003add576044015190565b606381511062003add576063015190565b606481511062003add576064015190565b608581511062003add576085015190565b60405163a9059cbb60e01b60208201526001600160a01b03929092166024830152604480830193909352918152620003f1916200493c606483620003c0565b620049fe565b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152620003f1916200493c8262000388565b90816020910312620004cc57620004ff9062002624565b15620049a657565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b6040516001600160a01b03919091169162004a1982620003a4565b6020928383527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656484840152803b1562004a9a576000828192828762004a709796519301915af162004a6962001a49565b9062004adf565b8051908162004a7e57505050565b82620003f19362004a9493830101910162004987565b6200499e565b60405162461bcd60e51b815260048101859052601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b9091901562004aec575090565b815115620027745750805190602001fdfe6080604052346100a3576106f6803803809161001a826100be565b60803960408160800191126100a35761003161010c565b60a05191906001600160401b0383116100a35781609f840112156100a35782608001519261005e84610122565b9261006c60405194856100e9565b84845260a085830101116100a3576100949361008f9160a060208601910161013d565b610160565b6040516101f690816105008239f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b6080601f91909101601f19168101906001600160401b038211908210176100e457604052565b6100a8565b601f909101601f19168101906001600160401b038211908210176100e457604052565b608051906001600160a01b03821682036100a357565b6001600160401b0381116100e457601f01601f191660200190565b60005b8381106101505750506000910152565b8181015183820152602001610140565b90813b156102c257604051635c60da1b60e01b8082526020939092916001600160a01b038216918582600481865afa918215610298576101ef926101af916000916102a5575b503b1515610340565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b03909216919091179055565b60405192817f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e600080a282511580159061029d575b610230575b5050505050565b6004848693819382525afa9182156102985761025e93600093610269575b50506102586103a5565b916103fe565b503880808080610229565b610289929350803d10610291575b61028181836100e9565b810190610315565b90388061024e565b503d610277565b610334565b506000610224565b6102bc9150883d8a116102915761028181836100e9565b386101a6565b60405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b6064820152608490fd5b908160209103126100a357516001600160a01b03811681036100a35790565b6040513d6000823e3d90fd5b1561034757565b60405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608490fd5b60405190606082016001600160401b038111838210176100e45760405260278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b15610451576000816104469460208394519201905af43d15610449573d9061042982610122565b9161043760405193846100e9565b82523d6000602084013e6104a5565b90565b6060906104a5565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b909190156104b1575090565b8151156104c15750805190602001fd5b6044604051809262461bcd60e51b8252602060048301526104f1815180928160248601526020868601910161013d565b601f01601f19168101030190fdfe608080604052366100c4577fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5054635c60da1b60e01b8252602090829060049082906001600160a01b03165afa9081156100b857600091610060575b5061015b565b6020903d82116100b0575b601f8201601f1916810167ffffffffffffffff81118282101761009c5761009693506040520161017a565b3861005a565b634e487b7160e01b84526041600452602484fd5b3d915061006b565b6040513d6000823e3d90fd5b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5054604051635c60da1b60e01b815290602090829060049082906001600160a01b03165afa9081156100b85760009161011d575061015b565b60203d8111610154575b601f8101601f1916820167ffffffffffffffff81118382101761009c5761009693506040528101906101a1565b503d610127565b6000808092368280378136915af43d82803e15610176573d90f35b3d90fd5b602090607f19011261019c576080516001600160a01b038116810361019c5790565b600080fd5b9081602091031261019c57516001600160a01b038116810361019c579056fea2646970667358221220a928e3b00b7d19d8e2f067361e93c7712de3e243b0b8be428e9ac989960b767464736f6c63430008130033a26469706673582212200ab8408b24ad8ea6b955a8d00252b04da580f860c567cd433865e841fd49531564736f6c63430008130033", J = (i) => i.length > 1;
|
|
1482
1482
|
class T extends q {
|
|
1483
1483
|
constructor(...e) {
|
|
1484
|
-
|
|
1484
|
+
J(e) ? super(...e) : super(w, S, e[0]);
|
|
1485
1485
|
}
|
|
1486
1486
|
getDeployTransaction(e) {
|
|
1487
1487
|
return super.getDeployTransaction(e || {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var M=Object.defineProperty;var R=(I,t,e)=>t in I?M(I,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):I[t]=e;var m=(I,t,e)=>R(I,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./platform-PNwsacZi.js"),f=require("./address-CNhzoegm.js");require("./index-CapdlI6H.js");const u=require("./address-RcMobNYE.js"),P=require("./unsignedTransaction-DzSLsK-p.js"),U=require("./chain-itK5uGYL.js"),A=async(I,t,e)=>{var l,r,n;if(!f.isValidSuiType(e))throw new Error(`Invalid Sui type: ${e}`);const c=await a.getObjectFields(I,t);if(!c)throw new Error(`Unable to fetch object fields from token bridge state. Object ID: ${t}`);const o=(r=(l=c.token_registry.fields)==null?void 0:l.id)==null?void 0:r.id;if(!o)throw new Error("Unable to fetch token registry object ID");const s=f.getPackageIdFromType((n=c.token_registry)==null?void 0:n.type);if(!s)throw new Error("Unable to fetch token registry package ID");return I.getDynamicFieldObject({parentId:o,name:{type:`${s}::token_registry::Key<${e}>`,value:{dummy_field:!1}}})},C=async(I,t,e,c)=>{var i,h,w,k;const o=await a.getObjectFields(I,t);if(!o)throw new Error("Unable to fetch object fields from token bridge state");const s=(h=(i=o.token_registry)==null?void 0:i.fields)==null?void 0:h.coin_types,l=(k=(w=s==null?void 0:s.fields)==null?void 0:w.id)==null?void 0:k.id;if(!l)throw new Error("Unable to fetch coin types");const r=f.getTableKeyType(s==null?void 0:s.type);if(!r)throw new Error("Unable to get key type");const n=await I.getDynamicFieldObject({parentId:l,name:{type:r,value:{addr:[...e],chain:c}}});if(n.error){if(n.error.code==="dynamicFieldNotFound")return null;throw new Error(`Unexpected getDynamicFieldObject response ${n.error}`)}const g=a.getFieldsFromObjectResponse(n);if(!g)return null;if(!a.isMoveStructObject(g))throw new Error("What?");return"value"in g?f.trimSuiType(g.value):null};class B{constructor(t,e,c,o){m(this,"network");m(this,"chain");m(this,"provider");m(this,"contracts");m(this,"coreBridgeObjectId");m(this,"tokenBridgeObjectId");m(this,"chainId");this.network=t,this.chain=e,this.provider=c,this.contracts=o,this.chainId=u.networkChainToNativeChainId.get(t,e);const s=this.contracts.tokenBridge;if(!s)throw new Error(`Wormhole Token Bridge contract for domain ${e} not found`);const l=this.contracts.coreBridge;if(!l)throw new Error(`Wormhole Token Bridge contract for domain ${e} not found`);this.tokenBridgeObjectId=s,this.coreBridgeObjectId=l}static async fromRpc(t,e){const[c,o]=await a.SuiPlatform.chainFromRpc(t),s=e[o];if(s.network!==c)throw new Error(`Network mismatch: ${s.network} != ${c}`);return new B(c,o,t,s.contracts)}async isWrappedAsset(t){try{return await this.getOriginalAsset(t),!0}catch{return!1}}async getOriginalAsset(t){let e=t.getCoinType();if(!f.isValidSuiType(e))throw new Error(`Invalid Sui type: ${e}`);const c=await A(this.provider,this.tokenBridgeObjectId,e),o=a.getFieldsFromObjectResponse(c);if(!o)throw u.ErrNotWrapped(e);if(!a.isMoveStructObject(o))throw new Error("Expected fields to be a MoveStruct");if(!("value"in o))throw new Error("Expected a `value` key in fields of MoveStruct");const s=o.value;if(!a.isMoveStructStruct(s))throw new Error("Expected fields to be a MoveStruct");const l=f.trimSuiType(s.type);if(e=f.trimSuiType(e),l.includes(`wrapped_asset::WrappedAsset<${e}>`)){const r=s.fields.info;if(!a.isMoveStructStruct(r))throw new Error("Expected fields to be a MoveStruct");const n=r.fields.token_address;if(!a.isMoveStructStruct(n))throw new Error("Expected fields to be a MoveStruct");if(!a.isMoveStructObject(n.fields))throw new Error("Expected address data to be a MoveObject");if(!("value"in n.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const g=n.fields.value;if(!a.isMoveStructStruct(g))throw new Error("Expected fields to be a MoveStruct");const i=new Uint8Array(g.fields.data);return{chain:u.toChain(Number(r.fields.token_chain)),address:new u.UniversalAddress(i)}}throw u.ErrNotWrapped(e)}async getTokenUniversalAddress(t){let e=t.getCoinType();if(!f.isValidSuiType(e))throw new Error(`Invalid Sui type: ${e}`);const c=await A(this.provider,this.tokenBridgeObjectId,e),o=a.getFieldsFromObjectResponse(c);if(!o)throw new Error(`Token of type ${e} has not been registered with the token bridge. Has it been attested?`);if(!a.isMoveStructObject(o))throw new Error("Expected fields to be a MoveStruct");if(!("value"in o))throw new Error("Expected a `value` key in fields of MoveStruct");const s=o.value;if(!a.isMoveStructStruct(s))throw new Error("Expected fields to be a MoveStruct");const l=f.trimSuiType(s.type);if(e=f.trimSuiType(e),l.includes(`native_asset::NativeAsset<${e}>`)){const r=s.fields.token_address;if(!a.isMoveStructStruct(r))throw new Error("Expected fields to be a MoveStruct");if(!("value"in r.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const n=r.fields.value;if(!a.isMoveStructStruct(n))throw new Error("Expected fields to be a MoveStruct");const g=new Uint8Array(n.fields.data);return new u.UniversalAddress(g)}throw new Error(`Token of type ${e} is not a native asset`)}async getTokenNativeAddress(t,e){const c=await C(this.provider,this.tokenBridgeObjectId,e.toUint8Array(),u.toChainId(t));if(!c)throw new Error(`Token ${e.toString()} not found in token registry`);return new f.SuiAddress(c)}async hasWrappedAsset(t){try{return await this.getWrappedAsset(t),!0}catch{}return!1}async getWrappedAsset(t){if(u.isNative(t.address))throw new Error("Token Address required, 'native' literal not supported");const e=await C(this.provider,this.tokenBridgeObjectId,t.address.toUniversalAddress().toUint8Array(),u.toChainId(t.chain));if(!e)throw u.ErrNotWrapped(u.canonicalAddress(t));return u.toNative(this.chain,e)}async isTransferCompleted(t){var r,n,g,i,h,w,k,b;const e=await a.getObjectFields(this.provider,this.tokenBridgeObjectId);if(!e)throw new Error("Unable to fetch object fields from token bridge state");const c=(n=(r=e.consumed_vaas)==null?void 0:r.fields)==null?void 0:n.hashes,o=f.getTableKeyType((i=(g=c==null?void 0:c.fields)==null?void 0:g.items)==null?void 0:i.type);if(!o)throw new Error("Unable to get key type");const s=(b=(k=(w=(h=c==null?void 0:c.fields)==null?void 0:h.items)==null?void 0:w.fields)==null?void 0:k.id)==null?void 0:b.id;if(!s)throw new Error("Unable to fetch consumed VAAs table");const l=await this.provider.getDynamicFieldObject({parentId:s,name:{type:o,value:{data:[...u.keccak_256(t.hash)]}}});if(!l.error)return!0;if(l.error.code==="dynamicFieldNotFound")return!1;throw new Error(`Unexpected getDynamicFieldObject response ${l.error}`)}async*createAttestation(t){const e=0n,o=t.toString(),s=await this.provider.getCoinMetadata({coinType:o});if(s===null||s.id===null)throw new Error(`Coin metadata ID for type ${o} not found`);const[l,r]=await this.getPackageIds(),n=new a.Transaction,[g]=n.splitCoins(n.gas,[n.pure.u64(e)]),[i]=n.moveCall({target:`${r}::attest_token::attest_token`,arguments:[n.object(this.tokenBridgeObjectId),n.object(s.id),n.pure.u32(0)],typeArguments:[o]});n.moveCall({target:`${l}::publish_message::publish_message`,arguments:[n.object(this.coreBridgeObjectId),g,i,n.object(a.SUI_CLOCK_OBJECT_ID)]}),yield this.createUnsignedTx(n,"Sui.TokenBridge.CreateAttestation")}async*submitAttestation(t,e){const[c,o]=await this.getPackageIds(),s=e.toString(),l=Math.min(t.payload.decimals,8),r=await this.getCoinBuildOutput(c,o,l),n=await a.publishPackage(r,s);yield this.createUnsignedTx(n,"Sui.TokenBridge.PrepareCreateWrapped");let g="",i="",h="",w="",k="",b=!1;for(;!b;){await new Promise(y=>setTimeout(y,500));const j=await this.provider.queryTransactionBlocks({filter:{FromAddress:s},options:{showObjectChanges:!0},limit:3});for(const y of j.data)if("objectChanges"in y){for(const p of y.objectChanges)a.isSuiPublishEvent(p)&&p.packageId!==void 0?g=p.packageId:a.isSuiCreateEvent(p)&&p.objectType.includes("WrappedAssetSetup")?(i=p.objectId,k=p.objectType.split(", ")[1].replace(">","")):a.isSuiCreateEvent(p)&&p.objectType.includes("UpgradeCap")?h=p.objectId:a.isSuiCreateEvent(p)&&p.objectType.includes("CoinMetadata")&&(w=p.objectId);if(g!==""&&i!==""&&h!==""&&w!==""){b=!0;break}else g="",i="",h="",w=""}}const v=f.getCoinTypeFromPackageId(g),d=new a.Transaction,[_]=d.moveCall({target:`${c}::vaa::parse_and_verify`,arguments:[d.object(this.coreBridgeObjectId),d.pure.vector("u8",u.serialize(t)),d.object(a.SUI_CLOCK_OBJECT_ID)]}),[S]=d.moveCall({target:`${o}::vaa::verify_only_once`,arguments:[d.object(this.tokenBridgeObjectId),_]});d.moveCall({target:`${o}::create_wrapped::complete_registration`,arguments:[d.object(this.tokenBridgeObjectId),d.object(w),d.object(i),d.object(h),S],typeArguments:[v,k]}),yield this.createUnsignedTx(d,"Sui.TokenBridge.SubmitAttestation")}async*transfer(t,e,c,o,s){const l=0n,r=0n,g=t.toString(),i=(u.isNative(c)?a.SUI_TYPE_ARG:c).toString(),h=await a.SuiPlatform.getCoins(this.provider,t,i),[w,...k]=h.filter(y=>a.isSameType(y.coinType,i));if(w===void 0)throw new Error(`Coins array doesn't contain any coins of type ${i}`);const[b,v]=await this.getPackageIds(),d=new a.Transaction,[_]=(()=>{if(i===a.SUI_TYPE_ARG)return d.splitCoins(d.gas,[d.pure.u64(o)]);{const y=d.object(w.coinObjectId);return k.length&&d.mergeCoins(y,k.map(p=>d.object(p.coinObjectId))),d.splitCoins(y,[d.pure.u64(o)])}})(),[S]=d.splitCoins(d.gas,[d.pure.u64(l)]),[j]=d.moveCall({target:`${v}::state::verified_asset`,arguments:[d.object(this.tokenBridgeObjectId)],typeArguments:[i]});if(s){if(!g)throw new Error("senderAddress is required for transfer with payload");let y=!1;const p=await(async()=>{const E=await a.getOldestEmitterCapObjectId(this.provider,b,g);if(E!==null)return d.object(E);{const[F]=d.moveCall({target:`${b}::emitter::new`,arguments:[d.object(this.coreBridgeObjectId)]});return y=!0,F}})(),[T,$]=d.moveCall({target:`${v}::transfer_tokens_with_payload::prepare_transfer`,arguments:[p,j,_,d.pure.u16(u.toChainId(e.chain)),d.pure.vector("u8",e.address.toUint8Array()),d.pure.vector("u8",s),d.pure.u32(0)],typeArguments:[i]});d.moveCall({target:`${v}::coin_utils::return_nonzero`,arguments:[$],typeArguments:[i]});const[x]=d.moveCall({target:`${v}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[d.object(this.tokenBridgeObjectId),T],typeArguments:[i]});d.moveCall({target:`${b}::publish_message::publish_message`,arguments:[d.object(this.coreBridgeObjectId),S,x,d.object(a.SUI_CLOCK_OBJECT_ID)]}),y&&d.transferObjects([p],d.pure.address(g)),yield this.createUnsignedTx(d,"Sui.TokenBridge.TransferWithPayload")}else{const[y,p]=d.moveCall({target:`${v}::transfer_tokens::prepare_transfer`,arguments:[j,_,d.pure.u16(u.toChainId(e.chain)),d.pure.vector("u8",e.address.toUint8Array()),d.pure.u64(r),d.pure.u32(0)],typeArguments:[i]});d.moveCall({target:`${v}::coin_utils::return_nonzero`,arguments:[p],typeArguments:[i]});const[T]=d.moveCall({target:`${v}::transfer_tokens::transfer_tokens`,arguments:[d.object(this.tokenBridgeObjectId),y],typeArguments:[i]});d.moveCall({target:`${b}::publish_message::publish_message`,arguments:[d.object(this.coreBridgeObjectId),S,T,d.object(a.SUI_CLOCK_OBJECT_ID)]}),yield this.createUnsignedTx(d,"Sui.TokenBridge.Transfer")}}async*redeem(t,e,c=!0){const o=await C(this.provider,this.tokenBridgeObjectId,e.payload.token.address.toUint8Array(),u.toChainId(e.payload.token.chain));if(!o)throw new Error("Unable to fetch token coinType");const[s,l]=await this.getPackageIds(),r=new a.Transaction,[n]=r.moveCall({target:`${s}::vaa::parse_and_verify`,arguments:[r.object(this.coreBridgeObjectId),r.pure.vector("u8",u.serialize(e)),r.object(a.SUI_CLOCK_OBJECT_ID)]}),[g]=r.moveCall({target:`${l}::vaa::verify_only_once`,arguments:[r.object(this.tokenBridgeObjectId),n]}),[i]=r.moveCall({target:`${l}::complete_transfer::authorize_transfer`,arguments:[r.object(this.tokenBridgeObjectId),g],typeArguments:[o]}),[h]=r.moveCall({target:`${l}::complete_transfer::redeem_relayer_payout`,arguments:[i],typeArguments:[o]});r.moveCall({target:`${l}::coin_utils::return_nonzero`,arguments:[h],typeArguments:[o]}),yield this.createUnsignedTx(r,"Sui.TokenBridge.Redeem")}async getWrappedNative(){return u.toNative(this.chain,a.SUI_TYPE_ARG)}async getPackageIds(){return Promise.all([a.getPackageId(this.provider,this.coreBridgeObjectId),a.getPackageId(this.provider,this.tokenBridgeObjectId)])}async getCoinBuildOutput(t,e,c){var r;if(c>8)throw new Error("Decimals is capped at 8");const o=(r=await a.getOriginalPackageId(this.provider,this.tokenBridgeObjectId))==null?void 0:r.replace("0x","");if(!o)throw new Error(`Original token bridge package ID not found for object ID ${this.tokenBridgeObjectId}`);const s="a11ceb0b060000000901000a020a14031e1704350405392d07669f01088502600ae502050cea02160004010b010c0205020d000002000201020003030c020001000104020700000700010001090801010c020a050600030803040202000302010702080007080100020800080303090002070801010b020209000901010608010105010b0202080008030209000504434f494e095478436f6e7465787408565f5f305f325f3011577261707065644173736574536574757004636f696e0e6372656174655f777261707065640b64756d6d795f6669656c6404696e697414707265706172655f726567697374726174696f6e0f7075626c69635f7472616e736665720673656e646572087472616e736665720a74785f636f6e746578740f76657273696f6e5f636f6e74726f6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"+o+"00020106010000000001090b0031"+c.toString(16).padStart(2,"0")+"0a0138000b012e110238010200";return{modules:[u.b64.encode(u.hex.decode(s))],dependencies:["0x1","0x2",e,t].map(n=>f.normalizeSuiObjectId(n))}}createUnsignedTx(t,e,c=!1){return new P.SuiUnsignedTransaction(t,this.network,this.chain,e,c)}}class O{constructor(t,e,c,o){m(this,"network");m(this,"chain");m(this,"connection");m(this,"contracts");m(this,"tokenBridgeRelayerObjectId");m(this,"coreBridgeObjectId");m(this,"tokenBridgeObjectId");m(this,"fields");this.network=t,this.chain=e,this.connection=c,this.contracts=o;const{tokenBridge:s,tokenBridgeRelayer:l,coreBridge:r}=o;if(!s||!l||!r)throw new Error(`Some object IDs for ${e} Automatic Token Bridge not found`);this.tokenBridgeRelayerObjectId=l,this.tokenBridgeObjectId=s,this.coreBridgeObjectId=r}static async fromRpc(t,e){const[c,o]=await a.SuiPlatform.chainFromRpc(t),s=e[o];if(s.network!==c)throw new Error(`Network mismatch for chain ${o}: ${s.network} != ${c}`);return new O(c,o,t,s.contracts)}async*transfer(t,e,c,o,s){const r=new f.SuiAddress(u.isNative(c)?a.SuiPlatform.nativeTokenId(this.network,this.chain).address:c).getCoinType(),{coreBridge:n,tokenBridge:g}=await this.getPackageIds(),i=new a.Transaction,h=BigInt(0),[w]=i.splitCoins(i.gas,[i.pure.u64(h)]),[k]=await(async()=>{if(u.isNative(c))return i.splitCoins(i.gas,[i.pure.u64(o)]);{const S=await a.SuiPlatform.getCoins(this.connection,t,r),[j,...y]=S.filter(T=>T.coinType===r);if(j===void 0)throw new Error(`Coins array doesn't contain any coins of type ${r}`);const p=i.object(j.coinObjectId);return y.length&&i.mergeCoins(p,y.map(T=>i.object(T.coinObjectId))),i.splitCoins(p,[i.pure.u64(o)])}})(),[b]=i.moveCall({target:`${g}::state::verified_asset`,arguments:[i.object(this.tokenBridgeObjectId)],typeArguments:[r]}),v=await this.getPackageId(),[d]=i.moveCall({target:`${v}::transfer::transfer_tokens_with_relay`,arguments:[i.object(this.tokenBridgeRelayerObjectId),k,b,i.pure.u64(s??0n),i.pure.u16(u.toChainId(e.chain)),i.pure.address(u.hex.encode(e.address.toUint8Array(),!0)),i.pure.u32(123)],typeArguments:[r]}),[_]=i.moveCall({target:`${g}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[i.object(this.tokenBridgeObjectId),d],typeArguments:[r]});i.moveCall({target:`${n}::publish_message::publish_message`,arguments:[i.object(this.coreBridgeObjectId),w,_,i.object(a.SUI_CLOCK_OBJECT_ID)]}),yield this.createUnsignedTx(i,"AutomaticTokenBridge.transfer")}async*redeem(t,e){const{coreBridge:c,tokenBridge:o}=await this.getPackageIds(),{address:s,chain:l}=e.payload.token,r=await C(this.connection,this.tokenBridgeObjectId,s.toUniversalAddress().toUint8Array(),u.toChainId(l));if(!r)throw new Error("Unable to fetch token coinType");const n=new a.Transaction,[g]=n.moveCall({target:`${c}::vaa::parse_and_verify`,arguments:[n.object(this.coreBridgeObjectId),n.pure.vector("u8",u.serialize(e)),n.object(a.SUI_CLOCK_OBJECT_ID)]}),[i]=n.moveCall({target:`${o}::vaa::verify_only_once`,arguments:[n.object(this.tokenBridgeObjectId),g]}),[h]=n.moveCall({target:`${o}::complete_transfer_with_payload::authorize_transfer`,arguments:[n.object(this.tokenBridgeObjectId),i],typeArguments:[r]}),w=await this.getPackageId();n.moveCall({target:`${w}::redeem::complete_transfer`,arguments:[n.object(this.tokenBridgeRelayerObjectId),h],typeArguments:[r]}),yield this.createUnsignedTx(n,"AutomaticTokenBridge.redeem")}async getRelayerFee(t,e){const c=u.isNative(e)?a.SuiPlatform.nativeTokenId(this.network,this.chain):e,o=await this.getTokenInfo(c.toString());if(o===null)throw new Error("Unsupported token for relay");const s=await this.getFields(),l=await this.connection.getDynamicFieldObject({parentId:this.tokenBridgeRelayerObjectId,name:{type:"vector<u8>",value:Array.from(u.bytes.encode("relayer_fees"))}});if(!l.data||!l.data.content)throw l.error?new Error("Failed to get relayer fees: "+JSON.stringify(l.error)):new Error("Unable to compute relayer fee");const{content:r}=l.data;if(!a.isMoveStructStruct(r)||!a.isMoveStructId(r.fields.id))throw new Error("Unable to compute relayer fee");const n=await this.connection.getDynamicFieldObject({parentId:r.fields.id.id,name:{type:"u16",value:u.toChainId(t)}});if(!n.data||!n.data.content)throw n.error?new Error("Failed to get relayer fees: "+JSON.stringify(l.error)):new Error("Unable to compute relayer fee");const{content:g}=n.data;if(!a.isMoveStructStruct(g))throw new Error("Unable to compute relayer fee");const i=await a.SuiPlatform.getDecimals(this.chain,this.connection,e.toString()),h=o.swap_rate,w=s.relayer_fee_precision,k=s.swap_rate_precision,b=g.fields.value;return 10n**BigInt(i)*BigInt(b)*BigInt(k)/(BigInt(h)*BigInt(w))}async maxSwapAmount(t){var n,g;const c=(u.isNative(t)?a.SuiPlatform.nativeTokenId(this.network,this.chain):t).toString(),o=await this.connection.getCoinMetadata({coinType:c});if(!o)throw new Error("metadata is null");const s=await this.getPackageId(),l=new a.Transaction;l.moveCall({target:`${s}::redeem::calculate_max_swap_amount_in`,arguments:[l.object(this.tokenBridgeRelayerObjectId),l.pure.u8(o.decimals)],typeArguments:[c]});const r=await this.connection.devInspectTransactionBlock({transactionBlock:l,sender:u.hex.encode(new Uint8Array(32))});if(!r.results||r.results.length==0||!((n=r.results[0])!=null&&n.returnValues)||((g=r.results[0])==null?void 0:g.returnValues.length)!==1)throw Error("swap rate not set");return u.bignum.decode(new Uint8Array(r.results[0].returnValues[0][0].toReversed()))}async nativeTokenAmount(t,e){var g,i;const o=(u.isNative(t)?a.SuiPlatform.nativeTokenId(this.network,this.chain):t).toString(),s=await this.connection.getCoinMetadata({coinType:o});if(!s)throw new Error("metadata is null");const l=await this.getPackageId(),r=new a.Transaction;r.moveCall({target:`${l}::redeem::calculate_native_swap_amount_out`,arguments:[r.object(this.tokenBridgeRelayerObjectId),r.pure.u64(e),r.pure.u8(s.decimals)],typeArguments:[o]});const n=await this.connection.devInspectTransactionBlock({transactionBlock:r,sender:u.hex.encode(new Uint8Array(32))});if(!n.results||n.results.length==0||!((g=n.results[0])!=null&&g.returnValues)||((i=n.results[0])==null?void 0:i.returnValues.length)!==1)throw Error("swap rate not set");return u.bignum.decode(new Uint8Array(n.results[0].returnValues[0][0].toReversed()))}async getRegisteredTokens(){const e=(await this.getFields()).registered_tokens.fields.id.id;return(await this.connection.getDynamicFields({parentId:e})).data.map(s=>{const{address:l,module:r,name:n}=f.parseStructTag(s.objectType);return new f.SuiAddress([l,r,n].join(f.SUI_SEPARATOR))})}async isRegisteredToken(t){const e=new f.SuiAddress(u.isNative(t)?a.SuiPlatform.nativeTokenId(this.network,this.chain).address:t).unwrap();try{return await this.getTokenInfo(e)!==null}catch(c){console.error(c)}return!1}async getTokenInfo(t){var n;const e=await this.getFields(),o=new f.SuiAddress(e.registered_tokens.type).getPackageId(),s=e.registered_tokens.fields.id.id,l=new f.SuiAddress(t),r=a.isSameType(f.SUI_COIN,l.unwrap())?f.SUI_COIN:l.getCoinType();try{const g=await this.connection.getDynamicFieldObject({parentId:s,name:{type:`${o}::registered_tokens::Key<${r}>`,value:{dummy_field:!1}}});if(g.error)throw new Error("Failed to get token info: "+JSON.stringify(g.error));if(!g.data||!g.data.content)throw new Error("Failed to get token info: "+JSON.stringify(g));const{content:i}=g.data;return a.isMoveStructStruct(i)&&a.isMoveStructStruct(i.fields.value)?i.fields.value.fields:null}catch(g){if((g==null?void 0:g.code)===-32e3&&((n=g.message)!=null&&n.includes("RPC Error")))return console.error(g),null;throw g}}async getFields(){if(!this.fields){const t=await a.getObjectFields(this.connection,this.tokenBridgeRelayerObjectId);if(t===null)throw new Error("Failed to get fields from token bridge relayer state");this.fields=t}return this.fields}async getPackageId(){const t=await this.getFields();return new f.SuiAddress(t.registered_tokens.type).getPackageId()}async getPackageIds(){const[t,e]=await Promise.all([a.getPackageId(this.connection,this.coreBridgeObjectId),a.getPackageId(this.connection,this.tokenBridgeObjectId)]);return{coreBridge:t,tokenBridge:e}}createUnsignedTx(t,e,c=!1){return new P.SuiUnsignedTransaction(t,this.network,this.chain,e,c)}}U.registerProtocol("Sui","TokenBridge",B);U.registerProtocol("Sui","AutomaticTokenBridge",O);exports.SuiAutomaticTokenBridge=O;exports.SuiTokenBridge=B;exports.getTokenCoinType=C;exports.getTokenFromTokenRegistry=A;
|
|
1
|
+
"use strict";var M=Object.defineProperty;var R=(I,t,e)=>t in I?M(I,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):I[t]=e;var m=(I,t,e)=>R(I,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./platform-D7pe3gG2.js"),f=require("./address-D8qNQEOW.js");require("./index-BAjc-UZH.js");const u=require("./address-DnSRsubO.js"),P=require("./unsignedTransaction-DzSLsK-p.js"),U=require("./chain-Cio41-Lr.js"),A=async(I,t,e)=>{var l,r,n;if(!f.isValidSuiType(e))throw new Error(`Invalid Sui type: ${e}`);const c=await a.getObjectFields(I,t);if(!c)throw new Error(`Unable to fetch object fields from token bridge state. Object ID: ${t}`);const o=(r=(l=c.token_registry.fields)==null?void 0:l.id)==null?void 0:r.id;if(!o)throw new Error("Unable to fetch token registry object ID");const s=f.getPackageIdFromType((n=c.token_registry)==null?void 0:n.type);if(!s)throw new Error("Unable to fetch token registry package ID");return I.getDynamicFieldObject({parentId:o,name:{type:`${s}::token_registry::Key<${e}>`,value:{dummy_field:!1}}})},C=async(I,t,e,c)=>{var i,h,w,k;const o=await a.getObjectFields(I,t);if(!o)throw new Error("Unable to fetch object fields from token bridge state");const s=(h=(i=o.token_registry)==null?void 0:i.fields)==null?void 0:h.coin_types,l=(k=(w=s==null?void 0:s.fields)==null?void 0:w.id)==null?void 0:k.id;if(!l)throw new Error("Unable to fetch coin types");const r=f.getTableKeyType(s==null?void 0:s.type);if(!r)throw new Error("Unable to get key type");const n=await I.getDynamicFieldObject({parentId:l,name:{type:r,value:{addr:[...e],chain:c}}});if(n.error){if(n.error.code==="dynamicFieldNotFound")return null;throw new Error(`Unexpected getDynamicFieldObject response ${n.error}`)}const g=a.getFieldsFromObjectResponse(n);if(!g)return null;if(!a.isMoveStructObject(g))throw new Error("What?");return"value"in g?f.trimSuiType(g.value):null};class B{constructor(t,e,c,o){m(this,"network");m(this,"chain");m(this,"provider");m(this,"contracts");m(this,"coreBridgeObjectId");m(this,"tokenBridgeObjectId");m(this,"chainId");this.network=t,this.chain=e,this.provider=c,this.contracts=o,this.chainId=u.networkChainToNativeChainId.get(t,e);const s=this.contracts.tokenBridge;if(!s)throw new Error(`Wormhole Token Bridge contract for domain ${e} not found`);const l=this.contracts.coreBridge;if(!l)throw new Error(`Wormhole Token Bridge contract for domain ${e} not found`);this.tokenBridgeObjectId=s,this.coreBridgeObjectId=l}static async fromRpc(t,e){const[c,o]=await a.SuiPlatform.chainFromRpc(t),s=e[o];if(s.network!==c)throw new Error(`Network mismatch: ${s.network} != ${c}`);return new B(c,o,t,s.contracts)}async isWrappedAsset(t){try{return await this.getOriginalAsset(t),!0}catch{return!1}}async getOriginalAsset(t){let e=t.getCoinType();if(!f.isValidSuiType(e))throw new Error(`Invalid Sui type: ${e}`);const c=await A(this.provider,this.tokenBridgeObjectId,e),o=a.getFieldsFromObjectResponse(c);if(!o)throw u.ErrNotWrapped(e);if(!a.isMoveStructObject(o))throw new Error("Expected fields to be a MoveStruct");if(!("value"in o))throw new Error("Expected a `value` key in fields of MoveStruct");const s=o.value;if(!a.isMoveStructStruct(s))throw new Error("Expected fields to be a MoveStruct");const l=f.trimSuiType(s.type);if(e=f.trimSuiType(e),l.includes(`wrapped_asset::WrappedAsset<${e}>`)){const r=s.fields.info;if(!a.isMoveStructStruct(r))throw new Error("Expected fields to be a MoveStruct");const n=r.fields.token_address;if(!a.isMoveStructStruct(n))throw new Error("Expected fields to be a MoveStruct");if(!a.isMoveStructObject(n.fields))throw new Error("Expected address data to be a MoveObject");if(!("value"in n.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const g=n.fields.value;if(!a.isMoveStructStruct(g))throw new Error("Expected fields to be a MoveStruct");const i=new Uint8Array(g.fields.data);return{chain:u.toChain(Number(r.fields.token_chain)),address:new u.UniversalAddress(i)}}throw u.ErrNotWrapped(e)}async getTokenUniversalAddress(t){let e=t.getCoinType();if(!f.isValidSuiType(e))throw new Error(`Invalid Sui type: ${e}`);const c=await A(this.provider,this.tokenBridgeObjectId,e),o=a.getFieldsFromObjectResponse(c);if(!o)throw new Error(`Token of type ${e} has not been registered with the token bridge. Has it been attested?`);if(!a.isMoveStructObject(o))throw new Error("Expected fields to be a MoveStruct");if(!("value"in o))throw new Error("Expected a `value` key in fields of MoveStruct");const s=o.value;if(!a.isMoveStructStruct(s))throw new Error("Expected fields to be a MoveStruct");const l=f.trimSuiType(s.type);if(e=f.trimSuiType(e),l.includes(`native_asset::NativeAsset<${e}>`)){const r=s.fields.token_address;if(!a.isMoveStructStruct(r))throw new Error("Expected fields to be a MoveStruct");if(!("value"in r.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const n=r.fields.value;if(!a.isMoveStructStruct(n))throw new Error("Expected fields to be a MoveStruct");const g=new Uint8Array(n.fields.data);return new u.UniversalAddress(g)}throw new Error(`Token of type ${e} is not a native asset`)}async getTokenNativeAddress(t,e){const c=await C(this.provider,this.tokenBridgeObjectId,e.toUint8Array(),u.toChainId(t));if(!c)throw new Error(`Token ${e.toString()} not found in token registry`);return new f.SuiAddress(c)}async hasWrappedAsset(t){try{return await this.getWrappedAsset(t),!0}catch{}return!1}async getWrappedAsset(t){if(u.isNative(t.address))throw new Error("Token Address required, 'native' literal not supported");const e=await C(this.provider,this.tokenBridgeObjectId,t.address.toUniversalAddress().toUint8Array(),u.toChainId(t.chain));if(!e)throw u.ErrNotWrapped(u.canonicalAddress(t));return u.toNative(this.chain,e)}async isTransferCompleted(t){var r,n,g,i,h,w,k,b;const e=await a.getObjectFields(this.provider,this.tokenBridgeObjectId);if(!e)throw new Error("Unable to fetch object fields from token bridge state");const c=(n=(r=e.consumed_vaas)==null?void 0:r.fields)==null?void 0:n.hashes,o=f.getTableKeyType((i=(g=c==null?void 0:c.fields)==null?void 0:g.items)==null?void 0:i.type);if(!o)throw new Error("Unable to get key type");const s=(b=(k=(w=(h=c==null?void 0:c.fields)==null?void 0:h.items)==null?void 0:w.fields)==null?void 0:k.id)==null?void 0:b.id;if(!s)throw new Error("Unable to fetch consumed VAAs table");const l=await this.provider.getDynamicFieldObject({parentId:s,name:{type:o,value:{data:[...u.keccak_256(t.hash)]}}});if(!l.error)return!0;if(l.error.code==="dynamicFieldNotFound")return!1;throw new Error(`Unexpected getDynamicFieldObject response ${l.error}`)}async*createAttestation(t){const e=0n,o=t.toString(),s=await this.provider.getCoinMetadata({coinType:o});if(s===null||s.id===null)throw new Error(`Coin metadata ID for type ${o} not found`);const[l,r]=await this.getPackageIds(),n=new a.Transaction,[g]=n.splitCoins(n.gas,[n.pure.u64(e)]),[i]=n.moveCall({target:`${r}::attest_token::attest_token`,arguments:[n.object(this.tokenBridgeObjectId),n.object(s.id),n.pure.u32(0)],typeArguments:[o]});n.moveCall({target:`${l}::publish_message::publish_message`,arguments:[n.object(this.coreBridgeObjectId),g,i,n.object(a.SUI_CLOCK_OBJECT_ID)]}),yield this.createUnsignedTx(n,"Sui.TokenBridge.CreateAttestation")}async*submitAttestation(t,e){const[c,o]=await this.getPackageIds(),s=e.toString(),l=Math.min(t.payload.decimals,8),r=await this.getCoinBuildOutput(c,o,l),n=await a.publishPackage(r,s);yield this.createUnsignedTx(n,"Sui.TokenBridge.PrepareCreateWrapped");let g="",i="",h="",w="",k="",b=!1;for(;!b;){await new Promise(y=>setTimeout(y,500));const j=await this.provider.queryTransactionBlocks({filter:{FromAddress:s},options:{showObjectChanges:!0},limit:3});for(const y of j.data)if("objectChanges"in y){for(const p of y.objectChanges)a.isSuiPublishEvent(p)&&p.packageId!==void 0?g=p.packageId:a.isSuiCreateEvent(p)&&p.objectType.includes("WrappedAssetSetup")?(i=p.objectId,k=p.objectType.split(", ")[1].replace(">","")):a.isSuiCreateEvent(p)&&p.objectType.includes("UpgradeCap")?h=p.objectId:a.isSuiCreateEvent(p)&&p.objectType.includes("CoinMetadata")&&(w=p.objectId);if(g!==""&&i!==""&&h!==""&&w!==""){b=!0;break}else g="",i="",h="",w=""}}const v=f.getCoinTypeFromPackageId(g),d=new a.Transaction,[_]=d.moveCall({target:`${c}::vaa::parse_and_verify`,arguments:[d.object(this.coreBridgeObjectId),d.pure.vector("u8",u.serialize(t)),d.object(a.SUI_CLOCK_OBJECT_ID)]}),[S]=d.moveCall({target:`${o}::vaa::verify_only_once`,arguments:[d.object(this.tokenBridgeObjectId),_]});d.moveCall({target:`${o}::create_wrapped::complete_registration`,arguments:[d.object(this.tokenBridgeObjectId),d.object(w),d.object(i),d.object(h),S],typeArguments:[v,k]}),yield this.createUnsignedTx(d,"Sui.TokenBridge.SubmitAttestation")}async*transfer(t,e,c,o,s){const l=0n,r=0n,g=t.toString(),i=(u.isNative(c)?a.SUI_TYPE_ARG:c).toString(),h=await a.SuiPlatform.getCoins(this.provider,t,i),[w,...k]=h.filter(y=>a.isSameType(y.coinType,i));if(w===void 0)throw new Error(`Coins array doesn't contain any coins of type ${i}`);const[b,v]=await this.getPackageIds(),d=new a.Transaction,[_]=(()=>{if(i===a.SUI_TYPE_ARG)return d.splitCoins(d.gas,[d.pure.u64(o)]);{const y=d.object(w.coinObjectId);return k.length&&d.mergeCoins(y,k.map(p=>d.object(p.coinObjectId))),d.splitCoins(y,[d.pure.u64(o)])}})(),[S]=d.splitCoins(d.gas,[d.pure.u64(l)]),[j]=d.moveCall({target:`${v}::state::verified_asset`,arguments:[d.object(this.tokenBridgeObjectId)],typeArguments:[i]});if(s){if(!g)throw new Error("senderAddress is required for transfer with payload");let y=!1;const p=await(async()=>{const E=await a.getOldestEmitterCapObjectId(this.provider,b,g);if(E!==null)return d.object(E);{const[F]=d.moveCall({target:`${b}::emitter::new`,arguments:[d.object(this.coreBridgeObjectId)]});return y=!0,F}})(),[T,$]=d.moveCall({target:`${v}::transfer_tokens_with_payload::prepare_transfer`,arguments:[p,j,_,d.pure.u16(u.toChainId(e.chain)),d.pure.vector("u8",e.address.toUint8Array()),d.pure.vector("u8",s),d.pure.u32(0)],typeArguments:[i]});d.moveCall({target:`${v}::coin_utils::return_nonzero`,arguments:[$],typeArguments:[i]});const[x]=d.moveCall({target:`${v}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[d.object(this.tokenBridgeObjectId),T],typeArguments:[i]});d.moveCall({target:`${b}::publish_message::publish_message`,arguments:[d.object(this.coreBridgeObjectId),S,x,d.object(a.SUI_CLOCK_OBJECT_ID)]}),y&&d.transferObjects([p],d.pure.address(g)),yield this.createUnsignedTx(d,"Sui.TokenBridge.TransferWithPayload")}else{const[y,p]=d.moveCall({target:`${v}::transfer_tokens::prepare_transfer`,arguments:[j,_,d.pure.u16(u.toChainId(e.chain)),d.pure.vector("u8",e.address.toUint8Array()),d.pure.u64(r),d.pure.u32(0)],typeArguments:[i]});d.moveCall({target:`${v}::coin_utils::return_nonzero`,arguments:[p],typeArguments:[i]});const[T]=d.moveCall({target:`${v}::transfer_tokens::transfer_tokens`,arguments:[d.object(this.tokenBridgeObjectId),y],typeArguments:[i]});d.moveCall({target:`${b}::publish_message::publish_message`,arguments:[d.object(this.coreBridgeObjectId),S,T,d.object(a.SUI_CLOCK_OBJECT_ID)]}),yield this.createUnsignedTx(d,"Sui.TokenBridge.Transfer")}}async*redeem(t,e,c=!0){const o=await C(this.provider,this.tokenBridgeObjectId,e.payload.token.address.toUint8Array(),u.toChainId(e.payload.token.chain));if(!o)throw new Error("Unable to fetch token coinType");const[s,l]=await this.getPackageIds(),r=new a.Transaction,[n]=r.moveCall({target:`${s}::vaa::parse_and_verify`,arguments:[r.object(this.coreBridgeObjectId),r.pure.vector("u8",u.serialize(e)),r.object(a.SUI_CLOCK_OBJECT_ID)]}),[g]=r.moveCall({target:`${l}::vaa::verify_only_once`,arguments:[r.object(this.tokenBridgeObjectId),n]}),[i]=r.moveCall({target:`${l}::complete_transfer::authorize_transfer`,arguments:[r.object(this.tokenBridgeObjectId),g],typeArguments:[o]}),[h]=r.moveCall({target:`${l}::complete_transfer::redeem_relayer_payout`,arguments:[i],typeArguments:[o]});r.moveCall({target:`${l}::coin_utils::return_nonzero`,arguments:[h],typeArguments:[o]}),yield this.createUnsignedTx(r,"Sui.TokenBridge.Redeem")}async getWrappedNative(){return u.toNative(this.chain,a.SUI_TYPE_ARG)}async getPackageIds(){return Promise.all([a.getPackageId(this.provider,this.coreBridgeObjectId),a.getPackageId(this.provider,this.tokenBridgeObjectId)])}async getCoinBuildOutput(t,e,c){var r;if(c>8)throw new Error("Decimals is capped at 8");const o=(r=await a.getOriginalPackageId(this.provider,this.tokenBridgeObjectId))==null?void 0:r.replace("0x","");if(!o)throw new Error(`Original token bridge package ID not found for object ID ${this.tokenBridgeObjectId}`);const s="a11ceb0b060000000901000a020a14031e1704350405392d07669f01088502600ae502050cea02160004010b010c0205020d000002000201020003030c020001000104020700000700010001090801010c020a050600030803040202000302010702080007080100020800080303090002070801010b020209000901010608010105010b0202080008030209000504434f494e095478436f6e7465787408565f5f305f325f3011577261707065644173736574536574757004636f696e0e6372656174655f777261707065640b64756d6d795f6669656c6404696e697414707265706172655f726567697374726174696f6e0f7075626c69635f7472616e736665720673656e646572087472616e736665720a74785f636f6e746578740f76657273696f6e5f636f6e74726f6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"+o+"00020106010000000001090b0031"+c.toString(16).padStart(2,"0")+"0a0138000b012e110238010200";return{modules:[u.b64.encode(u.hex.decode(s))],dependencies:["0x1","0x2",e,t].map(n=>f.normalizeSuiObjectId(n))}}createUnsignedTx(t,e,c=!1){return new P.SuiUnsignedTransaction(t,this.network,this.chain,e,c)}}class O{constructor(t,e,c,o){m(this,"network");m(this,"chain");m(this,"connection");m(this,"contracts");m(this,"tokenBridgeRelayerObjectId");m(this,"coreBridgeObjectId");m(this,"tokenBridgeObjectId");m(this,"fields");this.network=t,this.chain=e,this.connection=c,this.contracts=o;const{tokenBridge:s,tokenBridgeRelayer:l,coreBridge:r}=o;if(!s||!l||!r)throw new Error(`Some object IDs for ${e} Automatic Token Bridge not found`);this.tokenBridgeRelayerObjectId=l,this.tokenBridgeObjectId=s,this.coreBridgeObjectId=r}static async fromRpc(t,e){const[c,o]=await a.SuiPlatform.chainFromRpc(t),s=e[o];if(s.network!==c)throw new Error(`Network mismatch for chain ${o}: ${s.network} != ${c}`);return new O(c,o,t,s.contracts)}async*transfer(t,e,c,o,s){const r=new f.SuiAddress(u.isNative(c)?a.SuiPlatform.nativeTokenId(this.network,this.chain).address:c).getCoinType(),{coreBridge:n,tokenBridge:g}=await this.getPackageIds(),i=new a.Transaction,h=BigInt(0),[w]=i.splitCoins(i.gas,[i.pure.u64(h)]),[k]=await(async()=>{if(u.isNative(c))return i.splitCoins(i.gas,[i.pure.u64(o)]);{const S=await a.SuiPlatform.getCoins(this.connection,t,r),[j,...y]=S.filter(T=>T.coinType===r);if(j===void 0)throw new Error(`Coins array doesn't contain any coins of type ${r}`);const p=i.object(j.coinObjectId);return y.length&&i.mergeCoins(p,y.map(T=>i.object(T.coinObjectId))),i.splitCoins(p,[i.pure.u64(o)])}})(),[b]=i.moveCall({target:`${g}::state::verified_asset`,arguments:[i.object(this.tokenBridgeObjectId)],typeArguments:[r]}),v=await this.getPackageId(),[d]=i.moveCall({target:`${v}::transfer::transfer_tokens_with_relay`,arguments:[i.object(this.tokenBridgeRelayerObjectId),k,b,i.pure.u64(s??0n),i.pure.u16(u.toChainId(e.chain)),i.pure.address(u.hex.encode(e.address.toUint8Array(),!0)),i.pure.u32(123)],typeArguments:[r]}),[_]=i.moveCall({target:`${g}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[i.object(this.tokenBridgeObjectId),d],typeArguments:[r]});i.moveCall({target:`${n}::publish_message::publish_message`,arguments:[i.object(this.coreBridgeObjectId),w,_,i.object(a.SUI_CLOCK_OBJECT_ID)]}),yield this.createUnsignedTx(i,"AutomaticTokenBridge.transfer")}async*redeem(t,e){const{coreBridge:c,tokenBridge:o}=await this.getPackageIds(),{address:s,chain:l}=e.payload.token,r=await C(this.connection,this.tokenBridgeObjectId,s.toUniversalAddress().toUint8Array(),u.toChainId(l));if(!r)throw new Error("Unable to fetch token coinType");const n=new a.Transaction,[g]=n.moveCall({target:`${c}::vaa::parse_and_verify`,arguments:[n.object(this.coreBridgeObjectId),n.pure.vector("u8",u.serialize(e)),n.object(a.SUI_CLOCK_OBJECT_ID)]}),[i]=n.moveCall({target:`${o}::vaa::verify_only_once`,arguments:[n.object(this.tokenBridgeObjectId),g]}),[h]=n.moveCall({target:`${o}::complete_transfer_with_payload::authorize_transfer`,arguments:[n.object(this.tokenBridgeObjectId),i],typeArguments:[r]}),w=await this.getPackageId();n.moveCall({target:`${w}::redeem::complete_transfer`,arguments:[n.object(this.tokenBridgeRelayerObjectId),h],typeArguments:[r]}),yield this.createUnsignedTx(n,"AutomaticTokenBridge.redeem")}async getRelayerFee(t,e){const c=u.isNative(e)?a.SuiPlatform.nativeTokenId(this.network,this.chain):e,o=await this.getTokenInfo(c.toString());if(o===null)throw new Error("Unsupported token for relay");const s=await this.getFields(),l=await this.connection.getDynamicFieldObject({parentId:this.tokenBridgeRelayerObjectId,name:{type:"vector<u8>",value:Array.from(u.bytes.encode("relayer_fees"))}});if(!l.data||!l.data.content)throw l.error?new Error("Failed to get relayer fees: "+JSON.stringify(l.error)):new Error("Unable to compute relayer fee");const{content:r}=l.data;if(!a.isMoveStructStruct(r)||!a.isMoveStructId(r.fields.id))throw new Error("Unable to compute relayer fee");const n=await this.connection.getDynamicFieldObject({parentId:r.fields.id.id,name:{type:"u16",value:u.toChainId(t)}});if(!n.data||!n.data.content)throw n.error?new Error("Failed to get relayer fees: "+JSON.stringify(l.error)):new Error("Unable to compute relayer fee");const{content:g}=n.data;if(!a.isMoveStructStruct(g))throw new Error("Unable to compute relayer fee");const i=await a.SuiPlatform.getDecimals(this.chain,this.connection,e.toString()),h=o.swap_rate,w=s.relayer_fee_precision,k=s.swap_rate_precision,b=g.fields.value;return 10n**BigInt(i)*BigInt(b)*BigInt(k)/(BigInt(h)*BigInt(w))}async maxSwapAmount(t){var n,g;const c=(u.isNative(t)?a.SuiPlatform.nativeTokenId(this.network,this.chain):t).toString(),o=await this.connection.getCoinMetadata({coinType:c});if(!o)throw new Error("metadata is null");const s=await this.getPackageId(),l=new a.Transaction;l.moveCall({target:`${s}::redeem::calculate_max_swap_amount_in`,arguments:[l.object(this.tokenBridgeRelayerObjectId),l.pure.u8(o.decimals)],typeArguments:[c]});const r=await this.connection.devInspectTransactionBlock({transactionBlock:l,sender:u.hex.encode(new Uint8Array(32))});if(!r.results||r.results.length==0||!((n=r.results[0])!=null&&n.returnValues)||((g=r.results[0])==null?void 0:g.returnValues.length)!==1)throw Error("swap rate not set");return u.bignum.decode(new Uint8Array(r.results[0].returnValues[0][0].toReversed()))}async nativeTokenAmount(t,e){var g,i;const o=(u.isNative(t)?a.SuiPlatform.nativeTokenId(this.network,this.chain):t).toString(),s=await this.connection.getCoinMetadata({coinType:o});if(!s)throw new Error("metadata is null");const l=await this.getPackageId(),r=new a.Transaction;r.moveCall({target:`${l}::redeem::calculate_native_swap_amount_out`,arguments:[r.object(this.tokenBridgeRelayerObjectId),r.pure.u64(e),r.pure.u8(s.decimals)],typeArguments:[o]});const n=await this.connection.devInspectTransactionBlock({transactionBlock:r,sender:u.hex.encode(new Uint8Array(32))});if(!n.results||n.results.length==0||!((g=n.results[0])!=null&&g.returnValues)||((i=n.results[0])==null?void 0:i.returnValues.length)!==1)throw Error("swap rate not set");return u.bignum.decode(new Uint8Array(n.results[0].returnValues[0][0].toReversed()))}async getRegisteredTokens(){const e=(await this.getFields()).registered_tokens.fields.id.id;return(await this.connection.getDynamicFields({parentId:e})).data.map(s=>{const{address:l,module:r,name:n}=f.parseStructTag(s.objectType);return new f.SuiAddress([l,r,n].join(f.SUI_SEPARATOR))})}async isRegisteredToken(t){const e=new f.SuiAddress(u.isNative(t)?a.SuiPlatform.nativeTokenId(this.network,this.chain).address:t).unwrap();try{return await this.getTokenInfo(e)!==null}catch(c){console.error(c)}return!1}async getTokenInfo(t){var n;const e=await this.getFields(),o=new f.SuiAddress(e.registered_tokens.type).getPackageId(),s=e.registered_tokens.fields.id.id,l=new f.SuiAddress(t),r=a.isSameType(f.SUI_COIN,l.unwrap())?f.SUI_COIN:l.getCoinType();try{const g=await this.connection.getDynamicFieldObject({parentId:s,name:{type:`${o}::registered_tokens::Key<${r}>`,value:{dummy_field:!1}}});if(g.error)throw new Error("Failed to get token info: "+JSON.stringify(g.error));if(!g.data||!g.data.content)throw new Error("Failed to get token info: "+JSON.stringify(g));const{content:i}=g.data;return a.isMoveStructStruct(i)&&a.isMoveStructStruct(i.fields.value)?i.fields.value.fields:null}catch(g){if((g==null?void 0:g.code)===-32e3&&((n=g.message)!=null&&n.includes("RPC Error")))return console.error(g),null;throw g}}async getFields(){if(!this.fields){const t=await a.getObjectFields(this.connection,this.tokenBridgeRelayerObjectId);if(t===null)throw new Error("Failed to get fields from token bridge relayer state");this.fields=t}return this.fields}async getPackageId(){const t=await this.getFields();return new f.SuiAddress(t.registered_tokens.type).getPackageId()}async getPackageIds(){const[t,e]=await Promise.all([a.getPackageId(this.connection,this.coreBridgeObjectId),a.getPackageId(this.connection,this.tokenBridgeObjectId)]);return{coreBridge:t,tokenBridge:e}}createUnsignedTx(t,e,c=!1){return new P.SuiUnsignedTransaction(t,this.network,this.chain,e,c)}}U.registerProtocol("Sui","TokenBridge",B);U.registerProtocol("Sui","AutomaticTokenBridge",O);exports.SuiAutomaticTokenBridge=O;exports.SuiTokenBridge=B;exports.getTokenCoinType=C;exports.getTokenFromTokenRegistry=A;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
var oe = Object.defineProperty;
|
|
2
2
|
var se = (m, t, e) => t in m ? oe(m, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : m[t] = e;
|
|
3
3
|
var h = (m, t, e) => se(m, typeof t != "symbol" ? t + "" : t, e);
|
|
4
|
-
import { g as F, e as N, i as $, b as I, f as b, T as _, a as C, p as ae, h as ie, j as R, S as M, k as Q, l as ce, m as x, n as de, o as le } from "./platform-
|
|
5
|
-
import { i as V, o as ge, q as X, r as S, S as O, u as ue, k as fe, v as pe, w as he, p as K } from "./address-
|
|
6
|
-
import "./index-
|
|
7
|
-
import { aF as we,
|
|
4
|
+
import { g as F, e as N, i as $, b as I, f as b, T as _, a as C, p as ae, h as ie, j as R, S as M, k as Q, l as ce, m as x, n as de, o as le } from "./platform-DTVt42uH.mjs";
|
|
5
|
+
import { i as V, o as ge, q as X, r as S, S as O, u as ue, k as fe, v as pe, w as he, p as K } from "./address-S7wMItHX.mjs";
|
|
6
|
+
import "./index-CofxOTyV.mjs";
|
|
7
|
+
import { aF as we, cP as D, _ as H, aA as ye, aP as j, k as v, v as me, a7 as G, aO as ke, N as W, a4 as be, a3 as U, $ as Ie, a0 as L } from "./address-DqsMcbcT.mjs";
|
|
8
8
|
import { S as Z } from "./unsignedTransaction-BD81leu1.mjs";
|
|
9
|
-
import { r as ee } from "./chain-
|
|
9
|
+
import { r as ee } from "./chain-DbmG-oEQ.mjs";
|
|
10
10
|
const Y = async (m, t, e) => {
|
|
11
11
|
var d, r, n;
|
|
12
12
|
if (!V(e))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./unsignedTransaction-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./unsignedTransaction-CIkLJt6N.js"),e=require("./address-DnSRsubO.js"),o=require("./web3-SO_UBSxv.js");class n extends Error{constructor(t){super(t)}}class u extends n{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}const i=e.struct([e.u32("mintAuthorityOption"),o.publicKey("mintAuthority"),o.u64("supply"),e.u8("decimals"),o.bool("isInitialized"),e.u32("freezeAuthorityOption"),o.publicKey("freezeAuthority")]);i.span;async function f(s,t,O=!1,c=r.TOKEN_PROGRAM_ID,A=r.ASSOCIATED_TOKEN_PROGRAM_ID){if(!O&&!e.PublicKey.isOnCurve(t.toBuffer()))throw new u;const[a]=await e.PublicKey.findProgramAddress([t.toBuffer(),c.toBuffer(),s.toBuffer()],A);return a}exports.ASSOCIATED_TOKEN_PROGRAM_ID=r.ASSOCIATED_TOKEN_PROGRAM_ID;exports.TOKEN_2022_PROGRAM_ID=r.TOKEN_2022_PROGRAM_ID;exports.TOKEN_PROGRAM_ID=r.TOKEN_PROGRAM_ID;exports.MintLayout=i;exports.TokenError=n;exports.TokenOwnerOffCurveError=u;exports.getAssociatedTokenAddress=f;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
var T = Object.defineProperty;
|
|
2
2
|
var l = (i, t, e) => t in i ? T(i, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[t] = e;
|
|
3
3
|
var s = (i, t, e) => l(i, typeof t != "symbol" ? t + "" : t, e);
|
|
4
|
-
import { J as p, aF as m, v as g, aR as d, aP as y, aU as o, N as f, aV as u, aW as b } from "./address-
|
|
5
|
-
import { EvmWormholeCore as v } from "./index-
|
|
6
|
-
import { C } from "./contract-
|
|
7
|
-
import { E as h } from "./platform-
|
|
4
|
+
import { J as p, aF as m, v as g, aR as d, aP as y, aU as o, N as f, aV as u, aW as b } from "./address-DqsMcbcT.mjs";
|
|
5
|
+
import { EvmWormholeCore as v } from "./index-S_O9ybUy.mjs";
|
|
6
|
+
import { C } from "./contract-DrK81GRi.mjs";
|
|
7
|
+
import { E as h } from "./platform-CB3TPh7I.mjs";
|
|
8
8
|
import { E as k } from "./unsignedTransaction-C0V0UbsS.mjs";
|
|
9
|
-
import { r as A } from "./chain-
|
|
9
|
+
import { r as A } from "./chain-DbmG-oEQ.mjs";
|
|
10
10
|
class c {
|
|
11
11
|
constructor(t, e, a, n) {
|
|
12
12
|
s(this, "network");
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { d as R, a as sa, X as Wl, g as oa, aX as L, ae as Hl, b2 as Jl } from "./address-
|
|
1
|
+
import { d as R, a as sa, X as Wl, g as oa, aX as L, ae as Hl, b2 as Jl } from "./address-DqsMcbcT.mjs";
|
|
2
2
|
import { d as Gl } from "./dijkstra-BZM-8g-B.mjs";
|
|
3
|
-
import { q as He, z as Yl, A as Ye, y as aa } from "./index-
|
|
4
|
-
import { c as I } from "./index-
|
|
5
|
-
import { r as Ql, a as It, g as xt, i as qe, b as ni, I as Rt, f as Ce, t as fe, w as Hi, c as Si, C as Xl, d as Zl, e as ns, h as eu, j as tu, k as vn, p as ru, l as wn, A as iu, E as pe, m as nu, y as be, P as ss, Q as su, n as ou, T as ca, o as _n, q as bn, s as Qe, _ as au, u as vt } from "./index-
|
|
6
|
-
import { s as la, a as Re, h as ua, L as cu, d as nr, l as lu, e as Ii, g as uu, i as os, k as hu } from "./index-
|
|
3
|
+
import { q as He, z as Yl, A as Ye, y as aa } from "./index-DvozGHS-.mjs";
|
|
4
|
+
import { c as I } from "./index-98w8rrCe.mjs";
|
|
5
|
+
import { r as Ql, a as It, g as xt, i as qe, b as ni, I as Rt, f as Ce, t as fe, w as Hi, c as Si, C as Xl, d as Zl, e as ns, h as eu, j as tu, k as vn, p as ru, l as wn, A as iu, E as pe, m as nu, y as be, P as ss, Q as su, n as ou, T as ca, o as _n, q as bn, s as Qe, _ as au, u as vt } from "./index-D0tl0B36.mjs";
|
|
6
|
+
import { s as la, a as Re, h as ua, L as cu, d as nr, l as lu, e as Ii, g as uu, i as os, k as hu } from "./index-9dr91dtY.mjs";
|
|
7
7
|
let du = class extends Ql {
|
|
8
8
|
constructor(e) {
|
|
9
9
|
super(e), this.events = new He.EventEmitter(), this.hasRegisteredEventListeners = !1, this.connection = this.setConnection(e), this.connection.connected && this.registerEventListeners();
|