@halliday-sdk/payments 2.7.4 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/paymentsApiClient/index.cjs.min.js +1 -1
- package/dist/paymentsApiClient/index.cjs.min.js.map +1 -1
- package/dist/paymentsApiClient/index.d.ts +3 -0
- package/dist/paymentsApiClient/index.esm.min.js +1 -1
- package/dist/paymentsApiClient/index.esm.min.js.map +1 -1
- package/dist/paymentsWidget/ethers/index.cjs.min.js.map +1 -1
- package/dist/paymentsWidget/ethers/index.esm.min.js.map +1 -1
- package/dist/paymentsWidget/ethers/index.umd.min.js.map +1 -1
- package/dist/paymentsWidget/index.cjs.min.js +1 -1
- package/dist/paymentsWidget/index.cjs.min.js.map +1 -1
- package/dist/paymentsWidget/index.d.ts +41 -5
- package/dist/paymentsWidget/index.esm.min.js +1 -1
- package/dist/paymentsWidget/index.esm.min.js.map +1 -1
- package/dist/paymentsWidget/index.umd.min.js +1 -1
- package/dist/paymentsWidget/index.umd.min.js.map +1 -1
- package/dist/paymentsWidget/viem/index.cjs.min.js +1 -1
- package/dist/paymentsWidget/viem/index.cjs.min.js.map +1 -1
- package/dist/paymentsWidget/viem/index.esm.min.js +1 -1
- package/dist/paymentsWidget/viem/index.esm.min.js.map +1 -1
- package/dist/paymentsWidget/viem/index.umd.min.js +1 -1
- package/dist/paymentsWidget/viem/index.umd.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var a=require("viem");const t=a=>({blockExplorers:{default:{name:a.network,url:a.explorer??""}},id:Number(a.chain_id),name:a.network,nativeCurrency:a.native_currency,rpcUrls:{default:{http:[a.rpc??""]}}}),n=async(a,n,r)=>{try{await n.switchChain({id:a})}catch(e){if(console.error("Error switching chain",e),!r)throw e;try{await(async(a,n)=>{const r=t(n);r&&await a.addChain({chain:r})})(n,r),await n.switchChain({id:a})}catch(a){throw console.error("Error adding chain",a),a}}},r=async({walletClient:n,transaction:r,chainConfig:e})=>{const i=a.createPublicClient({chain:t(e),transport:a.http(e.rpc)}),c=await n.sendTransaction(((a,n)=>({account:a.from,to:a.to,value:a.value,data:a.data,gas:a.gasLimit,nonce:a.nonce,chain:t(n)}))(r,e));return await i.waitForTransactionReceipt({hash:c})};exports.connectWalletClient=a=>{const t=async()=>{const t=a(),n=await t.getAddresses();return n
|
|
1
|
+
"use strict";var a=require("viem");const t=a=>({blockExplorers:{default:{name:a.network,url:a.explorer??""}},id:Number(a.chain_id),name:a.network,nativeCurrency:a.native_currency,rpcUrls:{default:{http:[a.rpc??""]}}}),n=async(a,n,r)=>{try{await n.switchChain({id:a})}catch(e){if(console.error("Error switching chain",e),!r)throw e;try{await(async(a,n)=>{const r=t(n);r&&await a.addChain({chain:r})})(n,r),await n.switchChain({id:a})}catch(a){throw console.error("Error adding chain",a),a}}},r=async({walletClient:n,transaction:r,chainConfig:e})=>{const i=a.createPublicClient({chain:t(e),transport:a.http(e.rpc)}),c=await n.sendTransaction(((a,n)=>({account:a.from,to:a.to,value:a.value,data:a.data,gas:a.gasLimit,nonce:a.nonce,chain:t(n)}))(r,e));return await i.waitForTransactionReceipt({hash:c})};exports.connectWalletClient=a=>{const t=async()=>{const t=a(),n=(await t.getAddresses())[0];if(void 0===n)throw new Error("No address found in wallet client");return n};return{getAddress:t,signMessage:async({message:t,ownerAddress:n})=>{const r=a();return await r.signMessage({account:n,message:t})},sendTransaction:async(e,i)=>{let c=a();const s=await t();e.from=s;const o=await c.getChainId();BigInt(i.chain_id)!==BigInt(o)&&(await n(Number(i.chain_id),c,i),c=a());const d=await r({walletClient:c,transaction:e,chainConfig:i});return{transactionHash:(h=d).transactionHash,blockHash:h.blockHash,blockNumber:Number(h.blockNumber),from:h.from,to:h.to||void 0,rawReceipt:h};var h},signTypedData:async({typedData:t,ownerAddress:n})=>{const r=a(),e=JSON.parse(t);return await r.signTypedData({account:n,...e})}}};
|
|
2
2
|
//# sourceMappingURL=index.cjs.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.min.js","sources":["../../../../_shared/utils/viemWalletUtils.ts","../../../src/paymentsWidget/viem/index.ts"],"sourcesContent":["import { WalletClient, SendTransactionParameters, Chain, createPublicClient, http, TransactionReceipt } from \"viem\";\n\nimport { EVMChainConfig, TransactionRequest } from \"../types\";\n\nconst getChainFromChainConfig = (chainConfig: EVMChainConfig): Chain => {\n return {\n blockExplorers: {\n default: { name: chainConfig.network, url: chainConfig.explorer ?? \"\" },\n },\n id: Number(chainConfig.chain_id),\n name: chainConfig.network,\n nativeCurrency: chainConfig.native_currency,\n rpcUrls: {\n default: { http: [chainConfig.rpc ?? \"\"] },\n },\n };\n};\n\nconst getSendTransactionParametersFromTransactionRequest = (\n transaction: TransactionRequest,\n chainConfig: EVMChainConfig\n): SendTransactionParameters => {\n return {\n account: transaction.from as `0x${string}`,\n to: transaction.to as `0x${string}`,\n value: transaction.value,\n data: transaction.data as `0x${string}`,\n gas: transaction.gasLimit,\n nonce: transaction.nonce,\n chain: getChainFromChainConfig(chainConfig),\n };\n};\n\nexport const addChain = async (wallet: WalletClient, chainConfig: EVMChainConfig) => {\n const chain = getChainFromChainConfig(chainConfig);\n if (chain) {\n await wallet.addChain({ chain });\n }\n};\n\nexport const switchChain = async (chainId: number, wallet: WalletClient, chainConfig?: EVMChainConfig) => {\n try {\n await wallet.switchChain({ id: chainId });\n } catch (switchError) {\n console.error(\"Error switching chain\", switchError);\n if (!chainConfig) {\n throw switchError;\n }\n\n try {\n // Add the chain to the wallet and try again\n await addChain(wallet, chainConfig);\n await wallet.switchChain({ id: chainId });\n } catch (addChainError) {\n console.error(\"Error adding chain\", addChainError);\n throw addChainError;\n }\n }\n};\n\nexport const sendTransaction = async ({\n walletClient,\n transaction,\n chainConfig,\n}: {\n walletClient: WalletClient;\n transaction: TransactionRequest;\n chainConfig: EVMChainConfig;\n}): Promise<TransactionReceipt> => {\n const publicClient = createPublicClient({\n chain: getChainFromChainConfig(chainConfig),\n transport: http(chainConfig.rpc),\n });\n const txHash = await walletClient.sendTransaction(\n getSendTransactionParametersFromTransactionRequest(transaction, chainConfig)\n );\n return await publicClient.waitForTransactionReceipt({ hash: txHash });\n};\n","import { TransactionReceipt as ViemTransactionReceipt, WalletClient } from \"viem\";\nimport type { WalletClient as ViemWalletClient } from \"viem\";\n\nimport { sendTransaction as _sendTransaction, switchChain } from \"@shared/utils/viemWalletUtils\";\nimport type {
|
|
1
|
+
{"version":3,"file":"index.cjs.min.js","sources":["../../../../_shared/utils/viemWalletUtils.ts","../../../src/paymentsWidget/viem/index.ts"],"sourcesContent":["import { WalletClient, SendTransactionParameters, Chain, createPublicClient, http, TransactionReceipt } from \"viem\";\n\nimport { EVMChainConfig, TransactionRequest } from \"../types\";\n\nconst getChainFromChainConfig = (chainConfig: EVMChainConfig): Chain => {\n return {\n blockExplorers: {\n default: { name: chainConfig.network, url: chainConfig.explorer ?? \"\" },\n },\n id: Number(chainConfig.chain_id),\n name: chainConfig.network,\n nativeCurrency: chainConfig.native_currency,\n rpcUrls: {\n default: { http: [chainConfig.rpc ?? \"\"] },\n },\n };\n};\n\nconst getSendTransactionParametersFromTransactionRequest = (\n transaction: TransactionRequest,\n chainConfig: EVMChainConfig\n): SendTransactionParameters => {\n return {\n account: transaction.from as `0x${string}`,\n to: transaction.to as `0x${string}`,\n value: transaction.value,\n data: transaction.data as `0x${string}`,\n gas: transaction.gasLimit,\n nonce: transaction.nonce,\n chain: getChainFromChainConfig(chainConfig),\n };\n};\n\nexport const addChain = async (wallet: WalletClient, chainConfig: EVMChainConfig) => {\n const chain = getChainFromChainConfig(chainConfig);\n if (chain) {\n await wallet.addChain({ chain });\n }\n};\n\nexport const switchChain = async (chainId: number, wallet: WalletClient, chainConfig?: EVMChainConfig) => {\n try {\n await wallet.switchChain({ id: chainId });\n } catch (switchError) {\n console.error(\"Error switching chain\", switchError);\n if (!chainConfig) {\n throw switchError;\n }\n\n try {\n // Add the chain to the wallet and try again\n await addChain(wallet, chainConfig);\n await wallet.switchChain({ id: chainId });\n } catch (addChainError) {\n console.error(\"Error adding chain\", addChainError);\n throw addChainError;\n }\n }\n};\n\nexport const sendTransaction = async ({\n walletClient,\n transaction,\n chainConfig,\n}: {\n walletClient: WalletClient;\n transaction: TransactionRequest;\n chainConfig: EVMChainConfig;\n}): Promise<TransactionReceipt> => {\n const publicClient = createPublicClient({\n chain: getChainFromChainConfig(chainConfig),\n transport: http(chainConfig.rpc),\n });\n const txHash = await walletClient.sendTransaction(\n getSendTransactionParametersFromTransactionRequest(transaction, chainConfig)\n );\n return await publicClient.waitForTransactionReceipt({ hash: txHash });\n};\n","import { TransactionReceipt as ViemTransactionReceipt, WalletClient } from \"viem\";\nimport type { WalletClient as ViemWalletClient } from \"viem\";\n\nimport { sendTransaction as _sendTransaction, switchChain } from \"@shared/utils/viemWalletUtils\";\nimport type { TransactionReceipt } from \"@shared/types\";\n\nimport type { SignMessage, SendTransaction, SignTypedData, WalletActionsType } from \"../types\";\n\n/**\n * Get the transaction receipt from the ethers transaction receipt.\n *\n * @param {ViemTransactionReceipt} txReceipt The viem transaction receipt.\n * @returns {TransactionReceipt} The transaction receipt.\n */\nconst _getTransactionReceipt = (txReceipt: ViemTransactionReceipt): TransactionReceipt => {\n return {\n transactionHash: txReceipt.transactionHash,\n blockHash: txReceipt.blockHash,\n blockNumber: Number(txReceipt.blockNumber),\n from: txReceipt.from,\n to: txReceipt.to || undefined,\n rawReceipt: txReceipt,\n };\n};\n\n/**\n * Connect to a wallet.\n *\n * @param {WalletClient} wallet {{@link WalletClient}} The viem wallet client.\n * @returns {function} ``getAddress`` {function} Function that returns the addresse of the wallet.\n * @returns {function} ``signMessage`` {{@link SignMessage}} Function that signs a message.\n * @returns {function} ``sendTransaction`` {{@link SendTransaction}} Function that sends an EVM transaction.\n */\nexport const connectWalletClient = (getClientWallet: () => ViemWalletClient): Required<WalletActionsType> => {\n // return the first address of the wallet\n const getAddress = async () => {\n const walletClient = getClientWallet();\n const addresses = await walletClient.getAddresses();\n const address = addresses[0];\n if (address === undefined) throw new Error(\"No address found in wallet client\");\n return address;\n };\n\n const signMessage: SignMessage = async ({ message, ownerAddress }) => {\n const walletClient = getClientWallet();\n const signature = await walletClient.signMessage({\n account: ownerAddress as `0x${string}`,\n message,\n });\n return signature;\n };\n\n const sendTransaction: SendTransaction = async (transaction, chainConfig) => {\n let walletClient = getClientWallet();\n\n const address = await getAddress();\n transaction.from = address;\n\n const currentChain = await walletClient.getChainId();\n\n if (BigInt(chainConfig.chain_id) !== BigInt(currentChain)) {\n await switchChain(Number(chainConfig.chain_id), walletClient, chainConfig);\n walletClient = getClientWallet();\n }\n\n const viemTxReceipt = await _sendTransaction({ walletClient, transaction, chainConfig });\n return _getTransactionReceipt(viemTxReceipt);\n };\n\n const signTypedData: SignTypedData = async ({ typedData, ownerAddress }) => {\n const walletClient = getClientWallet();\n\n const typedDataObject = JSON.parse(typedData);\n const signature = await walletClient.signTypedData({\n account: ownerAddress as `0x${string}`,\n ...typedDataObject,\n });\n return signature;\n };\n\n return { getAddress, signMessage, sendTransaction, signTypedData };\n};\n"],"names":["getChainFromChainConfig","chainConfig","blockExplorers","default","name","network","url","explorer","id","Number","chain_id","nativeCurrency","native_currency","rpcUrls","http","rpc","switchChain","async","chainId","wallet","switchError","console","error","chain","addChain","addChainError","sendTransaction","walletClient","transaction","publicClient","createPublicClient","transport","txHash","account","from","to","value","data","gas","gasLimit","nonce","getSendTransactionParametersFromTransactionRequest","waitForTransactionReceipt","hash","getClientWallet","getAddress","address","getAddresses","undefined","Error","signMessage","message","ownerAddress","currentChain","getChainId","BigInt","viemTxReceipt","_sendTransaction","transactionHash","txReceipt","blockHash","blockNumber","rawReceipt","signTypedData","typedData","typedDataObject","JSON","parse"],"mappings":"mCAIA,MAAMA,EAA2BC,IACtB,CACHC,eAAgB,CACZC,QAAS,CAAEC,KAAMH,EAAYI,QAASC,IAAKL,EAAYM,UAAY,KAEvEC,GAAIC,OAAOR,EAAYS,UACvBN,KAAMH,EAAYI,QAClBM,eAAgBV,EAAYW,gBAC5BC,QAAS,CACLV,QAAS,CAAEW,KAAM,CAACb,EAAYc,KAAO,QA2BpCC,EAAcC,MAAOC,EAAiBC,EAAsBlB,KACrE,UACUkB,EAAOH,YAAY,CAAER,GAAIU,IACjC,MAAOE,GAEL,GADAC,QAAQC,MAAM,wBAAyBF,IAClCnB,EACD,MAAMmB,EAGV,SAhBgBH,OAAOE,EAAsBlB,KACjD,MAAMsB,EAAQvB,EAAwBC,GAClCsB,SACMJ,EAAOK,SAAS,CAAED,WAedC,CAASL,EAAQlB,SACjBkB,EAAOH,YAAY,CAAER,GAAIU,IACjC,MAAOO,GAEL,MADAJ,QAAQC,MAAM,qBAAsBG,GAC9BA,KAKLC,EAAkBT,OAC3BU,eACAC,cACA3B,kBAMA,MAAM4B,EAAeC,EAAAA,mBAAmB,CACpCP,MAAOvB,EAAwBC,GAC/B8B,UAAWjB,EAAAA,KAAKb,EAAYc,OAE1BiB,QAAeL,EAAaD,gBAvDqB,EACvDE,EACA3B,KAEO,CACHgC,QAASL,EAAYM,KACrBC,GAAIP,EAAYO,GAChBC,MAAOR,EAAYQ,MACnBC,KAAMT,EAAYS,KAClBC,IAAKV,EAAYW,SACjBC,MAAOZ,EAAYY,MACnBjB,MAAOvB,EAAwBC,KA6C/BwC,CAAmDb,EAAa3B,IAEpE,aAAa4B,EAAaa,0BAA0B,CAAEC,KAAMX,GAAS,8BC3CrCY,IAEhC,MAAMC,EAAa5B,UACf,MAAMU,EAAeiB,IAEfE,SADkBnB,EAAaoB,gBACX,GAC1B,QAAgBC,IAAZF,EAAuB,MAAM,IAAIG,MAAM,qCAC3C,OAAOH,CAAO,EAwClB,MAAO,CAAED,aAAYK,YArCYjC,OAASkC,UAASC,mBAC/C,MAAMzB,EAAeiB,IAKrB,aAJwBjB,EAAauB,YAAY,CAC7CjB,QAASmB,EACTD,WAEY,EA+BczB,gBA5BOT,MAAOW,EAAa3B,KACzD,IAAI0B,EAAeiB,IAEnB,MAAME,QAAgBD,IACtBjB,EAAYM,KAAOY,EAEnB,MAAMO,QAAqB1B,EAAa2B,aAEpCC,OAAOtD,EAAYS,YAAc6C,OAAOF,WAClCrC,EAAYP,OAAOR,EAAYS,UAAWiB,EAAc1B,GAC9D0B,EAAeiB,KAGnB,MAAMY,QAAsBC,EAAiB,CAAE9B,eAAcC,cAAa3B,gBAC1E,MAnDG,CACHyD,iBAFwBC,EAoDMH,GAlDHE,gBAC3BE,UAAWD,EAAUC,UACrBC,YAAapD,OAAOkD,EAAUE,aAC9B3B,KAAMyB,EAAUzB,KAChBC,GAAIwB,EAAUxB,SAAMa,EACpBc,WAAYH,GAPW,IAACA,CAoDoB,EAcGI,cAXd9C,OAAS+C,YAAWZ,mBACrD,MAAMzB,EAAeiB,IAEfqB,EAAkBC,KAAKC,MAAMH,GAKnC,aAJwBrC,EAAaoC,cAAc,CAC/C9B,QAASmB,KACNa,GAES,EAG8C"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createPublicClient as a,http as t}from"viem";const n=a=>({blockExplorers:{default:{name:a.network,url:a.explorer??""}},id:Number(a.chain_id),name:a.network,nativeCurrency:a.native_currency,rpcUrls:{default:{http:[a.rpc??""]}}}),r=async(a,t,r)=>{try{await t.switchChain({id:a})}catch(e){if(console.error("Error switching chain",e),!r)throw e;try{await(async(a,t)=>{const r=n(t);r&&await a.addChain({chain:r})})(t,r),await t.switchChain({id:a})}catch(a){throw console.error("Error adding chain",a),a}}},e=async({walletClient:r,transaction:e,chainConfig:i})=>{const c=a({chain:n(i),transport:t(i.rpc)}),s=await r.sendTransaction(((a,t)=>({account:a.from,to:a.to,value:a.value,data:a.data,gas:a.gasLimit,nonce:a.nonce,chain:n(t)}))(e,i));return await c.waitForTransactionReceipt({hash:s})},i=a=>{const t=async()=>{const t=a(),n=await t.getAddresses();return n
|
|
1
|
+
import{createPublicClient as a,http as t}from"viem";const n=a=>({blockExplorers:{default:{name:a.network,url:a.explorer??""}},id:Number(a.chain_id),name:a.network,nativeCurrency:a.native_currency,rpcUrls:{default:{http:[a.rpc??""]}}}),r=async(a,t,r)=>{try{await t.switchChain({id:a})}catch(e){if(console.error("Error switching chain",e),!r)throw e;try{await(async(a,t)=>{const r=n(t);r&&await a.addChain({chain:r})})(t,r),await t.switchChain({id:a})}catch(a){throw console.error("Error adding chain",a),a}}},e=async({walletClient:r,transaction:e,chainConfig:i})=>{const c=a({chain:n(i),transport:t(i.rpc)}),s=await r.sendTransaction(((a,t)=>({account:a.from,to:a.to,value:a.value,data:a.data,gas:a.gasLimit,nonce:a.nonce,chain:n(t)}))(e,i));return await c.waitForTransactionReceipt({hash:s})},i=a=>{const t=async()=>{const t=a(),n=(await t.getAddresses())[0];if(void 0===n)throw new Error("No address found in wallet client");return n};return{getAddress:t,signMessage:async({message:t,ownerAddress:n})=>{const r=a();return await r.signMessage({account:n,message:t})},sendTransaction:async(n,i)=>{let c=a();const s=await t();n.from=s;const o=await c.getChainId();BigInt(i.chain_id)!==BigInt(o)&&(await r(Number(i.chain_id),c,i),c=a());const d=await e({walletClient:c,transaction:n,chainConfig:i});return{transactionHash:(h=d).transactionHash,blockHash:h.blockHash,blockNumber:Number(h.blockNumber),from:h.from,to:h.to||void 0,rawReceipt:h};var h},signTypedData:async({typedData:t,ownerAddress:n})=>{const r=a(),e=JSON.parse(t);return await r.signTypedData({account:n,...e})}}};export{i as connectWalletClient};
|
|
2
2
|
//# sourceMappingURL=index.esm.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.min.js","sources":["../../../../_shared/utils/viemWalletUtils.ts","../../../src/paymentsWidget/viem/index.ts"],"sourcesContent":["import { WalletClient, SendTransactionParameters, Chain, createPublicClient, http, TransactionReceipt } from \"viem\";\n\nimport { EVMChainConfig, TransactionRequest } from \"../types\";\n\nconst getChainFromChainConfig = (chainConfig: EVMChainConfig): Chain => {\n return {\n blockExplorers: {\n default: { name: chainConfig.network, url: chainConfig.explorer ?? \"\" },\n },\n id: Number(chainConfig.chain_id),\n name: chainConfig.network,\n nativeCurrency: chainConfig.native_currency,\n rpcUrls: {\n default: { http: [chainConfig.rpc ?? \"\"] },\n },\n };\n};\n\nconst getSendTransactionParametersFromTransactionRequest = (\n transaction: TransactionRequest,\n chainConfig: EVMChainConfig\n): SendTransactionParameters => {\n return {\n account: transaction.from as `0x${string}`,\n to: transaction.to as `0x${string}`,\n value: transaction.value,\n data: transaction.data as `0x${string}`,\n gas: transaction.gasLimit,\n nonce: transaction.nonce,\n chain: getChainFromChainConfig(chainConfig),\n };\n};\n\nexport const addChain = async (wallet: WalletClient, chainConfig: EVMChainConfig) => {\n const chain = getChainFromChainConfig(chainConfig);\n if (chain) {\n await wallet.addChain({ chain });\n }\n};\n\nexport const switchChain = async (chainId: number, wallet: WalletClient, chainConfig?: EVMChainConfig) => {\n try {\n await wallet.switchChain({ id: chainId });\n } catch (switchError) {\n console.error(\"Error switching chain\", switchError);\n if (!chainConfig) {\n throw switchError;\n }\n\n try {\n // Add the chain to the wallet and try again\n await addChain(wallet, chainConfig);\n await wallet.switchChain({ id: chainId });\n } catch (addChainError) {\n console.error(\"Error adding chain\", addChainError);\n throw addChainError;\n }\n }\n};\n\nexport const sendTransaction = async ({\n walletClient,\n transaction,\n chainConfig,\n}: {\n walletClient: WalletClient;\n transaction: TransactionRequest;\n chainConfig: EVMChainConfig;\n}): Promise<TransactionReceipt> => {\n const publicClient = createPublicClient({\n chain: getChainFromChainConfig(chainConfig),\n transport: http(chainConfig.rpc),\n });\n const txHash = await walletClient.sendTransaction(\n getSendTransactionParametersFromTransactionRequest(transaction, chainConfig)\n );\n return await publicClient.waitForTransactionReceipt({ hash: txHash });\n};\n","import { TransactionReceipt as ViemTransactionReceipt, WalletClient } from \"viem\";\nimport type { WalletClient as ViemWalletClient } from \"viem\";\n\nimport { sendTransaction as _sendTransaction, switchChain } from \"@shared/utils/viemWalletUtils\";\nimport type {
|
|
1
|
+
{"version":3,"file":"index.esm.min.js","sources":["../../../../_shared/utils/viemWalletUtils.ts","../../../src/paymentsWidget/viem/index.ts"],"sourcesContent":["import { WalletClient, SendTransactionParameters, Chain, createPublicClient, http, TransactionReceipt } from \"viem\";\n\nimport { EVMChainConfig, TransactionRequest } from \"../types\";\n\nconst getChainFromChainConfig = (chainConfig: EVMChainConfig): Chain => {\n return {\n blockExplorers: {\n default: { name: chainConfig.network, url: chainConfig.explorer ?? \"\" },\n },\n id: Number(chainConfig.chain_id),\n name: chainConfig.network,\n nativeCurrency: chainConfig.native_currency,\n rpcUrls: {\n default: { http: [chainConfig.rpc ?? \"\"] },\n },\n };\n};\n\nconst getSendTransactionParametersFromTransactionRequest = (\n transaction: TransactionRequest,\n chainConfig: EVMChainConfig\n): SendTransactionParameters => {\n return {\n account: transaction.from as `0x${string}`,\n to: transaction.to as `0x${string}`,\n value: transaction.value,\n data: transaction.data as `0x${string}`,\n gas: transaction.gasLimit,\n nonce: transaction.nonce,\n chain: getChainFromChainConfig(chainConfig),\n };\n};\n\nexport const addChain = async (wallet: WalletClient, chainConfig: EVMChainConfig) => {\n const chain = getChainFromChainConfig(chainConfig);\n if (chain) {\n await wallet.addChain({ chain });\n }\n};\n\nexport const switchChain = async (chainId: number, wallet: WalletClient, chainConfig?: EVMChainConfig) => {\n try {\n await wallet.switchChain({ id: chainId });\n } catch (switchError) {\n console.error(\"Error switching chain\", switchError);\n if (!chainConfig) {\n throw switchError;\n }\n\n try {\n // Add the chain to the wallet and try again\n await addChain(wallet, chainConfig);\n await wallet.switchChain({ id: chainId });\n } catch (addChainError) {\n console.error(\"Error adding chain\", addChainError);\n throw addChainError;\n }\n }\n};\n\nexport const sendTransaction = async ({\n walletClient,\n transaction,\n chainConfig,\n}: {\n walletClient: WalletClient;\n transaction: TransactionRequest;\n chainConfig: EVMChainConfig;\n}): Promise<TransactionReceipt> => {\n const publicClient = createPublicClient({\n chain: getChainFromChainConfig(chainConfig),\n transport: http(chainConfig.rpc),\n });\n const txHash = await walletClient.sendTransaction(\n getSendTransactionParametersFromTransactionRequest(transaction, chainConfig)\n );\n return await publicClient.waitForTransactionReceipt({ hash: txHash });\n};\n","import { TransactionReceipt as ViemTransactionReceipt, WalletClient } from \"viem\";\nimport type { WalletClient as ViemWalletClient } from \"viem\";\n\nimport { sendTransaction as _sendTransaction, switchChain } from \"@shared/utils/viemWalletUtils\";\nimport type { TransactionReceipt } from \"@shared/types\";\n\nimport type { SignMessage, SendTransaction, SignTypedData, WalletActionsType } from \"../types\";\n\n/**\n * Get the transaction receipt from the ethers transaction receipt.\n *\n * @param {ViemTransactionReceipt} txReceipt The viem transaction receipt.\n * @returns {TransactionReceipt} The transaction receipt.\n */\nconst _getTransactionReceipt = (txReceipt: ViemTransactionReceipt): TransactionReceipt => {\n return {\n transactionHash: txReceipt.transactionHash,\n blockHash: txReceipt.blockHash,\n blockNumber: Number(txReceipt.blockNumber),\n from: txReceipt.from,\n to: txReceipt.to || undefined,\n rawReceipt: txReceipt,\n };\n};\n\n/**\n * Connect to a wallet.\n *\n * @param {WalletClient} wallet {{@link WalletClient}} The viem wallet client.\n * @returns {function} ``getAddress`` {function} Function that returns the addresse of the wallet.\n * @returns {function} ``signMessage`` {{@link SignMessage}} Function that signs a message.\n * @returns {function} ``sendTransaction`` {{@link SendTransaction}} Function that sends an EVM transaction.\n */\nexport const connectWalletClient = (getClientWallet: () => ViemWalletClient): Required<WalletActionsType> => {\n // return the first address of the wallet\n const getAddress = async () => {\n const walletClient = getClientWallet();\n const addresses = await walletClient.getAddresses();\n const address = addresses[0];\n if (address === undefined) throw new Error(\"No address found in wallet client\");\n return address;\n };\n\n const signMessage: SignMessage = async ({ message, ownerAddress }) => {\n const walletClient = getClientWallet();\n const signature = await walletClient.signMessage({\n account: ownerAddress as `0x${string}`,\n message,\n });\n return signature;\n };\n\n const sendTransaction: SendTransaction = async (transaction, chainConfig) => {\n let walletClient = getClientWallet();\n\n const address = await getAddress();\n transaction.from = address;\n\n const currentChain = await walletClient.getChainId();\n\n if (BigInt(chainConfig.chain_id) !== BigInt(currentChain)) {\n await switchChain(Number(chainConfig.chain_id), walletClient, chainConfig);\n walletClient = getClientWallet();\n }\n\n const viemTxReceipt = await _sendTransaction({ walletClient, transaction, chainConfig });\n return _getTransactionReceipt(viemTxReceipt);\n };\n\n const signTypedData: SignTypedData = async ({ typedData, ownerAddress }) => {\n const walletClient = getClientWallet();\n\n const typedDataObject = JSON.parse(typedData);\n const signature = await walletClient.signTypedData({\n account: ownerAddress as `0x${string}`,\n ...typedDataObject,\n });\n return signature;\n };\n\n return { getAddress, signMessage, sendTransaction, signTypedData };\n};\n"],"names":["getChainFromChainConfig","chainConfig","blockExplorers","default","name","network","url","explorer","id","Number","chain_id","nativeCurrency","native_currency","rpcUrls","http","rpc","switchChain","async","chainId","wallet","switchError","console","error","chain","addChain","addChainError","sendTransaction","walletClient","transaction","publicClient","createPublicClient","transport","txHash","account","from","to","value","data","gas","gasLimit","nonce","getSendTransactionParametersFromTransactionRequest","waitForTransactionReceipt","hash","connectWalletClient","getClientWallet","getAddress","address","getAddresses","undefined","Error","signMessage","message","ownerAddress","currentChain","getChainId","BigInt","viemTxReceipt","_sendTransaction","transactionHash","txReceipt","blockHash","blockNumber","rawReceipt","signTypedData","typedData","typedDataObject","JSON","parse"],"mappings":"oDAIA,MAAMA,EAA2BC,IACtB,CACHC,eAAgB,CACZC,QAAS,CAAEC,KAAMH,EAAYI,QAASC,IAAKL,EAAYM,UAAY,KAEvEC,GAAIC,OAAOR,EAAYS,UACvBN,KAAMH,EAAYI,QAClBM,eAAgBV,EAAYW,gBAC5BC,QAAS,CACLV,QAAS,CAAEW,KAAM,CAACb,EAAYc,KAAO,QA2BpCC,EAAcC,MAAOC,EAAiBC,EAAsBlB,KACrE,UACUkB,EAAOH,YAAY,CAAER,GAAIU,IACjC,MAAOE,GAEL,GADAC,QAAQC,MAAM,wBAAyBF,IAClCnB,EACD,MAAMmB,EAGV,SAhBgBH,OAAOE,EAAsBlB,KACjD,MAAMsB,EAAQvB,EAAwBC,GAClCsB,SACMJ,EAAOK,SAAS,CAAED,WAedC,CAASL,EAAQlB,SACjBkB,EAAOH,YAAY,CAAER,GAAIU,IACjC,MAAOO,GAEL,MADAJ,QAAQC,MAAM,qBAAsBG,GAC9BA,KAKLC,EAAkBT,OAC3BU,eACAC,cACA3B,kBAMA,MAAM4B,EAAeC,EAAmB,CACpCP,MAAOvB,EAAwBC,GAC/B8B,UAAWjB,EAAKb,EAAYc,OAE1BiB,QAAeL,EAAaD,gBAvDqB,EACvDE,EACA3B,KAEO,CACHgC,QAASL,EAAYM,KACrBC,GAAIP,EAAYO,GAChBC,MAAOR,EAAYQ,MACnBC,KAAMT,EAAYS,KAClBC,IAAKV,EAAYW,SACjBC,MAAOZ,EAAYY,MACnBjB,MAAOvB,EAAwBC,KA6C/BwC,CAAmDb,EAAa3B,IAEpE,aAAa4B,EAAaa,0BAA0B,CAAEC,KAAMX,GAAS,EC3C5DY,EAAuBC,IAEhC,MAAMC,EAAa7B,UACf,MAAMU,EAAekB,IAEfE,SADkBpB,EAAaqB,gBACX,GAC1B,QAAgBC,IAAZF,EAAuB,MAAM,IAAIG,MAAM,qCAC3C,OAAOH,CAAO,EAwClB,MAAO,CAAED,aAAYK,YArCYlC,OAASmC,UAASC,mBAC/C,MAAM1B,EAAekB,IAKrB,aAJwBlB,EAAawB,YAAY,CAC7ClB,QAASoB,EACTD,WAEY,EA+Bc1B,gBA5BOT,MAAOW,EAAa3B,KACzD,IAAI0B,EAAekB,IAEnB,MAAME,QAAgBD,IACtBlB,EAAYM,KAAOa,EAEnB,MAAMO,QAAqB3B,EAAa4B,aAEpCC,OAAOvD,EAAYS,YAAc8C,OAAOF,WAClCtC,EAAYP,OAAOR,EAAYS,UAAWiB,EAAc1B,GAC9D0B,EAAekB,KAGnB,MAAMY,QAAsBC,EAAiB,CAAE/B,eAAcC,cAAa3B,gBAC1E,MAnDG,CACH0D,iBAFwBC,EAoDMH,GAlDHE,gBAC3BE,UAAWD,EAAUC,UACrBC,YAAarD,OAAOmD,EAAUE,aAC9B5B,KAAM0B,EAAU1B,KAChBC,GAAIyB,EAAUzB,SAAMc,EACpBc,WAAYH,GAPW,IAACA,CAoDoB,EAcGI,cAXd/C,OAASgD,YAAWZ,mBACrD,MAAM1B,EAAekB,IAEfqB,EAAkBC,KAAKC,MAAMH,GAKnC,aAJwBtC,EAAaqC,cAAc,CAC/C/B,QAASoB,KACNa,GAES,EAG8C"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(a,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("viem")):"function"==typeof define&&define.amd?define(["exports","viem"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).viem={},a.viem)}(this,(function(a,t){"use strict";const n=a=>({blockExplorers:{default:{name:a.network,url:a.explorer??""}},id:Number(a.chain_id),name:a.network,nativeCurrency:a.native_currency,rpcUrls:{default:{http:[a.rpc??""]}}}),e=async(a,t,e)=>{try{await t.switchChain({id:a})}catch(i){if(console.error("Error switching chain",i),!e)throw i;try{await(async(a,t)=>{const e=n(t);e&&await a.addChain({chain:e})})(t,e),await t.switchChain({id:a})}catch(a){throw console.error("Error adding chain",a),a}}},i=async({walletClient:a,transaction:e,chainConfig:i})=>{const r=t.createPublicClient({chain:n(i),transport:t.http(i.rpc)}),
|
|
1
|
+
!function(a,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("viem")):"function"==typeof define&&define.amd?define(["exports","viem"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).viem={},a.viem)}(this,(function(a,t){"use strict";const n=a=>({blockExplorers:{default:{name:a.network,url:a.explorer??""}},id:Number(a.chain_id),name:a.network,nativeCurrency:a.native_currency,rpcUrls:{default:{http:[a.rpc??""]}}}),e=async(a,t,e)=>{try{await t.switchChain({id:a})}catch(i){if(console.error("Error switching chain",i),!e)throw i;try{await(async(a,t)=>{const e=n(t);e&&await a.addChain({chain:e})})(t,e),await t.switchChain({id:a})}catch(a){throw console.error("Error adding chain",a),a}}},i=async({walletClient:a,transaction:e,chainConfig:i})=>{const r=t.createPublicClient({chain:n(i),transport:t.http(i.rpc)}),o=await a.sendTransaction(((a,t)=>({account:a.from,to:a.to,value:a.value,data:a.data,gas:a.gasLimit,nonce:a.nonce,chain:n(t)}))(e,i));return await r.waitForTransactionReceipt({hash:o})};a.connectWalletClient=a=>{const t=async()=>{const t=a(),n=(await t.getAddresses())[0];if(void 0===n)throw new Error("No address found in wallet client");return n};return{getAddress:t,signMessage:async({message:t,ownerAddress:n})=>{const e=a();return await e.signMessage({account:n,message:t})},sendTransaction:async(n,r)=>{let o=a();const c=await t();n.from=c;const s=await o.getChainId();BigInt(r.chain_id)!==BigInt(s)&&(await e(Number(r.chain_id),o,r),o=a());const d=await i({walletClient:o,transaction:n,chainConfig:r});return{transactionHash:(l=d).transactionHash,blockHash:l.blockHash,blockNumber:Number(l.blockNumber),from:l.from,to:l.to||void 0,rawReceipt:l};var l},signTypedData:async({typedData:t,ownerAddress:n})=>{const e=a(),i=JSON.parse(t);return await e.signTypedData({account:n,...i})}}}}));
|
|
2
2
|
//# sourceMappingURL=index.umd.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.min.js","sources":["../../../../_shared/utils/viemWalletUtils.ts","../../../src/paymentsWidget/viem/index.ts"],"sourcesContent":["import { WalletClient, SendTransactionParameters, Chain, createPublicClient, http, TransactionReceipt } from \"viem\";\n\nimport { EVMChainConfig, TransactionRequest } from \"../types\";\n\nconst getChainFromChainConfig = (chainConfig: EVMChainConfig): Chain => {\n return {\n blockExplorers: {\n default: { name: chainConfig.network, url: chainConfig.explorer ?? \"\" },\n },\n id: Number(chainConfig.chain_id),\n name: chainConfig.network,\n nativeCurrency: chainConfig.native_currency,\n rpcUrls: {\n default: { http: [chainConfig.rpc ?? \"\"] },\n },\n };\n};\n\nconst getSendTransactionParametersFromTransactionRequest = (\n transaction: TransactionRequest,\n chainConfig: EVMChainConfig\n): SendTransactionParameters => {\n return {\n account: transaction.from as `0x${string}`,\n to: transaction.to as `0x${string}`,\n value: transaction.value,\n data: transaction.data as `0x${string}`,\n gas: transaction.gasLimit,\n nonce: transaction.nonce,\n chain: getChainFromChainConfig(chainConfig),\n };\n};\n\nexport const addChain = async (wallet: WalletClient, chainConfig: EVMChainConfig) => {\n const chain = getChainFromChainConfig(chainConfig);\n if (chain) {\n await wallet.addChain({ chain });\n }\n};\n\nexport const switchChain = async (chainId: number, wallet: WalletClient, chainConfig?: EVMChainConfig) => {\n try {\n await wallet.switchChain({ id: chainId });\n } catch (switchError) {\n console.error(\"Error switching chain\", switchError);\n if (!chainConfig) {\n throw switchError;\n }\n\n try {\n // Add the chain to the wallet and try again\n await addChain(wallet, chainConfig);\n await wallet.switchChain({ id: chainId });\n } catch (addChainError) {\n console.error(\"Error adding chain\", addChainError);\n throw addChainError;\n }\n }\n};\n\nexport const sendTransaction = async ({\n walletClient,\n transaction,\n chainConfig,\n}: {\n walletClient: WalletClient;\n transaction: TransactionRequest;\n chainConfig: EVMChainConfig;\n}): Promise<TransactionReceipt> => {\n const publicClient = createPublicClient({\n chain: getChainFromChainConfig(chainConfig),\n transport: http(chainConfig.rpc),\n });\n const txHash = await walletClient.sendTransaction(\n getSendTransactionParametersFromTransactionRequest(transaction, chainConfig)\n );\n return await publicClient.waitForTransactionReceipt({ hash: txHash });\n};\n","import { TransactionReceipt as ViemTransactionReceipt, WalletClient } from \"viem\";\nimport type { WalletClient as ViemWalletClient } from \"viem\";\n\nimport { sendTransaction as _sendTransaction, switchChain } from \"@shared/utils/viemWalletUtils\";\nimport type {
|
|
1
|
+
{"version":3,"file":"index.umd.min.js","sources":["../../../../_shared/utils/viemWalletUtils.ts","../../../src/paymentsWidget/viem/index.ts"],"sourcesContent":["import { WalletClient, SendTransactionParameters, Chain, createPublicClient, http, TransactionReceipt } from \"viem\";\n\nimport { EVMChainConfig, TransactionRequest } from \"../types\";\n\nconst getChainFromChainConfig = (chainConfig: EVMChainConfig): Chain => {\n return {\n blockExplorers: {\n default: { name: chainConfig.network, url: chainConfig.explorer ?? \"\" },\n },\n id: Number(chainConfig.chain_id),\n name: chainConfig.network,\n nativeCurrency: chainConfig.native_currency,\n rpcUrls: {\n default: { http: [chainConfig.rpc ?? \"\"] },\n },\n };\n};\n\nconst getSendTransactionParametersFromTransactionRequest = (\n transaction: TransactionRequest,\n chainConfig: EVMChainConfig\n): SendTransactionParameters => {\n return {\n account: transaction.from as `0x${string}`,\n to: transaction.to as `0x${string}`,\n value: transaction.value,\n data: transaction.data as `0x${string}`,\n gas: transaction.gasLimit,\n nonce: transaction.nonce,\n chain: getChainFromChainConfig(chainConfig),\n };\n};\n\nexport const addChain = async (wallet: WalletClient, chainConfig: EVMChainConfig) => {\n const chain = getChainFromChainConfig(chainConfig);\n if (chain) {\n await wallet.addChain({ chain });\n }\n};\n\nexport const switchChain = async (chainId: number, wallet: WalletClient, chainConfig?: EVMChainConfig) => {\n try {\n await wallet.switchChain({ id: chainId });\n } catch (switchError) {\n console.error(\"Error switching chain\", switchError);\n if (!chainConfig) {\n throw switchError;\n }\n\n try {\n // Add the chain to the wallet and try again\n await addChain(wallet, chainConfig);\n await wallet.switchChain({ id: chainId });\n } catch (addChainError) {\n console.error(\"Error adding chain\", addChainError);\n throw addChainError;\n }\n }\n};\n\nexport const sendTransaction = async ({\n walletClient,\n transaction,\n chainConfig,\n}: {\n walletClient: WalletClient;\n transaction: TransactionRequest;\n chainConfig: EVMChainConfig;\n}): Promise<TransactionReceipt> => {\n const publicClient = createPublicClient({\n chain: getChainFromChainConfig(chainConfig),\n transport: http(chainConfig.rpc),\n });\n const txHash = await walletClient.sendTransaction(\n getSendTransactionParametersFromTransactionRequest(transaction, chainConfig)\n );\n return await publicClient.waitForTransactionReceipt({ hash: txHash });\n};\n","import { TransactionReceipt as ViemTransactionReceipt, WalletClient } from \"viem\";\nimport type { WalletClient as ViemWalletClient } from \"viem\";\n\nimport { sendTransaction as _sendTransaction, switchChain } from \"@shared/utils/viemWalletUtils\";\nimport type { TransactionReceipt } from \"@shared/types\";\n\nimport type { SignMessage, SendTransaction, SignTypedData, WalletActionsType } from \"../types\";\n\n/**\n * Get the transaction receipt from the ethers transaction receipt.\n *\n * @param {ViemTransactionReceipt} txReceipt The viem transaction receipt.\n * @returns {TransactionReceipt} The transaction receipt.\n */\nconst _getTransactionReceipt = (txReceipt: ViemTransactionReceipt): TransactionReceipt => {\n return {\n transactionHash: txReceipt.transactionHash,\n blockHash: txReceipt.blockHash,\n blockNumber: Number(txReceipt.blockNumber),\n from: txReceipt.from,\n to: txReceipt.to || undefined,\n rawReceipt: txReceipt,\n };\n};\n\n/**\n * Connect to a wallet.\n *\n * @param {WalletClient} wallet {{@link WalletClient}} The viem wallet client.\n * @returns {function} ``getAddress`` {function} Function that returns the addresse of the wallet.\n * @returns {function} ``signMessage`` {{@link SignMessage}} Function that signs a message.\n * @returns {function} ``sendTransaction`` {{@link SendTransaction}} Function that sends an EVM transaction.\n */\nexport const connectWalletClient = (getClientWallet: () => ViemWalletClient): Required<WalletActionsType> => {\n // return the first address of the wallet\n const getAddress = async () => {\n const walletClient = getClientWallet();\n const addresses = await walletClient.getAddresses();\n const address = addresses[0];\n if (address === undefined) throw new Error(\"No address found in wallet client\");\n return address;\n };\n\n const signMessage: SignMessage = async ({ message, ownerAddress }) => {\n const walletClient = getClientWallet();\n const signature = await walletClient.signMessage({\n account: ownerAddress as `0x${string}`,\n message,\n });\n return signature;\n };\n\n const sendTransaction: SendTransaction = async (transaction, chainConfig) => {\n let walletClient = getClientWallet();\n\n const address = await getAddress();\n transaction.from = address;\n\n const currentChain = await walletClient.getChainId();\n\n if (BigInt(chainConfig.chain_id) !== BigInt(currentChain)) {\n await switchChain(Number(chainConfig.chain_id), walletClient, chainConfig);\n walletClient = getClientWallet();\n }\n\n const viemTxReceipt = await _sendTransaction({ walletClient, transaction, chainConfig });\n return _getTransactionReceipt(viemTxReceipt);\n };\n\n const signTypedData: SignTypedData = async ({ typedData, ownerAddress }) => {\n const walletClient = getClientWallet();\n\n const typedDataObject = JSON.parse(typedData);\n const signature = await walletClient.signTypedData({\n account: ownerAddress as `0x${string}`,\n ...typedDataObject,\n });\n return signature;\n };\n\n return { getAddress, signMessage, sendTransaction, signTypedData };\n};\n"],"names":["getChainFromChainConfig","chainConfig","blockExplorers","default","name","network","url","explorer","id","Number","chain_id","nativeCurrency","native_currency","rpcUrls","http","rpc","switchChain","async","chainId","wallet","switchError","console","error","chain","addChain","addChainError","sendTransaction","walletClient","transaction","publicClient","createPublicClient","transport","txHash","account","from","to","value","data","gas","gasLimit","nonce","getSendTransactionParametersFromTransactionRequest","waitForTransactionReceipt","hash","getClientWallet","getAddress","address","getAddresses","undefined","Error","signMessage","message","ownerAddress","currentChain","getChainId","BigInt","viemTxReceipt","_sendTransaction","transactionHash","txReceipt","blockHash","blockNumber","rawReceipt","signTypedData","typedData","typedDataObject","JSON","parse"],"mappings":"4QAIA,MAAMA,EAA2BC,IACtB,CACHC,eAAgB,CACZC,QAAS,CAAEC,KAAMH,EAAYI,QAASC,IAAKL,EAAYM,UAAY,KAEvEC,GAAIC,OAAOR,EAAYS,UACvBN,KAAMH,EAAYI,QAClBM,eAAgBV,EAAYW,gBAC5BC,QAAS,CACLV,QAAS,CAAEW,KAAM,CAACb,EAAYc,KAAO,QA2BpCC,EAAcC,MAAOC,EAAiBC,EAAsBlB,KACrE,UACUkB,EAAOH,YAAY,CAAER,GAAIU,IACjC,MAAOE,GAEL,GADAC,QAAQC,MAAM,wBAAyBF,IAClCnB,EACD,MAAMmB,EAGV,SAhBgBH,OAAOE,EAAsBlB,KACjD,MAAMsB,EAAQvB,EAAwBC,GAClCsB,SACMJ,EAAOK,SAAS,CAAED,WAedC,CAASL,EAAQlB,SACjBkB,EAAOH,YAAY,CAAER,GAAIU,IACjC,MAAOO,GAEL,MADAJ,QAAQC,MAAM,qBAAsBG,GAC9BA,KAKLC,EAAkBT,OAC3BU,eACAC,cACA3B,kBAMA,MAAM4B,EAAeC,EAAAA,mBAAmB,CACpCP,MAAOvB,EAAwBC,GAC/B8B,UAAWjB,EAAAA,KAAKb,EAAYc,OAE1BiB,QAAeL,EAAaD,gBAvDqB,EACvDE,EACA3B,KAEO,CACHgC,QAASL,EAAYM,KACrBC,GAAIP,EAAYO,GAChBC,MAAOR,EAAYQ,MACnBC,KAAMT,EAAYS,KAClBC,IAAKV,EAAYW,SACjBC,MAAOZ,EAAYY,MACnBjB,MAAOvB,EAAwBC,KA6C/BwC,CAAmDb,EAAa3B,IAEpE,aAAa4B,EAAaa,0BAA0B,CAAEC,KAAMX,GAAS,wBC3CrCY,IAEhC,MAAMC,EAAa5B,UACf,MAAMU,EAAeiB,IAEfE,SADkBnB,EAAaoB,gBACX,GAC1B,QAAgBC,IAAZF,EAAuB,MAAM,IAAIG,MAAM,qCAC3C,OAAOH,CAAO,EAwClB,MAAO,CAAED,aAAYK,YArCYjC,OAASkC,UAASC,mBAC/C,MAAMzB,EAAeiB,IAKrB,aAJwBjB,EAAauB,YAAY,CAC7CjB,QAASmB,EACTD,WAEY,EA+BczB,gBA5BOT,MAAOW,EAAa3B,KACzD,IAAI0B,EAAeiB,IAEnB,MAAME,QAAgBD,IACtBjB,EAAYM,KAAOY,EAEnB,MAAMO,QAAqB1B,EAAa2B,aAEpCC,OAAOtD,EAAYS,YAAc6C,OAAOF,WAClCrC,EAAYP,OAAOR,EAAYS,UAAWiB,EAAc1B,GAC9D0B,EAAeiB,KAGnB,MAAMY,QAAsBC,EAAiB,CAAE9B,eAAcC,cAAa3B,gBAC1E,MAnDG,CACHyD,iBAFwBC,EAoDMH,GAlDHE,gBAC3BE,UAAWD,EAAUC,UACrBC,YAAapD,OAAOkD,EAAUE,aAC9B3B,KAAMyB,EAAUzB,KAChBC,GAAIwB,EAAUxB,SAAMa,EACpBc,WAAYH,GAPW,IAACA,CAoDoB,EAcGI,cAXd9C,OAAS+C,YAAWZ,mBACrD,MAAMzB,EAAeiB,IAEfqB,EAAkBC,KAAKC,MAAMH,GAKnC,aAJwBrC,EAAaoC,cAAc,CAC/C9B,QAASmB,KACNa,GAES,EAG8C"}
|