From 0ac80f004e4535fcfba456cef5ae7e939fed8b68 Mon Sep 17 00:00:00 2001 From: JamesLawton Date: Thu, 11 Apr 2024 09:58:20 +0000 Subject: [PATCH] Build: (cb58e8f) Improve Indexer Overview (#38) * Improve Indexer Overview * Improve Indexer Overview + other tweaks --- .vocs/search-index-9565ce6b.json | 1 + .vocs/search-index-b8370438.json | 1 - api/embedded-wallet/index.html | 2 +- api/indexer/fetch-tokens/index.html | 3 ++- api/indexer/installation/index.html | 4 +-- api/indexer/metadata-tips/index.html | 2 +- api/indexer/native-network-balance/index.html | 2 +- api/indexer/overview/index.html | 19 +++++++++++--- api/indexer/transaction-history/index.html | 2 +- .../index.html | 2 +- api/indexer/unique-tokens/index.html | 2 +- api/marketplace/index.html | 2 +- api/metadata/contract-metadata/index.html | 2 +- api/metadata/index.html | 2 +- api/metadata/overview/index.html | 2 +- api/metadata/rest-api/index.html | 2 +- api/metadata/token-metadata/index.html | 2 +- api/node-gateway/index.html | 2 +- api/relayer/index.html | 2 +- ...VSacv.js => 01-connect-wallet-CfLEEO7U.js} | 2 +- ...USRDo.js => 01-connect-wallet-DqzhSN1W.js} | 2 +- ...ploy-Fo7CmIWR.js => 01-deploy-BFX8y6pi.js} | 2 +- ...ploy-D1dR_q22.js => 01-deploy-C7jVGn4X.js} | 2 +- ... 01-deploy-an-item-collection-DmHaXqli.js} | 2 +- ...-HSTak7lQ.js => 01-deployment-By40m2sO.js} | 2 +- ...LqrgR6.js => 01-fiat-on-ramps-Cd245V9w.js} | 2 +- ...kyqY8bl.js => 01-introduction-CoIM1X_k.js} | 2 +- ...ew-52_meTu3.js => 01-overview-14IeRkgc.js} | 2 +- ...ew-Bzg7GJ6C.js => 01-overview-C--NnwUF.js} | 2 +- ...ew-BBZV3ovq.js => 01-overview-CIC96WUX.js} | 2 +- ...ew-eenILnvj.js => 01-overview-CkEtw05F.js} | 2 +- ...ew-DuQI0pZU.js => 01-overview-D4iMjiil.js} | 2 +- ...ew-DNWqy07K.js => 01-overview-Dynuydhs.js} | 2 +- ...ew-D8Tn9zZW.js => 01-overview-RSvgNLyz.js} | 2 +- ...{01-why-CAG2t7n0.js => 01-why-DAXaMsU-.js} | 2 +- ...JKV5nL6.js => 02-auth-address-60THvB2w.js} | 2 +- ...Zh1230X.js => 02-auth-address-BnIOwp7v.js} | 2 +- ...> 02-building-relaying-server-CuDszrRI.js} | 2 +- ...s => 02-deploy-ERC20-currency-B-IsDW0E.js} | 2 +- ...GBD4.js => 02-getting-started-CjU9QgdR.js} | 2 +- ...5fb_9zG.js => 02-installation-BPirNZOA.js} | 2 +- ...EYPhuch.js => 02-installation-D_1-cGrW.js} | 2 +- ...-Dw_dstON.js => 02-quickstart--nv7V4Yc.js} | 2 +- ...-CPH7FQRk.js => 02-quickstart-BpRhgBt9.js} | 2 +- ...-D4ediW1_.js => 02-quickstart-DQkU9QH6.js} | 2 +- ...Rgz76hA.js => 02-sequence-kit-R_H4ChxU.js} | 2 +- ...ets-CyLSnOCH.js => 02-wallets-DULr0dXt.js} | 2 +- ...nts-CVLGz0EF.js => 03-clients-BNM_xCZa.js} | 2 +- ...Wmf-Mm.js => 03-configuration-D1joKIQx.js} | 2 +- ...IlbG0.js => 03-get-top-orders-CLca8zvz.js} | 2 +- ...lreW.js => 03-manage-sessions-4mTx5Qtc.js} | 2 +- ...-mint-collectibles-serverless-CpfiFoVo.js} | 2 +- ...setup-C0dwh71D.js => 03-setup-CHg84Z-0.js} | 2 +- ...setup-BqxPVrTQ.js => 03-setup-LfdLm5v0.js} | 2 +- ...bKbpn7U.js => 03-sign-message-Cen7X5iw.js} | 2 +- ...Asd9YJN.js => 03-sign-message-MaCTUdGD.js} | 2 +- ...wagmi-CpdgCO8V.js => 03-wagmi-CBCxbzm8.js} | 2 +- ...MxFf_.js => 03-wallet-factory-R5wOcB3Z.js} | 2 +- ...TtnTW.js => 04-authentication-8J7N8os-.js} | 2 +- ...5J8l8.js => 04-authentication-Jevds3CY.js} | 2 +- ...ut-BVPq6FfX.js => 04-checkout-VW3jQ2DG.js} | 2 +- ...JEt13u.js => 04-configuration-Ke_7PJJc.js} | 2 +- ...HbZi_W.js => 04-get-orderbook-BLMldV4p.js} | 2 +- ...DA-KWee4.js => 04-rainbow-kit-Dg34mmXH.js} | 2 +- ...K2NtjwN.js => 04-sequence-kit-BaLVgDtU.js} | 2 +- ...ffAoXbb.js => 04-session-keys-CMKstS7R.js} | 2 +- ...zqz-yOg.js => 04-session-keys-DJCy4k-0.js} | 2 +- ...s-fldLL6k8.js => 04-transfers-BqvVNfJP.js} | 2 +- ...IfyNDXW5.js => 04-use-wallets-C_DQ6UCq.js} | 2 +- ...js => 04-wallet-configuration-DagmVdyS.js} | 2 +- ...ldxc.js => 05-api-integration-BHJnIyv7.js} | 2 +- ...s-FJ80mg17.js => 05-contracts-DjQ4iIgh.js} | 2 +- ...YB.js => 05-custom-connectors-WWzLXGT6.js} | 2 +- ....js => 05-get-user-activities-CQNuLaE7.js} | 2 +- ....js => 05-modules-and-updates-D6-_b8g4.js} | 2 +- ...s-Qn5r-I38.js => 05-platforms-BG2ngyqG.js} | 2 +- ...YLj.js => 05-send-transaction-CPTudBdL.js} | 2 +- ...7f0.js => 05-send-transaction-Cd0zCRZo.js} | 2 +- ...-BMAIT7lp.js => 05-validation-fu6h6RT4.js} | 2 +- ...59AlOaH.js => 05-web3-onboard-NhfD69Ky.js} | 2 +- ....js => 05-write-to-blockchain-CbixjMAO.js} | 2 +- ...-3NKJP.js => 06-fiat-on-ramps-BnTibKTi.js} | 2 +- ...=> 06-main-module-upgradeable-qn_mvGhb.js} | 2 +- ... => 06-orderbook-transactions-DqH4CAJH.js} | 2 +- ...g-CeTraCJv.js => 06-packaging-DCgamZU5.js} | 2 +- ...js => 06-read-from-blockchain-S3XaeQAP.js} | 2 +- ...-BswrOfdh.js => 06-send-erc20-DK7j3wYS.js} | 2 +- ...-Dlnoxfm2.js => 06-send-erc20-DSzwbCHJ.js} | 2 +- ...kens-BvNhWInG.js => 06-tokens-DgF_JSY-.js} | 2 +- ...js => 06-transaction-receipts-kCr4ctoT.js} | 2 +- ...gVqEZy.js => 06-web3-react-v6-DsVPcEC0.js} | 2 +- ...FB_rX-9.js => 07-Architecture-BcBe-PC2.js} | 2 +- ...krJAs.js => 07-key-management-31l3CdaD.js} | 2 +- ...CsBCYkAg.js => 07-send-erc721-CLlkpkZ7.js} | 2 +- ...CuoiTcG6.js => 07-send-erc721-Crk85xhq.js} | 2 +- ...rdbWnF.js => 07-sign-messages-DrXhCl-Q.js} | 2 +- ...l-CJWNDuPy.js => 07-web3modal-UaDM0Ykz.js} | 2 +- ...{08-FAQ-BnZeRgpC.js => 08-FAQ-CuGN-2pd.js} | 2 +- ...YKV.js => 08-deploy-contracts-BI-L_Iwr.js} | 2 +- ...vjJ3TJQ.js => 08-send-erc1155-BS-Icmoz.js} | 2 +- ...Z-semBW.js => 08-send-erc1155-vmPKw9IF.js} | 2 +- ...4.js => 08-signature-encoding--DDkWq4i.js} | 2 +- ...9-nested-transaction-batching-i_3yyQlj.js} | 2 +- ...=> 09-send-batch-transactions-D-VMCWEl.js} | 2 +- ...=> 09-send-batch-transactions-DGwawNlD.js} | 2 +- ...i-IOp_A6vv.js => 09-wallet-ui-DQWmGe8q.js} | 2 +- ...HW.js => 10-building-backends-BAI9VV8A.js} | 2 +- ...00.js => 10-building-backends-D9uYDf2v.js} | 2 +- ...au816gI.js => 10-guest-module-aJInQEuh.js} | 2 +- ...ICQdC.js => 11-wallet-context-Bq48GAe9.js} | 2 +- ...ucst.js => 12-contract-audits-CQhSuOeI.js} | 2 +- ...4337-eFMx7GIk.js => 5189-4337-C0tAKxP9.js} | 2 +- ...> 800-manage-metadata-builder-D4heEJGP.js} | 2 +- ...dGrid-aCCIcMd4.js => CardGrid-BnCcSD8R.js} | 2 +- .../{Video-C_LaYbpR.js => Video-DrWW48g_.js} | 2 +- ...tics-DX16d0wm.js => analytics-ByaRhbRP.js} | 2 +- ...ndroid-CWO8hRFR.js => android-DcRYKII9.js} | 2 +- ...-CVTb5aJk.js => chain-support-B29jrp7j.js} | 2 +- ...tUdQP.js => contract-metadata-Cn9ZCQ29.js} | 2 +- ...acts-Cq03dBTm.js => contracts-BBI-SsfV.js} | 2 +- ...8P-szcQ.js => embedded-wallet-C5b57Xms.js} | 2 +- ...s-DdYnFJtr.js => fetch-tokens-BUhULbfD.js} | 7 ++--- ...-tank-1dDav1bf.js => gas-tank-DiwJApz7.js} | 2 +- ...moMcmqN.js => getting-started-BHBhNsDI.js} | 2 +- assets/{iOS-CWO8hRFR.js => iOS-DcRYKII9.js} | 2 +- .../{index-Bn6H9hrN.js => index-DR6XzkYl.js} | 26 +++++++++---------- .../{index-eiT-MmI_.js => index-MK2InkVl.js} | 2 +- ...ndexer-DbL1OAlD.js => indexer-o1f299nU.js} | 2 +- ...n-D7kc3DS8.js => installation-U0MvJyz8.js} | 4 +-- ...ootbox-CYTHQ72f.js => lootbox-BOyUVmVp.js} | 2 +- ...ce-mXm9BjLt.js => marketplace-D99u8IyF.js} | 2 +- ...e-jOtVsaEx.js => marketplaces-DnTDXOuk.js} | 2 +- ...adata-BRJ0_s_X.js => metadata-B66XtzTL.js} | 2 +- ...-D8QvEPZX.js => metadata-tips-cnDPTWKR.js} | 2 +- ...{minter-BQO7Uovb.js => minter-Ce25MOEC.js} | 2 +- ....js => native-network-balance-DTwXGWh7.js} | 2 +- ...t-DCYb2_-s.js => nft-checkout-CGwBdliS.js} | 2 +- ...y-DAIQ9evn.js => node-gateway-9-nhMRrS.js} | 2 +- ...y-DcQr5R2U.js => node-gateway-D1t8nelF.js} | 2 +- assets/nodejs-CWO8hRFR.js | 1 - assets/nodejs-DcRYKII9.js | 1 + ...nramps-uIYZr5qs.js => onramps-DQuxS_Bb.js} | 2 +- ...rview-BXJAh5pD.js => overview--P1lrrxy.js} | 2 +- ...rview-BBtttKMC.js => overview-B6zGNzmR.js} | 21 +++++++++++---- ...rview-Cb_kOiEC.js => overview-BHgLst3H.js} | 2 +- ...rview-B0dToUxf.js => overview-BdEKAPLG.js} | 2 +- ...rview-BNDqce-N.js => overview-BdOgABVn.js} | 2 +- ...rview-6OEMZgDS.js => overview-BeMF62oO.js} | 2 +- ...rview-240yDIuv.js => overview-tw0mg5Mp.js} | 2 +- ...zwoH.js => project-management-BucGlQ55.js} | 2 +- ...XgthWQ.js => project-settings-euqN4X2M.js} | 2 +- assets/reactnative-CWO8hRFR.js | 1 - assets/reactnative-DcRYKII9.js | 1 + ...elayer-BXMRPJsc.js => relayer-BcjX06kX.js} | 2 +- ...t-api-DIGry_pO.js => rest-api-OArSoJbV.js} | 2 +- assets/sequence-kit-CWO8hRFR.js | 1 - assets/sequence-kit-DcRYKII9.js | 1 + ...upport-ylCmghec.js => support-C1Qa5OK-.js} | 2 +- ...s => template-embedded-wallet-C41b3z5B.js} | 2 +- ...s => template-marketplace-api-DqwwDq0f.js} | 2 +- ...q2mFKpk.js => token-directory-5btJcM6h.js} | 2 +- ...DWYDLsDV.js => token-metadata-B96SuUsj.js} | 2 +- ...hwB.js => transaction-history-CuoadMzY.js} | 2 +- ...sation-history-token-contract-CfX-hIX4.js} | 2 +- assets/typescript-CWO8hRFR.js | 1 - assets/typescript-DcRYKII9.js | 1 + ...-DyeElKFa.js => unique-tokens-C4kj4IQq.js} | 2 +- assets/unity-CWO8hRFR.js | 1 - assets/unity-DcRYKII9.js | 1 + ...de-CJmC9uRM.js => unity-guide-DrJIG9ZX.js} | 2 +- ...ks-X-nd6U1N.js => wallet-sdks-Bh4_Xwxg.js} | 2 +- ...de-DDNEifOK.js => webgl-guide-BHUb9UMj.js} | 2 +- ...js => white-label-marketplace-yYRKW9O-.js} | 2 +- guides/lootbox/index.html | 2 +- guides/template-marketplace-api/index.html | 2 +- .../02-building-relaying-server/index.html | 2 +- .../index.html | 2 +- .../template-embedded-wallet/index.html | 2 +- guides/unity-guide/index.html | 2 +- guides/webgl-guide/index.html | 2 +- index.html | 2 +- sdk/android/index.html | 2 +- sdk/go/overview/index.html | 2 +- sdk/iOS/index.html | 2 +- sdk/nodejs/index.html | 2 +- sdk/reactnative/index.html | 2 +- sdk/sequence-kit/01-overview/index.html | 2 +- .../02-getting-started/index.html | 2 +- sdk/sequence-kit/03-configuration/index.html | 2 +- sdk/sequence-kit/04-checkout/index.html | 2 +- .../05-custom-connectors/index.html | 2 +- sdk/sequence-kit/index.html | 2 +- .../03-guides/01-connect-wallet/index.html | 2 +- .../03-guides/02-auth-address/index.html | 2 +- .../03-guides/03-sign-message/index.html | 2 +- .../03-guides/04-session-keys/index.html | 2 +- .../03-guides/05-send-transaction/index.html | 2 +- .../03-guides/06-send-erc20/index.html | 2 +- .../03-guides/07-send-erc721/index.html | 2 +- .../03-guides/08-send-erc1155/index.html | 2 +- .../09-send-batch-transactions/index.html | 2 +- .../03-guides/10-building-backends/index.html | 2 +- sdk/typescript/03-guides/overview/index.html | 2 +- .../connectors/01-overview/index.html | 2 +- .../connectors/02-sequence-kit/index.html | 2 +- sdk/typescript/connectors/03-wagmi/index.html | 2 +- .../connectors/04-rainbow-kit/index.html | 2 +- .../connectors/05-web3-onboard/index.html | 2 +- .../connectors/06-web3-react-v6/index.html | 2 +- .../connectors/07-web3modal/index.html | 2 +- sdk/typescript/connectors/08-FAQ/index.html | 2 +- sdk/typescript/index.html | 2 +- sdk/unity/01-overview/index.html | 2 +- sdk/unity/02-installation/index.html | 2 +- sdk/unity/03-setup/index.html | 2 +- sdk/unity/04-authentication/index.html | 2 +- sdk/unity/05-write-to-blockchain/index.html | 2 +- sdk/unity/06-read-from-blockchain/index.html | 2 +- sdk/unity/07-sign-messages/index.html | 2 +- sdk/unity/08-deploy-contracts/index.html | 2 +- sdk/unity/09-wallet-ui/index.html | 2 +- sdk/unity/Advanced/01-introduction/index.html | 2 +- sdk/unity/Advanced/02-wallets/index.html | 2 +- sdk/unity/Advanced/03-clients/index.html | 2 +- sdk/unity/Advanced/04-transfers/index.html | 2 +- sdk/unity/Advanced/05-contracts/index.html | 2 +- sdk/unity/Advanced/06-tokens/index.html | 2 +- sdk/unity/index.html | 2 +- sdk/unreal/01-overview/index.html | 2 +- sdk/unreal/02-installation/index.html | 2 +- sdk/unreal/03-setup/index.html | 2 +- sdk/unreal/04-authentication/index.html | 2 +- sdk/unreal/05-api-integration/index.html | 2 +- sdk/unreal/06-packaging/index.html | 2 +- solutions/builder/analytics/index.html | 2 +- solutions/builder/contracts/index.html | 2 +- solutions/builder/gas-tank/index.html | 2 +- solutions/builder/getting-started/index.html | 2 +- solutions/builder/indexer/index.html | 2 +- solutions/builder/marketplaces/index.html | 2 +- solutions/builder/node-gateway/index.html | 2 +- solutions/builder/overview/index.html | 2 +- .../builder/project-management/index.html | 2 +- solutions/builder/project-settings/index.html | 2 +- solutions/builder/wallet-sdks/index.html | 2 +- .../01-deploy-an-item-collection/index.html | 2 +- .../02-deploy-ERC20-currency/index.html | 2 +- .../800-manage-metadata-builder/index.html | 2 +- solutions/index.html | 2 +- solutions/marketplaces/index.html | 2 +- .../orderbook/01-overview/index.html | 2 +- .../orderbook/02-quickstart/index.html | 2 +- .../examples/03-get-top-orders/index.html | 2 +- .../examples/04-get-orderbook/index.html | 2 +- .../05-get-user-activities/index.html | 2 +- .../06-orderbook-transactions/index.html | 2 +- solutions/marketplaces/overview/index.html | 2 +- .../white-label-marketplace/index.html | 2 +- solutions/minter/index.html | 2 +- solutions/nft-checkout/index.html | 2 +- solutions/onramps/index.html | 2 +- .../onramps/01-fiat-on-ramps/index.html | 2 +- .../technical-references/5189-4337/index.html | 2 +- .../chain-support/index.html | 2 +- .../internals/01-deployment/index.html | 2 +- .../internals/v1/01-deploy/index.html | 2 +- .../internals/v1/03-wallet-factory/index.html | 2 +- .../v1/04-wallet-configuration/index.html | 2 +- .../v1/05-modules-and-updates/index.html | 2 +- .../v1/06-main-module-upgradeable/index.html | 2 +- .../v1/08-signature-encoding/index.html | 2 +- .../09-nested-transaction-batching/index.html | 2 +- .../internals/v1/10-guest-module/index.html | 2 +- .../internals/v1/11-wallet-context/index.html | 2 +- .../v1/12-contract-audits/index.html | 2 +- .../internals/v2/01-deploy/index.html | 2 +- .../internals/v2/04-configuration/index.html | 2 +- .../wallet-contracts/01-why/index.html | 2 +- .../embedded-wallet/01-overview/index.html | 2 +- .../embedded-wallet/02-quickstart/index.html | 2 +- .../07-Architecture/index.html | 2 +- .../examples/03-manage-sessions/index.html | 2 +- .../examples/04-use-wallets/index.html | 2 +- .../examples/05-validation/index.html | 2 +- .../06-transaction-receipts/index.html | 2 +- solutions/wallets/overview/index.html | 2 +- .../universal-wallet/01-overview/index.html | 2 +- .../universal-wallet/02-quickstart/index.html | 2 +- .../04-sequence-kit/index.html | 2 +- .../universal-wallet/05-platforms/index.html | 2 +- .../06-fiat-on-ramps/index.html | 2 +- .../07-key-management/index.html | 2 +- .../examples/01-connect-wallet/index.html | 2 +- .../examples/02-auth-address/index.html | 2 +- .../examples/03-sign-message/index.html | 2 +- .../examples/04-session-keys/index.html | 2 +- .../examples/05-send-transaction/index.html | 2 +- .../examples/06-send-erc20/index.html | 2 +- .../examples/07-send-erc721/index.html | 2 +- .../examples/08-send-erc1155/index.html | 2 +- .../09-send-batch-transactions/index.html | 2 +- .../examples/10-building-backends/index.html | 2 +- support/index.html | 2 +- support/token-directory/index.html | 2 +- 304 files changed, 345 insertions(+), 321 deletions(-) create mode 100644 .vocs/search-index-9565ce6b.json delete mode 100644 .vocs/search-index-b8370438.json rename assets/{01-connect-wallet-m8lVSacv.js => 01-connect-wallet-CfLEEO7U.js} (99%) rename assets/{01-connect-wallet-BMqUSRDo.js => 01-connect-wallet-DqzhSN1W.js} (99%) rename assets/{01-deploy-Fo7CmIWR.js => 01-deploy-BFX8y6pi.js} (98%) rename assets/{01-deploy-D1dR_q22.js => 01-deploy-C7jVGn4X.js} (99%) rename assets/{01-deploy-an-item-collection-DMRfZ8XO.js => 01-deploy-an-item-collection-DmHaXqli.js} (99%) rename assets/{01-deployment-HSTak7lQ.js => 01-deployment-By40m2sO.js} (98%) rename assets/{01-fiat-on-ramps-CGLqrgR6.js => 01-fiat-on-ramps-Cd245V9w.js} (96%) rename assets/{01-introduction-GkyqY8bl.js => 01-introduction-CoIM1X_k.js} (98%) rename assets/{01-overview-52_meTu3.js => 01-overview-14IeRkgc.js} (97%) rename assets/{01-overview-Bzg7GJ6C.js => 01-overview-C--NnwUF.js} (97%) rename assets/{01-overview-BBZV3ovq.js => 01-overview-CIC96WUX.js} (99%) rename assets/{01-overview-eenILnvj.js => 01-overview-CkEtw05F.js} (98%) rename assets/{01-overview-DuQI0pZU.js => 01-overview-D4iMjiil.js} (95%) rename assets/{01-overview-DNWqy07K.js => 01-overview-Dynuydhs.js} (97%) rename assets/{01-overview-D8Tn9zZW.js => 01-overview-RSvgNLyz.js} (97%) rename assets/{01-why-CAG2t7n0.js => 01-why-DAXaMsU-.js} (98%) rename assets/{02-auth-address-BJKV5nL6.js => 02-auth-address-60THvB2w.js} (99%) rename assets/{02-auth-address-BZh1230X.js => 02-auth-address-BnIOwp7v.js} (99%) rename assets/{02-building-relaying-server-BYO9i9QM.js => 02-building-relaying-server-CuDszrRI.js} (99%) rename assets/{02-deploy-ERC20-currency-D8ac1LPl.js => 02-deploy-ERC20-currency-B-IsDW0E.js} (99%) rename assets/{02-getting-started-CGtMGBD4.js => 02-getting-started-CjU9QgdR.js} (99%) rename assets/{02-installation-D5fb_9zG.js => 02-installation-BPirNZOA.js} (99%) rename assets/{02-installation-fEYPhuch.js => 02-installation-D_1-cGrW.js} (97%) rename assets/{02-quickstart-Dw_dstON.js => 02-quickstart--nv7V4Yc.js} (99%) rename assets/{02-quickstart-CPH7FQRk.js => 02-quickstart-BpRhgBt9.js} (98%) rename assets/{02-quickstart-D4ediW1_.js => 02-quickstart-DQkU9QH6.js} (99%) rename assets/{04-sequence-kit-BRgz76hA.js => 02-sequence-kit-R_H4ChxU.js} (97%) rename assets/{02-wallets-CyLSnOCH.js => 02-wallets-DULr0dXt.js} (99%) rename assets/{03-clients-CVLGz0EF.js => 03-clients-BNM_xCZa.js} (99%) rename assets/{03-configuration--HWmf-Mm.js => 03-configuration-D1joKIQx.js} (99%) rename assets/{03-get-top-orders-DESIlbG0.js => 03-get-top-orders-CLca8zvz.js} (99%) rename assets/{03-manage-sessions-pkLElreW.js => 03-manage-sessions-4mTx5Qtc.js} (99%) rename assets/{03-mint-collectibles-serverless-BJtBuUYk.js => 03-mint-collectibles-serverless-CpfiFoVo.js} (99%) rename assets/{03-setup-C0dwh71D.js => 03-setup-CHg84Z-0.js} (97%) rename assets/{03-setup-BqxPVrTQ.js => 03-setup-LfdLm5v0.js} (97%) rename assets/{03-sign-message-CbKbpn7U.js => 03-sign-message-Cen7X5iw.js} (90%) rename assets/{03-sign-message-lAsd9YJN.js => 03-sign-message-MaCTUdGD.js} (99%) rename assets/{03-wagmi-CpdgCO8V.js => 03-wagmi-CBCxbzm8.js} (99%) rename assets/{03-wallet-factory-TFAMxFf_.js => 03-wallet-factory-R5wOcB3Z.js} (99%) rename assets/{04-authentication-C_pTtnTW.js => 04-authentication-8J7N8os-.js} (99%) rename assets/{04-authentication-0345J8l8.js => 04-authentication-Jevds3CY.js} (99%) rename assets/{04-checkout-BVPq6FfX.js => 04-checkout-VW3jQ2DG.js} (99%) rename assets/{04-configuration-DDJEt13u.js => 04-configuration-Ke_7PJJc.js} (99%) rename assets/{04-get-orderbook-CcHbZi_W.js => 04-get-orderbook-BLMldV4p.js} (99%) rename assets/{04-rainbow-kit-DA-KWee4.js => 04-rainbow-kit-Dg34mmXH.js} (99%) rename assets/{02-sequence-kit-DK2NtjwN.js => 04-sequence-kit-BaLVgDtU.js} (97%) rename assets/{04-session-keys-DffAoXbb.js => 04-session-keys-CMKstS7R.js} (99%) rename assets/{04-session-keys-mzqz-yOg.js => 04-session-keys-DJCy4k-0.js} (99%) rename assets/{04-transfers-fldLL6k8.js => 04-transfers-BqvVNfJP.js} (96%) rename assets/{04-use-wallets-IfyNDXW5.js => 04-use-wallets-C_DQ6UCq.js} (99%) rename assets/{04-wallet-configuration-Ezwe96dL.js => 04-wallet-configuration-DagmVdyS.js} (99%) rename assets/{05-api-integration-BAkxldxc.js => 05-api-integration-BHJnIyv7.js} (99%) rename assets/{05-contracts-FJ80mg17.js => 05-contracts-DjQ4iIgh.js} (99%) rename assets/{05-custom-connectors-Brj3CoYB.js => 05-custom-connectors-WWzLXGT6.js} (99%) rename assets/{05-get-user-activities-FpRCBXoE.js => 05-get-user-activities-CQNuLaE7.js} (99%) rename assets/{05-modules-and-updates-B745dCXv.js => 05-modules-and-updates-D6-_b8g4.js} (99%) rename assets/{05-platforms-Qn5r-I38.js => 05-platforms-BG2ngyqG.js} (97%) rename assets/{05-send-transaction-DMhvmYLj.js => 05-send-transaction-CPTudBdL.js} (98%) rename assets/{05-send-transaction-CYUsi7f0.js => 05-send-transaction-Cd0zCRZo.js} (98%) rename assets/{05-validation-BMAIT7lp.js => 05-validation-fu6h6RT4.js} (99%) rename assets/{05-web3-onboard-C59AlOaH.js => 05-web3-onboard-NhfD69Ky.js} (99%) rename assets/{05-write-to-blockchain-BhNClGRn.js => 05-write-to-blockchain-CbixjMAO.js} (99%) rename assets/{06-fiat-on-ramps-T0-3NKJP.js => 06-fiat-on-ramps-BnTibKTi.js} (96%) rename assets/{06-main-module-upgradeable-Cv58TY4K.js => 06-main-module-upgradeable-qn_mvGhb.js} (90%) rename assets/{06-orderbook-transactions-DgOnZQxx.js => 06-orderbook-transactions-DqH4CAJH.js} (99%) rename assets/{06-packaging-CeTraCJv.js => 06-packaging-DCgamZU5.js} (98%) rename assets/{06-read-from-blockchain-B3uVBIhc.js => 06-read-from-blockchain-S3XaeQAP.js} (97%) rename assets/{06-send-erc20-BswrOfdh.js => 06-send-erc20-DK7j3wYS.js} (99%) rename assets/{06-send-erc20-Dlnoxfm2.js => 06-send-erc20-DSzwbCHJ.js} (99%) rename assets/{06-tokens-BvNhWInG.js => 06-tokens-DgF_JSY-.js} (98%) rename assets/{06-transaction-receipts-Bur2MgK_.js => 06-transaction-receipts-kCr4ctoT.js} (99%) rename assets/{06-web3-react-v6-DPgVqEZy.js => 06-web3-react-v6-DsVPcEC0.js} (99%) rename assets/{07-Architecture-CFB_rX-9.js => 07-Architecture-BcBe-PC2.js} (75%) rename assets/{07-key-management-JqgkrJAs.js => 07-key-management-31l3CdaD.js} (98%) rename assets/{07-send-erc721-CsBCYkAg.js => 07-send-erc721-CLlkpkZ7.js} (99%) rename assets/{07-send-erc721-CuoiTcG6.js => 07-send-erc721-Crk85xhq.js} (99%) rename assets/{07-sign-messages-CJrdbWnF.js => 07-sign-messages-DrXhCl-Q.js} (97%) rename assets/{07-web3modal-CJWNDuPy.js => 07-web3modal-UaDM0Ykz.js} (96%) rename assets/{08-FAQ-BnZeRgpC.js => 08-FAQ-CuGN-2pd.js} (99%) rename assets/{08-deploy-contracts-COfdfYKV.js => 08-deploy-contracts-BI-L_Iwr.js} (98%) rename assets/{08-send-erc1155-BvjJ3TJQ.js => 08-send-erc1155-BS-Icmoz.js} (99%) rename assets/{08-send-erc1155-CZ-semBW.js => 08-send-erc1155-vmPKw9IF.js} (99%) rename assets/{08-signature-encoding-CuAO-4z4.js => 08-signature-encoding--DDkWq4i.js} (99%) rename assets/{09-nested-transaction-batching-Cai87NjL.js => 09-nested-transaction-batching-i_3yyQlj.js} (89%) rename assets/{09-send-batch-transactions-DABe3vy4.js => 09-send-batch-transactions-D-VMCWEl.js} (99%) rename assets/{09-send-batch-transactions-DK07H4Kh.js => 09-send-batch-transactions-DGwawNlD.js} (99%) rename assets/{09-wallet-ui-IOp_A6vv.js => 09-wallet-ui-DQWmGe8q.js} (99%) rename assets/{10-building-backends-B5UE4lHW.js => 10-building-backends-BAI9VV8A.js} (98%) rename assets/{10-building-backends-qcbLp100.js => 10-building-backends-D9uYDf2v.js} (98%) rename assets/{10-guest-module-Cau816gI.js => 10-guest-module-aJInQEuh.js} (90%) rename assets/{11-wallet-context-munICQdC.js => 11-wallet-context-Bq48GAe9.js} (98%) rename assets/{12-contract-audits-CIZsucst.js => 12-contract-audits-CQhSuOeI.js} (97%) rename assets/{5189-4337-eFMx7GIk.js => 5189-4337-C0tAKxP9.js} (75%) rename assets/{800-manage-metadata-builder-BdRNcAvW.js => 800-manage-metadata-builder-D4heEJGP.js} (99%) rename assets/{CardGrid-aCCIcMd4.js => CardGrid-BnCcSD8R.js} (87%) rename assets/{Video-C_LaYbpR.js => Video-DrWW48g_.js} (90%) rename assets/{analytics-DX16d0wm.js => analytics-ByaRhbRP.js} (98%) rename assets/{android-CWO8hRFR.js => android-DcRYKII9.js} (75%) rename assets/{chain-support-CVTb5aJk.js => chain-support-B29jrp7j.js} (98%) rename assets/{contract-metadata-DoBtUdQP.js => contract-metadata-Cn9ZCQ29.js} (99%) rename assets/{contracts-Cq03dBTm.js => contracts-BBI-SsfV.js} (97%) rename assets/{embedded-wallet-C8P-szcQ.js => embedded-wallet-C5b57Xms.js} (95%) rename assets/{fetch-tokens-DdYnFJtr.js => fetch-tokens-BUhULbfD.js} (97%) rename assets/{gas-tank-1dDav1bf.js => gas-tank-DiwJApz7.js} (95%) rename assets/{getting-started-MmoMcmqN.js => getting-started-BHBhNsDI.js} (98%) rename assets/{iOS-CWO8hRFR.js => iOS-DcRYKII9.js} (75%) rename assets/{index-Bn6H9hrN.js => index-DR6XzkYl.js} (83%) rename assets/{index-eiT-MmI_.js => index-MK2InkVl.js} (99%) rename assets/{indexer-DbL1OAlD.js => indexer-o1f299nU.js} (95%) rename assets/{installation-D7kc3DS8.js => installation-U0MvJyz8.js} (98%) rename assets/{lootbox-CYTHQ72f.js => lootbox-BOyUVmVp.js} (96%) rename assets/{marketplace-mXm9BjLt.js => marketplace-D99u8IyF.js} (94%) rename assets/{white-label-marketplace-jOtVsaEx.js => marketplaces-DnTDXOuk.js} (94%) rename assets/{metadata-BRJ0_s_X.js => metadata-B66XtzTL.js} (99%) rename assets/{metadata-tips-D8QvEPZX.js => metadata-tips-cnDPTWKR.js} (97%) rename assets/{minter-BQO7Uovb.js => minter-Ce25MOEC.js} (94%) rename assets/{native-network-balance-BIxm1G19.js => native-network-balance-DTwXGWh7.js} (99%) rename assets/{nft-checkout-DCYb2_-s.js => nft-checkout-CGwBdliS.js} (92%) rename assets/{node-gateway-DAIQ9evn.js => node-gateway-9-nhMRrS.js} (95%) rename assets/{node-gateway-DcQr5R2U.js => node-gateway-D1t8nelF.js} (99%) delete mode 100644 assets/nodejs-CWO8hRFR.js create mode 100644 assets/nodejs-DcRYKII9.js rename assets/{onramps-uIYZr5qs.js => onramps-DQuxS_Bb.js} (91%) rename assets/{overview-BXJAh5pD.js => overview--P1lrrxy.js} (96%) rename assets/{overview-BBtttKMC.js => overview-B6zGNzmR.js} (72%) rename assets/{overview-Cb_kOiEC.js => overview-BHgLst3H.js} (98%) rename assets/{overview-B0dToUxf.js => overview-BdEKAPLG.js} (99%) rename assets/{overview-BNDqce-N.js => overview-BdOgABVn.js} (99%) rename assets/{overview-6OEMZgDS.js => overview-BeMF62oO.js} (95%) rename assets/{overview-240yDIuv.js => overview-tw0mg5Mp.js} (98%) rename assets/{project-management-CmuszwoH.js => project-management-BucGlQ55.js} (95%) rename assets/{project-settings-D3XgthWQ.js => project-settings-euqN4X2M.js} (99%) delete mode 100644 assets/reactnative-CWO8hRFR.js create mode 100644 assets/reactnative-DcRYKII9.js rename assets/{relayer-BXMRPJsc.js => relayer-BcjX06kX.js} (99%) rename assets/{rest-api-DIGry_pO.js => rest-api-OArSoJbV.js} (99%) delete mode 100644 assets/sequence-kit-CWO8hRFR.js create mode 100644 assets/sequence-kit-DcRYKII9.js rename assets/{support-ylCmghec.js => support-C1Qa5OK-.js} (94%) rename assets/{template-embedded-wallet-U-onn5aG.js => template-embedded-wallet-C41b3z5B.js} (99%) rename assets/{template-marketplace-api-KSdx9fWf.js => template-marketplace-api-DqwwDq0f.js} (99%) rename assets/{token-directory-Jq2mFKpk.js => token-directory-5btJcM6h.js} (99%) rename assets/{token-metadata-DWYDLsDV.js => token-metadata-B96SuUsj.js} (99%) rename assets/{transaction-history-j1vjXhwB.js => transaction-history-CuoadMzY.js} (99%) rename assets/{transation-history-token-contract-its4BBrH.js => transation-history-token-contract-CfX-hIX4.js} (99%) delete mode 100644 assets/typescript-CWO8hRFR.js create mode 100644 assets/typescript-DcRYKII9.js rename assets/{unique-tokens-DyeElKFa.js => unique-tokens-C4kj4IQq.js} (99%) delete mode 100644 assets/unity-CWO8hRFR.js create mode 100644 assets/unity-DcRYKII9.js rename assets/{unity-guide-CJmC9uRM.js => unity-guide-DrJIG9ZX.js} (96%) rename assets/{wallet-sdks-X-nd6U1N.js => wallet-sdks-Bh4_Xwxg.js} (97%) rename assets/{webgl-guide-DDNEifOK.js => webgl-guide-BHUb9UMj.js} (99%) rename assets/{marketplaces-CfqPZAL8.js => white-label-marketplace-yYRKW9O-.js} (94%) diff --git a/.vocs/search-index-9565ce6b.json b/.vocs/search-index-9565ce6b.json new file mode 100644 index 00000000000..a42d64ffd77 --- /dev/null +++ b/.vocs/search-index-9565ce6b.json @@ -0,0 +1 @@ +{"documentCount":485,"nextId":485,"documentIds":{"0":"docs/pages/support.mdx#support","1":"docs/pages/api/marketplace.mdx#marketplace-api","2":"docs/pages/api/metadata.mdx#metadata-api","3":"docs/pages/api/metadata.mdx#obtaining-a-service-account--token","4":"docs/pages/api/metadata.mdx#creating-collections-tokens-and-managing-metadata","5":"docs/pages/api/metadata.mdx#pricing--usage","6":"docs/pages/api/node-gateway.mdx#node-gateway","7":"docs/pages/api/node-gateway.mdx#give-it-a-try","8":"docs/pages/api/relayer.mdx#relayer-api","9":"docs/pages/api/relayer.mdx#anatomy-of-a-sequence-transaction-bundle","10":"docs/pages/api/relayer.mdx#gas-sponsorship-and-fees","11":"docs/pages/api/relayer.mdx#api","12":"docs/pages/api/relayer.mdx#fetching-fee-options","13":"docs/pages/api/relayer.mdx#sending-transactions","14":"docs/pages/api/relayer.mdx#fetching-transaction-receipts","15":"docs/pages/guides/lootbox.mdx#deploy-an-in-game-collectibles-contract","16":"docs/pages/guides/lootbox.mdx#query-contract-details","17":"docs/pages/guides/lootbox.mdx#fetch-token-balances-of-a-wallet","18":"docs/pages/guides/unity-guide.mdx#integrate-sequencekit-with-waas","19":"docs/pages/guides/unity-guide.mdx#deploy-a-collectibles-contract","20":"docs/pages/guides/unity-guide.mdx#deploy-a-remote-minter","21":"docs/pages/guides/unity-guide.mdx#mint-in-game-achievement-tokens","22":"docs/pages/guides/unity-guide.mdx#burn-in-game-achievement-tokens","23":"docs/pages/guides/unity-guide.mdx#integrate-an-embedded-marketplace","24":"docs/pages/solutions/minter.mdx#mint-tokens-using-builder-manually","25":"docs/pages/solutions/minter.mdx#deploy-a-serverless-minter-on-cloudflare-workers","26":"docs/pages/solutions/nft-checkout.mdx#integrate-nft-checkout-on-web-coming-soon","27":"docs/pages/solutions/onramps.mdx#integrate-onramp-on-web","28":"docs/pages/api/indexer/fetch-tokens.mdx#tokens-api","29":"docs/pages/api/indexer/fetch-tokens.mdx#fetches-list-of-erc20-erc721-and-erc1155-tokens-and-metadata-in-any-wallet","30":"docs/pages/api/indexer/fetch-tokens.mdx#fetch-token-ids-balances-and-metadata-of-erc721-and-erc1155-collections","31":"docs/pages/api/indexer/installation.mdx#indexer-installation","32":"docs/pages/api/indexer/installation.mdx#installation","33":"docs/pages/api/indexer/installation.mdx#web--nodejs-installation","34":"docs/pages/api/indexer/installation.mdx#go-installation","35":"docs/pages/api/indexer/installation.mdx#unity-or-unreal-installation","36":"docs/pages/api/indexer/metadata-tips.mdx#metadata-tips--notes-on-spam","37":"docs/pages/api/indexer/native-network-balance.mdx#native-network-balances-ie-eth-matic-etc","38":"docs/pages/api/indexer/native-network-balance.mdx#fetch-native-network-balance-aka-eth-on-ethereum-matic-on-polygon-avax-on-avalanche-bnb-on-bsc-etc","39":"docs/pages/api/indexer/overview.mdx#indexer","40":"docs/pages/api/indexer/overview.mdx#supported-networks--endpoints","41":"docs/pages/api/indexer/overview.mdx#getting-started","42":"docs/pages/api/indexer/transaction-history.mdx#wallet-transaction-history","43":"docs/pages/api/indexer/transaction-history.mdx#fetch-the-transaction-history-for-any-wallet-address","44":"docs/pages/api/indexer/transation-history-token-contract.mdx#contract-token-history","45":"docs/pages/api/indexer/transation-history-token-contract.mdx#fetch--listen-to-the-transaction-history-for-any-erc20-erc721-erc1155-contract","46":"docs/pages/api/indexer/unique-tokens.mdx#tokens-in-a-contract","47":"docs/pages/api/indexer/unique-tokens.mdx#fetch-all-unique-tokens-in-a-particular-erc207211155-contract-including-total-supplies","48":"docs/pages/api/metadata/contract-metadata.mdx#contract-metadata","49":"docs/pages/api/metadata/contract-metadata.mdx#fetch-contract-metadata-of-any-erc20-erc721-or-erc1155-contract-address","50":"docs/pages/api/metadata/contract-metadata.mdx#contract-level-metadata-standards","51":"docs/pages/api/metadata/overview.mdx#metadata","52":"docs/pages/api/metadata/overview.mdx#web--nodejs-installation","53":"docs/pages/api/metadata/overview.mdx#go-installation","54":"docs/pages/api/metadata/overview.mdx#unity-or-unreal-installation","55":"docs/pages/api/metadata/rest-api.mdx#metadata-rest-api-reference--usage","56":"docs/pages/api/metadata/rest-api.mdx#example","57":"docs/pages/api/metadata/rest-api.mdx#usage","58":"docs/pages/api/metadata/rest-api.mdx#rest-endpoints","59":"docs/pages/api/metadata/rest-api.mdx#rpc-client","60":"docs/pages/api/metadata/rest-api.mdx#metadata-rpc-methods","61":"docs/pages/api/metadata/token-metadata.mdx#token-metadata","62":"docs/pages/api/metadata/token-metadata.mdx#fetch-token-metadata-for-any-erc721-or-erc1155-contract","63":"docs/pages/api/metadata/token-metadata.mdx#refreshing-token-metadata","64":"docs/pages/api/metadata/token-metadata.mdx#testing-instructions","65":"docs/pages/api/metadata/token-metadata.mdx#token-metadata-standards","66":"docs/pages/api/metadata/token-metadata.mdx#metadata-standards","67":"docs/pages/api/metadata/token-metadata.mdx#erc721","68":"docs/pages/api/metadata/token-metadata.mdx#erc1155","69":"docs/pages/api/metadata/token-metadata.mdx#attributes-vs-properties","70":"docs/pages/api/metadata/token-metadata.mdx#erc20","71":"docs/pages/guides/templates/02-building-relaying-server.mdx#building-a-relaying-server","72":"docs/pages/guides/templates/02-building-relaying-server.mdx#nodejs-server","73":"docs/pages/guides/templates/02-building-relaying-server.mdx#nodejs-server-with-gas-sponsoring-using-sequence-builder","74":"docs/pages/guides/templates/02-building-relaying-server.mdx#a-create-dapp","75":"docs/pages/guides/templates/02-building-relaying-server.mdx#b-new-dapp","76":"docs/pages/guides/templates/02-building-relaying-server.mdx#c1-gas-tank","77":"docs/pages/guides/templates/02-building-relaying-server.mdx#c2-add-gas","78":"docs/pages/guides/templates/02-building-relaying-server.mdx#c3-add-sponsored-address","79":"docs/pages/guides/templates/02-building-relaying-server.mdx#parallel-transactions","80":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#mint-collectibles-using-a-gasless-serverless-relayer","81":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#1-setup-cloudflare-environment-with-wrangler-cli-and-deploy-a-test","82":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#deploy-test","83":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#2-deploy-sponsor-and-update-metadata-for-an-erc1155-contract-with-builder","84":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#update-metadata","85":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#contract-sponsoring","86":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#3-use-ethauthproof-to-prevent-eoa-ddos","87":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#add-cloudflare-environment-variables","88":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#implement-window-object-in-wrangler-template","89":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#testing-the-deploy","90":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#using-the-ethauthproof-viewer-dapp","91":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#4-mint-a-collectible-to-wallet","92":"docs/pages/guides/templates/template-embedded-wallet.mdx#quickstart","93":"docs/pages/guides/templates/template-embedded-wallet.mdx#try-a-demo","94":"docs/pages/guides/templates/template-embedded-wallet.mdx#template","95":"docs/pages/guides/templates/template-embedded-wallet.mdx#getting-started","96":"docs/pages/guides/templates/template-embedded-wallet.mdx#sdk-installation","97":"docs/pages/guides/templates/template-embedded-wallet.mdx#project-setup","98":"docs/pages/guides/templates/template-embedded-wallet.mdx#library-setup","99":"docs/pages/sdk/go/overview.mdx#go","100":"docs/pages/sdk/go/overview.mdx#ethkit","101":"docs/pages/sdk/sequence-kit/01-overview.mdx#sequencekit-sdk","102":"docs/pages/sdk/sequence-kit/01-overview.mdx#key-features","103":"docs/pages/sdk/sequence-kit/01-overview.mdx#next-steps","104":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#getting-started-with-sequence-kit","105":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#installing-sequence-kit-packages","106":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#setting-up-the-kit-wrapper","107":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#setting-up-the-embedded-wallet-wrapper","108":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#triggering-the-connect-modal","109":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#invoking-the-embedded-wallet-modal","110":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#react-example","111":"docs/pages/sdk/sequence-kit/03-configuration.mdx#configuration-options","112":"docs/pages/sdk/sequence-kit/03-configuration.mdx#available-options","113":"docs/pages/sdk/sequence-kit/03-configuration.mdx#defaulttheme","114":"docs/pages/sdk/sequence-kit/03-configuration.mdx#position","115":"docs/pages/sdk/sequence-kit/03-configuration.mdx#sign-in-modal-configuration-signin","116":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinlogourl","117":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinprojectname","118":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinshowemailinput","119":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinsocialauthoptions","120":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinwalletauthoptions","121":"docs/pages/sdk/sequence-kit/03-configuration.mdx#displayedassets","122":"docs/pages/sdk/sequence-kit/04-checkout.mdx#overview","123":"docs/pages/sdk/sequence-kit/04-checkout.mdx#integration","124":"docs/pages/sdk/sequence-kit/04-checkout.mdx#opening-the-checkout-modal","125":"docs/pages/sdk/sequence-kit/04-checkout.mdx#configuring-the-checkout-modal","126":"docs/pages/sdk/sequence-kit/04-checkout.mdx#crypto-checkout-configuration-cryptocheckout","127":"docs/pages/sdk/sequence-kit/04-checkout.mdx#order-summary-configuration-ordersummaryitems","128":"docs/pages/sdk/sequence-kit/05-custom-connectors.mdx#custom-connectors-in-sequence-kit","129":"docs/pages/sdk/sequence-kit/05-custom-connectors.mdx#creating-a-custom-connector","130":"docs/pages/sdk/sequence-kit/05-custom-connectors.mdx#using-custom-connectors","131":"docs/pages/sdk/sequence-kit/05-custom-connectors.mdx#share-your-custom-connectors","132":"docs/pages/sdk/unity/01-overview.mdx#introduction","133":"docs/pages/sdk/unity/01-overview.mdx#requirements","134":"docs/pages/sdk/unity/02-installation.mdx#installation","135":"docs/pages/sdk/unity/02-installation.mdx#package-manager---recommended","136":"docs/pages/sdk/unity/02-installation.mdx#samples","137":"docs/pages/sdk/unity/02-installation.mdx#manual","138":"docs/pages/sdk/unity/03-setup.mdx#setup","139":"docs/pages/sdk/unity/04-authentication.mdx#authentication","140":"docs/pages/sdk/unity/04-authentication.mdx#1-email-sign-in","141":"docs/pages/sdk/unity/04-authentication.mdx#2-social-sign-in","142":"docs/pages/sdk/unity/04-authentication.mdx#ios","143":"docs/pages/sdk/unity/04-authentication.mdx#macos","144":"docs/pages/sdk/unity/04-authentication.mdx#pc","145":"docs/pages/sdk/unity/04-authentication.mdx#android","146":"docs/pages/sdk/unity/04-authentication.mdx#webgl","147":"docs/pages/sdk/unity/04-authentication.mdx#connecting-with-waas","148":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#write-to-blockchain","149":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#rawtransaction","150":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#senderc20","151":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#complex-erc20-interactions","152":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#senderc721","153":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#complex-erc721-interactions","154":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#senderc1155","155":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#complex-erc1155-interactions","156":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#delayedencode","157":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#batch-transactions","158":"docs/pages/sdk/unity/06-read-from-blockchain.mdx#read-from-blockchain","159":"docs/pages/sdk/unity/07-sign-messages.mdx#sign-messages","160":"docs/pages/sdk/unity/08-deploy-contracts.mdx#contract-deployment","161":"docs/pages/sdk/unity/09-wallet-ui.mdx#wallet-ui","162":"docs/pages/sdk/unity/09-wallet-ui.mdx#how-it-works","163":"docs/pages/sdk/unity/09-wallet-ui.mdx#ui-customizability","164":"docs/pages/sdk/unity/09-wallet-ui.mdx#color-scheme-manager","165":"docs/pages/sdk/unity/09-wallet-ui.mdx#more-customization-tools-coming-soon","166":"docs/pages/sdk/unreal/01-overview.mdx#introduction","167":"docs/pages/sdk/unreal/01-overview.mdx#requirements","168":"docs/pages/sdk/unreal/02-installation.mdx#installation","169":"docs/pages/sdk/unreal/02-installation.mdx#credentials","170":"docs/pages/sdk/unreal/02-installation.mdx#security","171":"docs/pages/sdk/unreal/03-setup.mdx#setup","172":"docs/pages/sdk/unreal/04-authentication.mdx#authentication","173":"docs/pages/sdk/unreal/04-authentication.mdx#custom-ui-integration","174":"docs/pages/sdk/unreal/04-authentication.mdx#email-based-authentication","175":"docs/pages/sdk/unreal/04-authentication.mdx#social-signin-based-authentication-on-desktop","176":"docs/pages/sdk/unreal/04-authentication.mdx#social-signin-based-authentication-on-mobile","177":"docs/pages/sdk/unreal/05-api-integration.mdx#api-integration","178":"docs/pages/sdk/unreal/05-api-integration.mdx#sequence-api","179":"docs/pages/sdk/unreal/05-api-integration.mdx#sequence-unreal-api","180":"docs/pages/sdk/unreal/05-api-integration.mdx#usequencewallet","181":"docs/pages/sdk/unreal/05-api-integration.mdx#sequence-api-methods","182":"docs/pages/sdk/unreal/06-packaging.mdx#packaging","183":"docs/pages/sdk/unreal/06-packaging.mdx#google-sso-setup","184":"docs/pages/sdk/unreal/06-packaging.mdx#ios","185":"docs/pages/sdk/unreal/06-packaging.mdx#unreal-and-xcode-specifics","186":"docs/pages/solutions/builder/analytics.mdx#analytics-in-builder","187":"docs/pages/solutions/builder/analytics.mdx#how-it-works","188":"docs/pages/solutions/builder/analytics.mdx#overview","189":"docs/pages/solutions/builder/analytics.mdx#wallets-connected","190":"docs/pages/solutions/builder/analytics.mdx#marketplace-transactions","191":"docs/pages/solutions/builder/analytics.mdx#transaction-requests","192":"docs/pages/solutions/marketplaces/overview.mdx#marketplaces-overview","193":"docs/pages/solutions/marketplaces/overview.mdx#what-are-the-differences-between-these-options","194":"docs/pages/solutions/marketplaces/overview.mdx#getting-started","195":"docs/pages/solutions/wallets/overview.mdx#sequence-wallets-overview","196":"docs/pages/solutions/wallets/overview.mdx#what-are-the-differences-between-these-options","197":"docs/pages/solutions/wallets/overview.mdx#what-are-the-benefits-of-each-and-how-can-i-leverage-them","198":"docs/pages/solutions/wallets/overview.mdx#getting-started","199":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connect-wallet","200":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connecting-your-dapp-with-0xsequence","201":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#wallet-login-and-connect-options","202":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#app","203":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#appprotocol","204":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#origin","205":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#expiry","206":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#authorize","207":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#authorizenonce","208":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#refresh","209":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#keepwalletopened","210":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#askforemail","211":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingstheme","212":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingsbannerurl","213":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingssigninwith","214":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingssigninwithemail","215":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingssigninoptions","216":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingsincludedpaymentproviders","217":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingsdefaultfundingcurrency","218":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingsdefaultpurchaseamount","219":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingslockfundingcurrencytodefault","220":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connecting-your-dapp-with-web3js-or-ethersjs","221":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connecting-to-any-ethereum-dapp-with-the-sequence-wallet-chrome-extension","222":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connecting-via-walletconnect","223":"docs/pages/sdk/typescript/03-guides/02-auth-address.mdx#authenticate-users-with-message-signature","224":"docs/pages/sdk/typescript/03-guides/02-auth-address.mdx#ask-for-the-wallet-address","225":"docs/pages/sdk/typescript/03-guides/02-auth-address.mdx#authenticate-wallet","226":"docs/pages/sdk/typescript/03-guides/02-auth-address.mdx#authenticate-wallet-server-side","227":"docs/pages/sdk/typescript/03-guides/03-sign-message.mdx#todo---replace-with-code-groups-from-vocs","228":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#no-wallet-confirmation-signatures","229":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#session-keys","230":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#using-session-keys-with-sequence","231":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#1-initialize-sequence-wallet-and-connect","232":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#2-generate-a-session-key","233":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#3-sign-authorization-message","234":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#4-verify-authorization-signature","235":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#5-sign-message-with-session-key","236":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#6-verify-session-signature","237":"docs/pages/sdk/typescript/03-guides/05-send-transaction.mdx#sending-transactions","238":"docs/pages/sdk/typescript/03-guides/06-send-erc20.mdx#sending-erc-20-tokens","239":"docs/pages/sdk/typescript/03-guides/07-send-erc721.mdx#sending-erc-721-nft-tokens","240":"docs/pages/sdk/typescript/03-guides/08-send-erc1155.mdx#sending-erc-1155-collectible-tokens","241":"docs/pages/sdk/typescript/03-guides/09-send-batch-transactions.mdx#sending-a-batch-of-transactions","242":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#building-backends-with-sequence","243":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#nodejs","244":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#go","245":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#ethkit","246":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#support-for-other-backend-languages","247":"docs/pages/sdk/typescript/03-guides/overview.mdx#install","248":"docs/pages/sdk/typescript/03-guides/overview.mdx#cdn-distribution-as-native-js","249":"docs/pages/sdk/typescript/connectors/01-overview.mdx#wallet-connectors","250":"docs/pages/sdk/typescript/connectors/02-sequence-kit.mdx#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","251":"docs/pages/sdk/typescript/connectors/02-sequence-kit.mdx#key-features","252":"docs/pages/sdk/typescript/connectors/02-sequence-kit.mdx#next-steps","253":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#using-wagmi","254":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#installation","255":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#usage","256":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#parameters","257":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#chains","258":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#optionsconnect-optional","259":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#optionsdefaultnetwork-optional","260":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#using-older-versions-of-wagmi--012x","261":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#using-nextjs","262":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#examples","263":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#using-rainbowkit","264":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#installation","265":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#usage","266":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#parameters","267":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#chains","268":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#connect-optional","269":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#defaultnetwork-optional","270":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#using-nextjs","271":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#using-older-versions-of-wagmi--012x","272":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#examples","273":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#using-web3-onboard","274":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#installation","275":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#usage","276":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#parameters","277":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#network-optional","278":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#appname-optional","279":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#example","280":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#using-web3-react-v6","281":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#installation","282":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#usage","283":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#initialization","284":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#activationdeactivation","285":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#options","286":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#chainid","287":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#appname-optional","288":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#example","289":"docs/pages/sdk/typescript/connectors/07-web3modal.mdx#using-web3modal","290":"docs/pages/sdk/typescript/connectors/07-web3modal.mdx#usage","291":"docs/pages/sdk/typescript/connectors/07-web3modal.mdx#example","292":"docs/pages/sdk/typescript/connectors/08-FAQ.mdx#nextjs","293":"docs/pages/sdk/typescript/connectors/08-FAQ.mdx#why-does-my-wallet-integration-produce-an-error-when-used-with-nextjs","294":"docs/pages/sdk/typescript/connectors/08-FAQ.mdx#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-pages-directory-all-versions-of-nextjs","295":"docs/pages/sdk/typescript/connectors/08-FAQ.mdx#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-app-directory-version-13-and-above-only","296":"docs/pages/sdk/unity/Advanced/01-introduction.mdx#advanced---introduction","297":"docs/pages/sdk/unity/Advanced/01-introduction.mdx#important-components","298":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#wallets","299":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#1-ethwallet","300":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#2-waastowalletadapter","301":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#methods","302":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#getaddress","303":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#sendtransaction","304":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#sendtransactionandwaitforreceipt","305":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#sendtransactionbatch","306":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#sendtransactionbatchandwaitforreceipts","307":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#signmessage","308":"docs/pages/sdk/unity/Advanced/03-clients.mdx#clients","309":"docs/pages/sdk/unity/Advanced/03-clients.mdx#methods","310":"docs/pages/sdk/unity/Advanced/03-clients.mdx#balanceat","311":"docs/pages/sdk/unity/Advanced/03-clients.mdx#blockbynumber","312":"docs/pages/sdk/unity/Advanced/03-clients.mdx#blockbyhash","313":"docs/pages/sdk/unity/Advanced/03-clients.mdx#blocknumber","314":"docs/pages/sdk/unity/Advanced/03-clients.mdx#blockrange","315":"docs/pages/sdk/unity/Advanced/03-clients.mdx#chainid","316":"docs/pages/sdk/unity/Advanced/03-clients.mdx#codeat","317":"docs/pages/sdk/unity/Advanced/03-clients.mdx#estimategas","318":"docs/pages/sdk/unity/Advanced/03-clients.mdx#feehistory","319":"docs/pages/sdk/unity/Advanced/03-clients.mdx#networkid","320":"docs/pages/sdk/unity/Advanced/03-clients.mdx#nonceat","321":"docs/pages/sdk/unity/Advanced/03-clients.mdx#sendrawtransaction","322":"docs/pages/sdk/unity/Advanced/03-clients.mdx#suggestgasprice","323":"docs/pages/sdk/unity/Advanced/03-clients.mdx#suggestgastipcap","324":"docs/pages/sdk/unity/Advanced/03-clients.mdx#transactionbyhash","325":"docs/pages/sdk/unity/Advanced/03-clients.mdx#transactioncount","326":"docs/pages/sdk/unity/Advanced/03-clients.mdx#waitfortransactionreceipt","327":"docs/pages/sdk/unity/Advanced/04-transfers.mdx#transfers","328":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#contracts","329":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#calling-smart-contract-functions","330":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#understanding-data-type-mappings","331":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#querying-contracts","332":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#deploying-contracts","333":"docs/pages/sdk/unity/Advanced/06-tokens.mdx#tokens","334":"docs/pages/sdk/unity/Advanced/06-tokens.mdx#bonus-ownable","335":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#how-to-manage-item-metadata-in-sequence-builder","336":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#introduction","337":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-1-prepare-your-token-images-and-metadata","338":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-2-set-up-on-pinatacloud","339":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-3-upload-your-metadata-files","340":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-4-get-the-folder-url","341":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-5-set-up-on-sequence-builder","342":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-6-deploy-your-contract","343":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-7-move-to-contract-details","344":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-8-update-contract-attributes","345":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-9-set-the-base-metadata-uri","346":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-10-minting-time","347":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-11-finalize-and-admire","348":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-12-updating-metadata","349":"docs/pages/solutions/marketplaces/orderbook/02-quickstart.mdx#quickstart","350":"docs/pages/solutions/marketplaces/orderbook/02-quickstart.mdx#try-a-demo","351":"docs/pages/solutions/marketplaces/orderbook/02-quickstart.mdx#template","352":"docs/pages/solutions/marketplaces/orderbook/02-quickstart.mdx#try-an-api-call","353":"docs/pages/solutions/payments/onramps/01-fiat-on-ramps.mdx#fiat-on-ramps","354":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#why-smart-contracts-wallets","355":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#externally-owned-accounts","356":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#pros","357":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#popular-examples","358":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#smart-contract-wallets","359":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#pros-1","360":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#examples","361":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#sequence-embedded-wallet","362":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#architecture-overview","363":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#signer-1-sequence-auth","364":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#signer-2-sequence-guard","365":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#threat-model","366":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#quickstart","367":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#try-a-demo","368":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#template","369":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#getting-started","370":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#sdk-installation","371":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#project-setup","372":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#library-setup","373":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#quickstart","374":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#try-a-demo","375":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#template","376":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#install","377":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#cdn-distribution-as-native-js","378":"docs/pages/solutions/wallets/universal-wallet/04-sequence-kit.mdx#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","379":"docs/pages/solutions/wallets/universal-wallet/04-sequence-kit.mdx#key-features","380":"docs/pages/solutions/wallets/universal-wallet/04-sequence-kit.mdx#next-steps","381":"docs/pages/solutions/wallets/universal-wallet/05-platforms.mdx#platforms","382":"docs/pages/solutions/wallets/universal-wallet/05-platforms.mdx#web-wallet","383":"docs/pages/solutions/wallets/universal-wallet/05-platforms.mdx#mobile-wallet","384":"docs/pages/solutions/wallets/universal-wallet/05-platforms.mdx#browser-extension-wallet","385":"docs/pages/solutions/wallets/universal-wallet/06-fiat-on-ramps.mdx#fiat-on-ramps","386":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#key-management","387":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#social-login-wallets","388":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#session-keys","389":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#guard-key","390":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#torus-key","391":"docs/pages/solutions/marketplaces/orderbook/examples/05-get-user-activities.mdx#getuseractivities","392":"docs/pages/solutions/marketplaces/orderbook/examples/05-get-user-activities.mdx#example-implementation","393":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#wallet-configuration","394":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#configuration-layout","395":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#signer-layout","396":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#example","397":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#the-valid-combinations-of-signers-are","398":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#configuration-hash---imagehash","399":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#compute-image-hash","400":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#initial-wallet-configuration","401":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#compute-wallet-address","402":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#modules--wallet-update","403":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#wallet-implementation","404":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#_updateconfiguration","405":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#parameters","406":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#reading-current-implementation","407":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#wallet-configuration-validation","408":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#_isvalidimage","409":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#parameters-1","410":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#return-values","411":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#mainmoduleupgradeable","412":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#updateimagehash","413":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#parameters-2","414":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#first-configuration-update","415":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#delegatecall-false","416":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#revertonerror-true","417":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#to-wallet","418":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#value-ethersconstantszero","419":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#gaslimit-ethersconstantszero","420":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#subsequent-configuration-updates","421":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#retrieving-the-current-configuration","422":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#retrieving-the-wallet-configuration","423":"docs/pages/solutions/technical-references/internals/v1/06-main-module-upgradeable.mdx#mainmoduleupgradeable--configuration-migration","424":"docs/pages/solutions/technical-references/internals/v1/08-signature-encoding.mdx#signature-encoding","425":"docs/pages/solutions/technical-references/internals/v1/08-signature-encoding.mdx#erc-191-ethereum-signed-data","426":"docs/pages/solutions/technical-references/internals/v1/08-signature-encoding.mdx#erc-712-structured-data-signatures","427":"docs/pages/solutions/technical-references/internals/v1/08-signature-encoding.mdx#verification","428":"docs/pages/solutions/technical-references/internals/v1/09-nested-transaction-batching.mdx#nested-transaction-batching","429":"docs/pages/solutions/technical-references/internals/v1/10-guest-module.mdx#guestmodule-and-on-demand-deployment","430":"docs/pages/solutions/technical-references/internals/v1/11-wallet-context.mdx#wallet-context","431":"docs/pages/solutions/technical-references/internals/v1/12-contract-audits.mdx#contract-audits","432":"docs/pages/solutions/technical-references/internals/v1/12-contract-audits.mdx#quantstamp","433":"docs/pages/solutions/technical-references/internals/v1/12-contract-audits.mdx#consensys-diligence","434":"docs/pages/solutions/technical-references/internals/v1/12-contract-audits.mdx#zellic","435":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#wallet-configuration","436":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#top-level-properties","437":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#threshold","438":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#checkpoint","439":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#tree","440":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#signer","441":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#subdigest","442":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#subtree-nested-configuration","443":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#imagehash","444":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#initial-configuration","445":"docs/pages/solutions/wallets/embedded-wallet/examples/03-manage-sessions.mdx#session-management","446":"docs/pages/solutions/wallets/embedded-wallet/examples/03-manage-sessions.mdx#sign-in--sign-up","447":"docs/pages/solutions/wallets/embedded-wallet/examples/03-manage-sessions.mdx#email-sign-in--sign-up","448":"docs/pages/solutions/wallets/embedded-wallet/examples/03-manage-sessions.mdx#google--apple-auth","449":"docs/pages/solutions/wallets/embedded-wallet/examples/03-manage-sessions.mdx#list-sessions","450":"docs/pages/solutions/wallets/embedded-wallet/examples/03-manage-sessions.mdx#close-session","451":"docs/pages/solutions/wallets/embedded-wallet/examples/05-validation.mdx#validation","452":"docs/pages/solutions/wallets/embedded-wallet/examples/05-validation.mdx#email-login-one-time-code","453":"docs/pages/solutions/wallets/embedded-wallet/examples/05-validation.mdx#social-login","454":"docs/pages/solutions/wallets/embedded-wallet/examples/05-validation.mdx#validation-status","455":"docs/pages/solutions/wallets/embedded-wallet/examples/05-validation.mdx#trigger-session-validation","456":"docs/pages/solutions/wallets/embedded-wallet/examples/05-validation.mdx#onvalidationrequired-callback","457":"docs/pages/solutions/wallets/embedded-wallet/examples/05-validation.mdx#listen-for-session-validations","458":"docs/pages/solutions/wallets/embedded-wallet/examples/05-validation.mdx#automatic-session-validation","459":"docs/pages/solutions/wallets/embedded-wallet/examples/06-transaction-receipts.mdx#transaction-receipts","460":"docs/pages/solutions/wallets/embedded-wallet/examples/06-transaction-receipts.mdx#successful-transaction-response","461":"docs/pages/solutions/wallets/embedded-wallet/examples/06-transaction-receipts.mdx#failed-transaction-response","462":"docs/pages/solutions/wallets/universal-wallet/examples/02-auth-address.mdx#authenticate-users-with-message-signature","463":"docs/pages/solutions/wallets/universal-wallet/examples/02-auth-address.mdx#ask-for-the-wallet-address","464":"docs/pages/solutions/wallets/universal-wallet/examples/02-auth-address.mdx#authenticate-wallet","465":"docs/pages/solutions/wallets/universal-wallet/examples/02-auth-address.mdx#authenticate-wallet-server-side","466":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#no-wallet-confirmation-signatures","467":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#session-keys","468":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#using-session-keys-with-sequence","469":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#1-initialize-sequence-wallet-and-connect","470":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#2-generate-a-session-key","471":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#3-sign-authorization-message","472":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#4-verify-authorization-signature","473":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#5-sign-message-with-session-key","474":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#6-verify-session-signature","475":"docs/pages/solutions/wallets/universal-wallet/examples/05-send-transaction.mdx#sending-transactions","476":"docs/pages/solutions/wallets/universal-wallet/examples/06-send-erc20.mdx#sending-erc-20-tokens","477":"docs/pages/solutions/wallets/universal-wallet/examples/07-send-erc721.mdx#sending-erc-721-nft-tokens","478":"docs/pages/solutions/wallets/universal-wallet/examples/08-send-erc1155.mdx#sending-erc-1155-collectible-tokens","479":"docs/pages/solutions/wallets/universal-wallet/examples/09-send-batch-transactions.mdx#sending-a-batch-of-transactions","480":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#building-backends-with-sequence","481":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#nodejs","482":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#go","483":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#ethkit","484":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#support-for-other-backend-languages"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,58],"1":[2,1,39],"2":[2,1,48],"3":[6,2,100],"4":[6,2,147],"5":[3,2,22],"6":[2,1,46],"7":[4,2,76],"8":[2,1,114],"9":[6,2,61],"10":[4,2,144],"11":[1,2,1],"12":[3,2,125],"13":[2,2,92],"14":[3,2,65],"15":[6,1,1],"16":[3,1,1],"17":[6,1,41],"18":[4,1,1],"19":[4,1,1],"20":[4,1,1],"21":[5,1,1],"22":[5,1,1],"23":[4,1,1],"24":[5,1,1],"25":[7,1,1],"26":[8,1,1],"27":[4,1,1],"28":[2,1,29],"29":[13,3,186],"30":[11,3,142],"31":[2,1,56],"32":[1,2,105],"33":[4,2,69],"34":[2,2,63],"35":[4,2,15],"36":[6,1,144],"37":[8,1,29],"38":[16,8,101],"39":[1,1,210],"40":[4,1,11],"41":[2,1,47],"42":[3,1,29],"43":[8,3,160],"44":[3,1,29],"45":[13,4,130],"46":[4,1,29],"47":[14,5,158],"48":[2,1,37],"49":[10,2,115],"50":[4,2,14],"51":[1,1,35],"52":[4,2,41],"53":[2,2,28],"54":[4,2,15],"55":[6,1,81],"56":[1,6,176],"57":[1,6,35],"58":[2,6,45],"59":[2,6,49],"60":[3,6,31],"61":[2,1,44],"62":[9,2,111],"63":[3,2,142],"64":[3,5,19],"65":[3,2,57],"66":[2,2,1],"67":[1,3,164],"68":[1,3,144],"69":[3,3,82],"70":[1,3,55],"71":[4,1,37],"72":[2,4,226],"73":[8,4,62],"74":[3,11,1],"75":[3,11,1],"76":[4,11,1],"77":[4,11,1],"78":[5,11,131],"79":[2,4,121],"80":[7,1,114],"81":[11,7,123],"82":[2,18,37],"83":[12,7,171],"84":[2,20,25],"85":[2,20,12],"86":[7,7,212],"87":[4,15,47],"88":[6,15,39],"89":[3,15,67],"90":[5,15,94],"91":[6,7,175],"92":[1,1,1],"93":[3,1,11],"94":[1,1,11],"95":[2,1,1],"96":[2,3,32],"97":[2,3,41],"98":[2,3,62],"99":[1,1,33],"100":[1,1,36],"101":[2,1,40],"102":[2,2,78],"103":[2,1,33],"104":[5,1,23],"105":[4,5,48],"106":[5,1,83],"107":[6,1,72],"108":[4,1,46],"109":[5,1,26],"110":[2,1,18],"111":[2,1,38],"112":[2,1,1],"113":[1,2,40],"114":[1,2,22],"115":[6,2,12],"116":[2,8,12],"117":[2,8,12],"118":[2,8,14],"119":[2,8,48],"120":[2,8,48],"121":[1,2,39],"122":[1,1,11],"123":[1,1,46],"124":[4,1,30],"125":[4,1,12],"126":[5,5,39],"127":[5,5,22],"128":[5,1,30],"129":[4,5,89],"130":[3,1,85],"131":[4,1,34],"132":[1,1,67],"133":[1,1,48],"134":[1,1,1],"135":[3,1,95],"136":[1,4,145],"137":[1,1,137],"138":[1,1,102],"139":[1,1,112],"140":[4,1,46],"141":[4,1,70],"142":[1,5,41],"143":[1,5,43],"144":[1,5,5],"145":[1,5,155],"146":[1,5,3],"147":[3,1,91],"148":[3,1,104],"149":[1,3,103],"150":[1,3,87],"151":[3,4,94],"152":[1,3,53],"153":[3,4,92],"154":[1,3,76],"155":[3,4,93],"156":[1,3,190],"157":[2,3,119],"158":[3,1,54],"159":[2,1,76],"160":[2,1,139],"161":[2,1,93],"162":[3,2,12],"163":[2,2,25],"164":[3,3,118],"165":[5,3,46],"166":[1,1,71],"167":[1,1,11],"168":[1,1,1],"169":[1,1,46],"170":[1,1,47],"171":[1,1,113],"172":[1,1,1],"173":[3,2,160],"174":[3,2,67],"175":[6,2,50],"176":[6,2,2],"177":[2,1,1],"178":[2,3,135],"179":[3,3,51],"180":[1,3,72],"181":[3,3,83],"182":[1,1,19],"183":[3,2,55],"184":[1,2,13],"185":[4,2,140],"186":[3,1,42],"187":[3,4,47],"188":[1,3,53],"189":[2,5,17],"190":[2,5,17],"191":[2,5,15],"192":[2,1,26],"193":[8,3,111],"194":[2,3,50],"195":[3,1,27],"196":[8,4,101],"197":[13,4,80],"198":[2,4,44],"199":[2,1,145],"200":[5,2,205],"201":[5,2,26],"202":[1,6,22],"203":[1,6,8],"204":[1,6,23],"205":[1,6,20],"206":[1,6,19],"207":[1,6,23],"208":[1,6,17],"209":[1,6,20],"210":[1,6,26],"211":[2,6,21],"212":[2,6,38],"213":[2,6,36],"214":[2,6,29],"215":[2,6,28],"216":[2,6,27],"217":[2,6,31],"218":[2,6,27],"219":[2,6,40],"220":[8,2,25],"221":[11,2,5],"222":[3,2,106],"223":[5,1,1],"224":[5,5,17],"225":[2,5,121],"226":[4,5,139],"227":[7,1,1],"228":[4,1,28],"229":[2,1,95],"230":[5,1,1],"231":[6,6,17],"232":[5,6,33],"233":[4,6,28],"234":[4,6,35],"235":[6,6,25],"236":[4,6,49],"237":[2,1,42],"238":[4,1,72],"239":[5,1,85],"240":[5,1,93],"241":[5,1,82],"242":[4,1,1],"243":[1,5,22],"244":[1,5,33],"245":[1,5,36],"246":[5,5,72],"247":[1,1,93],"248":[5,2,32],"249":[2,1,105],"250":[9,1,40],"251":[2,9,78],"252":[2,1,33],"253":[2,1,34],"254":[1,2,32],"255":[1,2,38],"256":[1,2,1],"257":[1,3,18],"258":[4,3,29],"259":[4,3,27],"260":[11,2,37],"261":[2,2,51],"262":[1,2,34],"263":[2,1,38],"264":[1,2,17],"265":[1,2,38],"266":[1,2,1],"267":[1,3,18],"268":[3,3,28],"269":[3,3,27],"270":[2,2,54],"271":[11,2,37],"272":[1,2,23],"273":[3,1,39],"274":[1,3,17],"275":[1,3,21],"276":[1,3,1],"277":[3,4,12],"278":[3,4,20],"279":[1,3,14],"280":[4,1,26],"281":[1,4,16],"282":[1,4,1],"283":[1,5,31],"284":[2,5,33],"285":[1,4,1],"286":[1,5,15],"287":[3,5,16],"288":[1,4,11],"289":[2,1,33],"290":[1,2,23],"291":[1,2,18],"292":[1,1,1],"293":[14,2,75],"294":[21,2,88],"295":[21,2,159],"296":[2,1,90],"297":[2,2,24],"298":[1,1,21],"299":[2,1,29],"300":[2,1,41],"301":[1,1,15],"302":[1,2,9],"303":[1,2,17],"304":[1,2,20],"305":[1,2,62],"306":[1,2,64],"307":[1,2,48],"308":[1,1,64],"309":[1,1,50],"310":[1,2,73],"311":[1,2,31],"312":[1,2,17],"313":[1,2,18],"314":[1,2,39],"315":[1,2,19],"316":[1,2,37],"317":[1,2,18],"318":[1,2,35],"319":[1,2,20],"320":[1,2,38],"321":[1,2,19],"322":[1,2,14],"323":[1,2,17],"324":[1,2,14],"325":[1,2,20],"326":[1,2,20],"327":[1,1,51],"328":[1,1,79],"329":[4,1,107],"330":[4,1,64],"331":[2,1,69],"332":[2,1,24],"333":[1,1,107],"334":[2,1,47],"335":[8,1,1],"336":[1,8,25],"337":[8,8,61],"338":[7,8,54],"339":[6,8,31],"340":[6,8,25],"341":[7,8,25],"342":[5,8,20],"343":[6,8,17],"344":[5,8,58],"345":[7,8,66],"346":[4,8,65],"347":[5,8,28],"348":[4,8,62],"349":[1,1,1],"350":[3,1,12],"351":[1,1,11],"352":[4,1,41],"353":[3,1,63],"354":[5,1,35],"355":[3,5,20],"356":[1,7,11],"357":[2,7,5],"358":[3,5,46],"359":[1,6,23],"360":[1,5,5],"361":[3,1,57],"362":[2,3,38],"363":[4,5,109],"364":[4,5,116],"365":[2,3,86],"366":[1,1,1],"367":[3,1,11],"368":[1,1,11],"369":[2,1,1],"370":[2,3,32],"371":[2,3,41],"372":[2,3,63],"373":[1,1,1],"374":[3,1,11],"375":[1,1,9],"376":[1,1,68],"377":[5,3,32],"378":[9,1,40],"379":[2,9,78],"380":[2,1,33],"381":[1,1,1],"382":[2,1,27],"383":[2,1,48],"384":[3,1,5],"385":[3,1,65],"386":[2,1,69],"387":[3,2,76],"388":[2,5,32],"389":[2,5,45],"390":[2,5,102],"391":[1,1,158],"392":[2,2,24],"393":[2,1,18],"394":[2,2,26],"395":[2,3,26],"396":[1,4,21],"397":[7,4,31],"398":[3,3,51],"399":[3,5,28],"400":[3,2,23],"401":[3,7,65],"402":[4,1,40],"403":[2,4,25],"404":[2,6,44],"405":[2,7,42],"406":[3,6,53],"407":[3,4,58],"408":[2,7,42],"409":[2,8,9],"410":[3,8,12],"411":[1,4,18],"412":[1,5,20],"413":[2,6,88],"414":[3,4,82],"415":[2,7,31],"416":[2,7,32],"417":[2,7,19],"418":[4,7,20],"419":[4,7,73],"420":[3,6,37],"421":[4,6,35],"422":[4,9,49],"423":[4,1,1],"424":[2,1,17],"425":[5,2,72],"426":[5,2,96],"427":[1,2,87],"428":[3,1,1],"429":[5,1,1],"430":[2,1,20],"431":[2,1,30],"432":[1,2,7],"433":[2,2,3],"434":[1,2,3],"435":[2,1,35],"436":[3,2,37],"437":[1,5,34],"438":[1,5,41],"439":[1,5,37],"440":[1,6,41],"441":[1,6,49],"442":[4,6,127],"443":[1,2,69],"444":[2,2,68],"445":[2,1,40],"446":[3,2,102],"447":[4,5,107],"448":[3,5,173],"449":[2,2,94],"450":[2,2,51],"451":[1,1,17],"452":[6,2,29],"453":[2,2,68],"454":[2,1,34],"455":[3,2,49],"456":[2,5,60],"457":[4,2,35],"458":[3,1,51],"459":[2,1,21],"460":[3,2,124],"461":[3,2,133],"462":[5,1,1],"463":[5,5,17],"464":[2,5,121],"465":[4,5,139],"466":[4,1,28],"467":[2,1,95],"468":[5,1,1],"469":[6,6,17],"470":[5,6,33],"471":[4,6,28],"472":[4,6,35],"473":[6,6,25],"474":[4,6,49],"475":[2,1,42],"476":[4,1,72],"477":[5,1,85],"478":[5,1,93],"479":[5,1,82],"480":[4,1,1],"481":[1,5,22],"482":[1,5,33],"483":[1,5,36],"484":[5,5,72]},"averageFieldLength":[3.0989690721649485,3.251546391752577,49.32577319587629],"storedFields":{"0":{"href":"/support#support","html":"\n

Sequence has a front line Support Team in multiple timezones to tackle problems that arise with the Stack, as well as answer any question for new projects in order to integrate web3 experiences in games and applications.

\n

If one of the members of the team does not know the answer, we'll further investigate (with backup support from the Sequence dev team) to get to the bottom of your troubles.

\n

Start talking to support today

","isPage":true,"text":"\nSequence has a front line Support Team in multiple timezones to tackle problems that arise with the Stack, as well as answer any question for new projects in order to integrate web3 experiences in games and applications.\nIf one of the members of the team does not know the answer, we'll further investigate (with backup support from the Sequence dev team) to get to the bottom of your troubles.\nStart talking to support today","title":"Support","titles":[]},"1":{"href":"/api/marketplace#marketplace-api","html":"\n\n

The Sequence Marketplace API service offers a simple and fast way to interact with sequence marketplace protocols. The API is designed to be easy to use and to have all the features you need to build a fully functional marketplace.

\n

#TODO add example from solutions

","isPage":true,"text":"\nMarketplace API documentation and testing\nThe Sequence Marketplace API service offers a simple and fast way to interact with sequence marketplace protocols. The API is designed to be easy to use and to have all the features you need to build a fully functional marketplace.\n#TODO add example from solutions","title":"Marketplace API","titles":[]},"2":{"href":"/api/metadata#metadata-api","html":"\n\n

The Sequence Metadata API service offers a simple and fast API to query, manage, and update collections, token & NFT metadata for Ethereum-compatible chains.

\n\n","isPage":true,"text":"\nMetadata API documentation and endpoints\nThe Sequence Metadata API service offers a simple and fast API to query, manage, and update collections, token & NFT metadata for Ethereum-compatible chains.\nOur Metadata service is managed through Sequence Builder and requires a Service Account & Token in order to call the corresponding endpoints. Please follow the [section](/api/metadata#Obtaining a Service Account & Token) below prior to calling the endpoints\n","title":"Metadata API","titles":[]},"3":{"href":"/api/metadata#obtaining-a-service-account--token","html":"\n

Since the Metadata API requires write access in order to update on-chain state, you will need to first obtain a Service Account & Token to call this from your backend. Importantly, this is a secret key and should not be exposed publicly.

\n
    \n
  1. Create a New Project using our Builder. Navigate to Settings > API Keys > Add Service Account.
  2. \n
  3. In the modal that pops up, click the dropdown for Permission and change to Write. After completed click Add.
  4. \n
  5. On the next screen, you will be given your Secret API Token. Copy the key and store it securely as it is not possible to see it again. Once this is done, click Confirm and you are all set to utilize the API.
  6. \n
\n

Keep in mind, in contrast to our Public API Access key - this Secret API Token should be stored securely and not be used publicly. You will pass this token as a normal JWT in the Request Headers as X-Access-Key

\n","isPage":false,"text":"\nSince the Metadata API requires write access in order to update on-chain state, you will need to first obtain a Service Account & Token to call this from your backend. Importantly, this is a secret key and should not be exposed publicly.\n\nCreate a New Project using our Builder. Navigate to Settings > API Keys > Add Service Account.\nIn the modal that pops up, click the dropdown for Permission and change to Write. After completed click Add.\nOn the next screen, you will be given your Secret API Token. Copy the key and store it securely as it is not possible to see it again. Once this is done, click Confirm and you are all set to utilize the API.\n\nKeep in mind, in contrast to our Public API Access key - this Secret API Token should be stored securely and not be used publicly. You will pass this token as a normal JWT in the Request Headers as X-Access-Key\n","title":"Obtaining a Service Account & Token","titles":["Metadata API"]},"4":{"href":"/api/metadata#creating-collections-tokens-and-managing-metadata","html":"\n

The below steps walk through an end to end example utilizing our Metadata API in order to deploy an NFT collection, create tokens within that collection, and deploy asset metadata to such as an image to that token.

\n
    \n
  1. \n

    Call CreateCollection endpoint - ensure you pass in the Secret Service Token created in the prior section.

    \n
  2. \n
  3. \n

    CreateToken - use returned collectionId from previous request

    \n
  4. \n
  5. \n

    CreateAsset - use collectionId and your tokenId

    \n
      \n
    • set metadataField (assetType) to one of the following\n
        \n
      • image
      • \n
      • animation_url
      • \n
      • audio
      • \n
      • video
      • \n
      \n
    • \n
    \n
  6. \n
  7. \n

    Upload file with PUT method to this endpoint PUT {metadata-server}/projects/{projectId}/collections/{collectionId}/tokens/{tokenId}/upload/{assetIdOrAssetType}- use assetId that is returned in step 3 OR, you can pass assetType, such as "image"

    \n
  8. \n
\n\n
    \n
  1. \n

    Asset is now privately accessible with JWT token at GET {metadata-server}/projects/{projectID}/collections/{collectionID}/tokens/{tokenID}/asset/{assetType}

    \n\n
  2. \n
  3. \n

    PublishCollection -- this sets the collection to be accessible by the public

    \n
  4. \n
  5. \n

    GetCollection -- will return both baseURIs for contract and token level metadata.

    \n
  6. \n
\n\n
    \n
  1. Finally, to use the metadata in your contract, simply update your contract's metadata base URIs to the values above, and everything will simply work.
  2. \n
\n

Below is an architecture demonstrating the steps above of how an NFT collection (ERC721 or ERC1155) is created and managed.\n\"Sequence

\n","isPage":false,"text":"\nThe below steps walk through an end to end example utilizing our Metadata API in order to deploy an NFT collection, create tokens within that collection, and deploy asset metadata to such as an image to that token.\n\n\nCall CreateCollection endpoint - ensure you pass in the Secret Service Token created in the prior section.\n\n\nCreateToken - use returned collectionId from previous request\n\n\nCreateAsset - use collectionId and your tokenId\n\nset metadataField (assetType) to one of the following\n\nimage\nanimation_url\naudio\nvideo\n\n\n\n\n\nUpload file with PUT method to this endpoint PUT {metadata-server}/projects/{projectId}/collections/{collectionId}/tokens/{tokenId}/upload/{assetIdOrAssetType}- use assetId that is returned in step 3 OR, you can pass assetType, such as "image"\n\n\n\nFor example you can upload to https://metadata.sequence.app/projects/486/collections/1/tokens/1/upload/image which will find the asset of the type "image" for the token, and will upload there.\n\nYou can also pass in the assetId if you prefer, i.e., PUT https://metadata.sequence.app/projects/486/collections/1/assets/1/upload\n\n\nAsset types include: image, audio, video, animation_url\n\n\n\nAsset is now privately accessible with JWT token at GET {metadata-server}/projects/{projectID}/collections/{collectionID}/tokens/{tokenID}/asset/{assetType}\n\nfor example: https://metadata.sequence.app/projects/486/collections/1/tokens/1/asset/image\n\n\n\nPublishCollection -- this sets the collection to be accessible by the public\n\n\nGetCollection -- will return both baseURIs for contract and token level metadata.\n\n\n\nCollection-level metadata (aka contract-level) metadata: https://metadata.sequence.app/projects/486/collections/1 or https://metadata.sequence.app/projects/486/collections/1.json\nToken-level metadata: https://metadata.sequence.app/projects/486/collections/1/tokens/{tokenId}\n\nie. https://metadata.sequence.app/projects/486/collections/1/tokens/1 or https://metadata.sequence.app/projects/486/collections/1/tokens/1.json\n\n\n\n\nFinally, to use the metadata in your contract, simply update your contract's metadata base URIs to the values above, and everything will simply work.\n\nBelow is an architecture demonstrating the steps above of how an NFT collection (ERC721 or ERC1155) is created and managed.\n\n","title":"Creating Collections, Tokens, and Managing Metadata","titles":["Metadata API"]},"5":{"href":"/api/metadata#pricing--usage","html":"\n

The Sequence Metadata is available for free with moderate request limits, but if your project requires higher limits, please contact the Sequence team.

","isPage":false,"text":"\nThe Sequence Metadata is available for free with moderate request limits, but if your project requires higher limits, please contact the Sequence team.","title":"Pricing & Usage","titles":["Metadata API"]},"6":{"href":"/api/node-gateway#node-gateway","html":"\n

Sequence Node gateway infrastructure enables you to have fail-over resilient RPC endpoints that can scale with your application.

\n

By using our infrastructure, you save money for not having to deploy your own stack, and benefits from the feature of aggregating multiple public RPC providers into a single endpoint for use.

\n","isPage":true,"text":"\nSequence Node gateway infrastructure enables you to have fail-over resilient RPC endpoints that can scale with your application.\nBy using our infrastructure, you save money for not having to deploy your own stack, and benefits from the feature of aggregating multiple public RPC providers into a single endpoint for use.\n","title":"Node Gateway","titles":[]},"7":{"href":"/api/node-gateway#give-it-a-try","html":"\n

Install ethers with pnpm install ethers or yarn add ethers

\n

Ensure to choose a network handle from our network options

\n

And acquire a Builder access key to authenticate your connection and append to the endpoint

\n
// Import the ethers library\nimport { ethers } from "ethers";\n \n// Function to create a provider and fetch the latest block\nasync function getLatestBlock() {\n  // Replace the following URL with your actual RPC endpoint\n  const rpcUrl =\n    "https://nodes.sequence.app/<chain_handle>/<project_access_key>";\n \n  // Create a provider using the RPC URL\n  const provider = new ethers.providers.JsonRpcProvider(rpcUrl);\n \n  // Fetch the latest block\n  const latestBlock = await provider.getBlock("latest");\n \n  console.log("Latest Block:", latestBlock);\n}\n \n// Call the function to get the latest block\ngetLatestBlock().catch(console.error);
","isPage":false,"text":"\nInstall ethers with pnpm install ethers or yarn add ethers\nEnsure to choose a network handle from our network options\nAnd acquire a Builder access key to authenticate your connection and append to the endpoint\n// Import the ethers library\nimport { ethers } from "ethers";\n \n// Function to create a provider and fetch the latest block\nasync function getLatestBlock() {\n // Replace the following URL with your actual RPC endpoint\n const rpcUrl =\n "https://nodes.sequence.app/<chain_handle>/<project_access_key>";\n \n // Create a provider using the RPC URL\n const provider = new ethers.providers.JsonRpcProvider(rpcUrl);\n \n // Fetch the latest block\n const latestBlock = await provider.getBlock("latest");\n \n console.log("Latest Block:", latestBlock);\n}\n \n// Call the function to get the latest block\ngetLatestBlock().catch(console.error);","title":"Give it a try","titles":["Node Gateway"]},"8":{"href":"/api/relayer#relayer-api","html":"\n\n

The Sequence Relayer service offers a simple interface for dispatching meta-transactions on Ethereum-compatible networks.

\n

Meta-transactions are the idea of a transaction inside of a transaction. The benefits of Sequence meta-transactions are that they allow:

\n\n

The best part: transactions with Sequence Relayer are compatible with any existing/deployed Ethereum contract, and thus, integrating the Sequence Relayer doesn't require any changes to your contracts or dapp.

\n

The Sequence Relayer is usable by frontend dapps, or even in your backends.

\n","isPage":true,"text":"\nRelayer API documentation and endpoints\nThe Sequence Relayer service offers a simple interface for dispatching meta-transactions on Ethereum-compatible networks.\nMeta-transactions are the idea of a transaction inside of a transaction. The benefits of Sequence meta-transactions are that they allow:\n\nGas abstraction -- whereby users can pay for network gas in a variety of tokens (ie. USDC, DAI, etc.)\nSponsored gas -- projects may sponsor the gas of specific contracts to allow free gas for their users\nBatched transactions -- group a bunch of independent transactions and allow them to be mined as a single transaction\nParallel transactions -- parallelize the dispatch of transactions in some cases\nFire + forget model -- easily send transactions to the relayer which will automatically manage nonces, bump gas, and other features which will ensure fast delivery\nOptimal gas pricing for transactions\n\nThe best part: transactions with Sequence Relayer are compatible with any existing/deployed Ethereum contract, and thus, integrating the Sequence Relayer doesn't require any changes to your contracts or dapp.\nThe Sequence Relayer is usable by frontend dapps, or even in your backends.\n","title":"Relayer API","titles":[]},"9":{"href":"/api/relayer#anatomy-of-a-sequence-transaction-bundle","html":"\n

A Sequence transaction bundle consists of three things:

\n
    \n
  1. A list of Sequence transactions
  2. \n
  3. A Sequence nonce
  4. \n
  5. A Sequence signature
  6. \n
\n

Like Ethereum accounts, Sequence wallets use nonces to enforce transaction ordering and protect against replay attacks.\nUnlike Ethereum accounts, Sequence wallets have a virtually unlimited supply of independent nonces, allowing multiple independent transactions to be executed in parallel.\nA Sequence nonce is encoded as a 160-bit nonce space followed by the 96-bit nonce for that nonce space, big-endian.

\n
|<------------------------- uint256 -------------------------->|\n|<------ nonce space (160 bits) ------>||<- nonce (96 bits) -->|\nssssssssssssssssssssssssssssssssssssssssnnnnnnnnnnnnnnnnnnnnnnnn
\n","isPage":false,"text":"\nA Sequence transaction bundle consists of three things:\n\nA list of Sequence transactions\nA Sequence nonce\nA Sequence signature\n\nLike Ethereum accounts, Sequence wallets use nonces to enforce transaction ordering and protect against replay attacks.\nUnlike Ethereum accounts, Sequence wallets have a virtually unlimited supply of independent nonces, allowing multiple independent transactions to be executed in parallel.\nA Sequence nonce is encoded as a 160-bit nonce space followed by the 96-bit nonce for that nonce space, big-endian.\n|<------------------------- uint256 -------------------------->|\n|<------ nonce space (160 bits) ------>||<- nonce (96 bits) -->|\nssssssssssssssssssssssssssssssssssssssssnnnnnnnnnnnnnnnnnnnnnnnn\n","title":"Anatomy of a Sequence transaction bundle","titles":["Relayer API"]},"10":{"href":"/api/relayer#gas-sponsorship-and-fees","html":"\n

The relayer only dispatches transactions that either:

\n
    \n
  1. Are sponsored in a project via the Sequence Builder, or
  2. \n
  3. Include a fee payment transaction to the relayer.
  4. \n
\n

You can sponsor:

\n
    \n
  1. Sequence wallets, so that they can send transactions without needing to pay fees,
  2. \n
  3. Token addresses, so that any user can send those tokens for free,
  4. \n
  5. Contracts, so that any user can interact with them for free,
  6. \n
  7. Arbitrary addresses, so that any user can transfer native tokens to it for free.
  8. \n
\n

To start sponsoring transactions, sign into https://sequence.build, and create a new project for the network you want to transact on.

\n

You can also pay the relayer directly to dispatch your transactions by adding an additional fee payment transaction to the relayer in your bundle.\nThe list of accepted fee tokens can be retrieved by calling the /FeeTokens endpoint for the network you are interested in:

\n
$ curl -s -X POST -H 'Content-Type: application/json' -d '{}' \\\n  https://mainnet-relayer.sequence.app/rpc/Relayer/FeeTokens | jq\n \n{\n  "isFeeRequired": true,\n  "tokens": [\n    {\n      "chainId": 1,\n      "name": "Matic",\n      "symbol": "MATIC",\n      "type": "ERC20_TOKEN",\n      "decimals": 18,\n      "logoURL": "https://raw.githubusercontent.com/spothq/cryptocurrency-icons/master/128/color/matic.png",\n      "contractAddress": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0",\n      "tokenID": "0"\n    },\n    {\n      "chainId": 1,\n      "name": "USDC",\n      "symbol": "USDC",\n      "type": "ERC20_TOKEN",\n      "decimals": 6,\n      "logoURL": "https://logos.covalenthq.com/tokens/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.png",\n      "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",\n      "tokenID": "0"\n    },\n    {\n      "chainId": 1,\n      "name": "Wrapped Ether",\n      "symbol": "WETH",\n      "type": "ERC20_TOKEN",\n      "decimals": 18,\n      "logoURL": "https://logos.covalenthq.com/tokens/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.png",\n      "contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",\n      "tokenID": "0"\n    }\n  ]\n}
\n","isPage":false,"text":"\nThe relayer only dispatches transactions that either:\n\nAre sponsored in a project via the Sequence Builder, or\nInclude a fee payment transaction to the relayer.\n\nYou can sponsor:\n\nSequence wallets, so that they can send transactions without needing to pay fees,\nToken addresses, so that any user can send those tokens for free,\nContracts, so that any user can interact with them for free,\nArbitrary addresses, so that any user can transfer native tokens to it for free.\n\nTo start sponsoring transactions, sign into https://sequence.build, and create a new project for the network you want to transact on.\nYou can also pay the relayer directly to dispatch your transactions by adding an additional fee payment transaction to the relayer in your bundle.\nThe list of accepted fee tokens can be retrieved by calling the /FeeTokens endpoint for the network you are interested in:\n$ curl -s -X POST -H 'Content-Type: application/json' -d '{}' \\\n https://mainnet-relayer.sequence.app/rpc/Relayer/FeeTokens | jq\n \n{\n "isFeeRequired": true,\n "tokens": [\n {\n "chainId": 1,\n "name": "Matic",\n "symbol": "MATIC",\n "type": "ERC20_TOKEN",\n "decimals": 18,\n "logoURL": "https://raw.githubusercontent.com/spothq/cryptocurrency-icons/master/128/color/matic.png",\n "contractAddress": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0",\n "tokenID": "0"\n },\n {\n "chainId": 1,\n "name": "USDC",\n "symbol": "USDC",\n "type": "ERC20_TOKEN",\n "decimals": 6,\n "logoURL": "https://logos.covalenthq.com/tokens/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.png",\n "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",\n "tokenID": "0"\n },\n {\n "chainId": 1,\n "name": "Wrapped Ether",\n "symbol": "WETH",\n "type": "ERC20_TOKEN",\n "decimals": 18,\n "logoURL": "https://logos.covalenthq.com/tokens/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.png",\n "contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",\n "tokenID": "0"\n }\n ]\n}\n","title":"Gas sponsorship and fees","titles":["Relayer API"]},"11":{"href":"/api/relayer#api","html":"\n","isPage":false,"text":"\n","title":"API","titles":["Relayer API"]},"12":{"href":"/api/relayer#fetching-fee-options","html":"\n\n
import { Session } from '@0xsequence/auth'\nimport { ethers } from 'ethers'\n \nconst config = {\n  mnemonic: 'YOUR MNEMONIC',\n  projectAccessKey: 'YOUR PROJECT ACCESS KEY',\n  chainId: ChainId.YOUR_CHAIN_ID // e.g. ChainId.MAINNET, ChainId.POLYGON, etc.\n}\n \nconst signer = ethers.Wallet.fromMnemonic(config.mnemonic)\n \nconst session = await Session.singleSigner({ signer, projectAccessKey: config.projectAccessKey })\n \nconst account = session.account.getSigner(config.chainId, {\n  async selectFee(_transactions, options) {\n    // This callback is called with the list of candidate fee options.\n \n    console.log('Fee options:', JSON.stringify(options, undefined, 2))\n \n    // Select the USDC fee option.\n    return options.find(option => option.token.symbol === 'USDC')\n  }\n})
\n
mnemonic := "YOUR MNEMONIC"\nprojectAccessKey := "YOUR PROJECT ACCESS KEY"\nrpcURL := fmt.Sprintf("https://nodes.sequence.app/YOUR-NETWORK/%v", projectAccessKey)\nrelayerURL := "https://YOUR-NETWORK-relayer.sequence.app"\n \nsigner, _ := ethwallet.NewWalletFromMnemonic(mnemonic)\n \nwallet, _ := sequence.NewWalletSingleOwner(signer)\n \nprovider, _ := ethrpc.NewProvider(rpcURL)\nwallet.SetProvider(provider)\n \nrelayer, _ := relayer.NewRpcRelayer(relayerURL, projectAccessKey, provider, nil)\nwallet.SetRelayer(relayer)\n \ntransactions := sequence.Transactions{\n  &sequence.Transaction{\n    To:    common.HexToAddress("0x468E8e29F6cfb0F6b7ff10ec6A1AB516ec849c04"),\n    Value: big.NewInt(1000000000000000000),\n  },\n}\n \noptions, quote, _ := wallet.FeeOptions(ctx, transactions)
\n","isPage":false,"text":"\nFee selection is only necessary if you aren't already using Sequence Builder's gas sponsorship capabilities!\nCreate your project in Sequence Builder for ease of development today!\nimport { Session } from '@0xsequence/auth'\nimport { ethers } from 'ethers'\n \nconst config = {\n mnemonic: 'YOUR MNEMONIC',\n projectAccessKey: 'YOUR PROJECT ACCESS KEY',\n chainId: ChainId.YOUR_CHAIN_ID // e.g. ChainId.MAINNET, ChainId.POLYGON, etc.\n}\n \nconst signer = ethers.Wallet.fromMnemonic(config.mnemonic)\n \nconst session = await Session.singleSigner({ signer, projectAccessKey: config.projectAccessKey })\n \nconst account = session.account.getSigner(config.chainId, {\n async selectFee(_transactions, options) {\n // This callback is called with the list of candidate fee options.\n \n console.log('Fee options:', JSON.stringify(options, undefined, 2))\n \n // Select the USDC fee option.\n return options.find(option => option.token.symbol === 'USDC')\n }\n})\nmnemonic := "YOUR MNEMONIC"\nprojectAccessKey := "YOUR PROJECT ACCESS KEY"\nrpcURL := fmt.Sprintf("https://nodes.sequence.app/YOUR-NETWORK/%v", projectAccessKey)\nrelayerURL := "https://YOUR-NETWORK-relayer.sequence.app"\n \nsigner, _ := ethwallet.NewWalletFromMnemonic(mnemonic)\n \nwallet, _ := sequence.NewWalletSingleOwner(signer)\n \nprovider, _ := ethrpc.NewProvider(rpcURL)\nwallet.SetProvider(provider)\n \nrelayer, _ := relayer.NewRpcRelayer(relayerURL, projectAccessKey, provider, nil)\nwallet.SetRelayer(relayer)\n \ntransactions := sequence.Transactions{\n &sequence.Transaction{\n To: common.HexToAddress("0x468E8e29F6cfb0F6b7ff10ec6A1AB516ec849c04"),\n Value: big.NewInt(1000000000000000000),\n },\n}\n \noptions, quote, _ := wallet.FeeOptions(ctx, transactions)\n","title":"Fetching fee options","titles":["Relayer API","API"]},"13":{"href":"/api/relayer#sending-transactions","html":"\n
const transactions = [\n  {\n    to: '0x468E8e29F6cfb0F6b7ff10ec6A1AB516ec849c04',\n    value: '1000000000000000000'\n  }\n]\n \n// This sends the transaction to the relayer, and returns immediately once the relayer responds.\nconst response = await account.sendTransaction(transactions)\n \n// This waits for the transaction to be confirmed on-chain.\nconst receipt = await response.wait()\n \nconsole.log(JSON.stringify(receipt, undefined, 2))
\n
// Select the USDC fee option.\n// Not required if using Sequence Builder's gas sponsorship capabilities!\nvar selectedOption *sequence.RelayerFeeOption\nfor _, option := range options {\n  if option.Token.Symbol == "USDC" {\n    selectedOption = option\n    break\n  }\n}\n \n// Pay the relayer.\n// Not required if using Sequence Builder's gas sponsorship capabilities!\ndata, _ := contracts.IERC20.Encode("transfer", selectedOption.To, selectedOption.Value)\ntransactions.Append(sequence.Transactions{&sequence.Transaction{\n  To:            *selectedOption.Token.ContractAddress,\n  Data:          data,\n  RevertOnError: true,\n}})\n \nsigned, _ := wallet.SignTransactions(ctx, transactions)\n \n// Send the transaction to the relayer.\nmetaTxnID, _, wait, _ := wallet.SendTransaction(ctx, signed, quote)\n \nfmt.Println("meta-transaction ID", metaTxnID)\n \nreceipt, _ := wait(ctx)\n \nfmt.Println("transaction hash", receipt.TxHash)
\n","isPage":false,"text":"\nconst transactions = [\n {\n to: '0x468E8e29F6cfb0F6b7ff10ec6A1AB516ec849c04',\n value: '1000000000000000000'\n }\n]\n \n// This sends the transaction to the relayer, and returns immediately once the relayer responds.\nconst response = await account.sendTransaction(transactions)\n \n// This waits for the transaction to be confirmed on-chain.\nconst receipt = await response.wait()\n \nconsole.log(JSON.stringify(receipt, undefined, 2))\n// Select the USDC fee option.\n// Not required if using Sequence Builder's gas sponsorship capabilities!\nvar selectedOption *sequence.RelayerFeeOption\nfor _, option := range options {\n if option.Token.Symbol == "USDC" {\n selectedOption = option\n break\n }\n}\n \n// Pay the relayer.\n// Not required if using Sequence Builder's gas sponsorship capabilities!\ndata, _ := contracts.IERC20.Encode("transfer", selectedOption.To, selectedOption.Value)\ntransactions.Append(sequence.Transactions{&sequence.Transaction{\n To: *selectedOption.Token.ContractAddress,\n Data: data,\n RevertOnError: true,\n}})\n \nsigned, _ := wallet.SignTransactions(ctx, transactions)\n \n// Send the transaction to the relayer.\nmetaTxnID, _, wait, _ := wallet.SendTransaction(ctx, signed, quote)\n \nfmt.Println("meta-transaction ID", metaTxnID)\n \nreceipt, _ := wait(ctx)\n \nfmt.Println("transaction hash", receipt.TxHash)\n","title":"Sending transactions","titles":["Relayer API","API"]},"14":{"href":"/api/relayer#fetching-transaction-receipts","html":"\n

To fetch a transaction receipt for an arbitrary transaction that was dispatched via the relayer, call the /GetMetaTxnReceipt endpoint.\nThe metaTxID is the txnHash from the response of the /SendMetaTxn endpoint.

\n
curl -s -X POST -H 'Content-Type: application/json' \\\n  -d '{"metaTxID":"462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b"}' \\\n  https://polygon-relayer.sequence.app/rpc/Relayer/GetMetaTxnReceipt | jq\n \n{\n  "receipt": {\n    "id": "462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b",\n    "status": "SUCCEEDED",\n    "revertReason": null,\n    "index": 0,\n    "logs": [\n \n...
\n
const { receipt } = await session.account.relayer(config.chainId).wait('462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b')
\n
status, receipt, _ := relayer.Wait(ctx, "462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b")
","isPage":false,"text":"\nTo fetch a transaction receipt for an arbitrary transaction that was dispatched via the relayer, call the /GetMetaTxnReceipt endpoint.\nThe metaTxID is the txnHash from the response of the /SendMetaTxn endpoint.\ncurl -s -X POST -H 'Content-Type: application/json' \\\n -d '{"metaTxID":"462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b"}' \\\n https://polygon-relayer.sequence.app/rpc/Relayer/GetMetaTxnReceipt | jq\n \n{\n "receipt": {\n "id": "462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b",\n "status": "SUCCEEDED",\n "revertReason": null,\n "index": 0,\n "logs": [\n \n...\nconst { receipt } = await session.account.relayer(config.chainId).wait('462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b')\nstatus, receipt, _ := relayer.Wait(ctx, "462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b")","title":"Fetching transaction receipts","titles":["Relayer API","API"]},"15":{"href":"/guides/lootbox#deploy-an-in-game-collectibles-contract","html":"\n","isPage":true,"text":"\n","title":"Deploy an in-game collectibles contract","titles":[null]},"16":{"href":"/guides/lootbox#query-contract-details","html":"\n","isPage":false,"text":"\n","title":"Query contract details","titles":[null]},"17":{"href":"/guides/lootbox#fetch-token-balances-of-a-wallet","html":"\n
    \n
  1. \n

    Builder Signup & Project Creation

    \n
  2. \n
  3. \n

    Access Key Management

    \n
  4. \n
  5. \n

    Deploy a Contract

    \n
  6. \n
  7. \n

    Sponsor contract gas

    \n
  8. \n
  9. \n

    Deploying a cloudflare worker

    \n
  10. \n
  11. \n

    Generating AI Prompts & Images

    \n
  12. \n
  13. \n

    Uploading metadata to Sequence Metadata Service

    \n
  14. \n
  15. \n

    Minting Onchain with Relayer

    \n
  16. \n
  17. \n

    iframe-to-Webapp Communication

    \n
  18. \n
  19. \n

    Secure your cloudflare relayer from outside requests

    \n
  20. \n
","isPage":false,"text":"\n\n\nBuilder Signup & Project Creation\n\n\nAccess Key Management\n\n\nDeploy a Contract\n\n\nSponsor contract gas\n\n\nDeploying a cloudflare worker\n\n\nGenerating AI Prompts & Images\n\n\nUploading metadata to Sequence Metadata Service\n\n\nMinting Onchain with Relayer\n\n\niframe-to-Webapp Communication\n\n\nSecure your cloudflare relayer from outside requests\n\n","title":"Fetch token balances of a wallet","titles":[null]},"18":{"href":"/guides/unity-guide#integrate-sequencekit-with-waas","html":"\n","isPage":true,"text":"\n","title":"Integrate SequenceKit with WaaS","titles":[null]},"19":{"href":"/guides/unity-guide#deploy-a-collectibles-contract","html":"\n","isPage":false,"text":"\n","title":"Deploy a collectibles contract","titles":[null]},"20":{"href":"/guides/unity-guide#deploy-a-remote-minter","html":"\n","isPage":false,"text":"\n","title":"Deploy a remote minter","titles":[null]},"21":{"href":"/guides/unity-guide#mint-in-game-achievement-tokens","html":"\n","isPage":false,"text":"\n","title":"Mint in-game achievement tokens","titles":[null]},"22":{"href":"/guides/unity-guide#burn-in-game-achievement-tokens","html":"\n","isPage":false,"text":"\n","title":"Burn in-game achievement tokens","titles":[null]},"23":{"href":"/guides/unity-guide#integrate-an-embedded-marketplace","html":"\n","isPage":false,"text":"\n","title":"Integrate an embedded marketplace","titles":[null]},"24":{"href":"/solutions/minter#mint-tokens-using-builder-manually","html":"\n","isPage":true,"text":"\n","title":"Mint tokens using Builder manually","titles":[null]},"25":{"href":"/solutions/minter#deploy-a-serverless-minter-on-cloudflare-workers","html":"\n","isPage":false,"text":"\n","title":"Deploy a serverless minter on Cloudflare Workers","titles":[null]},"26":{"href":"/solutions/nft-checkout#integrate-nft-checkout-on-web-coming-soon","html":"\n","isPage":true,"text":"\n","title":"Integrate NFT Checkout on web (coming soon)","titles":[null]},"27":{"href":"/solutions/onramps#integrate-onramp-on-web","html":"\n","isPage":true,"text":"\n","title":"Integrate onramp on web","titles":[null]},"28":{"href":"/api/indexer/fetch-tokens#tokens-api","html":"\n\n","isPage":true,"text":"\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is now managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\n","title":"Tokens API","titles":[]},"29":{"href":"/api/indexer/fetch-tokens#fetches-list-of-erc20-erc721-and-erc1155-tokens-and-metadata-in-any-wallet","html":"\n

Sequence Indexer GetTokenBalances Method:

\n\n
\nExample: GetTokenBalances of a wallet account address on Polygon using an API_Access_Key\n\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for all token balances of the account on Polygon\nconst tokenBalances = await indexer.getTokenBalances({\n\taccountAddress: accountAddress,\n\tincludeMetadata: true\n})\nconsole.log('tokens in your account:', tokenBalances)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\ttokenBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, &includeMetadata, nil, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("tokenBalances:", tokenBalances)\n}
Please [contact our team](/support) for assistance with integrations to another target.
\n
\n\n","isPage":false,"text":"\nSequence Indexer GetTokenBalances Method:\n\nRequest: POST /rpc/Indexer/GetTokenBalances\nContent-Type: application/json\nBody (in JSON):\n\naccountAddress (string) -- the wallet account address\nincludeMetadata (boolean - optional - default: false) -- toggle token metadata to be included in the response\nmetadataOptions (object - optional) -- additional options for metadata\n\nverifiedOnly (boolean - optional) -- return only contracts which are 'verified' to help reduce spam\nincludeContracts ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled.\n\n\nincludeCollectionTokens (boolean - optional - default: true) -- toggle to represent ERC721 / ERC1155 tokens as a single summary item in the response\n\n\n\n\nExample: GetTokenBalances of a wallet account address on Polygon using an API_Access_Key\nThis code requires an API Access Key from Sequence Builder.\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for all token balances of the account on Polygon\nconst tokenBalances = await indexer.getTokenBalances({\n\taccountAddress: accountAddress,\n\tincludeMetadata: true\n})\nconsole.log('tokens in your account:', tokenBalances)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\ttokenBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, &includeMetadata, nil, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("tokenBalances:", tokenBalances)\n}Please [contact our team](/support) for assistance with integrations to another target.\n\nPRO TIP: fetching ERC721/1155 token IDsYou'll notice that, by default, GetTokenBalances will return at most one token instance from each contract.\nIn order to fetch ERC721/1155 token balances, you must pass the contractAddress to the GetTokenBalances method.\nThis will return all of the tokens owned by accountAddress from the specified contractAddress.\nSee section below for more information.\n","title":"Fetches list of ERC20, ERC721 and ERC1155 tokens and metadata in any wallet.","titles":["Tokens API",null]},"30":{"href":"/api/indexer/fetch-tokens#fetch-token-ids-balances-and-metadata-of-erc721-and-erc1155-collections","html":"\n

Sequence Indexer GetTokenBalances Method:

\n\n
\nExample: GetTokenBalances of a contract + account address on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any contract and account address you'd like :)\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for all nft balances of the account on Polygon\nconst nftBalances = await indexer.getTokenBalances({\n\tcontractAddress: contractAddress,\n\taccountAddress: accountAddress,\n\tincludeMetadata: true\n})\n \nconsole.log('collection of items:', nftBalances)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(contractAddress, accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\tnftBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, &contractAddress, &includeMetadata, nil, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("nftBalances:", nftBalances)\n}
","isPage":false,"text":"\nSequence Indexer GetTokenBalances Method:\n\nRequest: POST /rpc/Indexer/GetTokenBalances\nContent-Type: application/json\nBody (in JSON):\n\naccountAddress (string) -- the wallet account address\ncontractAddress (string) -- the contract address of the ERC721 / ERC1155 collection\nincludeMetadata (boolean - optional - default: false) -- toggle token metadata to be included in the response\nmetadataOptions (object - optional) -- additional options for metadata\n\nverifiedOnly (boolean - optional) -- return only contracts which are 'verified' to help reduce spam\nincludeContracts ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled.\n\n\n\n\n\n\nExample: GetTokenBalances of a contract + account address on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any contract and account address you'd like :)\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for all nft balances of the account on Polygon\nconst nftBalances = await indexer.getTokenBalances({\n\tcontractAddress: contractAddress,\n\taccountAddress: accountAddress,\n\tincludeMetadata: true\n})\n \nconsole.log('collection of items:', nftBalances)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(contractAddress, accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\tnftBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, &contractAddress, &includeMetadata, nil, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("nftBalances:", nftBalances)\n}","title":"Fetch token IDs, balances and metadata of ERC721 and ERC1155 collections.","titles":["Tokens API",null]},"31":{"href":"/api/indexer/installation#indexer-installation","html":"\n\n

Sequence Indexer is a simple API to query any blockchain token and NFT data. Below are instructions\non how to integrate the Sequence Indexer API into your Webapps, Games, and backends. In case you missed\nit, please also see the Indexer Overview.

\n","isPage":true,"text":"\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\nSequence Indexer is a simple API to query any blockchain token and NFT data. Below are instructions\non how to integrate the Sequence Indexer API into your Webapps, Games, and backends. In case you missed\nit, please also see the Indexer Overview.\n","title":"Indexer Installation","titles":[]},"32":{"href":"/api/indexer/installation#installation","html":"\n

The Sequence Indexer is built as a HTTP API with RPC endpoints that you may call directly\nfrom your Webapp, Game or server backend. Below you'll find information on the RPC endpoint\nschema with sample curl commands, along with examples in both Javascript/Typescript and Go.

\n

We provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Indexer with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Indexer API client as well.

\n\n
\n","isPage":false,"text":"\nThe Sequence Indexer is built as a HTTP API with RPC endpoints that you may call directly\nfrom your Webapp, Game or server backend. Below you'll find information on the RPC endpoint\nschema with sample curl commands, along with examples in both Javascript/Typescript and Go.\nWe provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Indexer with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Indexer API client as well.\nSequence Indexer offers the same API across a variety of EVM networks. Make sure to check the Indexer endpoints\nand use the corresponding host for your dapp/game. For example, on Ethereum mainnet the Sequence Indexer endpoint is\nhttps://mainnet-indexer.sequence.app and Polygon is https://polygon-indexer.sequence.app.🌄 View the full list of supported networks and Indexer endpoints here\n\n","title":"Installation","titles":["Indexer Installation"]},"33":{"href":"/api/indexer/installation#web--nodejs-installation","html":"\n
npm install 0xsequence ethers
\n

or

\n
pnpm install 0xsequence ethers
\n

or

\n
yarn add 0xsequence ethers
\n\n
import { SequenceIndexer } from '@0xsequence/indexer'\n \n// see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of\n// indexer hosts for the chain you'd like to query\nconst indexer = new SequenceIndexer('https://mainnet-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// see examples below for the kinds of queries you can make\nconst tokenBalances = await indexer.getTokenBalances(...)
\n

NOTE: if you're using @0xsequence/indexer from node.js, we recommend using node v18.x or newer.

\n
\n","isPage":false,"text":"\nnpm install 0xsequence ethers\nor\npnpm install 0xsequence ethers\nor\nyarn add 0xsequence ethers\nThis code requires an API Access Key from Sequence Builder.\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \n// see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of\n// indexer hosts for the chain you'd like to query\nconst indexer = new SequenceIndexer('https://mainnet-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// see examples below for the kinds of queries you can make\nconst tokenBalances = await indexer.getTokenBalances(...)\nNOTE: if you're using @0xsequence/indexer from node.js, we recommend using node v18.x or newer.\n\n","title":"Web / node.js Installation","titles":["Indexer Installation","Installation"]},"34":{"href":"/api/indexer/installation#go-installation","html":"\n
go get -u github.com/0xsequence/go-sequence@latest
\n

then in your app,

\n
import (\n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \n// see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of\n// indexer hosts for the chain you'd like to query\nseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n// see examples below for the kinds of queries you can make\naccountAddress := "ACCOUNT_ADDRESS"\nincludeMetadata := true\nmetadataOptions := indexer.MetadataOptions{\n\tVerifiedOnly: true,\n}\n \n_, tokenBalances, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, nil, &includeMetadata, &metadataOptions, nil, nil)
\n
\n","isPage":false,"text":"\ngo get -u github.com/0xsequence/go-sequence@latest\nthen in your app,\nimport (\n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \n// see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of\n// indexer hosts for the chain you'd like to query\nseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n// see examples below for the kinds of queries you can make\naccountAddress := "ACCOUNT_ADDRESS"\nincludeMetadata := true\nmetadataOptions := indexer.MetadataOptions{\n\tVerifiedOnly: true,\n}\n \n_, tokenBalances, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, nil, &includeMetadata, &metadataOptions, nil, nil)\n\n","title":"Go Installation","titles":["Indexer Installation","Installation"]},"35":{"href":"/api/indexer/installation#unity-or-unreal-installation","html":"\n

The Sequence Indexer is integrated directly inside of the respective Sequence Unity and Sequence Unreal SDKs.

\n
","isPage":false,"text":"\nThe Sequence Indexer is integrated directly inside of the respective Sequence Unity and Sequence Unreal SDKs.\n","title":"Unity or Unreal Installation","titles":["Indexer Installation","Installation"]},"36":{"href":"/api/indexer/metadata-tips#metadata-tips--notes-on-spam","html":"\n

The Sequence Indexer and Sequence Metadata services will pick up everything and anything\nthat is published on a blockchain. Our services are designed to provide data in real-time\nas blocks are mined, and adhere to all popular ERC20, ERC721 and ERC1155 metadata\nstandards so things just work.

\n

This is very helpful for your applications to be able to have access to the complete set of data\non-chain, but it also means it will include spam tokens when querying with default settings.

\n

To combat spam, we introduced metadataOptions arguments which can be passed to Indexer RPC\ncalls to control the results returned.

\n

The Sequence Metadata service keeps track of contracts which are "verified" by checking popular\nsources like Coingecko, OpenSea, Sequence Builder (https://sequence.build) and the Sequence Token\nDirectory (https://github.com/0xsequence/token-directory). By calling the Indexer RPC methods with\n"metadataOptions": { "verifiedOnly": true }, any contract address which has not been verified, will\nbe omitted from the results. We recommend using this option all the time, but, the downside is\nif your project's contracts are unverified, then they will also be omitted from the results. To help\nwith this, your options are to get verified with one of the sources above, or in your RPC calls to pass\n"metadataOptions": { "verifiedOnly": true, "includeContracts": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "0x8bb759bb68995343ff1e9d57ac85ff5c5fb79334"] }\nas an example.

","isPage":true,"text":"\nThe Sequence Indexer and Sequence Metadata services will pick up everything and anything\nthat is published on a blockchain. Our services are designed to provide data in real-time\nas blocks are mined, and adhere to all popular ERC20, ERC721 and ERC1155 metadata\nstandards so things just work.\nThis is very helpful for your applications to be able to have access to the complete set of data\non-chain, but it also means it will include spam tokens when querying with default settings.\nTo combat spam, we introduced metadataOptions arguments which can be passed to Indexer RPC\ncalls to control the results returned.\nThe Sequence Metadata service keeps track of contracts which are "verified" by checking popular\nsources like Coingecko, OpenSea, Sequence Builder (https://sequence.build) and the Sequence Token\nDirectory (https://github.com/0xsequence/token-directory). By calling the Indexer RPC methods with\n"metadataOptions": { "verifiedOnly": true }, any contract address which has not been verified, will\nbe omitted from the results. We recommend using this option all the time, but, the downside is\nif your project's contracts are unverified, then they will also be omitted from the results. To help\nwith this, your options are to get verified with one of the sources above, or in your RPC calls to pass\n"metadataOptions": { "verifiedOnly": true, "includeContracts": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "0x8bb759bb68995343ff1e9d57ac85ff5c5fb79334"] }\nas an example.","title":"Metadata Tips & Notes on Spam","titles":[]},"37":{"href":"/api/indexer/native-network-balance#native-network-balances-ie-eth-matic-etc","html":"\n\n","isPage":true,"text":"\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is now managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\n","title":"Native network balances (ie. ETH, MATIC, etc.)","titles":[]},"38":{"href":"/api/indexer/native-network-balance#fetch-native-network-balance-aka-eth-on-ethereum-matic-on-polygon-avax-on-avalanche-bnb-on-bsc-etc","html":"\n

Sequence Indexer GetEtherBalance Method:

\n\n
\nExample: GetEtherBalance MATIC balance of a wallet account address on Polygon using an API_Access_Key\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetEtherBalance -d '{ "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9" }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for the MATIC balance on Polygon\nconst balance = await indexer.getEtherBalance({\n\taccountAddress: accountAddress,\n})\n\t\nconsole.log('tokens in your account:', tokenBalances)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\ttokenBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, &includeMetadata, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("tokenBalances:", tokenBalances)\n}
","isPage":false,"text":"\nSequence Indexer GetEtherBalance Method:\n\nRequest: POST /rpc/Indexer/GetEtherBalance\nContent-Type: application/json\nBody (in JSON):\n\naccountAddress (string) -- the wallet account address\n\n\n\n\nExample: GetEtherBalance MATIC balance of a wallet account address on Polygon using an API_Access_Key\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetEtherBalance -d '{ "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9" }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for the MATIC balance on Polygon\nconst balance = await indexer.getEtherBalance({\n\taccountAddress: accountAddress,\n})\n\t\nconsole.log('tokens in your account:', tokenBalances)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\ttokenBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, &includeMetadata, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("tokenBalances:", tokenBalances)\n}","title":"Fetch native network balance (aka ETH on Ethereum, MATIC on Polygon, AVAX on Avalanche, BNB on BSC, etc.)","titles":["Native network balances (ie. ETH, MATIC, etc.)",null]},"39":{"href":"/api/indexer/overview#indexer","html":"\n\n

The Sequence Indexer is a modular web3 service that makes it easy to query blockchain token and NFT data from Ethereum-compatible networks. The Indexer automatically indexes every ERC20, ERC721 and ERC1155 token from Ethereum-compatible chains.

\n\n

The Sequence Indexer is a powerful tool that can be used to build wallets, games, and dapps that\nneed to query on-chain data. It is designed to be fast, reliable, and easy to use. It leverages\nthe Sequence Node Gateway which monitors nodes health, intelligently routes\nrequests to the available nodes and caches the most recent request responses. This means that Node\nproviders going down are no longer a problem, as the Node Gateway will automatically route to a\nhealthy provider making sure that Indexer always stays at the top of the chain with no downtime.

\n

The other benefit of using the Indexer is that it is using built in-house, next-generation, LSM-tree\nbased databases to store the data. It makes it super fast to query and index data. The data is\navailable in real-time with low latency. You can query it using a simple REST API or one of our SDKs.

\n

The Indexer API allows you to query all token balances, history and other information for\nall Ethereum compatible chains. In order to make it one go to place for all your token data needs,\nwe have included Sequence Metadata support for all tokens. This means that\nyou can easily render tokens in your apps, games, or wallets without the need to fetch metadata from\na separate API.

\n

In fact, the Sequence Wallet uses the Indexer behind the scenes so it can seamlessly\nrender all token information in any wallet. But of course, the Indexer is a modular piece\nof infrastructure, and you may use it directly from your dapp, game, or even from\na server.

\nFeatures:\n\n","isPage":true,"text":"\nIndexer API documentation and testing\nThe Sequence Indexer is a modular web3 service that makes it easy to query blockchain token and NFT data from Ethereum-compatible networks. The Indexer automatically indexes every ERC20, ERC721 and ERC1155 token from Ethereum-compatible chains.\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is now managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\nThe Sequence Indexer is a powerful tool that can be used to build wallets, games, and dapps that\nneed to query on-chain data. It is designed to be fast, reliable, and easy to use. It leverages\nthe Sequence Node Gateway which monitors nodes health, intelligently routes\nrequests to the available nodes and caches the most recent request responses. This means that Node\nproviders going down are no longer a problem, as the Node Gateway will automatically route to a\nhealthy provider making sure that Indexer always stays at the top of the chain with no downtime.\nThe other benefit of using the Indexer is that it is using built in-house, next-generation, LSM-tree\nbased databases to store the data. It makes it super fast to query and index data. The data is\navailable in real-time with low latency. You can query it using a simple REST API or one of our SDKs.\nThe Indexer API allows you to query all token balances, history and other information for\nall Ethereum compatible chains. In order to make it one go to place for all your token data needs,\nwe have included Sequence Metadata support for all tokens. This means that\nyou can easily render tokens in your apps, games, or wallets without the need to fetch metadata from\na separate API.\nIn fact, the Sequence Wallet uses the Indexer behind the scenes so it can seamlessly\nrender all token information in any wallet. But of course, the Indexer is a modular piece\nof infrastructure, and you may use it directly from your dapp, game, or even from\na server.\nFeatures:\n\nSuper-fast API to query all token balances, history, metadata and NFTs with multi-chain support\nReal-time indexing of ERC20, ERC721 and ERC1155 transactions across EVM-compatible chains\nAutomatically detects all tokens on the chain, without the need for a contract registry\nResilient to node failures and chain re-organizations\nEasily listen for specific events and transactions on-chain accurately with a simple API\nBuilt-in token / nft metadata support to easily render tokens in your apps / games\nHigh uptime and availability\n\n","title":"Indexer","titles":[]},"40":{"href":"/api/indexer/overview#supported-networks--endpoints","html":"\n

You can see the full list of supported networks here.

\n","isPage":false,"text":"\nYou can see the full list of supported networks here.\n","title":"Supported Networks & Endpoints","titles":["Indexer"]},"41":{"href":"/api/indexer/overview#getting-started","html":"\n

Here are a few example queries you can make to a blockchain from your dapp, game, or wallet:

\n","isPage":false,"text":"\nHere are a few example queries you can make to a blockchain from your dapp, game, or wallet:\n\nFetch all tokens & NFTS in any wallet including all metadata\nFetch the transaction history for any wallet address\nFetch all unique tokens in a particular ERC20/721/1155 contract, including total supplies\nWhat is the total token supply of an ERC20 token? What is the total token supply of\nall the ERC1155 tokens in a particular contract?\nFetch the transaction history for any token contract address\n","title":"Getting Started","titles":["Indexer"]},"42":{"href":"/api/indexer/transaction-history#wallet-transaction-history","html":"\n\n","isPage":true,"text":"\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is now managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\n","title":"Wallet transaction history","titles":[]},"43":{"href":"/api/indexer/transaction-history#fetch-the-transaction-history-for-any-wallet-address","html":"\n

Fetches the transaction / token history for any wallet address of any ERC20, ERC721 and ERC1155 token.\nThe response includes decoded transaction details for easy consumption / rendering.

\n

Sequence Indexer GetTransactionHistory Method:

\n\n
\nExample: GetTransactionHistory of a wallet account address on Polygon using an API_Access_Key\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTransactionHistory -d '{ "filter": { "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9" }, "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst filter = {\n\taccountAddress: "0xabc..."\n}\n \n// query Sequence Indexer for all token transaction history on Polygon\nconst transactionHistory = await indexer.getTransactionHistory({\n\tfilter: filter,\n\tincludeMetadata: true\n})\n\t\nconsole.log('transaction history in account:', transactionHistory)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tAccountAddress: &accountAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, history, err := seqIndexer.GetTransactionHistory(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("transaction history:", history)\n}
","isPage":false,"text":"\nFetches the transaction / token history for any wallet address of any ERC20, ERC721 and ERC1155 token.\nThe response includes decoded transaction details for easy consumption / rendering.\nSequence Indexer GetTransactionHistory Method:\n\nRequest: POST /rpc/Indexer/GetTransactionHistory\nContent-Type: application/json\nBody (in JSON):\n\nfilter (object)\n\naccountAddress (string) -- the wallet account address\ncontractAddress (string) -- optionally specify a contract address to filter\naccountAddresses (string array) -- optionally specify a list of wallet account addresses\ncontractAddresses (string array) -- optionally specify a list of contract address\ntransactionHashes (string array) -- optionally specify a list of transaction hashes\nmetaTransactionIDs (string array) -- optionally specify a list of meta transaction IDs\n\n\nincludeMetadata (boolean - optional - default: false) -- toggle token metadata to be included in the response\nmetadataOptions (object - optional) -- additional options for metadata\n\nverifiedOnly (boolean - optional) -- return only contracts which are 'verified' to help reduce spam\nincludeContracts ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled.\n\n\n\n\n\n\nExample: GetTransactionHistory of a wallet account address on Polygon using an API_Access_Key\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTransactionHistory -d '{ "filter": { "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9" }, "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst filter = {\n\taccountAddress: "0xabc..."\n}\n \n// query Sequence Indexer for all token transaction history on Polygon\nconst transactionHistory = await indexer.getTransactionHistory({\n\tfilter: filter,\n\tincludeMetadata: true\n})\n\t\nconsole.log('transaction history in account:', transactionHistory)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tAccountAddress: &accountAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, history, err := seqIndexer.GetTransactionHistory(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("transaction history:", history)\n}","title":"Fetch the transaction history for any wallet address","titles":["Wallet transaction history"]},"44":{"href":"/api/indexer/transation-history-token-contract#contract-token-history","html":"\n\n","isPage":true,"text":"\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is now managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\n","title":"Contract token history","titles":[]},"45":{"href":"/api/indexer/transation-history-token-contract#fetch--listen-to-the-transaction-history-for-any-erc20-erc721-erc1155-contract","html":"\n

This query is helpful to track transaction history of a particular token contract.\nIn this example, we use the Skyweaver token contract address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. You may query any contract address on any of the supported networks (but make\nsure to query the indexer of the corresponding network).

\n

Sequence Indexer GetTransactionHistory Method:

\n\n
\nExample: GetTransactionHistory of Skyweaver contract on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTransactionHistory -d '{ "filter": { "accountAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E" }, "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// here we query the Skyweaver contract address, but you can use any\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\n \n// query Sequence Indexer for all token details / supplies\n// try any contract address you'd like :)\nconst filter = {\n\tcontractAddress: contractAddress\n}\n \n// query Sequence Indexer for all token transaction history on Polygon\nconst transactionHistory = await indexer.getTransactionHistory({\n\tfilter: filter\n})\n\t\nconsole.log('transaction history of contract:', transactionHistory)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tContractAddress: &contractAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, history, err := seqIndexer.GetTransactionHistory(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("transaction history:", history)\n}
","isPage":false,"text":"\nThis query is helpful to track transaction history of a particular token contract.\nIn this example, we use the Skyweaver token contract address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. You may query any contract address on any of the supported networks (but make\nsure to query the indexer of the corresponding network).\nSequence Indexer GetTransactionHistory Method:\n\nRequest: POST /rpc/Indexer/GetTransactionHistory\nContent-Type: application/json\nBody (in JSON):\n\nfilter (object)\n\ncontractAddress (string) -- a ERC20 / ERC721 / ERC1155 contract address\n\n\n\n\n\n\nExample: GetTransactionHistory of Skyweaver contract on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTransactionHistory -d '{ "filter": { "accountAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E" }, "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// here we query the Skyweaver contract address, but you can use any\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\n \n// query Sequence Indexer for all token details / supplies\n// try any contract address you'd like :)\nconst filter = {\n\tcontractAddress: contractAddress\n}\n \n// query Sequence Indexer for all token transaction history on Polygon\nconst transactionHistory = await indexer.getTransactionHistory({\n\tfilter: filter\n})\n\t\nconsole.log('transaction history of contract:', transactionHistory)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tContractAddress: &contractAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, history, err := seqIndexer.GetTransactionHistory(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("transaction history:", history)\n}","title":"Fetch / listen to the transaction history for any ERC20, ERC721, ERC1155 contract.","titles":["Contract token history",null]},"46":{"href":"/api/indexer/unique-tokens#tokens-in-a-contract","html":"\n\n","isPage":true,"text":"\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is now managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\n","title":"Tokens in a contract","titles":[]},"47":{"href":"/api/indexer/unique-tokens#fetch-all-unique-tokens-in-a-particular-erc207211155-contract-including-total-supplies","html":"\nFetches token supplies and metadata for any ERC20, ERC721, ERC1155 contract.\n

This query is helpful to render all tokens in a token contract, or to query the total token supplies.\nIn this example, we use the Skyweaver token contract address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. You may query any contract address on any of the supported networks (but make\nsure to query the indexer of the corresponding network).

\n

Sequence Indexer GetTokenSupplies Method:

\n\n
\nExample: GetTokenSupplies of Skyweaver contract on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenSupplies -d '{ "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// here we query the Skyweaver contract address, but you can use any\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\n \n// query Sequence Indexer for all token details / supplies\nconst tokenDetails = await indexer.getTokenSupplies({\n\tcontractAddress: contractAddress,\n\tincludeMetadata: true\n})\nconsole.log('token details of contract:', tokenDetails)
go\nimport (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenSupplies(contractAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tContractAddress: &contractAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, tokenDetails, err := seqIndexer.GetTokenSupplies(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("token details:", tokenDetails)\n}
","isPage":false,"text":"\nFetches token supplies and metadata for any ERC20, ERC721, ERC1155 contract.\nThis query is helpful to render all tokens in a token contract, or to query the total token supplies.\nIn this example, we use the Skyweaver token contract address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. You may query any contract address on any of the supported networks (but make\nsure to query the indexer of the corresponding network).\nSequence Indexer GetTokenSupplies Method:\n\nRequest: POST /rpc/Indexer/GetTokenSupplies\nContent-Type: application/json\nBody (in JSON):\n\ncontractAddress (string) -- a ERC20 / ERC721 / ERC1155 contract address\nincludeMetadata (boolean - optional - default: false) -- toggle token metadata to be included in the response\nmetadataOptions (object - optional) -- additional options for metadata\n\nverifiedOnly (boolean - optional) -- return only contracts which are 'verified' to help reduce spam\nincludeContracts ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled.\n\n\n\n\n\n\nExample: GetTokenSupplies of Skyweaver contract on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenSupplies -d '{ "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// here we query the Skyweaver contract address, but you can use any\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\n \n// query Sequence Indexer for all token details / supplies\nconst tokenDetails = await indexer.getTokenSupplies({\n\tcontractAddress: contractAddress,\n\tincludeMetadata: true\n})\nconsole.log('token details of contract:', tokenDetails)go\nimport (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenSupplies(contractAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tContractAddress: &contractAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, tokenDetails, err := seqIndexer.GetTokenSupplies(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("token details:", tokenDetails)\n}","title":"Fetch all unique tokens in a particular ERC20/721/1155 contract, including total supplies","titles":["Tokens in a contract",null]},"48":{"href":"/api/metadata/contract-metadata#contract-metadata","html":"\n\n\n","isPage":true,"text":"\n\nLearn how to query contract-level metadata directly for any contract\nLearn about contract-level metadata for ERC20, ERC721 and ERC1155 tokens\n\nPRO TIP: Sequence Indexer also returns token metadataWhen using the Sequence Indexer, pass "includeMetadata": true to your request to\nquery token metadata for any ERC20, ERC721 or ERC1155 contract. See below how to fetch\ncontract-level metadata directly.\n","title":"Contract Metadata","titles":[]},"49":{"href":"/api/metadata/contract-metadata#fetch-contract-metadata-of-any-erc20-erc721-or-erc1155-contract-address","html":"\n

Sequence Metadata GetContractInfoBatch Method:

\n\n
\nExample: GetContractInfoBatch of some contracts on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetContractInfoBatch -d '{ "chainID": "polygon", "contractAddresses": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "0x17b66009af459dc8ebf37acf8a8b355379be2fe5", "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", "0x2953399124f0cbb46d2cbacd8a89cf0599974963", "0x7227e371540cf7b8e512544ba6871472031f3335", "0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d", "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", "0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4"] }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst contractMetadata = await metadataClient.getContractInfoBatch({\n  chainID: 'polygon',\n  contractAddresses: [\n    '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n    '0x17b66009af459dc8ebf37acf8a8b355379be2fe5',\n    '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n    '0x2953399124f0cbb46d2cbacd8a89cf0599974963',\n    '0x7227e371540cf7b8e512544ba6871472031f3335',\n    '0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d',\n    '0x8f3cf7ad23cd3cadbd9735aff958023239c6a063',\n    '0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4'\n  ]\n})\n \nconsole.log('Contract info for above addresses:', contractMetadata)
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncontractInfo, err := seqMetadata.GetContractInfo(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E")
Please [contact our team](/support) for assistance with integrations to another target.
\n
\n","isPage":false,"text":"\nSequence Metadata GetContractInfoBatch Method:\n\nRequest: POST /rpc/Metadata/GetContractInfoBatch\nContent-Type: application/json\nBody (in JSON):\n\nchainID (string) -- the chain id, as a name or number (ie. "1" or "mainnet", "137" or "polygon", etc.)\ncontractAddresses (string of strings) -- array of contract addresses\n\n\n\n\nExample: GetContractInfoBatch of some contracts on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\nThis code requires an API Access Key from Sequence Builder.\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetContractInfoBatch -d '{ "chainID": "polygon", "contractAddresses": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "0x17b66009af459dc8ebf37acf8a8b355379be2fe5", "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", "0x2953399124f0cbb46d2cbacd8a89cf0599974963", "0x7227e371540cf7b8e512544ba6871472031f3335", "0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d", "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", "0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4"] }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst contractMetadata = await metadataClient.getContractInfoBatch({\n chainID: 'polygon',\n contractAddresses: [\n '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n '0x17b66009af459dc8ebf37acf8a8b355379be2fe5',\n '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n '0x2953399124f0cbb46d2cbacd8a89cf0599974963',\n '0x7227e371540cf7b8e512544ba6871472031f3335',\n '0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d',\n '0x8f3cf7ad23cd3cadbd9735aff958023239c6a063',\n '0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4'\n ]\n})\n \nconsole.log('Contract info for above addresses:', contractMetadata)import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncontractInfo, err := seqMetadata.GetContractInfo(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E")Please [contact our team](/support) for assistance with integrations to another target.\n\n","title":"Fetch contract metadata of any ERC20, ERC721 or ERC1155 contract address","titles":["Contract Metadata"]},"50":{"href":"/api/metadata/contract-metadata#contract-level-metadata-standards","html":"\n

Additionally, OpenSea added something called contractURI (https://docs.opensea.io/docs/contract-level-metadata).

","isPage":false,"text":"\nAdditionally, OpenSea added something called contractURI (https://docs.opensea.io/docs/contract-level-metadata).","title":"Contract-level Metadata Standards","titles":["Contract Metadata"]},"51":{"href":"/api/metadata/overview#metadata","html":"\n

The Sequence Metadata API service offers a simple and fast API to query token & NFT metadata\nfor Ethereum-compatible chains.

\n

To learn how to use the Sequence Metadata service, please read:

\n\n
\n","isPage":true,"text":"\nThe Sequence Metadata API service offers a simple and fast API to query token & NFT metadata\nfor Ethereum-compatible chains.\nTo learn how to use the Sequence Metadata service, please read:\n\nToken metadata API & standards\nContract-level metadata API & standards\nAlternative, REST API Usage\n\n\n","title":"Metadata","titles":[]},"52":{"href":"/api/metadata/overview#web--nodejs-installation","html":"\n
npm install 0xsequence
\n

or

\n
npm install @0xsequence/metadata
\n\n

then in your app (using your API Access Key),

\n
import { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadata = new SequenceMetadata('https://metadata.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')
\n

NOTE: if you're using @0xsequence/metadata from node.js, we recommend using node v18.x or newer.

\n","isPage":false,"text":"\nnpm install 0xsequence\nor\nnpm install @0xsequence/metadata\nThis installation requires an API Access Key from Sequence Builder.\nthen in your app (using your API Access Key),\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadata = new SequenceMetadata('https://metadata.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\nNOTE: if you're using @0xsequence/metadata from node.js, we recommend using node v18.x or newer.\n","title":"Web / node.js Installation","titles":["Metadata",null]},"53":{"href":"/api/metadata/overview#go-installation","html":"\n
go get -u github.com/0xsequence/go-sequence@latest
\n

then in your app,

\n
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncontractInfo, err := seqMetadata.GetContractInfo(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E")
\n
\n","isPage":false,"text":"\ngo get -u github.com/0xsequence/go-sequence@latest\nthen in your app,\nimport (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncontractInfo, err := seqMetadata.GetContractInfo(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E")\n\n","title":"Go Installation","titles":["Metadata",null]},"54":{"href":"/api/metadata/overview#unity-or-unreal-installation","html":"\n

The Sequence Metadata is integrated directly inside of the respective Sequence Unity and Sequence Unreal SDKs.

\n
","isPage":false,"text":"\nThe Sequence Metadata is integrated directly inside of the respective Sequence Unity and Sequence Unreal SDKs.\n","title":"Unity or Unreal Installation","titles":["Metadata",null]},"55":{"href":"/api/metadata/rest-api#metadata-rest-api-reference--usage","html":"\n

The Sequence Metadata API service offers a simple and fast API to query token & NFT metadata\nfor Ethereum-compatible chains.

\n

Quite simply, the Metadata API allows you to query the token metadata of any ERC20, ERC721 or ERC1155\ncontract on a number of supported Ethereum chains.

\n

As well, the Sequence Metadata service is automatically integrated in the Sequence Indexer.\nBut as we demonstrate below, it's also useful to be able to query the token/contract metadata directly too :)

\n\n","isPage":true,"text":"\nThe Sequence Metadata API service offers a simple and fast API to query token & NFT metadata\nfor Ethereum-compatible chains.\nQuite simply, the Metadata API allows you to query the token metadata of any ERC20, ERC721 or ERC1155\ncontract on a number of supported Ethereum chains.\nAs well, the Sequence Metadata service is automatically integrated in the Sequence Indexer.\nBut as we demonstrate below, it's also useful to be able to query the token/contract metadata directly too :)\nPRO TIP: RPC vs REST endpointsSequence Metadata service is available with both RPC and REST endpoints. We recommend the RPC endpoints\nfor your application, but the REST endpoints are an available option for convenience.For RPC endpoint see Token metadata RPC and Contract metadata RPC.\n","title":"Metadata REST API Reference & Usage","titles":[]},"56":{"href":"/api/metadata/rest-api#example","html":"\n

Let's say you'd like to query the metadata of a Skyweaver 1155 card on the Polygon network. Of course, the\nbelow example will work for any network / contract / token combination as well.

\n

First, the Skyweaver 1155 assets contract is located at address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. Second, let's build the metadata lookup endpoint to query Skyweaver's contract\nfor token ID 20:

\n

Request:\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20

\nResponse:\n
[\n  {\n    "tokenId": "20",\n    "contractAddress": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n    "name": "Unstoppable Chop",\n    "description": "Attach Silence to target unit. Do 4 damage to it.",\n    "image": "https://assets.skyweaver.net/TNqWLuJZ/webapp/cards/full-cards/6x/20-silver.png",\n    "decimals": 2,\n    "properties": {\n      "baseCardId": 20,\n      "goldCardId": 131092,\n      "grade": "oldSilver",\n      "id": 20,\n      "silverCardId": 65556\n    },\n    "attributes": null\n  }\n]
\n

If you'd like to query a number of tokens at the same time, you can include more token ids comma-separated:\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20,21,22 -- click\nto see the JSON response to query token ids 20, 21, and 22 in a single batched request.

\n

Feel free to try tweaking the metadata.sequence.app URL above for your own contract, or another popular\nproject to see how the responses come back. You can change the network to one of our supported networks\nand specify any contract and/or token id.

\n

In addition to easily querying token-level metadata like in the above example, you can also query contract-level metadata.\nContract-level metadata provides you more information about a contract address such as a name, contract type, logo, and description.\nSimply change the metadata URL above to just query the contract address: https://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E

\n

and see result:

\n
{\n  "chainId": 137,\n  "address": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n  "name": "Skyweaver",\n  "type": "ERC1155",\n  "symbol": "SKYWVR",\n  "logoURI": "https://assets.skyweaver.net/_tX5dRVi/webapp/icons/skyweaver-token.png",\n  "extensions": {\n    "link": "https://www.skyweaver.net/",\n    "description": "Skyweaver is a Free-to-Play, trading card game powered by Polygon and Ethereum.",\n    "ogImage": "https://skyweaver.net/images/skyweavercover.jpg",\n    "originAddress": "0x631998e91476da5b870d741192fc5cbc55f5a52e"\n  }\n}
\n
\n","isPage":false,"text":"\nLet's say you'd like to query the metadata of a Skyweaver 1155 card on the Polygon network. Of course, the\nbelow example will work for any network / contract / token combination as well.\nFirst, the Skyweaver 1155 assets contract is located at address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. Second, let's build the metadata lookup endpoint to query Skyweaver's contract\nfor token ID 20:\nRequest:\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20\nResponse:\n[\n {\n "tokenId": "20",\n "contractAddress": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n "name": "Unstoppable Chop",\n "description": "Attach Silence to target unit. Do 4 damage to it.",\n "image": "https://assets.skyweaver.net/TNqWLuJZ/webapp/cards/full-cards/6x/20-silver.png",\n "decimals": 2,\n "properties": {\n "baseCardId": 20,\n "goldCardId": 131092,\n "grade": "oldSilver",\n "id": 20,\n "silverCardId": 65556\n },\n "attributes": null\n }\n]\nIf you'd like to query a number of tokens at the same time, you can include more token ids comma-separated:\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20,21,22 -- click\nto see the JSON response to query token ids 20, 21, and 22 in a single batched request.\nFeel free to try tweaking the metadata.sequence.app URL above for your own contract, or another popular\nproject to see how the responses come back. You can change the network to one of our supported networks\nand specify any contract and/or token id.\nIn addition to easily querying token-level metadata like in the above example, you can also query contract-level metadata.\nContract-level metadata provides you more information about a contract address such as a name, contract type, logo, and description.\nSimply change the metadata URL above to just query the contract address: https://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E\nand see result:\n{\n "chainId": 137,\n "address": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n "name": "Skyweaver",\n "type": "ERC1155",\n "symbol": "SKYWVR",\n "logoURI": "https://assets.skyweaver.net/_tX5dRVi/webapp/icons/skyweaver-token.png",\n "extensions": {\n "link": "https://www.skyweaver.net/",\n "description": "Skyweaver is a Free-to-Play, trading card game powered by Polygon and Ethereum.",\n "ogImage": "https://skyweaver.net/images/skyweavercover.jpg",\n "originAddress": "0x631998e91476da5b870d741192fc5cbc55f5a52e"\n }\n}\n\n","title":"Example","titles":["Metadata REST API Reference & Usage"]},"57":{"href":"/api/metadata/rest-api#usage","html":"\n

The Metadata API service is accessible either with a simple REST interface, or a RPC client.\nFor the RPC client, we offer Web browser, node and Go clients. We recommend the RPC client for most integrations, but\nmake the REST interface available for convenience.

\n
\n","isPage":false,"text":"\nThe Metadata API service is accessible either with a simple REST interface, or a RPC client.\nFor the RPC client, we offer Web browser, node and Go clients. We recommend the RPC client for most integrations, but\nmake the REST interface available for convenience.\n\n","title":"Usage","titles":["Metadata REST API Reference & Usage"]},"58":{"href":"/api/metadata/rest-api#rest-endpoints","html":"\n

As mentioned in the example above. The general format of the REST endpoint is:

\n
GET https://metadata.sequence.app/tokens/<network>/<contractAddress>[/<tokenID>]
\n

Where <network> must be one of the Chain ID or Chain Handle of the supported networks.

\n
\nFetch contract-level metadata:\n
GET https://metadata.sequence.app/tokens/<network>/<contractAddress>
\n

Example: https://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E

\n
\nFetch token-level metadata:\n
GET https://metadata.sequence.app/tokens/<network>/<contractAddress>/<tokenID>[,<tokenID>,...]
\n

Examples:

\n\n
\n","isPage":false,"text":"\nAs mentioned in the example above. The general format of the REST endpoint is:\nGET https://metadata.sequence.app/tokens/<network>/<contractAddress>[/<tokenID>]\nWhere <network> must be one of the Chain ID or Chain Handle of the supported networks.\n\nFetch contract-level metadata:\nGET https://metadata.sequence.app/tokens/<network>/<contractAddress>\nExample: https://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E\n\nFetch token-level metadata:\nGET https://metadata.sequence.app/tokens/<network>/<contractAddress>/<tokenID>[,<tokenID>,...]\nExamples:\n\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20,21\n\n\n","title":"REST endpoints","titles":["Metadata REST API Reference & Usage"]},"59":{"href":"/api/metadata/rest-api#rpc-client","html":"\n

The Metadata RPC interface offers the full capabilities of the Metadata service.

\n

We provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Metadata service with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Metadata RPC client as well.

\n","isPage":false,"text":"\nThe Metadata RPC interface offers the full capabilities of the Metadata service.\nWe provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Metadata service with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Metadata RPC client as well.\n","title":"RPC Client","titles":["Metadata REST API Reference & Usage"]},"60":{"href":"/api/metadata/rest-api#metadata-rpc-methods","html":"\n

Metadata API endpoint: https://metadata.sequence.app

\nMetadata RPC methods:\n","isPage":false,"text":"\nMetadata API endpoint: https://metadata.sequence.app\nMetadata RPC methods:\n\nGetTokenMetadata - fetch token metadata of ERC721 or ERC1155 tokens from a single contract\nGetTokenMetadataBatch - fetch token metadata of ERC721 or ERC1155 token from a batch of contracts\nGetContractInfo - fetch contract metadata of an ERC20, ERC721 or ERC1155 contract address\nGetContractInfoBatch - fetch contract metadata of a batch of ERC20, ERC721 or ERC1155 contract addresses\n","title":"Metadata RPC Methods","titles":["Metadata REST API Reference & Usage"]},"61":{"href":"/api/metadata/token-metadata#token-metadata","html":"\n

Sequence provides a metadata service for fetching token metadata for any ERC721 or ERC1155 contract, on any EVM chain.

\n\n\n","isPage":true,"text":"\nSequence provides a metadata service for fetching token metadata for any ERC721 or ERC1155 contract, on any EVM chain.\n\nLearn how to query token metadata directly for any contract\nLearn about token metadata standards and formats for ERC721 and ERC1155 tokens\n\nPRO TIP: Sequence Indexer also supports token metadataWhen using the Sequence Indexer, pass "includeMetadata": true to your request to\nquery token metadata for any ERC721 or ERC1155 contract. See below how to fetch\ntoken metadata directly.\n","title":"Token Metadata","titles":[]},"62":{"href":"/api/metadata/token-metadata#fetch-token-metadata-for-any-erc721-or-erc1155-contract","html":"\n

Sequence Metadata GetTokenMetadata Method:

\n\n
\nExample: GetTokenMetadata of some tokens using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetTokenMetadata -d '{"chainID":"polygon", "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "tokenIDs": ["65537", "65538", "65539"] }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst tokenMetadata = await metadataClient.getTokenMetadata({\n  chainID: 'polygon',\n  contractAddress: '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n  tokenIDs: ['65537', '65538', '65539']\n})\n \nconsole.log('token metadata: ', tokenMetadata)
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncollectibleInfo, err := seqMetadata.GetTokenMetadata(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", []string{"1", "2"})
TODO
TODO
Please [contact our team](/support) for assistance with integrations to another target.
\n","isPage":false,"text":"\nSequence Metadata GetTokenMetadata Method:\n\nRequest: POST /rpc/Metadata/GetTokenMetadata\nContent-Type: application/json\nBody (in JSON):\n\nchainID (string) -- the chain id, as a name or number (ie. "1" or "mainnet", "137" or "polygon", etc.)\ncontractAddress (string) -- the contract address\ntokenIDs (array of strings) -- array of strings containing token ids to fetch metadata\n\n\n\n\nExample: GetTokenMetadata of some tokens using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\nThis code requires an API Access Key from Sequence Builder.\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetTokenMetadata -d '{"chainID":"polygon", "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "tokenIDs": ["65537", "65538", "65539"] }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst tokenMetadata = await metadataClient.getTokenMetadata({\n chainID: 'polygon',\n contractAddress: '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n tokenIDs: ['65537', '65538', '65539']\n})\n \nconsole.log('token metadata: ', tokenMetadata)import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncollectibleInfo, err := seqMetadata.GetTokenMetadata(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", []string{"1", "2"})TODOTODOPlease [contact our team](/support) for assistance with integrations to another target.\n","title":"Fetch token metadata for any ERC721 or ERC1155 contract","titles":["Token Metadata"]},"63":{"href":"/api/metadata/token-metadata#refreshing-token-metadata","html":"\n

When deploying new contracts or metadata updates the refresh token metadata url should be called with an access key from (the Sequence Builder) via a HTTPS POST request by command line or via metadata SDK in a program for data to indexeable in the Sequence Indexer metadata service.

\n

Sequence Metadata enqueueTokensForRefresh Method:

\n\n
curl -v -X POST -H "Content-type: application/json" -H "X-Access-Key: wuELppeX0pttvJABl8bIuxPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/EnqueueTokensForRefresh -d '{"chainID":"polygon", "contractAddress":"0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "tokenIDs": ["1","2"]}'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst jobID = await metadataClient.enqueueTokensForRefresh({\n    chainID: 'polygon',\n    contractAddress: '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n    tokenIDs: ['65537', '65538', '65539']\n})\n \nconsole.log('refresh job id: ', tokenMetadata)
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nrefreshJob, err := seqMetadata.EnqueueTokensForRefresh(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", []string{"1", "2"}, nil)
Please [contact our team](/support) for assistance with integrations to another target.
\n

Sequence Metadata getTokenRefreshStatus Method:

\n\n
curl -v -X POST -H "Content-type: application/json" -H "X-Access-Key: wuELppeX0pttvJABl8bIuxPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetTokenRefreshStatus -d '{"taskId": 1234}'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst refreshJobStatus = await metadataClient.getTokenRefreshStatus({\n    taskId: 1234\n})\n \nconsole.log('refresh job status: ', refreshJobStatus)
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nrefreshJobStatus, err := seqMetadata.GetTokenRefreshStatus(context.Background(), uint64(1234))
Please [contact our team](/support) for assistance with integrations to another target.
\n","isPage":false,"text":"\nWhen deploying new contracts or metadata updates the refresh token metadata url should be called with an access key from (the Sequence Builder) via a HTTPS POST request by command line or via metadata SDK in a program for data to indexeable in the Sequence Indexer metadata service.\nSequence Metadata enqueueTokensForRefresh Method:\n\nRequest: POST /rpc/Metadata/EnqueueTokensForRefresh\nContent-Type: application/json\nBody (in JSON):\n\nchainID (string) -- the chain id, as a name or number (ie. "1" or "mainnet", "137" or "polygon", etc.)\ncontractAddress (string) -- the contract address\ntokenIDs (array of strings) -- array of strings containing token ids to fetch metadata\n\n\n\ncurl -v -X POST -H "Content-type: application/json" -H "X-Access-Key: wuELppeX0pttvJABl8bIuxPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/EnqueueTokensForRefresh -d '{"chainID":"polygon", "contractAddress":"0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "tokenIDs": ["1","2"]}'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst jobID = await metadataClient.enqueueTokensForRefresh({\n chainID: 'polygon',\n contractAddress: '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n tokenIDs: ['65537', '65538', '65539']\n})\n \nconsole.log('refresh job id: ', tokenMetadata)import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nrefreshJob, err := seqMetadata.EnqueueTokensForRefresh(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", []string{"1", "2"}, nil)Please [contact our team](/support) for assistance with integrations to another target.\nSequence Metadata getTokenRefreshStatus Method:\n\nRequest: POST /rpc/Metadata/GetTokenRefreshStatus\nContent-Type: application/json\nBody (in JSON):\n\ntaskId (uint) -- the task id returned from enqueueTokensForRefresh\n\n\n\ncurl -v -X POST -H "Content-type: application/json" -H "X-Access-Key: wuELppeX0pttvJABl8bIuxPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetTokenRefreshStatus -d '{"taskId": 1234}'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst refreshJobStatus = await metadataClient.getTokenRefreshStatus({\n taskId: 1234\n})\n \nconsole.log('refresh job status: ', refreshJobStatus)import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nrefreshJobStatus, err := seqMetadata.GetTokenRefreshStatus(context.Background(), uint64(1234))Please [contact our team](/support) for assistance with integrations to another target.\n","title":"Refreshing token metadata","titles":["Token Metadata"]},"64":{"href":"/api/metadata/token-metadata#testing-instructions","html":"\n
    \n
  1. Check current token metadata using token metadata fetch
  2. \n
  3. Modify token metadata content either onchain or via token baseURI
  4. \n
  5. Call refresh token ID endpoints using refresh metadata
  6. \n
  7. Check token metadata changes using token metadata fetch
  8. \n
\n","isPage":false,"text":"\n\nCheck current token metadata using token metadata fetch\nModify token metadata content either onchain or via token baseURI\nCall refresh token ID endpoints using refresh metadata\nCheck token metadata changes using token metadata fetch\n\n","title":"Testing instructions:","titles":["Token Metadata","Refreshing token metadata"]},"65":{"href":"/api/metadata/token-metadata#token-metadata-standards","html":"\n

Popular token standards like EIP721 and EIP1155 both\nhave similar metadata standard formats with some subtle differences. In addition to the standards, we've seen in practice that projects\noften slightly deviate from the standards but are sensical, easy to parse and well supported in the ecosystem, include the Sequence Metadata service.\nBelow we describe the standards and common practices across projects to help demystify how to format your token metadata for your projects.

\n","isPage":false,"text":"\nPopular token standards like EIP721 and EIP1155 both\nhave similar metadata standard formats with some subtle differences. In addition to the standards, we've seen in practice that projects\noften slightly deviate from the standards but are sensical, easy to parse and well supported in the ecosystem, include the Sequence Metadata service.\nBelow we describe the standards and common practices across projects to help demystify how to format your token metadata for your projects.\n","title":"Token Metadata Standards","titles":["Token Metadata"]},"66":{"href":"/api/metadata/token-metadata#metadata-standards","html":"\n","isPage":false,"text":"\n","title":"Metadata Standards","titles":["Token Metadata"]},"67":{"href":"/api/metadata/token-metadata#erc721","html":"\n

ERC721 token contracts contain a method on the contract called tokenURI(uint256) string. When querying the tokenURI method on the contract, it will return a URI which contains additional metadata for that asset.

\n

See EIP for specific details: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md

\n

Here is an example Bored Ape (token id 9):\nhttps://metadata.sequence.app/tokens/mainnet/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/9

\n

response:

\n
{\n  "tokenId": "9",\n  "contractAddress": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",\n  "name": "",\n  "description": "",\n  "image": "https://ipfs.sequence.info/ipfs/QmUQgKka8EW7exiUHnMwZ4UoXA11wV7NFjHAogVAbasSYy",\n  "decimals": 0,\n  "properties": null,\n  "attributes": [\n    {\n      "trait_type": "Earring",\n      "value": "Silver Stud"\n    },\n    {\n      "trait_type": "Eyes",\n      "value": "Sleepy"\n    },\n    {\n      "trait_type": "Mouth",\n      "value": "Small Grin"\n    },\n    {\n      "trait_type": "Fur",\n      "value": "Brown"\n    },\n    {\n      "trait_type": "Hat",\n      "value": "Seaman's Hat"\n    },\n    {\n      "trait_type": "Clothes",\n      "value": "Stunt Jacket"\n    },\n    {\n      "trait_type": "Background",\n      "value": "Purple"\n    }\n  ]\n}
\n

In the case of this Bored Ape, it appears there is no name or description set,\nbut they do have "attributes" as an array of { "trait_type": string, "value: string }.

\n

Additionally, see OpenSea for more information: https://docs.opensea.io/docs/metadata-standards

\n

Note that OpenSea technically breaks the ERC1155 standard by suggesting to use "attributes", where in fact,\nthe ERC1155 calls uses the field name "properties" instead of "attributes", see\nhttps://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema (read section below).\nHowever this is completely okay and mixed use of properties / attributes is compatible in practice.\nOn Sequence Metadata, we support both structures for token contracts which use either format for their properties/attributes.

\n

Another example is from Neon District: https://metadata.sequence.app/tokens/polygon/0x7227e371540CF7b8e512544Ba6871472031F3335/158456331411102687640546264635

\n","isPage":false,"text":"\nERC721 token contracts contain a method on the contract called tokenURI(uint256) string. When querying the tokenURI method on the contract, it will return a URI which contains additional metadata for that asset.\nSee EIP for specific details: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md\nHere is an example Bored Ape (token id 9):\nhttps://metadata.sequence.app/tokens/mainnet/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/9\nresponse:\n{\n "tokenId": "9",\n "contractAddress": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",\n "name": "",\n "description": "",\n "image": "https://ipfs.sequence.info/ipfs/QmUQgKka8EW7exiUHnMwZ4UoXA11wV7NFjHAogVAbasSYy",\n "decimals": 0,\n "properties": null,\n "attributes": [\n {\n "trait_type": "Earring",\n "value": "Silver Stud"\n },\n {\n "trait_type": "Eyes",\n "value": "Sleepy"\n },\n {\n "trait_type": "Mouth",\n "value": "Small Grin"\n },\n {\n "trait_type": "Fur",\n "value": "Brown"\n },\n {\n "trait_type": "Hat",\n "value": "Seaman's Hat"\n },\n {\n "trait_type": "Clothes",\n "value": "Stunt Jacket"\n },\n {\n "trait_type": "Background",\n "value": "Purple"\n }\n ]\n}\nIn the case of this Bored Ape, it appears there is no name or description set,\nbut they do have "attributes" as an array of { "trait_type": string, "value: string }.\nAdditionally, see OpenSea for more information: https://docs.opensea.io/docs/metadata-standards\nNote that OpenSea technically breaks the ERC1155 standard by suggesting to use "attributes", where in fact,\nthe ERC1155 calls uses the field name "properties" instead of "attributes", see\nhttps://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema (read section below).\nHowever this is completely okay and mixed use of properties / attributes is compatible in practice.\nOn Sequence Metadata, we support both structures for token contracts which use either format for their properties/attributes.\nAnother example is from Neon District: https://metadata.sequence.app/tokens/polygon/0x7227e371540CF7b8e512544Ba6871472031F3335/158456331411102687640546264635\n","title":"ERC721","titles":["Token Metadata","Metadata Standards"]},"68":{"href":"/api/metadata/token-metadata#erc1155","html":"\n

ERC1155 token contracts contain a method on the contract called uri(uint256) string. When querying the uri method on the\ncontract, it will return a URI which contains additional metadata for that asset.

\n

See EIP for specific details: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema

\n

Here is an example Skyweaver card (token id 65548):\nhttps://metadata.sequence.app/tokens/polygon/0x27A11C1563a5dDa238379B95c91B3AbBaD9C0cf6/65548

\n
{\n  "tokenId": "65548",\n  "contractAddress": "0x27a11c1563a5dda238379b95c91b3abbad9c0cf6",\n  "name": "Weighted Die (Silver)",\n  "description": "Give +1/+1, armor, and guard to a random ally unit, six times.\\n\\n\\"I will not bow to fate. If the dice fall against me, I'll cut off the hand that cast them.\\"\\n -Horik",\n  "image": "https://assets.skyweaver.net/LV7xNcQh/webapp/cards/full-cards/6x/12-silver.png",\n  "decimals": 2,\n  "properties": {\n    "artists": {\n      "name": "Artist",\n      "value": [\n        {\n          "id": "xavi",\n          "name": "Henrique Xavier",\n          "url": "https://www.artstation.com/kitexavier"\n        }\n      ]\n    },\n    "baseCardId": 12,\n    "cardType": "Spell",\n    "element": "Metal",\n    "mana": 8,\n    "prism": "Strength",\n    "type": "Silver"\n  },\n  "attributes": null\n}
\n

As you can see, Skyweaver an ERC1155 token's metadata uses the properties object, which is an object/dictionary type of arbitrary data.

\n","isPage":false,"text":"\nERC1155 token contracts contain a method on the contract called uri(uint256) string. When querying the uri method on the\ncontract, it will return a URI which contains additional metadata for that asset.\nSee EIP for specific details: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema\nHere is an example Skyweaver card (token id 65548):\nhttps://metadata.sequence.app/tokens/polygon/0x27A11C1563a5dDa238379B95c91B3AbBaD9C0cf6/65548\n{\n "tokenId": "65548",\n "contractAddress": "0x27a11c1563a5dda238379b95c91b3abbad9c0cf6",\n "name": "Weighted Die (Silver)",\n "description": "Give +1/+1, armor, and guard to a random ally unit, six times.\\n\\n\\"I will not bow to fate. If the dice fall against me, I'll cut off the hand that cast them.\\"\\n -Horik",\n "image": "https://assets.skyweaver.net/LV7xNcQh/webapp/cards/full-cards/6x/12-silver.png",\n "decimals": 2,\n "properties": {\n "artists": {\n "name": "Artist",\n "value": [\n {\n "id": "xavi",\n "name": "Henrique Xavier",\n "url": "https://www.artstation.com/kitexavier"\n }\n ]\n },\n "baseCardId": 12,\n "cardType": "Spell",\n "element": "Metal",\n "mana": 8,\n "prism": "Strength",\n "type": "Silver"\n },\n "attributes": null\n}\nAs you can see, Skyweaver an ERC1155 token's metadata uses the properties object, which is an object/dictionary type of arbitrary data.\n","title":"ERC1155","titles":["Token Metadata","Metadata Standards"]},"69":{"href":"/api/metadata/token-metadata#attributes-vs-properties","html":"\n

As you can see, the standard format of token metadata contains both attributes and properties. The attributes field is an array of\nobjects. The properties field is an object/dictionary of arbitrary data. In technical terms, the attributes type is defined as\n[]map<string,any> and the properties type is defined as map<string,any>.

\n

In practice, we've seen that many projects use both attributes and properties to store the same data, and in some cases, they use\nattributes to store data that should be in properties and vice versa. Sometimes project use both fields, and this is completely fine\nin practice, as marketplaces and services will parse both areas.

\n

Finally, if you are looking to extend the metadata format to suit your project, we recommend to utilize either or both the attributes\nand properties fields for either ERC721 or ERC1155.

\n","isPage":false,"text":"\nAs you can see, the standard format of token metadata contains both attributes and properties. The attributes field is an array of\nobjects. The properties field is an object/dictionary of arbitrary data. In technical terms, the attributes type is defined as\n[]map<string,any> and the properties type is defined as map<string,any>.\nIn practice, we've seen that many projects use both attributes and properties to store the same data, and in some cases, they use\nattributes to store data that should be in properties and vice versa. Sometimes project use both fields, and this is completely fine\nin practice, as marketplaces and services will parse both areas.\nFinally, if you are looking to extend the metadata format to suit your project, we recommend to utilize either or both the attributes\nand properties fields for either ERC721 or ERC1155.\n","title":"Attributes vs Properties","titles":["Token Metadata","Metadata Standards"]},"70":{"href":"/api/metadata/token-metadata#erc20","html":"\n

Finally, a note on ERC20 tokens. ERC20 tokens are just a single token, so they themselves do not have a token ID, but\nare represented entirely by their contract address. We can infer some information about the token by querying the contract\nmethods such as name and decimals. Additionally, ERC20 tokens can take advantage of the contractURI extension used\nby OpenSea and described in more detail in our Contract metadata section.

","isPage":false,"text":"\nFinally, a note on ERC20 tokens. ERC20 tokens are just a single token, so they themselves do not have a token ID, but\nare represented entirely by their contract address. We can infer some information about the token by querying the contract\nmethods such as name and decimals. Additionally, ERC20 tokens can take advantage of the contractURI extension used\nby OpenSea and described in more detail in our Contract metadata section.","title":"ERC20","titles":["Token Metadata","Metadata Standards"]},"71":{"href":"/guides/templates/02-building-relaying-server#building-a-relaying-server","html":"\n

With Sequence, you can create a smart contract wallet your server can use to dispatch transactions for your users\nwithout you having to be worried about transaction speed, throughput and re-orgs.

\n

:::info Sequentual Transactions\nBy default, Sequence transactions will be executed sequentially.\n:::

\n","isPage":true,"text":"\nWith Sequence, you can create a smart contract wallet your server can use to dispatch transactions for your users\nwithout you having to be worried about transaction speed, throughput and re-orgs.\n:::info Sequentual Transactions\nBy default, Sequence transactions will be executed sequentially.\n:::\n","title":"Building a Relaying Server","titles":[]},"72":{"href":"/guides/templates/02-building-relaying-server#nodejs-server","html":"\n

Your server will need an EOA wallet that will be able to sign messages. It will be the owner of your server-side Sequence\nwallet which will be used to dispatch transactions.

\n

This Sequence wallet should have the correct ownership at your contract level, not the EOA.\nAlso, the Sequence wallet should be sufficiently funded in order to pay fees needed by the relayer to dispatch your transactions.

\n

Using this approach - versus the next section (with sponsoring) - includes the ability to pay for gas in any available currency by our relayer (e.g. 'MATIC', 'DAI', 'USDC', 'WETH').

\n
import { Session } from "@0xsequence/auth";\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider);\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n  signer: walletEOA,\n  projectAccessKey: "<access_key>",\n});\n \n// Get the Sequence wallet address\nconsole.log(session.account.address);\n \n// Get a signer for a specific network\n// - 1:     Ethereum Mainnet\n// - 137:   Polygon Mainnet\n// - 42161: Arbitrum One\n// See https://chainid.network/ for more\nconst signer = session.account.getSigner(137);\n \n// Craft your transaction\nconst erc721Interface = new ethers.utils.Interface([\n  "function safeTransferFrom(address _from, address _to, uint256 _tokenId)",\n]);\n \nconst data = erc721Interface.encodeFunctionData("safeTransferFrom", [\n  senderAddress,\n  recipientAddress,\n  id,\n]);\n \nconst txn = {\n  to: erc721TokenAddress,\n  data,\n};\n \n// Send the transaction\nconst txnResponse = await signer.sendTransaction(txn);\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n  console.log(`Unexpected status: ${txnReceipt.status}`);\n}
\n

You can also enforce a specific way to pay for gas fees, or the openning of a specific Sequence wallet.

\n
import { Session } from '@0xsequence/auth'\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider)\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n  signer: walletEOA,\n  projectAccessKey: '<access_key>'\n  // OPTIONAL: Multiple wallets could be found for the same EOA\n  // to enforce a specific wallet you can use the following callback\n  selectWallet: async (wallets: string[]) => {\n    const found = wallets.find(w => w === EXPECTED_WALLET_ADDRESS)\n    if (!found) throw Error('wallet not found')\n    // Returning the wallet address will make the session use it\n    // returning undefined will make the session create a new wallet\n    return found\n  }\n})\n \nconst signer = session.account.getSigner(137, {\n  // OPTIONAL: You can also enforce a specific way to pay for gas fees\n  // if not provided the sdk will select one for you\n  selectFee: async (\n    _txs: any,\n    options: FeeOption[]\n  ) => {\n    // Find the option to pay with native tokens\n    const found = options.find(o => !o.token.contractAddress)\n    if (!found) throw Error('fee option not found')\n    return found\n  }\n})\n \n// Initialize the contract\nconst usdc = new ethers.Contract(\n  '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', // USDC on Polygon\n  ERC_20_ABI,\n  signer\n)\n \n// Send the transaction\nconst txnResponse = await usdc.transfer(recipient, 1)\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n  console.log(`Unexpected status: ${txnReceipt.status}`)\n}
\n

:::caution Triggers migration

\n

Openning a session may trigger a migration of your Sequence wallet to a new version, this could be v1 to v2 or v2 to future versions.

\n

Migration is a one-way process, once your wallet is migrated it cannot be reverted to a previous version.

\n

To catch any unwanted migration, you can use the onMigration callback.\n:::

\n","isPage":false,"text":"\nYour server will need an EOA wallet that will be able to sign messages. It will be the owner of your server-side Sequence\nwallet which will be used to dispatch transactions.\nThis Sequence wallet should have the correct ownership at your contract level, not the EOA.\nAlso, the Sequence wallet should be sufficiently funded in order to pay fees needed by the relayer to dispatch your transactions.\nUsing this approach - versus the next section (with sponsoring) - includes the ability to pay for gas in any available currency by our relayer (e.g. 'MATIC', 'DAI', 'USDC', 'WETH').\nimport { Session } from "@0xsequence/auth";\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider);\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n signer: walletEOA,\n projectAccessKey: "<access_key>",\n});\n \n// Get the Sequence wallet address\nconsole.log(session.account.address);\n \n// Get a signer for a specific network\n// - 1: Ethereum Mainnet\n// - 137: Polygon Mainnet\n// - 42161: Arbitrum One\n// See https://chainid.network/ for more\nconst signer = session.account.getSigner(137);\n \n// Craft your transaction\nconst erc721Interface = new ethers.utils.Interface([\n "function safeTransferFrom(address _from, address _to, uint256 _tokenId)",\n]);\n \nconst data = erc721Interface.encodeFunctionData("safeTransferFrom", [\n senderAddress,\n recipientAddress,\n id,\n]);\n \nconst txn = {\n to: erc721TokenAddress,\n data,\n};\n \n// Send the transaction\nconst txnResponse = await signer.sendTransaction(txn);\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n console.log(`Unexpected status: ${txnReceipt.status}`);\n}\nYou can also enforce a specific way to pay for gas fees, or the openning of a specific Sequence wallet.\nimport { Session } from '@0xsequence/auth'\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider)\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n signer: walletEOA,\n projectAccessKey: '<access_key>'\n // OPTIONAL: Multiple wallets could be found for the same EOA\n // to enforce a specific wallet you can use the following callback\n selectWallet: async (wallets: string[]) => {\n const found = wallets.find(w => w === EXPECTED_WALLET_ADDRESS)\n if (!found) throw Error('wallet not found')\n // Returning the wallet address will make the session use it\n // returning undefined will make the session create a new wallet\n return found\n }\n})\n \nconst signer = session.account.getSigner(137, {\n // OPTIONAL: You can also enforce a specific way to pay for gas fees\n // if not provided the sdk will select one for you\n selectFee: async (\n _txs: any,\n options: FeeOption[]\n ) => {\n // Find the option to pay with native tokens\n const found = options.find(o => !o.token.contractAddress)\n if (!found) throw Error('fee option not found')\n return found\n }\n})\n \n// Initialize the contract\nconst usdc = new ethers.Contract(\n '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', // USDC on Polygon\n ERC_20_ABI,\n signer\n)\n \n// Send the transaction\nconst txnResponse = await usdc.transfer(recipient, 1)\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n console.log(`Unexpected status: ${txnReceipt.status}`)\n}\n:::caution Triggers migration\nOpenning a session may trigger a migration of your Sequence wallet to a new version, this could be v1 to v2 or v2 to future versions.\nMigration is a one-way process, once your wallet is migrated it cannot be reverted to a previous version.\nTo catch any unwanted migration, you can use the onMigration callback.\n:::\n","title":"Nodejs Server","titles":["Building a Relaying Server"]},"73":{"href":"/guides/templates/02-building-relaying-server#nodejs-server-with-gas-sponsoring-using-sequence-builder","html":"\n

If you want to have your transactions sponsored & paid for with a credit card, you can follow the below steps before beginning your code, at the following link: https://sequence.build/

\n

By sponsoring your transaction, you can now just send the transaction without a fee object and not have to fund the smart contract wallet before relaying any transactions.

\n

:::info Already Deployed Contract\nFor this example, we assume you have a smart contract deployed with a contract address to include in the last step.\n:::

\n","isPage":false,"text":"\nIf you want to have your transactions sponsored & paid for with a credit card, you can follow the below steps before beginning your code, at the following link: https://sequence.build/\nBy sponsoring your transaction, you can now just send the transaction without a fee object and not have to fund the smart contract wallet before relaying any transactions.\n:::info Already Deployed Contract\nFor this example, we assume you have a smart contract deployed with a contract address to include in the last step.\n:::\n","title":"Nodejs Server with Gas Sponsoring using Sequence Builder","titles":["Building a Relaying Server"]},"74":{"href":"/guides/templates/02-building-relaying-server#a-create-dapp","html":"\n

\"Sequence

\n","isPage":false,"text":"\n\n","title":"A. Create Dapp","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"75":{"href":"/guides/templates/02-building-relaying-server#b-new-dapp","html":"\n

\"Sequence

\n","isPage":false,"text":"\n\n","title":"B. New Dapp","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"76":{"href":"/guides/templates/02-building-relaying-server#c1-gas-tank","html":"\n

\"Sequence

\n","isPage":false,"text":"\n\n","title":"C.1 Gas Tank","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"77":{"href":"/guides/templates/02-building-relaying-server#c2-add-gas","html":"\n

\"Sequence

\n","isPage":false,"text":"\n\n","title":"C.2 Add Gas","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"78":{"href":"/guides/templates/02-building-relaying-server#c3-add-sponsored-address","html":"\n

\"Sequence

\n

The following is example code that implements a relayed transaction, same as the above example (i.e. Nodejs Server) but without fees, taken care of by the Sequence Builder.

\n
import { Session } from "@0xsequence/auth";\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider);\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n  signer: walletEOA,\n  projectAccessKey: "<access_key>",\n});\n \n// Get the Sequence wallet address\nconsole.log(session.account.address);\n \n// Get a signer for a specific network\n// - 1:     Ethereum Mainnet\n// - 137:   Polygon Mainnet\n// - 42161: Arbitrum One\n// See https://chainid.network/ for more\nconst signer = session.account.getSigner(137, {\n  // OPTIONAL: This ensures that the transaction is paid for by the gas tank\n  // but if not provided, the gas tank will be used anyway\n  selectFee: async (_txs: any, _options: FeeOption[]) => {\n    return undefined;\n  },\n});\n \n// Craft your transaction\nconst erc721Interface = new ethers.utils.Interface([\n  "function safeTransferFrom(address _from, address _to, uint256 _tokenId)",\n]);\n \nconst data = erc721Interface.encodeFunctionData("safeTransferFrom", [\n  senderAddress,\n  recipientAddress,\n  id,\n]);\n \nconst txn = {\n  to: erc721TokenAddress,\n  data,\n};\n \n// Send the transaction\nconst txnResponse = await signer.sendTransaction(txn);\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n  console.log(`Unexpected status: ${txnReceipt.status}`);\n}
\n","isPage":false,"text":"\n\nThe following is example code that implements a relayed transaction, same as the above example (i.e. Nodejs Server) but without fees, taken care of by the Sequence Builder.\nimport { Session } from "@0xsequence/auth";\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider);\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n signer: walletEOA,\n projectAccessKey: "<access_key>",\n});\n \n// Get the Sequence wallet address\nconsole.log(session.account.address);\n \n// Get a signer for a specific network\n// - 1: Ethereum Mainnet\n// - 137: Polygon Mainnet\n// - 42161: Arbitrum One\n// See https://chainid.network/ for more\nconst signer = session.account.getSigner(137, {\n // OPTIONAL: This ensures that the transaction is paid for by the gas tank\n // but if not provided, the gas tank will be used anyway\n selectFee: async (_txs: any, _options: FeeOption[]) => {\n return undefined;\n },\n});\n \n// Craft your transaction\nconst erc721Interface = new ethers.utils.Interface([\n "function safeTransferFrom(address _from, address _to, uint256 _tokenId)",\n]);\n \nconst data = erc721Interface.encodeFunctionData("safeTransferFrom", [\n senderAddress,\n recipientAddress,\n id,\n]);\n \nconst txn = {\n to: erc721TokenAddress,\n data,\n};\n \n// Send the transaction\nconst txnResponse = await signer.sendTransaction(txn);\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n console.log(`Unexpected status: ${txnReceipt.status}`);\n}\n","title":"C.3 Add Sponsored Address","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"79":{"href":"/guides/templates/02-building-relaying-server#parallel-transactions","html":"\n

If you want to send multiple independent transactions without needing to batch them, you can also send them in distinct nonce spaces.\nUsing distinct nonce spaces for your transactions signals to the relayer that there's no dependency between them and that\nthey can be executed on-chain in any order.

\n

This allows the transactions to be dispatched immediately in an unbuffered way without having to wait for a full batch.\nHere is an example of how to do that:

\n
// Generate random nonce spaces with ~0% probability of collision\nconst randomNonceSpace1 = ethers.BigNumber.from(\n  ethers.utils.hexlify(ethers.utils.randomBytes(20))\n);\nconst randomNonceSpace2 = ethers.BigNumber.from(\n  ethers.utils.hexlify(ethers.utils.randomBytes(20))\n);\n \n// Create signers for each nonce space\nconst signer1 = session.account.getSigner(137, {\n  nonceSpace: randomNonceSpace1,\n});\n \nconst signer2 = session.account.getSigner(137, {\n  nonceSpace: randomNonceSpace2,\n});\n \n// Generate transactions\nconst txn1 = {\n  to: tokenContract.address,\n  data: erc20Interface.encodeFunctionData("transfer", [recipient1, amount1]),\n};\n \nconst txn2 = {\n  to: tokenContract.address,\n  data: erc20Interface.encodeFunctionData("transfer", [recipient2, amount2]),\n};\n \n// Dispatch transactions, which can now be executed in parallel\nawait Promise.all([\n  signer1.sendTransaction(txn1),\n  signer2.sendTransaction(txn2),\n]);
\n

If batching transactions is not a problem for your use-case, you can call await wallet.sendTransaction(txns).\nYou can read more about batch transactions in Sending Batched Transactions.

","isPage":false,"text":"\nIf you want to send multiple independent transactions without needing to batch them, you can also send them in distinct nonce spaces.\nUsing distinct nonce spaces for your transactions signals to the relayer that there's no dependency between them and that\nthey can be executed on-chain in any order.\nThis allows the transactions to be dispatched immediately in an unbuffered way without having to wait for a full batch.\nHere is an example of how to do that:\n// Generate random nonce spaces with ~0% probability of collision\nconst randomNonceSpace1 = ethers.BigNumber.from(\n ethers.utils.hexlify(ethers.utils.randomBytes(20))\n);\nconst randomNonceSpace2 = ethers.BigNumber.from(\n ethers.utils.hexlify(ethers.utils.randomBytes(20))\n);\n \n// Create signers for each nonce space\nconst signer1 = session.account.getSigner(137, {\n nonceSpace: randomNonceSpace1,\n});\n \nconst signer2 = session.account.getSigner(137, {\n nonceSpace: randomNonceSpace2,\n});\n \n// Generate transactions\nconst txn1 = {\n to: tokenContract.address,\n data: erc20Interface.encodeFunctionData("transfer", [recipient1, amount1]),\n};\n \nconst txn2 = {\n to: tokenContract.address,\n data: erc20Interface.encodeFunctionData("transfer", [recipient2, amount2]),\n};\n \n// Dispatch transactions, which can now be executed in parallel\nawait Promise.all([\n signer1.sendTransaction(txn1),\n signer2.sendTransaction(txn2),\n]);\nIf batching transactions is not a problem for your use-case, you can call await wallet.sendTransaction(txns).\nYou can read more about batch transactions in Sending Batched Transactions.","title":"Parallel Transactions","titles":["Building a Relaying Server"]},"80":{"href":"/guides/templates/03-mint-collectibles-serverless#mint-collectibles-using-a-gasless-serverless-relayer","html":"\n

Time to complete: 20-30 minutes

\n

The Sequence Relayer can be implemented on a serverless Cloudflare worker so a game or app user interaction is seamless without a confirmation signature or gas payment. You'll also benefit from not having to be worried about transaction speed, throughput and re-orgs by the relayer, and experience automatic scaling with Cloudflare.

\n

The following steps will guide you through how to build your hosted minter API in 4 steps:

\n
    \n
  1. Setup Cloudflare environment with wrangler cli and deploy a test
  2. \n
  3. Deploy, sponsor and update Metadata for an ERC1155 contract with Builder
  4. \n
  5. Use EthAuthProof to prevent EOA DDoS
  6. \n
  7. Mint a collectible to wallet
  8. \n
\n

The result, a secure API with the following specs:

\n\n

:::info Difficulty\nYou need basic knowledge of wrangler cli, npm, and Sequence Builder in order to complete this implementation.\n:::

\n","isPage":true,"text":"\nTime to complete: 20-30 minutes\nThe Sequence Relayer can be implemented on a serverless Cloudflare worker so a game or app user interaction is seamless without a confirmation signature or gas payment. You'll also benefit from not having to be worried about transaction speed, throughput and re-orgs by the relayer, and experience automatic scaling with Cloudflare.\nThe following steps will guide you through how to build your hosted minter API in 4 steps:\n\nSetup Cloudflare environment with wrangler cli and deploy a test\nDeploy, sponsor and update Metadata for an ERC1155 contract with Builder\nUse EthAuthProof to prevent EOA DDoS\nMint a collectible to wallet\n\nThe result, a secure API with the following specs:\n\nHTTPS GET: returns blockNumber\nHTTPS POST(proof, address): mints a collectible & returns transaction hash\n\n:::info Difficulty\nYou need basic knowledge of wrangler cli, npm, and Sequence Builder in order to complete this implementation.\n:::\n","title":"Mint Collectibles Using a Gasless Serverless Relayer","titles":[]},"81":{"href":"/guides/templates/03-mint-collectibles-serverless#1-setup-cloudflare-environment-with-wrangler-cli-and-deploy-a-test","html":"\n

In order to create the project from scratch, first create a project with mkdir, cd into the project, and run pnpm init to create a package.json.

\n

Next, make sure wrangler cli is installed in your project and set the wrangler keyword as an alias in your local bash session.

\n
pnpm install wrangler --save-dev\nalias wrangler='./node_modules/.bin/wrangler'
\n

Create an account on the Cloudflare site and perform a login step to login to your Cloudflare dashboard to connect the Cloudflare platform to your local development environment.

\n
wrangler login
\n

Once logged in, initialize the project in the directory by accepting one of the randomly generated project folder names provided that you like, and follow the prompts to initialize your git tracked typescript "Hello World" Worker application.

\n
wrangler init
\n

To complete this step, you should press enter 4 times after wrangler init with the last step answered as No to decline deployment.

\n

This will clone down a starter repository that can be used to deploy code to the cloud.

\n

:::info Local API Testing\nAt any point in the guide, you can use the wrangler dev command in the project folder for local testing\n:::

\n","isPage":false,"text":"\nIn order to create the project from scratch, first create a project with mkdir, cd into the project, and run pnpm init to create a package.json.\nNext, make sure wrangler cli is installed in your project and set the wrangler keyword as an alias in your local bash session.\npnpm install wrangler --save-dev\nalias wrangler='./node_modules/.bin/wrangler'\nCreate an account on the Cloudflare site and perform a login step to login to your Cloudflare dashboard to connect the Cloudflare platform to your local development environment.\nwrangler login\nOnce logged in, initialize the project in the directory by accepting one of the randomly generated project folder names provided that you like, and follow the prompts to initialize your git tracked typescript "Hello World" Worker application.\nwrangler init\nTo complete this step, you should press enter 4 times after wrangler init with the last step answered as No to decline deployment.\nThis will clone down a starter repository that can be used to deploy code to the cloud.\n:::info Local API Testing\nAt any point in the guide, you can use the wrangler dev command in the project folder for local testing\n:::\n","title":"1. Setup Cloudflare environment with wrangler cli and deploy a test","titles":["Mint Collectibles Using a Gasless Serverless Relayer"]},"82":{"href":"/guides/templates/03-mint-collectibles-serverless#deploy-test","html":"\n

Finally, cd into the randomly generated project folder, and perform a wrangler deploy command.

\n

This should print a URL, which you can enter in the browser the URL https://<app>.<account>.workers.dev to view the Hello World! result.

\n","isPage":false,"text":"\nFinally, cd into the randomly generated project folder, and perform a wrangler deploy command.\nThis should print a URL, which you can enter in the browser the URL https://<app>.<account>.workers.dev to view the Hello World! result.\n","title":"Deploy Test","titles":["Mint Collectibles Using a Gasless Serverless Relayer","1. Setup Cloudflare environment with wrangler cli and deploy a test",null]},"83":{"href":"/guides/templates/03-mint-collectibles-serverless#2-deploy-sponsor-and-update-metadata-for-an-erc1155-contract-with-builder","html":"\n

First, follow this guide to deploy a contract.

\n

Then, one must update the role access of the contract in the Builder to only receive requests from the minter wallet address, which can be done in 2 steps.

\n

You can do this in Sequence Builder by providing minter permission to your Sequence Wallet Relayer Address.

\n

In order to know what the relayer address you are working with is, one must first either:

\n
    \n
  1. Have one generated for you using this dapp by selecting your network, and generating a wallet keypair with the generate local wallet button
  2. \n
  3. Or, you can print locally the account address produced from an EOA wallet private key using the following code snippet:
  4. \n
\n
import { Session } from "@0xsequence/auth";\nimport { ethers } from "ethers";\n \n(async () => {\n  // Generate a new EOA\n  // const wallet = ethers.Wallet.createRandom()\n  // const privateKey = wallet.privateKey\n \n  // Or, use an existing EOA private key\n  const privateKey = "";\n  const provider = new ethers.providers.JsonRpcProvider(\n    "https://nodes.sequence.app/mainnet"\n  );\n \n  // Create your server EOA\n  const walletEOA = new ethers.Wallet(privateKey, provider);\n \n  // Open a Sequence session, this will find or create\n  // a Sequence wallet controlled by your server EOA\n  const session = await Session.singleSigner({\n    signer: walletEOA,\n    projectAccessKey: "access_key",\n  });\n \n  const signer = session.account.getSigner(1);\n  console.log(`Your relayer wallet address: ${signer.account.address}`);\n})();
\n

To do so, open your project, navigate to the Contracts page, select your Linked contracts and under Write Contract tab expand the grantRole method.

\n

Complete with the following details:

\n

bytes32 role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6

\n

address account: <Generated Sequence Relayer Wallet Address>

\n\n

Where the role string inputted is the result of keccak256("MINTER_ROLE") in solidity or ethers.utils.keccak256(ethers.utils.toUtf8Bytes("MINTER_ROLE")) in javascript

\n

This makes it so that only your specific address can mint from the contract, it will error otherwise.

\n

Complete the role update by clicking write and sign the sponsored transaction.

\n","isPage":false,"text":"\nFirst, follow this guide to deploy a contract.\nThen, one must update the role access of the contract in the Builder to only receive requests from the minter wallet address, which can be done in 2 steps.\nYou can do this in Sequence Builder by providing minter permission to your Sequence Wallet Relayer Address.\nIn order to know what the relayer address you are working with is, one must first either:\n\nHave one generated for you using this dapp by selecting your network, and generating a wallet keypair with the generate local wallet button\nOr, you can print locally the account address produced from an EOA wallet private key using the following code snippet:\n\nimport { Session } from "@0xsequence/auth";\nimport { ethers } from "ethers";\n \n(async () => {\n // Generate a new EOA\n // const wallet = ethers.Wallet.createRandom()\n // const privateKey = wallet.privateKey\n \n // Or, use an existing EOA private key\n const privateKey = "";\n const provider = new ethers.providers.JsonRpcProvider(\n "https://nodes.sequence.app/mainnet"\n );\n \n // Create your server EOA\n const walletEOA = new ethers.Wallet(privateKey, provider);\n \n // Open a Sequence session, this will find or create\n // a Sequence wallet controlled by your server EOA\n const session = await Session.singleSigner({\n signer: walletEOA,\n projectAccessKey: "access_key",\n });\n \n const signer = session.account.getSigner(1);\n console.log(`Your relayer wallet address: ${signer.account.address}`);\n})();\nTo do so, open your project, navigate to the Contracts page, select your Linked contracts and under Write Contract tab expand the grantRole method.\nComplete with the following details:\nbytes32 role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6\naddress account: <Generated Sequence Relayer Wallet Address>\n\nWhere the role string inputted is the result of keccak256("MINTER_ROLE") in solidity or ethers.utils.keccak256(ethers.utils.toUtf8Bytes("MINTER_ROLE")) in javascript\nThis makes it so that only your specific address can mint from the contract, it will error otherwise.\nComplete the role update by clicking write and sign the sponsored transaction.\n","title":"2. Deploy, Sponsor and Update Metadata for an ERC1155 Contract with Builder","titles":["Mint Collectibles Using a Gasless Serverless Relayer"]},"84":{"href":"/guides/templates/03-mint-collectibles-serverless#update-metadata","html":"\n

Next, you'll need to update the metadata with your media or assets for your contract, which can be done by following this guide.

\n","isPage":false,"text":"\nNext, you'll need to update the metadata with your media or assets for your contract, which can be done by following this guide.\n","title":"Update metadata","titles":["Mint Collectibles Using a Gasless Serverless Relayer","2. Deploy, Sponsor and Update Metadata for an ERC1155 Contract with Builder",null]},"85":{"href":"/guides/templates/03-mint-collectibles-serverless#contract-sponsoring","html":"\n

Finally, in order to sponsor the contract follow this guide to sponsor a contract.

\n","isPage":false,"text":"\nFinally, in order to sponsor the contract follow this guide to sponsor a contract.\n","title":"Contract sponsoring","titles":["Mint Collectibles Using a Gasless Serverless Relayer","2. Deploy, Sponsor and Update Metadata for an ERC1155 Contract with Builder",null]},"86":{"href":"/guides/templates/03-mint-collectibles-serverless#3-use-ethauthproof-to-prevent-eoa-ddos","html":"\n

Now that we have a contract deployed, we can return to the cloudflare worker directory and project, and install ethers and 0xsequence to get access to sequence APIs in order to perform a proof validation that the request is coming from a trusted source, a sequence wallet.

\n
pnpm install 0xsequence @0xsequence/network
\n

Then, we have to add a type of middleware, after we check if it's a POST or GET request. If it's a POST request, verify that the passed in proofString and address are valid, as well as the environment variables.

\n

The code scaffold placed into src/index.ts would look like this, with callContract and getBlockNumber mocked out, using the mentioned verification step of calling verify before any contract call.

\n
import { sequence } from "0xsequence";\nimport { networks, findSupportedNetwork } from "@0xsequence/network";\n \nexport interface Env {\n  PKEY: string; // Private key for EOA wallet\n  CONTRACT_ADDRESS: string; // Deployed ERC1155 or ERC721 contract address\n  PROJECT_ACCESS_KEY: string; // From sequence.build\n  CHAIN_HANDLE: string; // Standardized chain name – See https://docs.sequence.xyz/multi-chain-support\n}\n \n// use the sequence api to verify proof came from a sequence wallet\nconst verify = async (\n  chainId: string,\n  walletAddress: string,\n  ethAuthProofString: string\n): Promise<Boolean> => {\n  const api = new sequence.api.SequenceAPIClient("https://api.sequence.app");\n  const { isValid } = await api.isValidETHAuthProof({\n    chainId,\n    walletAddress,\n    ethAuthProofString,\n  });\n  return isValid;\n};\n \nasync function handleRequest(\n  request: Request,\n  env: Env,\n  ctx: ExecutionContext\n): Promise<Response> {\n  if (env.PKEY === undefined || env.PKEY === "") {\n    return new Response("Make sure PKEY is configured in your environment", {\n      status: 400,\n    });\n  }\n \n  if (env.CONTRACT_ADDRESS === undefined || env.CONTRACT_ADDRESS === "") {\n    return new Response(\n      "Make sure CONTRACT_ADDRESS is configured in your environment",\n      { status: 400 }\n    );\n  }\n \n  if (env.PROJECT_ACCESS_KEY === undefined || env.PROJECT_ACCESS_KEY === "") {\n    return new Response(\n      "Make sure PROJECT_ACCESS_KEY is configured in your environment",\n      { status: 400 }\n    );\n  }\n \n  if (env.CHAIN_HANDLE === undefined || env.CHAIN_HANDLE === "") {\n    return new Response(\n      "Make sure CHAIN_HANDLE is configured in your environment",\n      { status: 400 }\n    );\n  }\n \n  const chainConfig = findSupportedNetwork(env.CHAIN_HANDLE);\n \n  if (chainConfig === undefined) {\n    return new Response("Unsupported network or unknown CHAIN_HANDLE", {\n      status: 400,\n    });\n  }\n \n  // POST request\n  if (request.method === "POST") {\n    // parse the request body as JSON\n    const body = await request.json();\n    const { proof, address, tokenId }: any = body;\n    try {\n      // check that the proof is valid\n      if (await verify(env.CHAIN_HANDLE, address, proof)) {\n        try {\n          // mocked call\n          const res = await callContract(request, env, address, tokenId);\n          return new Response(`${res.hash}`, { status: 200 });\n        } catch (err: any) {\n          console.log(err);\n          return new Response(`Something went wrong: ${JSON.stringify(err)}`, {\n            status: 400,\n          });\n        }\n      } else {\n        return new Response(`Unauthorized`, { status: 401 });\n      }\n    } catch (err: any) {\n      return new Response(`Unauthorized ${JSON.stringify(err)}`, {\n        status: 401,\n      });\n    }\n  }\n  // GET request\n  else {\n    try {\n      // mocked call\n      const res = await getBlockNumber(env.CHAIN_HANDLE, request);\n      return new Response(`Block Number: ${res}`);\n    } catch (err: any) {\n      return new Response(`Something went wrong: ${JSON.stringify(err)}`, {\n        status: 500,\n      });\n    }\n  }\n}\n \nconst getBlockNumber = async (\n  chainId: string,\n  request: Request\n): Promise<number> => {\n  return chainId;\n};\n \nconst callContract = async (\n  request: Request,\n  env: Env,\n  address: string,\n  tokenId: number\n): Promise<ethers.providers.TransactionResponse> => {\n  return { hash: "0x" } as any;\n};\n \nexport default {\n  async fetch(request: Request, env: Env, ctx: ExecutionContext) {\n    // Process the request and create a response\n    const response = await handleRequest(request, env, ctx);\n \n    // Set CORS headers\n    response.headers.set("Access-Control-Allow-Origin", "*");\n    response.headers.set(\n      "Access-Control-Allow-Methods",\n      "GET, POST, PUT, DELETE, OPTIONS"\n    );\n    response.headers.set("Access-Control-Allow-Headers", "Content-Type");\n \n    // return response\n    return response;\n  },\n};
\n","isPage":false,"text":"\nNow that we have a contract deployed, we can return to the cloudflare worker directory and project, and install ethers and 0xsequence to get access to sequence APIs in order to perform a proof validation that the request is coming from a trusted source, a sequence wallet.\npnpm install 0xsequence @0xsequence/network\nThen, we have to add a type of middleware, after we check if it's a POST or GET request. If it's a POST request, verify that the passed in proofString and address are valid, as well as the environment variables.\nThe code scaffold placed into src/index.ts would look like this, with callContract and getBlockNumber mocked out, using the mentioned verification step of calling verify before any contract call.\nimport { sequence } from "0xsequence";\nimport { networks, findSupportedNetwork } from "@0xsequence/network";\n \nexport interface Env {\n PKEY: string; // Private key for EOA wallet\n CONTRACT_ADDRESS: string; // Deployed ERC1155 or ERC721 contract address\n PROJECT_ACCESS_KEY: string; // From sequence.build\n CHAIN_HANDLE: string; // Standardized chain name – See https://docs.sequence.xyz/multi-chain-support\n}\n \n// use the sequence api to verify proof came from a sequence wallet\nconst verify = async (\n chainId: string,\n walletAddress: string,\n ethAuthProofString: string\n): Promise<Boolean> => {\n const api = new sequence.api.SequenceAPIClient("https://api.sequence.app");\n const { isValid } = await api.isValidETHAuthProof({\n chainId,\n walletAddress,\n ethAuthProofString,\n });\n return isValid;\n};\n \nasync function handleRequest(\n request: Request,\n env: Env,\n ctx: ExecutionContext\n): Promise<Response> {\n if (env.PKEY === undefined || env.PKEY === "") {\n return new Response("Make sure PKEY is configured in your environment", {\n status: 400,\n });\n }\n \n if (env.CONTRACT_ADDRESS === undefined || env.CONTRACT_ADDRESS === "") {\n return new Response(\n "Make sure CONTRACT_ADDRESS is configured in your environment",\n { status: 400 }\n );\n }\n \n if (env.PROJECT_ACCESS_KEY === undefined || env.PROJECT_ACCESS_KEY === "") {\n return new Response(\n "Make sure PROJECT_ACCESS_KEY is configured in your environment",\n { status: 400 }\n );\n }\n \n if (env.CHAIN_HANDLE === undefined || env.CHAIN_HANDLE === "") {\n return new Response(\n "Make sure CHAIN_HANDLE is configured in your environment",\n { status: 400 }\n );\n }\n \n const chainConfig = findSupportedNetwork(env.CHAIN_HANDLE);\n \n if (chainConfig === undefined) {\n return new Response("Unsupported network or unknown CHAIN_HANDLE", {\n status: 400,\n });\n }\n \n // POST request\n if (request.method === "POST") {\n // parse the request body as JSON\n const body = await request.json();\n const { proof, address, tokenId }: any = body;\n try {\n // check that the proof is valid\n if (await verify(env.CHAIN_HANDLE, address, proof)) {\n try {\n // mocked call\n const res = await callContract(request, env, address, tokenId);\n return new Response(`${res.hash}`, { status: 200 });\n } catch (err: any) {\n console.log(err);\n return new Response(`Something went wrong: ${JSON.stringify(err)}`, {\n status: 400,\n });\n }\n } else {\n return new Response(`Unauthorized`, { status: 401 });\n }\n } catch (err: any) {\n return new Response(`Unauthorized ${JSON.stringify(err)}`, {\n status: 401,\n });\n }\n }\n // GET request\n else {\n try {\n // mocked call\n const res = await getBlockNumber(env.CHAIN_HANDLE, request);\n return new Response(`Block Number: ${res}`);\n } catch (err: any) {\n return new Response(`Something went wrong: ${JSON.stringify(err)}`, {\n status: 500,\n });\n }\n }\n}\n \nconst getBlockNumber = async (\n chainId: string,\n request: Request\n): Promise<number> => {\n return chainId;\n};\n \nconst callContract = async (\n request: Request,\n env: Env,\n address: string,\n tokenId: number\n): Promise<ethers.providers.TransactionResponse> => {\n return { hash: "0x" } as any;\n};\n \nexport default {\n async fetch(request: Request, env: Env, ctx: ExecutionContext) {\n // Process the request and create a response\n const response = await handleRequest(request, env, ctx);\n \n // Set CORS headers\n response.headers.set("Access-Control-Allow-Origin", "*");\n response.headers.set(\n "Access-Control-Allow-Methods",\n "GET, POST, PUT, DELETE, OPTIONS"\n );\n response.headers.set("Access-Control-Allow-Headers", "Content-Type");\n \n // return response\n return response;\n },\n};\n","title":"3. Use EthAuthProof to prevent EOA DDoS","titles":["Mint Collectibles Using a Gasless Serverless Relayer"]},"87":{"href":"/guides/templates/03-mint-collectibles-serverless#add-cloudflare-environment-variables","html":"\n

Then, pass in the environment variables for your build by updating the [vars] section in your wrangler.toml.

\n
[vars]\nPKEY = "" # Private key for EOA wallet\nCONTRACT_ADDRESS = "" # // Deployed ERC1155 or ERC721 contract address\nPROJECT_ACCESS_KEY = "" # From sequence.build\nCHAIN_HANDLE = "" # // Standardized chain name – See https://docs.sequence.xyz/multi-chain-support
\n","isPage":false,"text":"\nThen, pass in the environment variables for your build by updating the [vars] section in your wrangler.toml.\n[vars]\nPKEY = "" # Private key for EOA wallet\nCONTRACT_ADDRESS = "" # // Deployed ERC1155 or ERC721 contract address\nPROJECT_ACCESS_KEY = "" # From sequence.build\nCHAIN_HANDLE = "" # // Standardized chain name – See https://docs.sequence.xyz/multi-chain-support\n","title":"Add cloudflare environment variables","titles":["Mint Collectibles Using a Gasless Serverless Relayer","3. Use EthAuthProof to prevent EOA DDoS",null]},"88":{"href":"/guides/templates/03-mint-collectibles-serverless#implement-window-object-in-wrangler-template","html":"\n

It should be noted, if you try to deploy this you'll get a missing window object required by the web3 modules.

\n

To prevent this, add the following line to your wrangler.toml file to make the environment compatible.

\n
...\nnode_compat = true # add this line\n...
\n","isPage":false,"text":"\nIt should be noted, if you try to deploy this you'll get a missing window object required by the web3 modules.\nTo prevent this, add the following line to your wrangler.toml file to make the environment compatible.\n...\nnode_compat = true # add this line\n...\n","title":"Implement window object in wrangler template","titles":["Mint Collectibles Using a Gasless Serverless Relayer","3. Use EthAuthProof to prevent EOA DDoS",null]},"89":{"href":"/guides/templates/03-mint-collectibles-serverless#testing-the-deploy","html":"\n

You can now redeploy using wrangler deploy

\n

And perform a curl request to test your endpoint like such:

\n
curl -X POST https://your-worker.your-subdomain.workers.dev \\\n-H "Content-Type: application/json" \\\n-d '{"proof": "<some_proof>", "address": "<some_address>", "tokenId": 0 }'\n\n... invalid proof string ...\n\n# and if you replace with actual proof (from a wallet client login) and address on polygon, it should return\nsuccess
\n

You can acquire your wallet address proof by using this dapp and follow the below steps.

\n","isPage":false,"text":"\nYou can now redeploy using wrangler deploy\nAnd perform a curl request to test your endpoint like such:\ncurl -X POST https://your-worker.your-subdomain.workers.dev \\\n-H "Content-Type: application/json" \\\n-d '{"proof": "<some_proof>", "address": "<some_address>", "tokenId": 0 }'\n\n... invalid proof string ...\n\n# and if you replace with actual proof (from a wallet client login) and address on polygon, it should return\nsuccess\nYou can acquire your wallet address proof by using this dapp and follow the below steps.\n","title":"Testing the deploy","titles":["Mint Collectibles Using a Gasless Serverless Relayer","3. Use EthAuthProof to prevent EOA DDoS",null]},"90":{"href":"/guides/templates/03-mint-collectibles-serverless#using-the-ethauthproof-viewer-dapp","html":"\n

When you arrive on the page, the first thing you should do is select a network.

\n

Then you have an option to either connect and generate the Proof, or, generate a local wallet

\n

\"ETHAuthProof

\n

Press the connect button and then copy to clipboard.

\n

\"ETHAuthProof

\n

It should be noted, it is best not to share this ETHAuthProof with anyone as this means someone can prove ownership of your wallet and interact with specific APIs.

\n

Finally, replace the url with your app from this step, the <some_proof> with the generated value copied from the viewer dapp, and <some_address> with your wallet address and it should return just the mocked 0x string.

\n
curl -X POST https://your-worker.your-subdomain.workers.dev \\\n-H "Content-Type: application/json" \\\n-d '{"proof": "<some_proof>", "address": "<some_address>", "tokenId": 0 }'
\n","isPage":false,"text":"\nWhen you arrive on the page, the first thing you should do is select a network.\nThen you have an option to either connect and generate the Proof, or, generate a local wallet\n\nPress the connect button and then copy to clipboard.\n\nIt should be noted, it is best not to share this ETHAuthProof with anyone as this means someone can prove ownership of your wallet and interact with specific APIs.\nFinally, replace the url with your app from this step, the <some_proof> with the generated value copied from the viewer dapp, and <some_address> with your wallet address and it should return just the mocked 0x string.\ncurl -X POST https://your-worker.your-subdomain.workers.dev \\\n-H "Content-Type: application/json" \\\n-d '{"proof": "<some_proof>", "address": "<some_address>", "tokenId": 0 }'\n","title":"Using the ETHAuthProof Viewer dapp","titles":["Mint Collectibles Using a Gasless Serverless Relayer","3. Use EthAuthProof to prevent EOA DDoS",null]},"91":{"href":"/guides/templates/03-mint-collectibles-serverless#4-mint-a-collectible-to-wallet","html":"\n

Finally, to deploy and mint a collectible from the sponsored contract address, we install the following packages

\n
pnpm install @0xsequence/auth ethers@5.7.2
\n

and implement the callContract and getBlockNumber methods previously mocked out as follows:

\n
import { ethers } from 'ethers'\nimport { Session, SessionSettings } from '@0xsequence/auth'\n \n...\n \nconst getBlockNumber = async (chainId: string, request: Request): Promise<number> => {\n\tconst nodeUrl = `https://nodes.sequence.app/${chainId}`\n\tconst provider = new ethers.providers.JsonRpcProvider({ url: nodeUrl, skipFetchSetup: true })\n\treturn await provider.getBlockNumber()\n}\n \nconst callContract = async (request: Request, env: Env, address: string, tokenId: number): Promise<ethers.providers.TransactionResponse> => {\n \n\tconst nodeUrl = `https://nodes.sequence.app/${env.CHAIN_HANDLE}`\n\tconst relayerUrl = `https://{env.CHAIN_HANDLE}-relayer.sequence.app`\n\tconst provider = new ethers.providers.JsonRpcProvider({ url: nodeUrl, skipFetchSetup: true })\n    const contractAddress = env.CONTRACT_ADDRESS\n \n    // create EOA from private key\n\tconst walletEOA = new ethers.Wallet(env.PKEY, provider);\n \n\t// instantiate settings\n\tconst settings: Partial<SessionSettings> = {\n\t\tnetworks: [{\n\t\t\t...networks[findSupportedNetwork(env.CHAIN_HANDLE)!.chainId],\n\t\t\trpcUrl: findSupportedNetwork(env.CHAIN_HANDLE)!.rpcUrl,\n\t\t\tprovider: provider,\n\t\t\trelayer: {\n\t\t\t\turl: relayerUrl,\n\t\t\t\tprovider: {\n\t\t\t\t\turl: findSupportedNetwork(env.CHAIN_HANDLE)!.rpcUrl\n\t\t\t\t}\n\t\t\t}\n\t\t}],\n\t}\n \n    // create a single signer sequence wallet session\n\tconst session = await Session.singleSigner({\n\t\tsettings: settings,\n\t\tsigner: walletEOA,\n\t\tprojectAccessKey: env.PROJECT_ACCESS_KEY\n\t})\n \n\t// get signer\n\tconst signer = session.account.getSigner(findSupportedNetwork(env.CHAIN_HANDLE)!.chainId)\n \n\t// create interface from partial abi\n\tconst collectibleInterface = new ethers.utils.Interface([\n\t\t'function mint(address to, uint256 tokenId, uint256 amount, bytes data)'\n\t])\n \n\t// create calldata\n\tconst data = collectibleInterface.encodeFunctionData(\n\t\t'mint', [address, tokenId, 1, "0x00"]\n\t)\n \n\t// create transaction object\n\tconst txn = { to: contractAddress, data }\n \n\ttry {\n\t\treturn await signer.sendTransaction(txn)\n\t} catch (err) {\n\t\tthrow err\n\t}\n}
\n

Once these steps are complete, you can redeploy and test with the steps outlined in this prior step, and this time the POST request should return a transaction hash for the completed mint and the GET request would return a block number.

\n

If you want to browse the full code, see an example implementation here

","isPage":false,"text":"\nFinally, to deploy and mint a collectible from the sponsored contract address, we install the following packages\npnpm install @0xsequence/auth ethers@5.7.2\nand implement the callContract and getBlockNumber methods previously mocked out as follows:\nimport { ethers } from 'ethers'\nimport { Session, SessionSettings } from '@0xsequence/auth'\n \n...\n \nconst getBlockNumber = async (chainId: string, request: Request): Promise<number> => {\n\tconst nodeUrl = `https://nodes.sequence.app/${chainId}`\n\tconst provider = new ethers.providers.JsonRpcProvider({ url: nodeUrl, skipFetchSetup: true })\n\treturn await provider.getBlockNumber()\n}\n \nconst callContract = async (request: Request, env: Env, address: string, tokenId: number): Promise<ethers.providers.TransactionResponse> => {\n \n\tconst nodeUrl = `https://nodes.sequence.app/${env.CHAIN_HANDLE}`\n\tconst relayerUrl = `https://{env.CHAIN_HANDLE}-relayer.sequence.app`\n\tconst provider = new ethers.providers.JsonRpcProvider({ url: nodeUrl, skipFetchSetup: true })\n const contractAddress = env.CONTRACT_ADDRESS\n \n // create EOA from private key\n\tconst walletEOA = new ethers.Wallet(env.PKEY, provider);\n \n\t// instantiate settings\n\tconst settings: Partial<SessionSettings> = {\n\t\tnetworks: [{\n\t\t\t...networks[findSupportedNetwork(env.CHAIN_HANDLE)!.chainId],\n\t\t\trpcUrl: findSupportedNetwork(env.CHAIN_HANDLE)!.rpcUrl,\n\t\t\tprovider: provider,\n\t\t\trelayer: {\n\t\t\t\turl: relayerUrl,\n\t\t\t\tprovider: {\n\t\t\t\t\turl: findSupportedNetwork(env.CHAIN_HANDLE)!.rpcUrl\n\t\t\t\t}\n\t\t\t}\n\t\t}],\n\t}\n \n // create a single signer sequence wallet session\n\tconst session = await Session.singleSigner({\n\t\tsettings: settings,\n\t\tsigner: walletEOA,\n\t\tprojectAccessKey: env.PROJECT_ACCESS_KEY\n\t})\n \n\t// get signer\n\tconst signer = session.account.getSigner(findSupportedNetwork(env.CHAIN_HANDLE)!.chainId)\n \n\t// create interface from partial abi\n\tconst collectibleInterface = new ethers.utils.Interface([\n\t\t'function mint(address to, uint256 tokenId, uint256 amount, bytes data)'\n\t])\n \n\t// create calldata\n\tconst data = collectibleInterface.encodeFunctionData(\n\t\t'mint', [address, tokenId, 1, "0x00"]\n\t)\n \n\t// create transaction object\n\tconst txn = { to: contractAddress, data }\n \n\ttry {\n\t\treturn await signer.sendTransaction(txn)\n\t} catch (err) {\n\t\tthrow err\n\t}\n}\nOnce these steps are complete, you can redeploy and test with the steps outlined in this prior step, and this time the POST request should return a transaction hash for the completed mint and the GET request would return a block number.\nIf you want to browse the full code, see an example implementation here","title":"4. Mint a collectible to wallet","titles":["Mint Collectibles Using a Gasless Serverless Relayer"]},"92":{"href":"/guides/templates/template-embedded-wallet#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"93":{"href":"/guides/templates/template-embedded-wallet#try-a-demo","html":"\n\n","isPage":false,"text":"\nTry out seamless UX of our embedded wallet at our demo\n","title":"Try a Demo","titles":["Quickstart"]},"94":{"href":"/guides/templates/template-embedded-wallet#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template leveraging our embedded wallet.\n","title":"Template","titles":["Quickstart"]},"95":{"href":"/guides/templates/template-embedded-wallet#getting-started","html":"\n","isPage":false,"text":"\n","title":"Getting Started","titles":["Quickstart"]},"96":{"href":"/guides/templates/template-embedded-wallet#sdk-installation","html":"\n

We provide TypeScript and Unity SDKs for the Embedded Wallet authentication system. You can install the TypeScript SDK with:

\n
pnpm install @0xsequence/waas
\n

For more information on the Unity Embedded Wallet SDK, please refer to the TODO add link Unity SDK documentation

\n","isPage":false,"text":"\nWe provide TypeScript and Unity SDKs for the Embedded Wallet authentication system. You can install the TypeScript SDK with:\npnpm install @0xsequence/waas\nFor more information on the Unity Embedded Wallet SDK, please refer to the TODO add link Unity SDK documentation\n","title":"SDK Installation","titles":["Quickstart","Getting Started"]},"97":{"href":"/guides/templates/template-embedded-wallet#project-setup","html":"\n

Sequence Embedded Wallet is currently only available as a closed beta. To start using the Embedded Wallet SDKs, you'll need to contact the Sequence team and acquire API credentials. Once this is done, you will be provided with two keys:

\n\n","isPage":false,"text":"\nSequence Embedded Wallet is currently only available as a closed beta. To start using the Embedded Wallet SDKs, you'll need to contact the Sequence team and acquire API credentials. Once this is done, you will be provided with two keys:\n\nProject access key\nEmbedded Wallet configuration key\n\n","title":"Project Setup","titles":["Quickstart","Getting Started"]},"98":{"href":"/guides/templates/template-embedded-wallet#library-setup","html":"\n

To start using Sequence Embedded Wallet SDK, you'll need to create a new instance of the waas class:

\n
import { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n  projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n  waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n  network: 'mumbai'\n}, defaults.TEST)
\n

Note that the library is operational, but it can't be used to interact with any wallet until you have authenticated as a user.

","isPage":false,"text":"\nTo start using Sequence Embedded Wallet SDK, you'll need to create a new instance of the waas class:\nimport { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: 'mumbai'\n}, defaults.TEST)\nNote that the library is operational, but it can't be used to interact with any wallet until you have authenticated as a user.","title":"Library Setup","titles":["Quickstart","Getting Started"]},"99":{"href":"/sdk/go/overview#go","html":"\n

A complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.

\n

go-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.

\n","isPage":true,"text":"\nA complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.\ngo-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.\n","title":"Go","titles":[null,null]},"100":{"href":"/sdk/go/overview#ethkit","html":"\n

As part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.

","isPage":false,"text":"\nAs part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.","title":"ethkit","titles":[null,null]},"101":{"href":"/sdk/sequence-kit/01-overview#sequencekit-sdk","html":"\n

Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.

\n","isPage":true,"text":"\nSequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.\n","title":"SequenceKit SDK","titles":[]},"102":{"href":"/sdk/sequence-kit/01-overview#key-features","html":"\n\n

Explore the potential of Sequence Kit by trying out our demo!

\n
","isPage":false,"text":"\n\n\nUniversal Connections: Seamlessly connect via popular social logins such as Facebook, Google, Discord, and more! Your users will enjoy a smooth, secure onboarding process. 🔐🪪\n\n\nWeb3 Wallet Integration: Effortlessly integrate with leading web3 wallets like WalletConnect and MetaMask. Unleash the power of blockchain with just a few clicks! 🦊 ⛓️\n\n\nEmbedded Wallet Experience: Provide your users with a comprehensive embedded wallet, enabling them to manage their coins and collectibles all within your own application. 👛 🖼️ 🪙\n\n\nExplore the potential of Sequence Kit by trying out our demo!\n","title":"Key Features","titles":["SequenceKit SDK"]},"103":{"href":"/sdk/sequence-kit/01-overview#next-steps","html":"
\n

Ready to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.

","isPage":false,"text":"\nReady to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.","title":"Next Steps","titles":[]},"104":{"href":"/sdk/sequence-kit/02-getting-started#getting-started-with-sequence-kit","html":"\n

In this guide, we will walk you through installing Sequence Kit, triggering the connection modal, and displaying the embedded wallet in your application.

\n","isPage":true,"text":"\nIn this guide, we will walk you through installing Sequence Kit, triggering the connection modal, and displaying the embedded wallet in your application.\n","title":"Getting Started with Sequence Kit","titles":[]},"105":{"href":"/sdk/sequence-kit/02-getting-started#installing-sequence-kit-packages","html":"\n

Sequence Kit is modular, allowing you to install only the necessary packages. To get started, install the kit core package, the connectors package for interfacing with various wallet providers, and the wallet for the embedded wallet. Additionally, install other dependencies such as wagmi, viem, and 0xsequence.

\n
npm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n# or\npnpm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n# or\nyarn add @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query
\n
","isPage":false,"text":"\nSequence Kit is modular, allowing you to install only the necessary packages. To get started, install the kit core package, the connectors package for interfacing with various wallet providers, and the wallet for the embedded wallet. Additionally, install other dependencies such as wagmi, viem, and 0xsequence.\nnpm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n# or\npnpm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n# or\nyarn add @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n","title":"Installing Sequence Kit Packages","titles":["Getting Started with Sequence Kit"]},"106":{"href":"/sdk/sequence-kit/02-getting-started#setting-up-the-kit-wrapper","html":"
\n

To utilize the core kit wrapper for connecting web3 wallets to your application, follow these steps:

\n
    \n
  1. Configure wagmi for your app. Below is a basic wagmi configuration. For advanced configurations, please refer to the wagmi documentation.
  2. \n
\n
import MyPage from './components/MyPage'\nimport { KitProvider } from '@0xsequence/kit'\nimport { getDefaultConnectors } from '@0xsequence/kit-connectors'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { createConfig, http, WagmiProvider } from 'wagmi'\nimport { mainnet, polygon, Chain } from 'wagmi/chains'\n \nconst queryClient = new QueryClient() \n \nfunction App() {\n  const chains = [mainnet, polygon] as [Chain, ...Chain[]]\n  \n  const projectAccessKey = '<access-key>'\n \n  const connectors = getDefaultConnectors({\n    walletConnectProjectId: 'wallet-connect-id',\n    defaultChainId: 137,\n    appName: 'demo app',\n    projectAccessKey\n  })\n \n  const transports = {}\n \n  chains.forEach(chain => {\n    transports[chain.id] = http()\n  })\n  \n  const config = createConfig({\n    transports,\n    connectors,\n    chains\n  })\n \n  return (\n    <WagmiConfig config={config}>\n      <QueryClientProvider client={queryClient}> \n        <KitProvider>\n          <MyPage />\n        </KitProvider>\n      </QueryClientProvider>\n    </WagmiConfig>\n  );\n}
\n
    \n
  1. Wrap your app with the KitProvider within the WagmiConfig wrapper.
  2. \n
\n
","isPage":false,"text":"\nTo utilize the core kit wrapper for connecting web3 wallets to your application, follow these steps:\n\nConfigure wagmi for your app. Below is a basic wagmi configuration. For advanced configurations, please refer to the wagmi documentation.\n\nimport MyPage from './components/MyPage'\nimport { KitProvider } from '@0xsequence/kit'\nimport { getDefaultConnectors } from '@0xsequence/kit-connectors'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { createConfig, http, WagmiProvider } from 'wagmi'\nimport { mainnet, polygon, Chain } from 'wagmi/chains'\n \nconst queryClient = new QueryClient() \n \nfunction App() {\n const chains = [mainnet, polygon] as [Chain, ...Chain[]]\n \n const projectAccessKey = '<access-key>'\n \n const connectors = getDefaultConnectors({\n walletConnectProjectId: 'wallet-connect-id',\n defaultChainId: 137,\n appName: 'demo app',\n projectAccessKey\n })\n \n const transports = {}\n \n chains.forEach(chain => {\n transports[chain.id] = http()\n })\n \n const config = createConfig({\n transports,\n connectors,\n chains\n })\n \n return (\n <WagmiConfig config={config}>\n <QueryClientProvider client={queryClient}> \n <KitProvider>\n <MyPage />\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n );\n}\n\nWrap your app with the KitProvider within the WagmiConfig wrapper.\n\n","title":"Setting Up the Kit Wrapper","titles":[]},"107":{"href":"/sdk/sequence-kit/02-getting-started#setting-up-the-embedded-wallet-wrapper","html":"
\n

To install the optional embedded wallet, add the KitWalletProvider below the KitProvider wrapper.

\n
import { KitWalletProvider } from '@0xsequence/kit-wallet'\n \n// ...\n \nconst App = () => {\n  return (\n    <WagmiConfig config={config}>\n      <QueryClientProvider client={queryClient}> \n        <KitProvider config={kitConfig}>\n          <KitWalletProvider>\n            <Page />\n          </KitWalletProvider>\n        </KitProvider>\n      </QueryClientProvider>\n    </WagmiConfig>\n  )\n}
\n

The complete code will then look like this:

\n
import MyPage from './components/MyPage'\nimport { KitProvider } from '@0xsequence/kit'\nimport { getDefaultConnectors } from '@0xsequence/kit-connectors'\nimport { KitWalletProvider } from '@0xsequence/kit-wallet'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { createConfig, http, WagmiProvider } from 'wagmi'\nimport { mainnet, polygon, Chain } from 'wagmi/chains'\n \nconst queryClient = new QueryClient() \n \nfunction App() {\n  const chains = [mainnet, polygon] as [Chain, ...Chain[]]\n  \n  const projectAccessKey = '<access-key>'\n \n  const connectors = getDefaultConnectors({\n    walletConnectProjectId: 'wallet-connect-id',\n    defaultChainId: 137,\n    appName: 'demo app',\n    projectAccessKey\n  })\n \n  const transports = {}\n \n  chains.forEach(chain => {\n    transports[chain.id] = http()\n  })\n  \n  const config = createConfig({\n    transports,\n    connectors,\n    chains\n  })\n \n  return (\n    <WagmiConfig config={config}>\n      <QueryClientProvider client={queryClient}> \n        <KitProvider>\n          <KitWalletProvider>\n            <MyPage />\n          </KitWalletProvider>\n        </KitProvider>\n      </QueryClientProvider>\n    </WagmiConfig>\n  );\n}
\n
","isPage":false,"text":"\nTo install the optional embedded wallet, add the KitWalletProvider below the KitProvider wrapper.\nimport { KitWalletProvider } from '@0xsequence/kit-wallet'\n \n// ...\n \nconst App = () => {\n return (\n <WagmiConfig config={config}>\n <QueryClientProvider client={queryClient}> \n <KitProvider config={kitConfig}>\n <KitWalletProvider>\n <Page />\n </KitWalletProvider>\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n )\n}\nThe complete code will then look like this:\nimport MyPage from './components/MyPage'\nimport { KitProvider } from '@0xsequence/kit'\nimport { getDefaultConnectors } from '@0xsequence/kit-connectors'\nimport { KitWalletProvider } from '@0xsequence/kit-wallet'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { createConfig, http, WagmiProvider } from 'wagmi'\nimport { mainnet, polygon, Chain } from 'wagmi/chains'\n \nconst queryClient = new QueryClient() \n \nfunction App() {\n const chains = [mainnet, polygon] as [Chain, ...Chain[]]\n \n const projectAccessKey = '<access-key>'\n \n const connectors = getDefaultConnectors({\n walletConnectProjectId: 'wallet-connect-id',\n defaultChainId: 137,\n appName: 'demo app',\n projectAccessKey\n })\n \n const transports = {}\n \n chains.forEach(chain => {\n transports[chain.id] = http()\n })\n \n const config = createConfig({\n transports,\n connectors,\n chains\n })\n \n return (\n <WagmiConfig config={config}>\n <QueryClientProvider client={queryClient}> \n <KitProvider>\n <KitWalletProvider>\n <MyPage />\n </KitWalletProvider>\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n );\n}\n","title":"Setting Up the Embedded Wallet Wrapper","titles":[]},"108":{"href":"/sdk/sequence-kit/02-getting-started#triggering-the-connect-modal","html":"
\n
\n

Invoke the connect modal using the useOpenConnectModal hook.

\n
import { useOpenConnectModal } from '@0xsequence/kit'\nimport { useDisconnect, useAccount } from 'wagmi'\n \n \nconst MyReactComponent = () => {\n  const { setOpenConnectModal } = useOpenConnectModal()\n \n  const { isConnected } = useAccount()\n \n  const onClick = () => {\n    setOpenConnectModal(true)\n  }\n \n  return (\n    <>\n      {!isConnected && (\n        <button onClick={onClick}>\n          Sign in\n        </button>\n      )}\n    </>\n  )\n}
\n

The modal will automatically close once the user signs in. You can utilize the useAccount hook from wagmi to detect the user's connection status.

\n
","isPage":false,"text":"\n\nInvoke the connect modal using the useOpenConnectModal hook.\nimport { useOpenConnectModal } from '@0xsequence/kit'\nimport { useDisconnect, useAccount } from 'wagmi'\n \n \nconst MyReactComponent = () => {\n const { setOpenConnectModal } = useOpenConnectModal()\n \n const { isConnected } = useAccount()\n \n const onClick = () => {\n setOpenConnectModal(true)\n }\n \n return (\n <>\n {!isConnected && (\n <button onClick={onClick}>\n Sign in\n </button>\n )}\n </>\n )\n}\nThe modal will automatically close once the user signs in. You can utilize the useAccount hook from wagmi to detect the user's connection status.\n","title":"Triggering the Connect Modal","titles":[]},"109":{"href":"/sdk/sequence-kit/02-getting-started#invoking-the-embedded-wallet-modal","html":"
\n
\n

Open the embedded wallet using the useOpenWalletModal react hook.

\n
import { useOpenWalletModal } from '@0xsequence/kit-wallet'\n \nconst MyComponent = () => {\n  const { setOpenWalletModal } = useOpenWalletModal()\n \n  const onClick = () => {\n    setOpenWalletModal(true)\n  }\n \n  return (\n    <button onClick={onClick}>open wallet</button>\n  )\n}
\n
","isPage":false,"text":"\n\nOpen the embedded wallet using the useOpenWalletModal react hook.\nimport { useOpenWalletModal } from '@0xsequence/kit-wallet'\n \nconst MyComponent = () => {\n const { setOpenWalletModal } = useOpenWalletModal()\n \n const onClick = () => {\n setOpenWalletModal(true)\n }\n \n return (\n <button onClick={onClick}>open wallet</button>\n )\n}\n","title":"Invoking the embedded wallet modal","titles":[]},"110":{"href":"/sdk/sequence-kit/02-getting-started#react-example","html":"
\n

The Sequence Kit Github repository contains an example app that you can use for learning and testing.

","isPage":false,"text":"\nThe Sequence Kit Github repository contains an example app that you can use for learning and testing.","title":"React Example","titles":[]},"111":{"href":"/sdk/sequence-kit/03-configuration#configuration-options","html":"\n

Developers can customize the Sequence Kit experience by passing configuration options to the KitProvider wrapper.

\n

Here's how you can configure the kit using these options:

\n
 \n  const kitConfig =  {\n\t\tdefaultTheme: 'light',\n\t\tposition: 'top-left',\n\t\t...\n\t}\n \n  <KitProvider config={kitConfig}>\n    <App />\n  <KitProvider>\n 
\n
","isPage":true,"text":"\nDevelopers can customize the Sequence Kit experience by passing configuration options to the KitProvider wrapper.\nHere's how you can configure the kit using these options:\n \n const kitConfig = {\n\t\tdefaultTheme: 'light',\n\t\tposition: 'top-left',\n\t\t...\n\t}\n \n <KitProvider config={kitConfig}>\n <App />\n <KitProvider>\n \n","title":"Configuration Options","titles":[]},"112":{"href":"/sdk/sequence-kit/03-configuration#available-options","html":"
\n","isPage":false,"text":"\n","title":"Available Options","titles":[]},"113":{"href":"/sdk/sequence-kit/03-configuration#defaulttheme","html":"\n
TypeDefault
string or objectdark
\n

The defaultTheme determines the color palette used for styling the modal. Possible values include:

\n\n

Specific colors can be overwritten by passing a theme override object. The Sequence Builder provides a useful playground for toying with the colors in Sequence Kit.

\n","isPage":false,"text":"\nTypeDefaultstring or objectdark\nThe defaultTheme determines the color palette used for styling the modal. Possible values include:\n\n'light'\n'dark'\nobject\n\nSpecific colors can be overwritten by passing a theme override object. The Sequence Builder provides a useful playground for toying with the colors in Sequence Kit.\n","title":"defaultTheme","titles":["Available Options"]},"114":{"href":"/sdk/sequence-kit/03-configuration#position","html":"\n
TypeDefault
stringcenter
\n

The position parameter determines the location of the various modals on the screen. Possible values include:

\n\n","isPage":false,"text":"\nTypeDefaultstringcenter\nThe position parameter determines the location of the various modals on the screen. Possible values include:\n\ncenter\nmiddle-right\nmiddle-left\ntop-center\ntop-right\ntop-left\nbottom-center\nbottom-right\nbottom-left\n\n","title":"position","titles":["Available Options"]},"115":{"href":"/sdk/sequence-kit/03-configuration#sign-in-modal-configuration-signin","html":"\n

The signIn object is used to configure the sign in modal.

\n","isPage":false,"text":"\nThe signIn object is used to configure the sign in modal.\n","title":"Sign In Modal Configuration (signIn)","titles":["Available Options"]},"116":{"href":"/sdk/sequence-kit/03-configuration#signinlogourl","html":"\n
\n
TypeDefault
stringundefined
\n

URL of the logo to be shown in the sign in modal.

\n","isPage":false,"text":"\n\nTypeDefaultstringundefined\nURL of the logo to be shown in the sign in modal.\n","title":"signIn.logoUrl","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"117":{"href":"/sdk/sequence-kit/03-configuration#signinprojectname","html":"\n
\n
TypeDefault
stringundefined
\n

Name of the project to be shown in the sign in modal.

\n","isPage":false,"text":"\n\nTypeDefaultstringundefined\nName of the project to be shown in the sign in modal.\n","title":"signIn.projectName","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"118":{"href":"/sdk/sequence-kit/03-configuration#signinshowemailinput","html":"\n
\n
TypeDefault
booleantrue
\n

Determines whether the inline email input will be shown in the sign in modal.

\n","isPage":false,"text":"\n\nTypeDefaultbooleantrue\nDetermines whether the inline email input will be shown in the sign in modal.\n","title":"signIn.showEmailInput","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"119":{"href":"/sdk/sequence-kit/03-configuration#signinsocialauthoptions","html":"\n
\n
TypeDefault
string[]['google', 'facebook', 'twitch', 'apple']
\n

Determines which authentication options will be shown as social options in the sign in modal.\nThe wallets will be displayed in the order they are passed in the array. The values correspond to the connector's id and a corresponding connector must be passed down to wagmi.

\n

For a full list of official connectors, see the connectors page.

\n","isPage":false,"text":"\n\nTypeDefaultstring[]['google', 'facebook', 'twitch', 'apple']\nDetermines which authentication options will be shown as social options in the sign in modal.\nThe wallets will be displayed in the order they are passed in the array. The values correspond to the connector's id and a corresponding connector must be passed down to wagmi.\nFor a full list of official connectors, see the connectors page.\n","title":"signIn.socialAuthOptions","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"120":{"href":"/sdk/sequence-kit/03-configuration#signinwalletauthoptions","html":"\n
\n
TypeDefault
string[]['sequence', 'metamask', 'wallet-connect', 'coinbase-wallet']
\n

Determines which authentication options will be shown in the modal as web3 wallet options.\nThe wallets will be displayed in the order they are passed in the array. The values correspond to the connector's id and a corresponding connector must be passed down to wagmi.

\n

For a full list of official connectors, see the connectors page.

\n","isPage":false,"text":"\n\nTypeDefaultstring[]['sequence', 'metamask', 'wallet-connect', 'coinbase-wallet']\nDetermines which authentication options will be shown in the modal as web3 wallet options.\nThe wallets will be displayed in the order they are passed in the array. The values correspond to the connector's id and a corresponding connector must be passed down to wagmi.\nFor a full list of official connectors, see the connectors page.\n","title":"signIn.walletAuthOptions","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"121":{"href":"/sdk/sequence-kit/03-configuration#displayedassets","html":"\n
TypeDefault
[{ contractAddress: string, chainId: number }, ...]undefined
\n

If provided, this will determine which assets are to be displayed in the embedded wallet modal main view.\nBy passing a list of displayed assets, only assets from the provided list will be displayed in the main view.\nIn the case that no assets are provided, all owned assets can be displayed in the main view.

","isPage":false,"text":"\nTypeDefault[{ contractAddress: string, chainId: number }, ...]undefined\nIf provided, this will determine which assets are to be displayed in the embedded wallet modal main view.\nBy passing a list of displayed assets, only assets from the provided list will be displayed in the main view.\nIn the case that no assets are provided, all owned assets can be displayed in the main view.","title":"displayedAssets","titles":["Available Options"]},"122":{"href":"/sdk/sequence-kit/04-checkout#overview","html":"\n

The checkout modal enables developers to easily facilitate cryptocurrency payments.

\n
\n
","isPage":true,"text":"\nThe checkout modal enables developers to easily facilitate cryptocurrency payments.\n\n","title":"Overview","titles":[]},"123":{"href":"/sdk/sequence-kit/04-checkout#integration","html":"
\n

To integrate the checkout feature, follow these steps:

\n
    \n
  1. Install the kit-checkout module:
  2. \n
\n
npm install @0xsequence/kit-checkout\n# or\npnpm install @0xsequence/kit-checkout\n# or\nyarn add @0xsequence/kit-checkout
\n
    \n
  1. Place the KitCheckoutProvider below the Sequence Kit Core provider in your app:
  2. \n
\n
import { KitCheckoutProvider } from '@0xsequence/kit-checkout'\n \n \nconst App = () => {\n  return (\n    <WagmiConfig config={config}>\n      <QueryClientProvider client={queryClient}> \n        <KitProvider>\n          <KitCheckoutProvider>\n            <Page />\n          </KitCheckoutProvider>\n        </KitProvider>\n      </QueryClientProvider>\n    </WagmiConfig>\n  )\n}
\n","isPage":false,"text":"\nTo integrate the checkout feature, follow these steps:\n\nInstall the kit-checkout module:\n\nnpm install @0xsequence/kit-checkout\n# or\npnpm install @0xsequence/kit-checkout\n# or\nyarn add @0xsequence/kit-checkout\n\nPlace the KitCheckoutProvider below the Sequence Kit Core provider in your app:\n\nimport { KitCheckoutProvider } from '@0xsequence/kit-checkout'\n \n \nconst App = () => {\n return (\n <WagmiConfig config={config}>\n <QueryClientProvider client={queryClient}> \n <KitProvider>\n <KitCheckoutProvider>\n <Page />\n </KitCheckoutProvider>\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n )\n}\n","title":"Integration","titles":[]},"124":{"href":"/sdk/sequence-kit/04-checkout#opening-the-checkout-modal","html":"\n

Use the useCheckoutModal hook to open the checkout modal and pass a settings object:

\n
  import { useCheckoutModal } from '@0xsequence/kit-checkout'\n \n \n  const MyComponent = () => {\n    const { triggerCheckout } = useCheckoutModal()\n  \n    const onClick = () => {\n      const checkoutSettings = {...}\n      triggerCheckout(checkoutSettings)\n    }\n \n    return (\n      <button onClick={onClick}>checkout</button>\n    )\n  }
\n","isPage":false,"text":"\nUse the useCheckoutModal hook to open the checkout modal and pass a settings object:\n import { useCheckoutModal } from '@0xsequence/kit-checkout'\n \n \n const MyComponent = () => {\n const { triggerCheckout } = useCheckoutModal()\n \n const onClick = () => {\n const checkoutSettings = {...}\n triggerCheckout(checkoutSettings)\n }\n \n return (\n <button onClick={onClick}>checkout</button>\n )\n }\n","title":"Opening the Checkout modal","titles":["Integration"]},"125":{"href":"/sdk/sequence-kit/04-checkout#configuring-the-checkout-modal","html":"\n

Configure the checkout modal using the checkoutSettings object:

\n
const checkoutSettings = {\n  cryptoCheckout: {...},\n  orderSummaryItems: {...}\n}
\n","isPage":false,"text":"\nConfigure the checkout modal using the checkoutSettings object:\nconst checkoutSettings = {\n cryptoCheckout: {...},\n orderSummaryItems: {...}\n}\n","title":"Configuring the Checkout modal","titles":["Integration"]},"126":{"href":"/sdk/sequence-kit/04-checkout#crypto-checkout-configuration-cryptocheckout","html":"\n

The cryptoCheckout field specifies settings for checking out with cryptocurrency, e.g., interacting with a minting contract or marketplace contract.

\n

Example configuration:

\n
cons checkoutConfig = {\n  // ...\n  cryptoCheckout: {\n    chainId: 137,\n    triggerTransaction: async () => { console.log('triggered transaction') },\n    coinQuantity: {\n      contractAddress: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',\n      amountRequiredRaw: '10000000000'\n    },\n  },\n}
\n","isPage":false,"text":"\nThe cryptoCheckout field specifies settings for checking out with cryptocurrency, e.g., interacting with a minting contract or marketplace contract.\nExample configuration:\ncons checkoutConfig = {\n // ...\n cryptoCheckout: {\n chainId: 137,\n triggerTransaction: async () => { console.log('triggered transaction') },\n coinQuantity: {\n contractAddress: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',\n amountRequiredRaw: '10000000000'\n },\n },\n}\n","title":"Crypto Checkout Configuration (cryptoCheckout)","titles":["Integration","Configuring the Checkout modal"]},"127":{"href":"/sdk/sequence-kit/04-checkout#order-summary-configuration-ordersummaryitems","html":"\n

The orderSummaryItems field specifies the list of collectibles shown in the order summary.

\n

Example configuration:

\n
    orderSummaryItems: [\n      {\n        contractAddress: '0x631998e91476da5b870d741192fc5cbc55f5a52e',\n        tokenId: '66597',\n        quantityRaw: '100'\n      },\n    ]
","isPage":false,"text":"\nThe orderSummaryItems field specifies the list of collectibles shown in the order summary.\nExample configuration:\n orderSummaryItems: [\n {\n contractAddress: '0x631998e91476da5b870d741192fc5cbc55f5a52e',\n tokenId: '66597',\n quantityRaw: '100'\n },\n ]","title":"Order Summary Configuration (orderSummaryItems)","titles":["Integration","Configuring the Checkout modal"]},"128":{"href":"/sdk/sequence-kit/05-custom-connectors#custom-connectors-in-sequence-kit","html":"\n

Sequence Kit provides official connectors via the @0xsequence/kit-connectors package. However, you can also integrate custom connectors with Sequence Kit to support additional wallets. This guide will walk you through creating and using custom connectors.

\n","isPage":true,"text":"\nSequence Kit provides official connectors via the @0xsequence/kit-connectors package. However, you can also integrate custom connectors with Sequence Kit to support additional wallets. This guide will walk you through creating and using custom connectors.\n","title":"Custom Connectors in Sequence Kit","titles":[]},"129":{"href":"/sdk/sequence-kit/05-custom-connectors#creating-a-custom-connector","html":"\n

To create a custom connector, you can use an existing connector as a basis. For example, the Metamask Connector is a good starting point. Here's an example of how to create a custom connector:

\n
export const myCustomConnector = (options: MyCustomConnectorOptions) => ({\n  id: 'my-custom-connector',\n  name: 'My Custom Connector',\n  logoDark: MyCustomLogoDark,\n  logoLight: MyCustomLogoLight,\n  createConnector: () => {\n    const connector = myCustomConnector(options);\n    return connector;\n  },\n});
\n

Make sure to provide a unique id for your connector to avoid conflicts with other connectors. You can also customize fields such as name, logoDark, and logoLight to control how the connector appears in Sequence Kit.

\n

The createConnector function should return an initialized connector. Sequence Kit connectors are wrappers of Wagmi connectors, so you can use an official Wagmi connector if available, or create your own if needed.

\n

For more details on creating custom connectors, refer to Wagmi's guide on Custom Connectors.

\n
","isPage":false,"text":"\nTo create a custom connector, you can use an existing connector as a basis. For example, the Metamask Connector is a good starting point. Here's an example of how to create a custom connector:\nexport const myCustomConnector = (options: MyCustomConnectorOptions) => ({\n id: 'my-custom-connector',\n name: 'My Custom Connector',\n logoDark: MyCustomLogoDark,\n logoLight: MyCustomLogoLight,\n createConnector: () => {\n const connector = myCustomConnector(options);\n return connector;\n },\n});\nMake sure to provide a unique id for your connector to avoid conflicts with other connectors. You can also customize fields such as name, logoDark, and logoLight to control how the connector appears in Sequence Kit.\nThe createConnector function should return an initialized connector. Sequence Kit connectors are wrappers of Wagmi connectors, so you can use an official Wagmi connector if available, or create your own if needed.\nFor more details on creating custom connectors, refer to Wagmi's guide on Custom Connectors.\n","title":"Creating a Custom Connector","titles":["Custom Connectors in Sequence Kit"]},"130":{"href":"/sdk/sequence-kit/05-custom-connectors#using-custom-connectors","html":"
\n

When using custom connectors, you can't rely on the getDefaultConnectors utility function. Instead, you need to pass custom configurations to Sequence Kit.

\n

First, create a list of connectors, including your custom connector, and provide it to the Wagmi configuration:

\n
import { getKitConnectWallets } from '@0xsequence/kit';\n \nconst connectors = getKitConnectWallets([\n  google({\n    defaultNetwork: 137,\n    connect: {\n      app: 'my-app',\n      projectAccessKey: '<access-key>'\n    }\n  }),\n  // ... other connectors\n  myCustomConnector({ appName: 'my-app' }),\n]);\n \nconst config = createConfig({\n  transports,\n  connectors,\n  chains\n})
\n

Next, use your custom connector by specifying its id in either the socialAuthOptions or walletAuthOptions field of the Sequence Kit configuration:

\n
const kitConfig = {\n  signIn: {\n    socialAuthOptions: ['google', 'facebook'],\n    walletAuthOptions: ['metamask', 'my-custom-connector'],\n  }\n};\n \nreturn (\n  <WagmiConfig config={wagmiConfig}>\n    <QueryClientProvider client={queryClient}>\n      <KitProvider config={kitConfig}>\n        <App />\n      </KitProvider>\n    </QueryClientProvider>\n  </WagmiConfig>\n);
\n
","isPage":false,"text":"\nWhen using custom connectors, you can't rely on the getDefaultConnectors utility function. Instead, you need to pass custom configurations to Sequence Kit.\nFirst, create a list of connectors, including your custom connector, and provide it to the Wagmi configuration:\nimport { getKitConnectWallets } from '@0xsequence/kit';\n \nconst connectors = getKitConnectWallets([\n google({\n defaultNetwork: 137,\n connect: {\n app: 'my-app',\n projectAccessKey: '<access-key>'\n }\n }),\n // ... other connectors\n myCustomConnector({ appName: 'my-app' }),\n]);\n \nconst config = createConfig({\n transports,\n connectors,\n chains\n})\nNext, use your custom connector by specifying its id in either the socialAuthOptions or walletAuthOptions field of the Sequence Kit configuration:\nconst kitConfig = {\n signIn: {\n socialAuthOptions: ['google', 'facebook'],\n walletAuthOptions: ['metamask', 'my-custom-connector'],\n }\n};\n \nreturn (\n <WagmiConfig config={wagmiConfig}>\n <QueryClientProvider client={queryClient}>\n <KitProvider config={kitConfig}>\n <App />\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n);\n","title":"Using Custom Connectors","titles":[]},"131":{"href":"/sdk/sequence-kit/05-custom-connectors#share-your-custom-connectors","html":"
\n

Feel free to contribute your custom connectors by creating a pull request. This way, others can benefit from your work and enjoy seamless integration with Sequence Kit.

\n

Share the love ❤️ by expanding the ecosystem of custom connectors!

","isPage":false,"text":"\nFeel free to contribute your custom connectors by creating a pull request. This way, others can benefit from your work and enjoy seamless integration with Sequence Kit.\nShare the love ❤️ by expanding the ecosystem of custom connectors!","title":"Share Your Custom Connectors","titles":[]},"132":{"href":"/sdk/unity/01-overview#introduction","html":"\n

The Sequence Unity Embedded Wallet SDK provides full Sequence Embedded Wallet and Indexer integration for your Unity Games, integrated with our own purpose-built for Unity SequenceEthereum library. That's right, no Nethereum required!

\n

This SDK follows Semantic Versioning (major.minor.patch). While we're still in 0.x.y builds, API breaking changes can be made at any time. After 1.0.0, breaking changes will always cause a major version increment, non-breaking new features will cause a minor version increment, and bugfixes will cause a patch version increment.

\n","isPage":true,"text":"\nThe Sequence Unity Embedded Wallet SDK provides full Sequence Embedded Wallet and Indexer integration for your Unity Games, integrated with our own purpose-built for Unity SequenceEthereum library. That's right, no Nethereum required!\nThis SDK follows Semantic Versioning (major.minor.patch). While we're still in 0.x.y builds, API breaking changes can be made at any time. After 1.0.0, breaking changes will always cause a major version increment, non-breaking new features will cause a minor version increment, and bugfixes will cause a patch version increment.\n","title":"Introduction","titles":[]},"133":{"href":"/sdk/unity/01-overview#requirements","html":"\n

Unity 2021.3.6f1 or later

\n","isPage":false,"text":"\nUnity 2021.3.6f1 or later\n\nAndroid\niOS\nPC standalone\nMac standalone -> (Mono builds only when using Social Sign in -> in our testing MacOS doesn't pick up custom URL schemes automatically unless you run some system commands first; these system commands only work on Mono -> see OpenIdAuthentication.PlatformSpecificSetup)\nWebGL (excluding Social Sign in)\n","title":"Requirements","titles":["Introduction"]},"134":{"href":"/sdk/unity/02-installation#installation","html":"\n","isPage":true,"text":"\n","title":"Installation","titles":[]},"135":{"href":"/sdk/unity/02-installation#package-manager---recommended","html":"\n
    \n
  1. Ensure you have Git 2.14.0 or above installed on your machine
  2. \n
  3. Open Package Manager (Window > Package Manager)
  4. \n
  5. Click the "+" icon in the Package Manager window > "Add package from git URL..."
  6. \n
  7. Paste this url and click Add or press Enter on your keyboard https://github.com/0xsequence/sequence-unity.git?path=/Assets
  8. \n
  9. From Package Manager, click on "Samples"
  10. \n
  11. Import "Setup" from Samples\n\"Setup\"/
  12. \n
\n

a) This will import a Resources folder with the SequenceConfig scriptable object (more on this in Setup).

\n

b) This will also import an Editor folder with a Post Process Build script that will setup social sign in for you automatically on MacOS and iOS.

\n
    \n
  1. Import TMP Essentials (if you haven't already). Note: Unity should prompt you to do this automatically if you attempt to Play or Build with a TextMeshPro object in your scene.
  2. \n
\n

\"Import

\n","isPage":false,"text":"\n\nEnsure you have Git 2.14.0 or above installed on your machine\nOpen Package Manager (Window > Package Manager)\nClick the "+" icon in the Package Manager window > "Add package from git URL..."\nPaste this url and click Add or press Enter on your keyboard https://github.com/0xsequence/sequence-unity.git?path=/Assets\nFrom Package Manager, click on "Samples"\nImport "Setup" from Samples\n\n\na) This will import a Resources folder with the SequenceConfig scriptable object (more on this in Setup).\nb) This will also import an Editor folder with a Post Process Build script that will setup social sign in for you automatically on MacOS and iOS.\n\nImport TMP Essentials (if you haven't already). Note: Unity should prompt you to do this automatically if you attempt to Play or Build with a TextMeshPro object in your scene.\n\n\n","title":"Package Manager - Recommended","titles":["Installation"]},"136":{"href":"/sdk/unity/02-installation#samples","html":"\n

In addition to this documentation, we've also provided you with a few samples to help with using our SDK.

\n

These can be found by:

\n
    \n
  1. Opening Package Manager
  2. \n
  3. Finding our SDK "Sequence WaaS SDK"
  4. \n
  5. Click on "Samples"
  6. \n
  7. Click "Import" next to any sample you wish to install. This will create a Samples folder under Assets and import the sample there. The sample will be completely mutable as it lives within your Assets folder.
  8. \n
\n

\"Samples\"/

\n

The second sample "Demo Scene" is sample scene that showcases some of the features of our SDK. It serves as a useful supplement to the documentation.

\n

The third sample "Demo Tower Defense Game" is a sample game. We began with Unity's Tower Defense Template project and ripped out the save system to replace it with ERC1155s. When importing this sample game into your project, you may get a message "Script Updating Consent" that asks if you want to update the source files to the a newer API. This is because the template project was made on a much earlier version of Unity and some of the scripting APIs used by Unity have changed since the template project was created. You can simply click "Yes, just for these files". Note that, in order to play the demo game, there is some config you need to setup. However, even without configuring the game, we believe the Scripts within the project can be a useful resource when starting out.

\n

\"Update

\n","isPage":false,"text":"\nIn addition to this documentation, we've also provided you with a few samples to help with using our SDK.\nThese can be found by:\n\nOpening Package Manager\nFinding our SDK "Sequence WaaS SDK"\nClick on "Samples"\nClick "Import" next to any sample you wish to install. This will create a Samples folder under Assets and import the sample there. The sample will be completely mutable as it lives within your Assets folder.\n\n\nThe second sample "Demo Scene" is sample scene that showcases some of the features of our SDK. It serves as a useful supplement to the documentation.\nThe third sample "Demo Tower Defense Game" is a sample game. We began with Unity's Tower Defense Template project and ripped out the save system to replace it with ERC1155s. When importing this sample game into your project, you may get a message "Script Updating Consent" that asks if you want to update the source files to the a newer API. This is because the template project was made on a much earlier version of Unity and some of the scripting APIs used by Unity have changed since the template project was created. You can simply click "Yes, just for these files". Note that, in order to play the demo game, there is some config you need to setup. However, even without configuring the game, we believe the Scripts within the project can be a useful resource when starting out.\n\n","title":"Samples","titles":["Installation","Package Manager - Recommended"]},"137":{"href":"/sdk/unity/02-installation#manual","html":"\n

Installing via Package Manager will put the SDK in a read-only state - note: you will still be able to modify the UI when using Package Manager.

\n

For most use cases, this is ideal. However, we recognize that some advanced users will want the flexibility to edit the SDK as they see fit.

\n

Please note that if you do chose this route that updating the SDK will become more challenging because any changes you make will be overwritten and these changes can easily go unnoticed in a version control system. In general, we feel it is safer to import the SDK in read-only mode via Package Manager and write wrappers to extend as needed, but we empower you to work with our SDK how you see fit.

\n
    \n
  1. Add Newtonsoft.json to your project (if it isn't there already) via package manager. Click on the "+" icon in the Package Manager window > "Add package by name..." and add com.unity.nuget.newtonsoft-json.
  2. \n
  3. Download the latest release of the Sequence Unity SDK UnityPackage
  4. \n
  5. Drag the .unitypackage file into your project window and import it
  6. \n
  7. Import TMP Essentials (if you haven't already). Note: Unity should prompt you to do this automatically if you attempt to Play or Build with a TextMeshPro object in your scene.
  8. \n
","isPage":false,"text":"\nInstalling via Package Manager will put the SDK in a read-only state - note: you will still be able to modify the UI when using Package Manager.\nFor most use cases, this is ideal. However, we recognize that some advanced users will want the flexibility to edit the SDK as they see fit.\nPlease note that if you do chose this route that updating the SDK will become more challenging because any changes you make will be overwritten and these changes can easily go unnoticed in a version control system. In general, we feel it is safer to import the SDK in read-only mode via Package Manager and write wrappers to extend as needed, but we empower you to work with our SDK how you see fit.\n\nAdd Newtonsoft.json to your project (if it isn't there already) via package manager. Click on the "+" icon in the Package Manager window > "Add package by name..." and add com.unity.nuget.newtonsoft-json.\nDownload the latest release of the Sequence Unity SDK UnityPackage\nDrag the .unitypackage file into your project window and import it\nImport TMP Essentials (if you haven't already). Note: Unity should prompt you to do this automatically if you attempt to Play or Build with a TextMeshPro object in your scene.\n","title":"Manual","titles":["Installation"]},"138":{"href":"/sdk/unity/03-setup#setup","html":"\n
    \n
  1. \n

    Navigate to the Resources folder imported via the Setup sample and locate the SequenceConfig ScriptableObject

    \n

    a) If you imported the SDK manually, you will need to create a Resources folder and SequenceConfig

    \n

    b) Create a Resources folder located at Assets/Resources. The SDK uses Resources.Load to load the config ScriptableObject we'll create in the next step.

    \n

    c) On the top bar, click Assets > Create > Sequence > SequenceConfig and place the newly created ScriptableObject at the root of your Resources folder.

    \n
  2. \n
  3. \n

    Fill in SequenceConfig with the appropriate values for your project.

    \n

    a) Url Scheme - You must replace this with a string that is unique to your application. This is very important. Failure to do so will cause unexpected behaviour when signing in with social sign in and it will not work.

    \n

    b) Builder API Keys - These are found in the Builder under Settings > API Access Keys

    \n

    c) WaaS Config Key - This will be given to you by the Sequence team during WaaS onboarding

    \n
  4. \n
","isPage":true,"text":"\n\n\nNavigate to the Resources folder imported via the Setup sample and locate the SequenceConfig ScriptableObject\na) If you imported the SDK manually, you will need to create a Resources folder and SequenceConfig\nb) Create a Resources folder located at Assets/Resources. The SDK uses Resources.Load to load the config ScriptableObject we'll create in the next step.\nc) On the top bar, click Assets > Create > Sequence > SequenceConfig and place the newly created ScriptableObject at the root of your Resources folder.\n\n\nFill in SequenceConfig with the appropriate values for your project.\na) Url Scheme - You must replace this with a string that is unique to your application. This is very important. Failure to do so will cause unexpected behaviour when signing in with social sign in and it will not work.\nb) Builder API Keys - These are found in the Builder under Settings > API Access Keys\nc) WaaS Config Key - This will be given to you by the Sequence team during WaaS onboarding\n\n","title":"Setup","titles":[]},"139":{"href":"/sdk/unity/04-authentication#authentication","html":"\n

As a WaaS SDK, authentication is extremely important. Authentication works by establishing a session signing wallet through association with an OIDC idToken. For more on how our Embedded Wallet works, please see Embedded Wallet docs.

\n

To implement authentication, we recommend using our LoginPanel prefab. Locate this prefab under SequenceExamples > Prefabs and drag it under a Canvas in your scene.\nWe recommend having the Canvas Scaler component attached to your Canvas use the "Scale with Screen Size" UI Scale Mode. This will make it so that the LoginPanel (and any other UI elements under this Canvas) are scaled automatically when switching between build targets.

\n

Note: The LoginPanel is hidden by default. You can open it with the Open method and no arguments. To help with this, the LoginPanel GameObject is not disabled, so feel free to use GetComponentInChildren, FindObjectOfType, or similar to obtain a reference to the LoginPanel MonoBehaviour.

\n

This will provide you easy access to two authentication methods:

\n","isPage":true,"text":"\nAs a WaaS SDK, authentication is extremely important. Authentication works by establishing a session signing wallet through association with an OIDC idToken. For more on how our Embedded Wallet works, please see Embedded Wallet docs.\nTo implement authentication, we recommend using our LoginPanel prefab. Locate this prefab under SequenceExamples > Prefabs and drag it under a Canvas in your scene.\nWe recommend having the Canvas Scaler component attached to your Canvas use the "Scale with Screen Size" UI Scale Mode. This will make it so that the LoginPanel (and any other UI elements under this Canvas) are scaled automatically when switching between build targets.\nNote: The LoginPanel is hidden by default. You can open it with the Open method and no arguments. To help with this, the LoginPanel GameObject is not disabled, so feel free to use GetComponentInChildren, FindObjectOfType, or similar to obtain a reference to the LoginPanel MonoBehaviour.\nThis will provide you easy access to two authentication methods:\n","title":"Authentication","titles":[]},"140":{"href":"/sdk/unity/04-authentication#1-email-sign-in","html":"\n

Available on all platforms, email sign in leverages Amazon Cognito and provides the user with a 2FA challenge - a 6 digit code emailed to the entered address for the user to enter on the next page.\nOnce the user successfully completes the 2FA challenge, the SDK will receive an idToken in JWT format from Amazon Cognito and proceed to establish the session with WaaS API.

\n","isPage":false,"text":"\nAvailable on all platforms, email sign in leverages Amazon Cognito and provides the user with a 2FA challenge - a 6 digit code emailed to the entered address for the user to enter on the next page.\nOnce the user successfully completes the 2FA challenge, the SDK will receive an idToken in JWT format from Amazon Cognito and proceed to establish the session with WaaS API.\n","title":"1. Email Sign In","titles":["Authentication"]},"141":{"href":"/sdk/unity/04-authentication#2-social-sign-in","html":"\n

Available on all platforms except WebGL (currently), social sign in uses OIDC with the implicit flow to allow users to login via their existing Google, Discord, Facebook, or Apple accounts.\nOnce the user successfully signs in, an idToken is returned via deep link to the application.\nIn order to enable deep linking, we must register a custom URL scheme for our application. There are some platform specific requirements to set this up.

\nNote: social sign in does not work in the Editor as we cannot register a custom URL scheme.\n","isPage":false,"text":"\nAvailable on all platforms except WebGL (currently), social sign in uses OIDC with the implicit flow to allow users to login via their existing Google, Discord, Facebook, or Apple accounts.\nOnce the user successfully signs in, an idToken is returned via deep link to the application.\nIn order to enable deep linking, we must register a custom URL scheme for our application. There are some platform specific requirements to set this up.\nNote: social sign in does not work in the Editor as we cannot register a custom URL scheme.\n","title":"2. Social Sign in","titles":["Authentication"]},"142":{"href":"/sdk/unity/04-authentication#ios","html":"\n
    \n
  1. Open the iOS Player Settings window (menu: Edit > Project Settings > Player Settings, then select iOS).
  2. \n
  3. Select Other Settings, then scroll down to Configuration.
  4. \n
  5. Expand the Supported URL schemes section, and add 1 to the size.
  6. \n
  7. In the new Element N field, enter the URL scheme you've configured in SequenceConfig.
  8. \n
\n

\"iOS

\n","isPage":false,"text":"\n\nOpen the iOS Player Settings window (menu: Edit > Project Settings > Player Settings, then select iOS).\nSelect Other Settings, then scroll down to Configuration.\nExpand the Supported URL schemes section, and add 1 to the size.\nIn the new Element N field, enter the URL scheme you've configured in SequenceConfig.\n\n\n","title":"iOS","titles":["Authentication","2. Social Sign in"]},"143":{"href":"/sdk/unity/04-authentication#macos","html":"\n
    \n
  1. Open the Windows/Mac/Linux Player Settings window (menu: Edit > Project Settings > Player Settings, then select Windows/Mac/Linux).
  2. \n
  3. Select Other Settings, then scroll down to Mac Configuration.
  4. \n
  5. Expand the Supported URL schemes section, and add 1 to the size.
  6. \n
  7. In the new Element N field, enter the URL scheme you've configured in SequenceConfig.
  8. \n
\n

\"Mac

\n","isPage":false,"text":"\n\nOpen the Windows/Mac/Linux Player Settings window (menu: Edit > Project Settings > Player Settings, then select Windows/Mac/Linux).\nSelect Other Settings, then scroll down to Mac Configuration.\nExpand the Supported URL schemes section, and add 1 to the size.\nIn the new Element N field, enter the URL scheme you've configured in SequenceConfig.\n\n\n","title":"MacOS","titles":["Authentication","2. Social Sign in"]},"144":{"href":"/sdk/unity/04-authentication#pc","html":"\n

No additional steps required.

\n","isPage":false,"text":"\nNo additional steps required.\n","title":"PC","titles":["Authentication","2. Social Sign in"]},"145":{"href":"/sdk/unity/04-authentication#android","html":"\n
    \n
  1. In the Project window, browse to Assets > Plugins > Android.
  2. \n
\n

a) Note: in Unity versions 2021.2 and up this path doesn't exist by default. Please navigate to Edit > Project Settings > Player and under the Android Publishing Settings, enable Custom Main Manifest in the Build section. See https://docs.unity3d.com/Manual/deep-linking-android.html for more info.

\n
    \n
  1. If it doesn't already exist, create a new file and name it AndroidManifest.xml.
  2. \n
  3. Paste the following XML into the file, or, if you already have one, add the new keys from this XML to it.
  4. \n
  5. Make sure to replace 'sdk-powered-by-sequence' with the Url Scheme you set in SequenceConfig
  6. \n
\n
   <?xml version="1.0" encoding="utf-8"?>\n   <manifest\n     xmlns:android="http://schemas.android.com/apk/res/android"\n     xmlns:tools="http://schemas.android.com/tools"\n   >\n     <application>\n       <activity\n         android:name="com.unity3d.player.UnityPlayerActivity"\n         android:theme="@style/UnityThemeSelector"\n       >\n         <intent-filter>\n           <action android:name="android.intent.action.MAIN" />\n           <category android:name="android.intent.category.LAUNCHER" />\n         </intent-filter>\n         <intent-filter>\n           <action android:name="android.intent.action.VIEW" />\n           <category android:name="android.intent.category.DEFAULT" />\n           <category android:name="android.intent.category.BROWSABLE" />\n           <data android:scheme="sdk-powered-by-sequence"/> <!-- substitute 'sdk-powered-by-sequence' with the Url Scheme you set in `SequenceConfig` -->\n         </intent-filter>\n       </activity>\n     </application>\n   </manifest>
\n

b) Note: Unity 2022 versions prior to 2022.3.7f1 and 2023 versions prior to 2023.1.7f1, 2023.2.0b3, or 2023.3.0a1 contain a bug with Android deep-linking. Please use this XML instead.

\n
<?xml version="1.0" encoding="utf-8"?>\n<manifest\n        xmlns:android="http://schemas.android.com/apk/res/android"\n        xmlns:tools="http://schemas.android.com/tools"\n>\n    <application>\n        <activity\n                android:name="com.unity3d.player.UnityPlayerActivity"\n                android:theme="@style/UnityThemeSelector"\n                android:exported="true">\n            <intent-filter>\n                <action android:name="android.intent.action.MAIN" />\n                <category android:name="android.intent.category.LAUNCHER" />\n            </intent-filter>\n            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />\n            <intent-filter>\n                <action android:name="android.intent.action.VIEW" />\n                <category android:name="android.intent.category.DEFAULT" />\n                <category android:name="android.intent.category.BROWSABLE" />\n                <data android:scheme="sdk-powered-by-sequence"/> <!-- substitute 'sdk-powered-by-sequence' with the Url Scheme you set in `SequenceConfig` -->\n            </intent-filter>\n        </activity>\n    </application>\n</manifest>
\n

i.e. add <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> after your first intent-filter. Please see https://forum.unity.com/threads/deep-linking-in-unity-2022-the-app-is-restarted.1447300/ for more info.

\n","isPage":false,"text":"\n\nIn the Project window, browse to Assets > Plugins > Android.\n\na) Note: in Unity versions 2021.2 and up this path doesn't exist by default. Please navigate to Edit > Project Settings > Player and under the Android Publishing Settings, enable Custom Main Manifest in the Build section. See https://docs.unity3d.com/Manual/deep-linking-android.html for more info.\n\nIf it doesn't already exist, create a new file and name it AndroidManifest.xml.\nPaste the following XML into the file, or, if you already have one, add the new keys from this XML to it.\nMake sure to replace 'sdk-powered-by-sequence' with the Url Scheme you set in SequenceConfig\n\n <?xml version="1.0" encoding="utf-8"?>\n <manifest\n xmlns:android="http://schemas.android.com/apk/res/android"\n xmlns:tools="http://schemas.android.com/tools"\n >\n <application>\n <activity\n android:name="com.unity3d.player.UnityPlayerActivity"\n android:theme="@style/UnityThemeSelector"\n >\n <intent-filter>\n <action android:name="android.intent.action.MAIN" />\n <category android:name="android.intent.category.LAUNCHER" />\n </intent-filter>\n <intent-filter>\n <action android:name="android.intent.action.VIEW" />\n <category android:name="android.intent.category.DEFAULT" />\n <category android:name="android.intent.category.BROWSABLE" />\n <data android:scheme="sdk-powered-by-sequence"/> <!-- substitute 'sdk-powered-by-sequence' with the Url Scheme you set in `SequenceConfig` -->\n </intent-filter>\n </activity>\n </application>\n </manifest>\nb) Note: Unity 2022 versions prior to 2022.3.7f1 and 2023 versions prior to 2023.1.7f1, 2023.2.0b3, or 2023.3.0a1 contain a bug with Android deep-linking. Please use this XML instead.\n<?xml version="1.0" encoding="utf-8"?>\n<manifest\n xmlns:android="http://schemas.android.com/apk/res/android"\n xmlns:tools="http://schemas.android.com/tools"\n>\n <application>\n <activity\n android:name="com.unity3d.player.UnityPlayerActivity"\n android:theme="@style/UnityThemeSelector"\n android:exported="true">\n <intent-filter>\n <action android:name="android.intent.action.MAIN" />\n <category android:name="android.intent.category.LAUNCHER" />\n </intent-filter>\n <meta-data android:name="unityplayer.UnityActivity" android:value="true" />\n <intent-filter>\n <action android:name="android.intent.action.VIEW" />\n <category android:name="android.intent.category.DEFAULT" />\n <category android:name="android.intent.category.BROWSABLE" />\n <data android:scheme="sdk-powered-by-sequence"/> <!-- substitute 'sdk-powered-by-sequence' with the Url Scheme you set in `SequenceConfig` -->\n </intent-filter>\n </activity>\n </application>\n</manifest>\ni.e. add <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> after your first intent-filter. Please see https://forum.unity.com/threads/deep-linking-in-unity-2022-the-app-is-restarted.1447300/ for more info.\n","title":"Android","titles":["Authentication","2. Social Sign in"]},"146":{"href":"/sdk/unity/04-authentication#webgl","html":"\n

Coming soon.

\n","isPage":false,"text":"\nComing soon.\n","title":"WebGL","titles":["Authentication","2. Social Sign in"]},"147":{"href":"/sdk/unity/04-authentication#connecting-with-waas","html":"\n

Once we've received the idToken from either email login or social sign in, the SDK will handle connecting with WaaS servers for you. If you're curious how this is done, please see ConnectToWaaS in WaaSLogin.cs.\nYou'll want to subscribe to the WaaSWallet.OnWaaSWalletCreated event. This can be done with the following code snippet:

\n
WaaSWallet.OnWaaSWalletCreated += OnWaaSWalletCreatedHandler;\n\npublic void OnWaaSWalletCreatedHandler(WaaSWallet wallet) {\n  // Do something\n}
\n

where OnWaaSWalletCreatedHandler is a function accepting a WaaSWallet as it's only parameter. If you're unfamiliar with working with events in Unity, check out this great Reddit post!

\n

Congratulations! You've just connected your user with WaaS, creating them a new account and non-custodial smart contract wallet as needed.

","isPage":false,"text":"\nOnce we've received the idToken from either email login or social sign in, the SDK will handle connecting with WaaS servers for you. If you're curious how this is done, please see ConnectToWaaS in WaaSLogin.cs.\nYou'll want to subscribe to the WaaSWallet.OnWaaSWalletCreated event. This can be done with the following code snippet:\nWaaSWallet.OnWaaSWalletCreated += OnWaaSWalletCreatedHandler;\n\npublic void OnWaaSWalletCreatedHandler(WaaSWallet wallet) {\n // Do something\n}\nwhere OnWaaSWalletCreatedHandler is a function accepting a WaaSWallet as it's only parameter. If you're unfamiliar with working with events in Unity, check out this great Reddit post!\nCongratulations! You've just connected your user with WaaS, creating them a new account and non-custodial smart contract wallet as needed.","title":"Connecting with WaaS","titles":["Authentication"]},"148":{"href":"/sdk/unity/05-write-to-blockchain#write-to-blockchain","html":"\n

The blockchain can be thought of as a general-purpose, publically viewable and verified, database. To write to a blockchain, similar to with a typical database, you must make a transaction.

\n

Typically, creating a blockchain transaction is rather complex, but WaaS handles that complexity for you and exposes 5 types of Transactions.

\n

Sending a transaction is an asynchronous Task. You can use await when calling WaaSWallet.SendTransaction from within an async Task if you wish to obtain the TransactionReturn object directly. Or, you can take the recommended approach which is to setup handler functions for the WaaSWallet.OnSendTransactionComplete and WaaSWallet.OnSendTransactionFailed events and call the WaaSWallet.SendTransaction method from anywhere (without await). For example:

\n
public void OnSendTransactionCompleteHandler(SuccessfulTransactionReturn result) {\n    // Do something\n}\n\npublic void OnSendTransactionFailedHandler(FailedTransactionReturn result) {\n    // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n    wallet.OnSendTransactionComplete += OnSendTransactionCompleteHandler;\n    wallet.OnSendTransactionFailed += OnSendTransactionFailedHandler;\n}
\n

If you're unfamiliar with working with events in Unity, check out this great Reddit post!

\n","isPage":true,"text":"\nThe blockchain can be thought of as a general-purpose, publically viewable and verified, database. To write to a blockchain, similar to with a typical database, you must make a transaction.\nTypically, creating a blockchain transaction is rather complex, but WaaS handles that complexity for you and exposes 5 types of Transactions.\nSending a transaction is an asynchronous Task. You can use await when calling WaaSWallet.SendTransaction from within an async Task if you wish to obtain the TransactionReturn object directly. Or, you can take the recommended approach which is to setup handler functions for the WaaSWallet.OnSendTransactionComplete and WaaSWallet.OnSendTransactionFailed events and call the WaaSWallet.SendTransaction method from anywhere (without await). For example:\npublic void OnSendTransactionCompleteHandler(SuccessfulTransactionReturn result) {\n // Do something\n}\n\npublic void OnSendTransactionFailedHandler(FailedTransactionReturn result) {\n // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n wallet.OnSendTransactionComplete += OnSendTransactionCompleteHandler;\n wallet.OnSendTransactionFailed += OnSendTransactionFailedHandler;\n}\nIf you're unfamiliar with working with events in Unity, check out this great Reddit post!\n","title":"Write to Blockchain","titles":[]},"149":{"href":"/sdk/unity/05-write-to-blockchain#rawtransaction","html":"\n

The most basic form of a Transaction, a raw transaction is very useful to send ETH or the gas currency of the network you are interacting with to an Address.

\n

For example, to send one MATIC to 0x9766bf76b2E3e7BCB8c61410A3fC873f1e89b43f you can use this snippet:

\n
_wallet.SendTransaction(\n    Chain.Polygon,\n    new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction("0x9766bf76b2E3e7BCB8c61410A3fC873f1e89b43f", DecimalNormalizer.Normalize(1))\n    });
\n

where _wallet is a WaaSWallet.

\n

Note: the EVM does not support floating point numbers. As a result, token (and gas currency) values are represented by whole numbers and a "decimals" value. 1 ETH (or in the example above 1 MATIC) is represented as 1000000000000000000 (1 * 10^18) as ETH, MATIC, and most gas currencies have a "decimals" value of 18. DecimalNormalizer.Normalize (above) is a basic helper function that will return input value * 10^decimals and optionally accepts a "decimals" value as a second parameter (defaulting to 18 when not provided).

\n

Additionally, you can include data with a raw transaction in hexadecimal format as a string. For more on this, please see the advanced section of this documentation.

\n","isPage":false,"text":"\nThe most basic form of a Transaction, a raw transaction is very useful to send ETH or the gas currency of the network you are interacting with to an Address.\nFor example, to send one MATIC to 0x9766bf76b2E3e7BCB8c61410A3fC873f1e89b43f you can use this snippet:\n_wallet.SendTransaction(\n Chain.Polygon,\n new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction("0x9766bf76b2E3e7BCB8c61410A3fC873f1e89b43f", DecimalNormalizer.Normalize(1))\n });\nwhere _wallet is a WaaSWallet.\nNote: the EVM does not support floating point numbers. As a result, token (and gas currency) values are represented by whole numbers and a "decimals" value. 1 ETH (or in the example above 1 MATIC) is represented as 1000000000000000000 (1 * 10^18) as ETH, MATIC, and most gas currencies have a "decimals" value of 18. DecimalNormalizer.Normalize (above) is a basic helper function that will return input value * 10^decimals and optionally accepts a "decimals" value as a second parameter (defaulting to 18 when not provided).\nAdditionally, you can include data with a raw transaction in hexadecimal format as a string. For more on this, please see the advanced section of this documentation.\n","title":"RawTransaction","titles":["Write to Blockchain"]},"150":{"href":"/sdk/unity/05-write-to-blockchain#senderc20","html":"\n

An ERC20 token is the fungible token standard. You can easily deploy an ERC20 contract and mint tokens using our Builder. Learn how in our Builder documentation.

\n

To send an ERC20 token transaction, you can use this code snippet:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new SendERC20(\n            erc20TokenAddress,\n            ToAddress,\n            AmountAsString),\n    });
\n

Note: as above, it is recommended to use DecimalNormalizer.Normalize to convert the amount from human readable format to EVM format. Please make sure to include the optional "decimals" int parameter if your ERC20 token has a "decimals" value that is not 18. If you're not sure how many "decimals" your ERC20 has, this can be easily read on the Builder using the "decimals" method under "Read Contract".

\n","isPage":false,"text":"\nAn ERC20 token is the fungible token standard. You can easily deploy an ERC20 contract and mint tokens using our Builder. Learn how in our Builder documentation.\nTo send an ERC20 token transaction, you can use this code snippet:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new SendERC20(\n erc20TokenAddress,\n ToAddress,\n AmountAsString),\n });\nNote: as above, it is recommended to use DecimalNormalizer.Normalize to convert the amount from human readable format to EVM format. Please make sure to include the optional "decimals" int parameter if your ERC20 token has a "decimals" value that is not 18. If you're not sure how many "decimals" your ERC20 has, this can be easily read on the Builder using the "decimals" method under "Read Contract".\n","title":"sendERC20","titles":["Write to Blockchain"]},"151":{"href":"/sdk/unity/05-write-to-blockchain#complex-erc20-interactions","html":"\n

For interactions with ERC20 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC20 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.

\n

First, you'll need to create an ERC20 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC20 standard (not recommended).

\n
ERC20 myToken = new ERC20(myTokenAddress);
\n

with this reference, you'll have access to all of the methods implemented by the ERC20 class. Any method that returns a CallContractFunction, e.g. Mint, can be used when creating a RawTransaction with WaaS. For example:

\n
ERC20 myToken = new ERC20(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction(myToken.Mint(toAddress, DecimalNormalizer.NormalizeAsBigInteger(amount))),\n    });
\n","isPage":false,"text":"\nFor interactions with ERC20 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC20 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.\nFirst, you'll need to create an ERC20 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC20 standard (not recommended).\nERC20 myToken = new ERC20(myTokenAddress);\nwith this reference, you'll have access to all of the methods implemented by the ERC20 class. Any method that returns a CallContractFunction, e.g. Mint, can be used when creating a RawTransaction with WaaS. For example:\nERC20 myToken = new ERC20(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction(myToken.Mint(toAddress, DecimalNormalizer.NormalizeAsBigInteger(amount))),\n });\n","title":"Complex ERC20 Interactions","titles":["Write to Blockchain","sendERC20"]},"152":{"href":"/sdk/unity/05-write-to-blockchain#senderc721","html":"\n

An ERC721 token is the non-fungible standard, you've probably heard of them as NFTs. You can easily deploy an ERC721 contract and mint tokens using our Builder. Learn how in our Builder documentation.

\n

To send an ERC721 token transaction, you can use this code snippet:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new SendERC721(\n            erc721TokenAddress,\n            ToAddress,\n            TokenIdAsString),\n    });
\n","isPage":false,"text":"\nAn ERC721 token is the non-fungible standard, you've probably heard of them as NFTs. You can easily deploy an ERC721 contract and mint tokens using our Builder. Learn how in our Builder documentation.\nTo send an ERC721 token transaction, you can use this code snippet:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new SendERC721(\n erc721TokenAddress,\n ToAddress,\n TokenIdAsString),\n });\n","title":"sendERC721","titles":["Write to Blockchain"]},"153":{"href":"/sdk/unity/05-write-to-blockchain#complex-erc721-interactions","html":"\n

For interactions with ERC721 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC21 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.

\n

First, you'll need to create an ERC721 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC721 standard (not recommended).

\n
ERC721 myToken = new ERC721(myTokenAddress);
\n

with this reference, you'll have access to all of the methods implemented by the ERC721 class. Any method that returns a CallContractFunction, e.g. SafeMint, can be used when creating a RawTransaction with WaaS. For example:

\n
ERC721 myToken = new ERC721(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction(myToken.SafeMint(toAddress)),\n    });
\n","isPage":false,"text":"\nFor interactions with ERC721 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC21 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.\nFirst, you'll need to create an ERC721 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC721 standard (not recommended).\nERC721 myToken = new ERC721(myTokenAddress);\nwith this reference, you'll have access to all of the methods implemented by the ERC721 class. Any method that returns a CallContractFunction, e.g. SafeMint, can be used when creating a RawTransaction with WaaS. For example:\nERC721 myToken = new ERC721(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction(myToken.SafeMint(toAddress)),\n });\n","title":"Complex ERC721 Interactions","titles":["Write to Blockchain","sendERC721"]},"154":{"href":"/sdk/unity/05-write-to-blockchain#senderc1155","html":"\n

An ERC1155 token is the multi token standard, often referred to as SFTs (semi-fungible tokens). As co-creators of the ERC1155 standard we are firm believers in its unparalleled usefulness for games. You can easily deploy an ERC1155 contract and mint tokens using our Builder. Learn how in our Builder documentation.

\n

To send an ERC1155 token transaction, you can use this code snippet:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new SendERC1155(\n            erc1155TokenAddress,\n            ToAddress,\n            new SendERC1155Values[]\n            {\n                new SendERC1155Values(TokenIdAsString, AmountAsString),\n                ...\n            }),\n    });
\n

Note: you can send multiple token ids from the same ERC1155 contract in a single transaction by including multiple SendERC1155Values objects in the transaction

\n","isPage":false,"text":"\nAn ERC1155 token is the multi token standard, often referred to as SFTs (semi-fungible tokens). As co-creators of the ERC1155 standard we are firm believers in its unparalleled usefulness for games. You can easily deploy an ERC1155 contract and mint tokens using our Builder. Learn how in our Builder documentation.\nTo send an ERC1155 token transaction, you can use this code snippet:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new SendERC1155(\n erc1155TokenAddress,\n ToAddress,\n new SendERC1155Values[]\n {\n new SendERC1155Values(TokenIdAsString, AmountAsString),\n ...\n }),\n });\nNote: you can send multiple token ids from the same ERC1155 contract in a single transaction by including multiple SendERC1155Values objects in the transaction\n","title":"sendERC1155","titles":["Write to Blockchain"]},"155":{"href":"/sdk/unity/05-write-to-blockchain#complex-erc1155-interactions","html":"\n

For interactions with ERC1155 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC1155 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.

\n

First, you'll need to create an ERC1155 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC1155 standard (not recommended).

\n
ERC1155 myToken = new ERC1155(myTokenAddress);
\n

with this reference, you'll have access to all of the methods implemented by the ERC1155 class. Any method that returns a CallContractFunction, e.g. Mint, can be used when creating a RawTransaction with WaaS. For example:

\n
ERC1155 myToken = new ERC1155(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction(myToken.Mint(toAddress, tokenId, amount)),\n    });
\n","isPage":false,"text":"\nFor interactions with ERC1155 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC1155 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.\nFirst, you'll need to create an ERC1155 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC1155 standard (not recommended).\nERC1155 myToken = new ERC1155(myTokenAddress);\nwith this reference, you'll have access to all of the methods implemented by the ERC1155 class. Any method that returns a CallContractFunction, e.g. Mint, can be used when creating a RawTransaction with WaaS. For example:\nERC1155 myToken = new ERC1155(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction(myToken.Mint(toAddress, tokenId, amount)),\n });\n","title":"Complex ERC1155 Interactions","titles":["Write to Blockchain","sendERC1155"]},"156":{"href":"/sdk/unity/05-write-to-blockchain#delayedencode","html":"\n

When calling a smart contract on an EVM-based network, the client goes through a complex process known as "ABI encoding" where the function signature you want to call as well as the parameters you're providing are encoded into a binary format. This process is complicated and error-prone so we've abstracted it all away so that you don't have to deal with it. But, if you're curious to learn how it works, please see this document.

\n

A DelayedEncode transaction allows you to call any method on an arbitrary smart contract, allowing us to handle the complicated ABI encoding process.

\n

To send a DelayedEncode transaction, you can use this code snippet:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new DelayedEncode(ContractAddress, ValueAsString, new DelayedEncodeData(\n            ContractABIAsString,\n            ParametersAsObjectArray,\n            FunctionNameAsString)),\n    });
\n

Let's examine the above to get a better understanding of some of the variables that may be non-obvious.

\n

ValueAsString: This will usually be "0" unless you are calling a payable method denoted by the payable keyword in the smart contract definition. If you are calling a payable method, it is recommended to use DecimalNormalizer.Normalize to convert the amount from human readable format to EVM format.

\n

ContractABIAsString: This can either be the entire ABI or just the function you plan on interacting with. If you're not familiar with ABIs, we'd recommend copy-pasting the function signature (with parameters) from the contract source code on Etherscan (or the appropriate block explorer for your network) and removing the whitespace and variable names.

\n

ParametersAsObjectArray: The parameters you want to provide to the method you wish to call. No need to provide the parameter names, just their values in the order they appear in the ABI. Provide parameters in string format when in doubt.

\n

FunctionNameAsString: The name of the function you want to call as it appears in the ABI (or source code). Exclude parentheses and parameters.

\n

Putting this together, an example of using delayed encode to call the "mint" function on an ERC20 would look like this:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new DelayedEncode(ContractAddress, "0", new DelayedEncodeData(\n            "mint(address,uint256)",\n            new object[]\n            {\n                ToAddress, DecimalNormalizer.Normalize(1)\n            },\n            "mint")),\n    });
\n","isPage":false,"text":"\nWhen calling a smart contract on an EVM-based network, the client goes through a complex process known as "ABI encoding" where the function signature you want to call as well as the parameters you're providing are encoded into a binary format. This process is complicated and error-prone so we've abstracted it all away so that you don't have to deal with it. But, if you're curious to learn how it works, please see this document.\nA DelayedEncode transaction allows you to call any method on an arbitrary smart contract, allowing us to handle the complicated ABI encoding process.\nTo send a DelayedEncode transaction, you can use this code snippet:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new DelayedEncode(ContractAddress, ValueAsString, new DelayedEncodeData(\n ContractABIAsString,\n ParametersAsObjectArray,\n FunctionNameAsString)),\n });\nLet's examine the above to get a better understanding of some of the variables that may be non-obvious.\nValueAsString: This will usually be "0" unless you are calling a payable method denoted by the payable keyword in the smart contract definition. If you are calling a payable method, it is recommended to use DecimalNormalizer.Normalize to convert the amount from human readable format to EVM format.\nContractABIAsString: This can either be the entire ABI or just the function you plan on interacting with. If you're not familiar with ABIs, we'd recommend copy-pasting the function signature (with parameters) from the contract source code on Etherscan (or the appropriate block explorer for your network) and removing the whitespace and variable names.\nParametersAsObjectArray: The parameters you want to provide to the method you wish to call. No need to provide the parameter names, just their values in the order they appear in the ABI. Provide parameters in string format when in doubt.\nFunctionNameAsString: The name of the function you want to call as it appears in the ABI (or source code). Exclude parentheses and parameters.\nPutting this together, an example of using delayed encode to call the "mint" function on an ERC20 would look like this:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new DelayedEncode(ContractAddress, "0", new DelayedEncodeData(\n "mint(address,uint256)",\n new object[]\n {\n ToAddress, DecimalNormalizer.Normalize(1)\n },\n "mint")),\n });\n","title":"DelayedEncode","titles":["Write to Blockchain"]},"157":{"href":"/sdk/unity/05-write-to-blockchain#batch-transactions","html":"\n

Using the magic of the Sequence Smart Contract wallet, our SDK allows you to seemlessly batch transactions together. Batching transactions together is extremely beneficial as it provides material gas savings and allows you to create complex transactions, that either all pass or all fail, without deploying custom smart contracts for each bespoke use case, opening a whole new realm of design possibilities!

\n

Sending a batch transaction is easy! Simply include multiple transactions, of any type, in your transaction array when making the SendTransaction request.

\n

For example - sending a transaction of each type in a batch:

\n
_wallet.SendTransaction(\n    Chain.Polygon,\n    new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction(ToAddress, DecimalNormalizer.Normalize(1)),\n        new SendERC20(\n            erc20TokenAddress,\n            ToAddress,\n            AmountAsString),\n        new RawTransaction(new ERC20(erc20TokenAddress).Burn(DecimalNormalizer.NormalizeAsBigInteger(amount))),\n        new SendERC721(\n            erc721TokenAddress,\n            ToAddress,\n            TokenIdAsString),\n        new SendERC1155(\n            erc1155TokenAddress,\n            ToAddress,\n            new SendERC1155Values[]\n            {\n                new SendERC1155Values(TokenIdAsString, AmountAsString),\n                ...\n            }),\n        new DelayedEncode(ContractAddress, ValueAsString, new DelayedEncodeData(\n            ContractABIAsString,\n            ParametersAsObjectArray,\n            FunctionNameAsString)),\n    });
\n

Since these transactions are all batched into a single transaction by the Sequence Smart Contract Wallet before being submitted to the network, you will receive only one transaction receipt.

","isPage":false,"text":"\nUsing the magic of the Sequence Smart Contract wallet, our SDK allows you to seemlessly batch transactions together. Batching transactions together is extremely beneficial as it provides material gas savings and allows you to create complex transactions, that either all pass or all fail, without deploying custom smart contracts for each bespoke use case, opening a whole new realm of design possibilities!\nSending a batch transaction is easy! Simply include multiple transactions, of any type, in your transaction array when making the SendTransaction request.\nFor example - sending a transaction of each type in a batch:\n_wallet.SendTransaction(\n Chain.Polygon,\n new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction(ToAddress, DecimalNormalizer.Normalize(1)),\n new SendERC20(\n erc20TokenAddress,\n ToAddress,\n AmountAsString),\n new RawTransaction(new ERC20(erc20TokenAddress).Burn(DecimalNormalizer.NormalizeAsBigInteger(amount))),\n new SendERC721(\n erc721TokenAddress,\n ToAddress,\n TokenIdAsString),\n new SendERC1155(\n erc1155TokenAddress,\n ToAddress,\n new SendERC1155Values[]\n {\n new SendERC1155Values(TokenIdAsString, AmountAsString),\n ...\n }),\n new DelayedEncode(ContractAddress, ValueAsString, new DelayedEncodeData(\n ContractABIAsString,\n ParametersAsObjectArray,\n FunctionNameAsString)),\n });\nSince these transactions are all batched into a single transaction by the Sequence Smart Contract Wallet before being submitted to the network, you will receive only one transaction receipt.","title":"Batch Transactions","titles":["Write to Blockchain"]},"158":{"href":"/sdk/unity/06-read-from-blockchain#read-from-blockchain","html":"\n

Reading from the blockchain is done using Unity-Native implementation of our Sequence Indexer.

\n

We recommend creating an instance of the ChainIndexer class. This will expose you to all the functionality offered by the IIndexer interface.

\n
IIndexer polygonIndexer = new ChainIndexer(Chain.Polygon);
\n

ChainIndexer is essentially a wrapper of the Indexer static class which is fully documented here: https://docs.sequence.xyz/unity-sdk/indexer/guides.

","isPage":true,"text":"\nReading from the blockchain is done using Unity-Native implementation of our Sequence Indexer.\nWe recommend creating an instance of the ChainIndexer class. This will expose you to all the functionality offered by the IIndexer interface.\nIIndexer polygonIndexer = new ChainIndexer(Chain.Polygon);\nChainIndexer is essentially a wrapper of the Indexer static class which is fully documented here: https://docs.sequence.xyz/unity-sdk/indexer/guides.","title":"Read from Blockchain","titles":[]},"159":{"href":"/sdk/unity/07-sign-messages#sign-messages","html":"\n

Signing a message is an asynchronous Task. You can use await when calling WaaSWallet.SignMessage from within an async Task if you wish to obtain the SignMessageReturn object directly. Or, you can take the recommended approach which is to setup a handler function for the WaaSWallet.OnSignMessageComplete event and call the WaaSWallet.SignMessage method from anywhere (without await). For example:

\n
public void OnSignMessageCompleteHandler(string signature) {\n    // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n    wallet.OnSignMessageComplete += OnSignMessageCompleteHandler;\n}
\n
_wallet.SignMessage(Chain.Polygon, "Message to sign");
\n

If you're unfamiliar with working with events in Unity, check out this great Reddit post!

","isPage":true,"text":"\nSigning a message is an asynchronous Task. You can use await when calling WaaSWallet.SignMessage from within an async Task if you wish to obtain the SignMessageReturn object directly. Or, you can take the recommended approach which is to setup a handler function for the WaaSWallet.OnSignMessageComplete event and call the WaaSWallet.SignMessage method from anywhere (without await). For example:\npublic void OnSignMessageCompleteHandler(string signature) {\n // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n wallet.OnSignMessageComplete += OnSignMessageCompleteHandler;\n}\n_wallet.SignMessage(Chain.Polygon, "Message to sign");\nIf you're unfamiliar with working with events in Unity, check out this great Reddit post!","title":"Sign Messages","titles":[]},"160":{"href":"/sdk/unity/08-deploy-contracts#contract-deployment","html":"\n

While, in general, we would recommend deploying your smart contracts via the Builder, we recognize that there are some use cases where deploying a smart contract from Unity (or a Made-With-Unity application) is useful.

\n

Contract deployment involves sending a transaction, which is done via an asynchronous Task. You can use await when calling WaaSWallet.DeployContract from within an async Task if you wish to obtain the ContractDeploymentReturn object directly. Or, you can take the recommended approach which is to setup handler functions for the WaaSWallet.OnDeployContractComplete and WaaSWallet.OnDeployContractFailed events and call the WaaSWallet.DeployContract method from anywhere (without await).

\n

WaaSWallet.DeployContract is essentially a wrapper for a very special WaaSWallet.SendTransaction call and therefore, you can expect to still receive the WaaSWallet.OnSendTransactionComplete or WaaSWallet.OnSendTransactionFailed events in addition.

\n
public void OnDeployContractCompleteHandler(SuccessfulContractDeploymentReturn result) {\n    Address newlyDeployedContractAddress = result.DeployedContractAddress;\n\n    // Do something\n}\n\npublic void OnDeployContractFailedHandler(FailedContractDeploymentReturn result) {\n    // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n    wallet.OnDeployContractComplete += OnDeployContractCompleteHandler;\n    wallet.OnDeployContractFailed += OnDeployContractFailedHandler;\n}
\n

If you're unfamiliar with working with events in Unity, check out this great Reddit post!

\n

To deploy a contract you'll need to first compile your smart contract code into bytecode and add the bytecode as a hexadecimal string in one of your C# scripts.

\n

To deploy a smart contract, you can use this code snippet:

\n
string bytecode = "Here you'll paste your compiled bytecode"\n_wallet.DeployContract(Chain.Polygon, bytecode);
","isPage":true,"text":"\nWhile, in general, we would recommend deploying your smart contracts via the Builder, we recognize that there are some use cases where deploying a smart contract from Unity (or a Made-With-Unity application) is useful.\nContract deployment involves sending a transaction, which is done via an asynchronous Task. You can use await when calling WaaSWallet.DeployContract from within an async Task if you wish to obtain the ContractDeploymentReturn object directly. Or, you can take the recommended approach which is to setup handler functions for the WaaSWallet.OnDeployContractComplete and WaaSWallet.OnDeployContractFailed events and call the WaaSWallet.DeployContract method from anywhere (without await).\nWaaSWallet.DeployContract is essentially a wrapper for a very special WaaSWallet.SendTransaction call and therefore, you can expect to still receive the WaaSWallet.OnSendTransactionComplete or WaaSWallet.OnSendTransactionFailed events in addition.\npublic void OnDeployContractCompleteHandler(SuccessfulContractDeploymentReturn result) {\n Address newlyDeployedContractAddress = result.DeployedContractAddress;\n\n // Do something\n}\n\npublic void OnDeployContractFailedHandler(FailedContractDeploymentReturn result) {\n // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n wallet.OnDeployContractComplete += OnDeployContractCompleteHandler;\n wallet.OnDeployContractFailed += OnDeployContractFailedHandler;\n}\nIf you're unfamiliar with working with events in Unity, check out this great Reddit post!\nTo deploy a contract you'll need to first compile your smart contract code into bytecode and add the bytecode as a hexadecimal string in one of your C# scripts.\nTo deploy a smart contract, you can use this code snippet:\nstring bytecode = "Here you'll paste your compiled bytecode"\n_wallet.DeployContract(Chain.Polygon, bytecode);","title":"Contract Deployment","titles":[]},"161":{"href":"/sdk/unity/09-wallet-ui#wallet-ui","html":"\n

As a Wallet as a Service product, this SDK requires no UI. However, as we expect some apps will still choose to provide some form of wallet UI to users, we are making efforts to provide a default UI for you to use.

\n

This UI can be found under SequenceExamples.

\n

To add the UI to your scene, you can add the WalletPanel prefab found under SequenceExamples > Prefabs. It is opened using the Open method; you must provide an IWallet (e.g. a WaaSWallet) as an argument.

\n

You'll notice that the UI is still a work in progress and is also using mocks in some places (fetching transaction history and prices). These will be replaced in coming updates of the SDK, but please feel free to replace them on your own (and for bonus points, submit a PR!).

\n","isPage":true,"text":"\nAs a Wallet as a Service product, this SDK requires no UI. However, as we expect some apps will still choose to provide some form of wallet UI to users, we are making efforts to provide a default UI for you to use.\nThis UI can be found under SequenceExamples.\nTo add the UI to your scene, you can add the WalletPanel prefab found under SequenceExamples > Prefabs. It is opened using the Open method; you must provide an IWallet (e.g. a WaaSWallet) as an argument.\nYou'll notice that the UI is still a work in progress and is also using mocks in some places (fetching transaction history and prices). These will be replaced in coming updates of the SDK, but please feel free to replace them on your own (and for bonus points, submit a PR!).\n","title":"Wallet UI","titles":[]},"162":{"href":"/sdk/unity/09-wallet-ui#how-it-works","html":"\n

The sample Sequence UI is comprised of a few important components.

\n","isPage":false,"text":"\nThe sample Sequence UI is comprised of a few important components.\n","title":"How It Works","titles":["Wallet UI"]},"163":{"href":"/sdk/unity/09-wallet-ui#ui-customizability","html":"\n

Built on Unity's UI system, the UI is entirely customizable. We encourage you to make it your own and "beautify" it to suit your app!

\n","isPage":false,"text":"\nBuilt on Unity's UI system, the UI is entirely customizable. We encourage you to make it your own and "beautify" it to suit your app!\n","title":"UI Customizability","titles":["Wallet UI"]},"164":{"href":"/sdk/unity/09-wallet-ui#color-scheme-manager","html":"\n

To help you with the process, we've added a basic ColorSchemeManager script which you can experiment with in our Demo scene, which can be imported via Package Manager.

\n

To use the ColorSchemeManager, please perform the following in edit mode.

\n
    \n
  1. Create a Color Scheme scriptable object by navigating to the top bar Assets > Create > Sequence > Color Scheme and give it an appropriate name.
  2. \n
  3. Set the desired colors in your new scriptable object - don't forget to set the alpha values! Unity defaults these to 0.
  4. \n
  5. Locate the ColorSchemeManager MonoBehaviour in your scene in the inspector. In our demo scene, this is attached to the SequenceCanvas gameObject.
  6. \n
  7. Set your newly created scriptable object as the Color Scheme.
  8. \n
  9. Click "Apply". Note that this may take a few seconds to apply and you may need to click apply multiple times due to the way Unity refreshes after changes in the inspector (version dependant).
  10. \n
\n

The ColorSchemeManager isn't meant to give you perfect results and the perfect UI right out of the gate, but we hope it saves you some time on the way there!

\n","isPage":false,"text":"\nTo help you with the process, we've added a basic ColorSchemeManager script which you can experiment with in our Demo scene, which can be imported via Package Manager.\nTo use the ColorSchemeManager, please perform the following in edit mode.\n\nCreate a Color Scheme scriptable object by navigating to the top bar Assets > Create > Sequence > Color Scheme and give it an appropriate name.\nSet the desired colors in your new scriptable object - don't forget to set the alpha values! Unity defaults these to 0.\nLocate the ColorSchemeManager MonoBehaviour in your scene in the inspector. In our demo scene, this is attached to the SequenceCanvas gameObject.\nSet your newly created scriptable object as the Color Scheme.\nClick "Apply". Note that this may take a few seconds to apply and you may need to click apply multiple times due to the way Unity refreshes after changes in the inspector (version dependant).\n\nThe ColorSchemeManager isn't meant to give you perfect results and the perfect UI right out of the gate, but we hope it saves you some time on the way there!\n","title":"Color Scheme Manager","titles":["Wallet UI","UI Customizability"]},"165":{"href":"/sdk/unity/09-wallet-ui#more-customization-tools-coming-soon","html":"\n

We hope to bring you more convenience tools to help you customize the UI quicker and easier! While we have ideas of our own, nobody understands your needs better than you do, so please don't hesitate to reach out to us with any ideas you have! Or better yet, submit a PR!

","isPage":false,"text":"\nWe hope to bring you more convenience tools to help you customize the UI quicker and easier! While we have ideas of our own, nobody understands your needs better than you do, so please don't hesitate to reach out to us with any ideas you have! Or better yet, submit a PR!","title":"More Customization Tools Coming Soon","titles":["Wallet UI","UI Customizability"]},"166":{"href":"/sdk/unreal/01-overview#introduction","html":"\n

The Sequence Unreal In-Game Wallet SDK provides full Sequence In-Game Wallet and Indexer integration for games built on the Unreal Framework.

\n

This SDK follows Semantic Versioning (major.minor.patch). While we're still in 0.x.y builds, API breaking changes can be made at any time. After 1.0.0, breaking changes will always cause a major version increment, non-breaking new features will cause a minor version increment, and bugfixes will cause a patch version increment.

\n

Sequence Unreal SDK is only available as a private beta at the moment. To get access, get in touch with Sequence BD Team.

\n","isPage":true,"text":"\nThe Sequence Unreal In-Game Wallet SDK provides full Sequence In-Game Wallet and Indexer integration for games built on the Unreal Framework.\nThis SDK follows Semantic Versioning (major.minor.patch). While we're still in 0.x.y builds, API breaking changes can be made at any time. After 1.0.0, breaking changes will always cause a major version increment, non-breaking new features will cause a minor version increment, and bugfixes will cause a patch version increment.\nSequence Unreal SDK is only available as a private beta at the moment. To get access, get in touch with Sequence BD Team.\n","title":"Introduction","titles":[]},"167":{"href":"/sdk/unreal/01-overview#requirements","html":"\n","isPage":false,"text":"\n\nUnreal 5.2 or later\nAndroid\niOS\nPC standalone\nMac standalone\n","title":"Requirements","titles":["Introduction"]},"168":{"href":"/sdk/unreal/02-installation#installation","html":"\n","isPage":true,"text":"\n","title":"Installation","titles":[]},"169":{"href":"/sdk/unreal/02-installation#credentials","html":"\n

Before you can use this plugin, you need to acquire the following credentials from Sequence:

\n\n

You can then add these credentials in the [Config.h] file under SequencePlugin/Source/SequencePlugin/Private/Config/Config.h.

\n","isPage":false,"text":"\nBefore you can use this plugin, you need to acquire the following credentials from Sequence:\n\nWaaSTenantKey: This key will be given to you by the Sequence team during WaaS onboarding\nProjectAccessKey: This key can be found in Sequence Builder under Settings > API Access Keys\n\nYou can then add these credentials in the [Config.h] file under SequencePlugin/Source/SequencePlugin/Private/Config/Config.h.\n","title":"Credentials","titles":["Installation"]},"170":{"href":"/sdk/unreal/02-installation#security","html":"\n

You must provide an encryption key implementation at [SequenceEncryptor.cpp] function [GetStoredKey]. This function must be implemented to provide a securely stored private key that will be used to encrypt and decrypt client information. Failure to do so will result in NO information being stored or in the event you do not use a securely stored key, can result in client information being stored insecurely on their systems.

","isPage":false,"text":"\nYou must provide an encryption key implementation at [SequenceEncryptor.cpp] function [GetStoredKey]. This function must be implemented to provide a securely stored private key that will be used to encrypt and decrypt client information. Failure to do so will result in NO information being stored or in the event you do not use a securely stored key, can result in client information being stored insecurely on their systems.","title":"Security","titles":["Installation"]},"171":{"href":"/sdk/unreal/03-setup#setup","html":"\n
    \n
  1. \n

    Once you have the the SequencePlugin folder, you'll need to go to your project directory and create a Plugins folder in it, then copy over the SequencePlugin folder into the Plugins folder. If a Plugins folder already exists just copy the SequencePlugin folder into it.

    \n
  2. \n
  3. \n

    Launch your project, then allow it to update the UProject Settings.

    \n
  4. \n
  5. \n

    To find the SequencePlugin content folder in your content drawer enable view plugin content

    \n
  6. \n
  7. \n

    If you wish to use the in built sequence UI for login\na) Create an [Actor] you wish to be responsible for the SequenceUI then attach the [Sequence_Pawn_Component_BP] to it\nb) Setup your [Actor] Blueprint similar to how it's setup in [Custom_Spectator_Pawn] being sure to bind to the delegate that gives you Credentials [Auth_Success_Forwarder]

    \n
  8. \n
  9. \n

    Once you have those credentials you'll need to forward them to your own C++ backend in order to use the Sequence API, an example of this can be found in the [Custom_Spectator_Pawn]. This Pawn inherits from a C++ class [Sqnc_Spec_Pawn], which implements a blueprint Callable function [SetupCredentials(FCredentials_BE CredentialsIn)]. This is callable within the child class [Custom_Spectator_Pawn]. Calling this function will forward the credentials to a C++ backend.

    \n
  10. \n
","isPage":true,"text":"\n\n\nOnce you have the the SequencePlugin folder, you'll need to go to your project directory and create a Plugins folder in it, then copy over the SequencePlugin folder into the Plugins folder. If a Plugins folder already exists just copy the SequencePlugin folder into it.\n\n\nLaunch your project, then allow it to update the UProject Settings.\n\n\nTo find the SequencePlugin content folder in your content drawer enable view plugin content\n\n\nIf you wish to use the in built sequence UI for login\na) Create an [Actor] you wish to be responsible for the SequenceUI then attach the [Sequence_Pawn_Component_BP] to it\nb) Setup your [Actor] Blueprint similar to how it's setup in [Custom_Spectator_Pawn] being sure to bind to the delegate that gives you Credentials [Auth_Success_Forwarder]\n\n\nOnce you have those credentials you'll need to forward them to your own C++ backend in order to use the Sequence API, an example of this can be found in the [Custom_Spectator_Pawn]. This Pawn inherits from a C++ class [Sqnc_Spec_Pawn], which implements a blueprint Callable function [SetupCredentials(FCredentials_BE CredentialsIn)]. This is callable within the child class [Custom_Spectator_Pawn]. Calling this function will forward the credentials to a C++ backend.\n\n","title":"Setup","titles":[]},"172":{"href":"/sdk/unreal/04-authentication#authentication","html":"\n","isPage":true,"text":"\n","title":"Authentication","titles":[]},"173":{"href":"/sdk/unreal/04-authentication#custom-ui-integration","html":"\n

In a C++ backend with a series of pass through [UFUNCTIONS] setup similarly to [SequenceBackendManager.h/.cpp]. Each of these calls are implemented in [UAuthenticator] you just need to pass through the data with YOUR UAuthenticator UObject

\n
//This call is platform dependent on windows & mac this is required for SSO WIP\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nFString GetLoginURL(const ESocialSigninType& Type); \n \n//This Call is made after you've collected the ID_Token (Mac & Windows only) WIP\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid SocialLogin(const FString& IDTokenIn);\n \n//This Call is made after you've collected the email address from the Users in the UI\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid EmailLogin(const FString& EmailIn);\n \n//This is call is made after the Delegate `[AuthRequiresCode]` is fired\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid EmailCode(const FString& CodeIn);\n \n//Optional call used to check if the credentials on disk are valid or not//\nUFUNCTION(BlueprintCallable, Category = "Login")\nbool StoredCredentialsValid();
\n

To start you'll want to create a [UAuthenticator] UObject like so [UAuthenticator + Auth = NewObject<UAuthenticator>()], this UObject manages the authentication side of Sequence.

\n

Be sure to bind to the Delegates for [AuthSuccess], [AuthFailure], [AuthRequiresCode] prior to making any signin calls You can bind to these delegates like so:

\n
this->authenticator->AuthRequiresCode.AddDynamic(this, &AYourClass::YourCallReadyToReceiveCode);\nthis->authenticator->AuthFailure.AddDynamic(this, &AYourClass::YourCallShowAuthFailureScreen);
\n

In the case of [AuthSuccess] since a parameter is also passed we bind to it like this

\n
FScriptDelegate del;\ndel.BindUFunction(this, "CallShowAuthSuccessScreen");\nthis->authenticator->AuthSuccess.Add(del);
\n

Where [CallShowAuthSuccessScreen] is defined in SequenceBackendManager.h like so:

\n
UFUNCTION()\nvoid CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn);
\n

And in SequenceBackendManager.cpp like so:

\n
void ASequenceBackendManager::CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn) \n{\nthis->Credentials = CredentialsIn;\nif (this->ShowAuthSuccessDelegate.IsBound())\n  this->ShowAuthSuccessDelegate.Broadcast(Credentials);\nelse\n  UE_LOG(LogTemp, Error, TEXT("`[Nothing bound to: ShowAuthSuccessDelegate]`"));\n}
\n","isPage":false,"text":"\nIn a C++ backend with a series of pass through [UFUNCTIONS] setup similarly to [SequenceBackendManager.h/.cpp]. Each of these calls are implemented in [UAuthenticator] you just need to pass through the data with YOUR UAuthenticator UObject\n//This call is platform dependent on windows & mac this is required for SSO WIP\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nFString GetLoginURL(const ESocialSigninType& Type); \n \n//This Call is made after you've collected the ID_Token (Mac & Windows only) WIP\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid SocialLogin(const FString& IDTokenIn);\n \n//This Call is made after you've collected the email address from the Users in the UI\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid EmailLogin(const FString& EmailIn);\n \n//This is call is made after the Delegate `[AuthRequiresCode]` is fired\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid EmailCode(const FString& CodeIn);\n \n//Optional call used to check if the credentials on disk are valid or not//\nUFUNCTION(BlueprintCallable, Category = "Login")\nbool StoredCredentialsValid();\nTo start you'll want to create a [UAuthenticator] UObject like so [UAuthenticator + Auth = NewObject<UAuthenticator>()], this UObject manages the authentication side of Sequence.\nBe sure to bind to the Delegates for [AuthSuccess], [AuthFailure], [AuthRequiresCode] prior to making any signin calls You can bind to these delegates like so:\nthis->authenticator->AuthRequiresCode.AddDynamic(this, &AYourClass::YourCallReadyToReceiveCode);\nthis->authenticator->AuthFailure.AddDynamic(this, &AYourClass::YourCallShowAuthFailureScreen);\nIn the case of [AuthSuccess] since a parameter is also passed we bind to it like this\nFScriptDelegate del;\ndel.BindUFunction(this, "CallShowAuthSuccessScreen");\nthis->authenticator->AuthSuccess.Add(del);\nWhere [CallShowAuthSuccessScreen] is defined in SequenceBackendManager.h like so:\nUFUNCTION()\nvoid CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn);\nAnd in SequenceBackendManager.cpp like so:\nvoid ASequenceBackendManager::CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn) \n{\nthis->Credentials = CredentialsIn;\nif (this->ShowAuthSuccessDelegate.IsBound())\n this->ShowAuthSuccessDelegate.Broadcast(Credentials);\nelse\n UE_LOG(LogTemp, Error, TEXT("`[Nothing bound to: ShowAuthSuccessDelegate]`"));\n}\n","title":"Custom UI Integration","titles":["Authentication",null]},"174":{"href":"/sdk/unreal/04-authentication#email-based-authentication","html":"\n
    \n
  1. \n

    To start email based authentication you'll start it with this call [EmailLogin(const FString& EmailIn)], supplying an email you've collected from the User in your GUI.

    \n
  2. \n
  3. \n

    Next [AuthRequiresCode] will fire when the backend is ready to receive the Code from your UI. Collect this code from your GUI and send it to the authenticator using [EmailCode(CodeIn)].

    \n
  4. \n
  5. \n

    Finally [AuthSuccess] will fire with a Credentials_BE struct as a parameter. This is your non registered credentials from EmailAuth. You are done Email Based Auth.

    \n
  6. \n
\n","isPage":false,"text":"\n\n\nTo start email based authentication you'll start it with this call [EmailLogin(const FString& EmailIn)], supplying an email you've collected from the User in your GUI.\n\n\nNext [AuthRequiresCode] will fire when the backend is ready to receive the Code from your UI. Collect this code from your GUI and send it to the authenticator using [EmailCode(CodeIn)].\n\n\nFinally [AuthSuccess] will fire with a Credentials_BE struct as a parameter. This is your non registered credentials from EmailAuth. You are done Email Based Auth.\n\n\n","title":"Email based Authentication","titles":["Authentication",null]},"175":{"href":"/sdk/unreal/04-authentication#social-signin-based-authentication-on-desktop","html":"\n
    \n
  1. \n

    To start SSO based authentication with desktop you can either use your own implementation to get the necessary id_token or you can make use of Unreal's web browser plugin.

    \n
  2. \n
  3. \n

    With whatever implementation you chose you can forward the colleted id_token to the UAuthenticator object with [SocialLogin(const FString& IDTokenIn)], after which [AuthSuccess] will fire and you're done desktop based SSO.

    \n
  4. \n
\n","isPage":false,"text":"\n\n\nTo start SSO based authentication with desktop you can either use your own implementation to get the necessary id_token or you can make use of Unreal's web browser plugin.\n\n\nWith whatever implementation you chose you can forward the colleted id_token to the UAuthenticator object with [SocialLogin(const FString& IDTokenIn)], after which [AuthSuccess] will fire and you're done desktop based SSO.\n\n\n","title":"Social Signin based Authentication on Desktop","titles":["Authentication",null]},"176":{"href":"/sdk/unreal/04-authentication#social-signin-based-authentication-on-mobile","html":"\n

WIP

","isPage":false,"text":"\nWIP","title":"Social Signin based Authentication on Mobile","titles":["Authentication",null]},"177":{"href":"/sdk/unreal/05-api-integration#api-integration","html":"\n","isPage":true,"text":"\n","title":"API Integration","titles":[]},"178":{"href":"/sdk/unreal/05-api-integration#sequence-api","html":"\n

After you've completed initial authentication and have intercepted the credentials either through your UI or ours, to use the Sequence API you'll need to create a [USequenceWallet] by using:

\n
`[USequenceWallet * Api = USequenceWallet(CredentialsIn)]` or `[USequenceWallet * Api = USequenceWallet::Make(CredentialsIn, ProviderURL)]`
\n

Once you have your [USequenceWallet] UObject call [Api>RegisterSession(OnSuccess,GenericFailure)] this will register your credentials with the Sequence API. Note not calling Register prior to make any others calls will result in errors as a UserWallet hasn't been supplied until this point.

\n

`*

\n

Assuming you've setup your controlling Actor with the [Sequence_Pawn_Component_BP]\nThe sequence pawn component has functions to do the following:

\n

Setup Sequence (sets up the sequence based systems), requires playerController input

\n

Show GUI Shows the UI

\n

Hide GUI Hides the UI

\n

GUI Visible Simple Visibility test for the UI

\n

Switch Platform (Switches which mode the UI will be in and how it will be displayed)

\n

Note: this doesn't rotate the application into any one view it just make the UI responsive to that type of view.

\n

Modes:

\n\n

`*

\n","isPage":false,"text":"\nAfter you've completed initial authentication and have intercepted the credentials either through your UI or ours, to use the Sequence API you'll need to create a [USequenceWallet] by using:\n`[USequenceWallet * Api = USequenceWallet(CredentialsIn)]` or `[USequenceWallet * Api = USequenceWallet::Make(CredentialsIn, ProviderURL)]`\nOnce you have your [USequenceWallet] UObject call [Api>RegisterSession(OnSuccess,GenericFailure)] this will register your credentials with the Sequence API. Note not calling Register prior to make any others calls will result in errors as a UserWallet hasn't been supplied until this point.\n`*\nAssuming you've setup your controlling Actor with the [Sequence_Pawn_Component_BP]\nThe sequence pawn component has functions to do the following:\nSetup Sequence (sets up the sequence based systems), requires playerController input\nShow GUI Shows the UI\nHide GUI Hides the UI\nGUI Visible Simple Visibility test for the UI\nSwitch Platform (Switches which mode the UI will be in and how it will be displayed)\nNote: this doesn't rotate the application into any one view it just make the UI responsive to that type of view.\nModes:\n\nDesktop (default)\nMobile Portrait (Custom built for portrait mode reducing the X width where ever possible)\nMobile Landscape\n\n`*\n","title":"Sequence API","titles":["API Integration",null]},"179":{"href":"/sdk/unreal/05-api-integration#sequence-unreal-api","html":"\n

The Sequence Unreal plugin is broken up into a few different parts in order to manage all of the differing functionality. Here we'll go through each parts purpose then summarize how to use them all together below

\n

The SDK automatically stores credentials on disk in the following cases:

\n
    \n
  1. On Successful Auth
  2. \n
  3. On Successful Registering of a session
  4. \n
  5. On Successful Closing of a session
  6. \n
\n","isPage":false,"text":"\nThe Sequence Unreal plugin is broken up into a few different parts in order to manage all of the differing functionality. Here we'll go through each parts purpose then summarize how to use them all together below\nThe SDK automatically stores credentials on disk in the following cases:\n\nOn Successful Auth\nOn Successful Registering of a session\nOn Successful Closing of a session\n\n","title":"Sequence Unreal API","titles":["API Integration",null]},"180":{"href":"/sdk/unreal/05-api-integration#usequencewallet","html":"\n

To get a USequenceWallet call either:

\n
USequenceWallet::Make(FCredentials_BE CredentialsIn)\nUSequenceWallet::Make(FCredentials_BE CredentialsIn, FString ProviderURL)
\n

Where the Credentials you give are the credentials you received from the UAuthenticator when [AuthSuccess] fires, or you can use the call Auth->[GetStoredCredentials](), where Auth is of the type [UAuthenticator]. If you are using StoredCredentials please ensure they are valid by checking the wrapping Structs FStoredCredentials_BE.GetValid() flag returned from [GetStoredCredentials], the providerURL is the url of the provider you wish to use.

\n

Once you have your [USequenceWallet] UObject please ensure that you've registered the session using [RegisterSession] before attempting to make other calls to the API.

\n","isPage":false,"text":"\nTo get a USequenceWallet call either:\nUSequenceWallet::Make(FCredentials_BE CredentialsIn)\nUSequenceWallet::Make(FCredentials_BE CredentialsIn, FString ProviderURL)\nWhere the Credentials you give are the credentials you received from the UAuthenticator when [AuthSuccess] fires, or you can use the call Auth->[GetStoredCredentials](), where Auth is of the type [UAuthenticator]. If you are using StoredCredentials please ensure they are valid by checking the wrapping Structs FStoredCredentials_BE.GetValid() flag returned from [GetStoredCredentials], the providerURL is the url of the provider you wish to use.\nOnce you have your [USequenceWallet] UObject please ensure that you've registered the session using [RegisterSession] before attempting to make other calls to the API.\n","title":"USequenceWallet","titles":["API Integration",null]},"181":{"href":"/sdk/unreal/05-api-integration#sequence-api-methods","html":"\n

We make use of TFunctions with some callbacks:

\n
TSuccessCallback\nconst TFunction<void(FString)> OnResponse = `[Capturable variables]`(const FString& Response)\n{\n//callback body where we can process Response\n};\n \nFFailureCallback\nconst TFunction<void(FSequenceError)> OnFailureTest = `[Capturable variables]`(const FSequenceError& Error)\n{\n//callback body where we can process Error\n};
\n

One thing to be aware of is keep an eye on capturables if you have lots of nested TFunctions it's very easy to miss something and start over writing memory. If you require lots of nesting swapping to a better approach using UFUNCTION callbacks helps to avoid these problems similar to how things are done in [UAuthenticator.h/cpp]

","isPage":false,"text":"\nWe make use of TFunctions with some callbacks:\nTSuccessCallback\nconst TFunction<void(FString)> OnResponse = `[Capturable variables]`(const FString& Response)\n{\n//callback body where we can process Response\n};\n \nFFailureCallback\nconst TFunction<void(FSequenceError)> OnFailureTest = `[Capturable variables]`(const FSequenceError& Error)\n{\n//callback body where we can process Error\n};\nOne thing to be aware of is keep an eye on capturables if you have lots of nested TFunctions it's very easy to miss something and start over writing memory. If you require lots of nesting swapping to a better approach using UFUNCTION callbacks helps to avoid these problems similar to how things are done in [UAuthenticator.h/cpp]","title":"Sequence API Methods","titles":["API Integration",null]},"182":{"href":"/sdk/unreal/06-packaging#packaging","html":"\n

To set your system up for Packaging please refer to the following links:

\n\n","isPage":true,"text":"\nTo set your system up for Packaging please refer to the following links:\n\nWindows and macOS\nAndroid\niOS\n\n","title":"Packaging","titles":[]},"183":{"href":"/sdk/unreal/06-packaging#google-sso-setup","html":"\n

In order to be able to properly use Google Auth, create and place the Keystore file by following these instructions.

\n

You will also need to generate an [Android client ID] and a [Web Application client ID] for your application, as well as place the [Web Application client ID] in the Config/Config.h FAuthenticatorConfig.GoogleClientID field.

\n

Refer to these docs to generate [Android client ID] and [Web Application client ID].

\n

This guide helps explain how to collect SHA-1 key fingerprints for the [Android client ID].

\n","isPage":false,"text":"\nIn order to be able to properly use Google Auth, create and place the Keystore file by following these instructions.\nYou will also need to generate an [Android client ID] and a [Web Application client ID] for your application, as well as place the [Web Application client ID] in the Config/Config.h FAuthenticatorConfig.GoogleClientID field.\nRefer to these docs to generate [Android client ID] and [Web Application client ID].\nThis guide helps explain how to collect SHA-1 key fingerprints for the [Android client ID].\n","title":"Google SSO Setup","titles":["Packaging",null]},"184":{"href":"/sdk/unreal/06-packaging#ios","html":"\n

For iOS apps you also need to setup provisioning, following these docs.

\n","isPage":false,"text":"\nFor iOS apps you also need to setup provisioning, following these docs.\n","title":"iOS","titles":["Packaging",null]},"185":{"href":"/sdk/unreal/06-packaging#unreal-and-xcode-specifics","html":"\n

During the Unreal Package process there is a very high chance that it will fail due to a code signing error, in the event that this happens please take the following steps within XCode to get your packaged .app file

\n
    \n
  1. After packaging the project in Unreal, open the Xcode project (Sequence-unreal folder -> Intermediate -> ProjectFilesIOS -> SequenceUnreal.xcodeproj)
  2. \n
  3. Click on the project name on the left hand side to open up project settings
  4. \n
  5. Click the Build Phase Tab
  6. \n
  7. Click on the "+" icon at the top left
  8. \n
  9. Select Run Script
  10. \n
  11. Drag the new run script to one below from the last item in the phase list
  12. \n
  13. Expand the run script
  14. \n
  15. In the script box, add the following command: xattr -cr /path-to-your-project/sequence-unreal/Binaries/IOS/Payload/SequenceUnreal.app
  16. \n
  17. Click on the Build Settings tab
  18. \n
  19. Click on each item under the Architectures header that contains macOS and hit the delete key
  20. \n
  21. Click on the General tab
  22. \n
  23. Click on Mac and Applevision Pro under supported destinations and hit the delete key
  24. \n
  25. Now the project can be built (if the build fails at first, wait a few moments then try again. It can sometimes take a bit before the build registers the run script)
  26. \n
  27. Once you have finished running the project, and want to make changes to the code, REMEMBER to delete this xcodeproj file in the sequence-unreal folder to ensure that a new xcodeproj is creating when you packaging the project again.
  28. \n
","isPage":false,"text":"\nDuring the Unreal Package process there is a very high chance that it will fail due to a code signing error, in the event that this happens please take the following steps within XCode to get your packaged .app file\n\nAfter packaging the project in Unreal, open the Xcode project (Sequence-unreal folder -> Intermediate -> ProjectFilesIOS -> SequenceUnreal.xcodeproj)\nClick on the project name on the left hand side to open up project settings\nClick the Build Phase Tab\nClick on the "+" icon at the top left\nSelect Run Script\nDrag the new run script to one below from the last item in the phase list\nExpand the run script\nIn the script box, add the following command: xattr -cr /path-to-your-project/sequence-unreal/Binaries/IOS/Payload/SequenceUnreal.app\nClick on the Build Settings tab\nClick on each item under the Architectures header that contains macOS and hit the delete key\nClick on the General tab\nClick on Mac and Applevision Pro under supported destinations and hit the delete key\nNow the project can be built (if the build fails at first, wait a few moments then try again. It can sometimes take a bit before the build registers the run script)\nOnce you have finished running the project, and want to make changes to the code, REMEMBER to delete this xcodeproj file in the sequence-unreal folder to ensure that a new xcodeproj is creating when you packaging the project again.\n","title":"Unreal and Xcode Specifics","titles":["Packaging",null]},"186":{"href":"/solutions/builder/analytics#analytics-in-builder","html":"\n

When you use Sequence, via our SDKs, to build your application, you can see key insights in Sequence Builder.\nYou don't need to do any additional work to see valuable metrics about your project, such as the number\nof connected wallets or daily transaction requests.

\n","isPage":true,"text":"\nWhen you use Sequence, via our SDKs, to build your application, you can see key insights in Sequence Builder.\nYou don't need to do any additional work to see valuable metrics about your project, such as the number\nof connected wallets or daily transaction requests.\n","title":"Analytics in Builder","titles":[]},"187":{"href":"/solutions/builder/analytics#how-it-works","html":"\n

When requests are made with Sequence SDKs/APIs, analytics events are fired and sent to our internal analytics system, Databeat.\nDatabeat anonymizes the data and stores it in a secure database designed for high-volume, real-time applications. The metrics you see in Builder are\nqueried from the database, in real-time, for your project and presented in insightful visualizations.

\n","isPage":false,"text":"\nWhen requests are made with Sequence SDKs/APIs, analytics events are fired and sent to our internal analytics system, Databeat.\nDatabeat anonymizes the data and stores it in a secure database designed for high-volume, real-time applications. The metrics you see in Builder are\nqueried from the database, in real-time, for your project and presented in insightful visualizations.\n","title":"How it works","titles":["Analytics in Builder",null,null]},"188":{"href":"/solutions/builder/analytics#overview","html":"\n

In the Overview tab of Builder, you will see the key, high-level metrics for your project. Metric cards will show the total value for that metric, and\nclicking on one will change the chart to show time-series data for that metric.

\n\n","isPage":false,"text":"\nIn the Overview tab of Builder, you will see the key, high-level metrics for your project. Metric cards will show the total value for that metric, and\nclicking on one will change the chart to show time-series data for that metric.\nYou also have the option to look back at your data beyond the default Last 30 days\nby toggling the filter in the top right corner.\n","title":"Overview","titles":["Analytics in Builder"]},"189":{"href":"/solutions/builder/analytics#wallets-connected","html":"\n

Wallets connected represents the count of distinct wallet addresses connected via Sequence SDKs for the selected time period.

\n

\"Sequence

\n","isPage":false,"text":"\nWallets connected represents the count of distinct wallet addresses connected via Sequence SDKs for the selected time period.\n\n","title":"Wallets connected","titles":["Analytics in Builder","Overview",null]},"190":{"href":"/solutions/builder/analytics#marketplace-transactions","html":"\n

Marketplace transactions shows the total number of buy and sell events that occure via the Sequence Marketplace API.

\n

\"Sequence

\n","isPage":false,"text":"\nMarketplace transactions shows the total number of buy and sell events that occure via the Sequence Marketplace API.\n\n","title":"Marketplace transactions","titles":["Analytics in Builder","Overview",null]},"191":{"href":"/solutions/builder/analytics#transaction-requests","html":"\n

Transaction requests represents the total number of transactions sent by wallets associated with the project.

\n

\"Sequence

","isPage":false,"text":"\nTransaction requests represents the total number of transactions sent by wallets associated with the project.\n","title":"Transaction requests","titles":["Analytics in Builder","Overview",null]},"192":{"href":"/solutions/marketplaces/overview#marketplaces-overview","html":"\n

Sequence provides a variety of options for your marketplace and in-game store to accelerate your development, namely our white-label marketplace as well as our suite of Marketplace APIs.

\n","isPage":true,"text":"\nSequence provides a variety of options for your marketplace and in-game store to accelerate your development, namely our white-label marketplace as well as our suite of Marketplace APIs.\n","title":"Marketplaces Overview","titles":[]},"193":{"href":"/solutions/marketplaces/overview#what-are-the-differences-between-these-options","html":"\n

The white-label marketplace is ideal for getting started with a browser-based marketplace in literally minutes - all with no-coding experience and options to customize the marketplace to fit your branding such as fonts, colors, and logos. Our white-label marketplace is ideal if you want to minimize development time, focus on a web-based experience for your users, and start selling assets.

\n

Conversely, our Marketplace APIs give you complete control & customization so you can build your own UI while leaving the complexity of blockchain & backend orchestration to us. Our APIs can be utilized in game engines such as Unity or Unreal to build an in-game marketplace or store. Alternatively, they can be leveraged via a web-based experience in the browser as well - the choice is yours.

\n

You can even mix and match these options! For example, launching your own white-label marketplace for selling your initial game assets while building out your game. Then once launched, your in-game store uses the marketplace APIs to showcase these assets and offer new ones - while ensuring a seamless user experience as the user never needs to leave the game.

\n","isPage":false,"text":"\nThe white-label marketplace is ideal for getting started with a browser-based marketplace in literally minutes - all with no-coding experience and options to customize the marketplace to fit your branding such as fonts, colors, and logos. Our white-label marketplace is ideal if you want to minimize development time, focus on a web-based experience for your users, and start selling assets.\nConversely, our Marketplace APIs give you complete control & customization so you can build your own UI while leaving the complexity of blockchain & backend orchestration to us. Our APIs can be utilized in game engines such as Unity or Unreal to build an in-game marketplace or store. Alternatively, they can be leveraged via a web-based experience in the browser as well - the choice is yours.\nYou can even mix and match these options! For example, launching your own white-label marketplace for selling your initial game assets while building out your game. Then once launched, your in-game store uses the marketplace APIs to showcase these assets and offer new ones - while ensuring a seamless user experience as the user never needs to leave the game.\n","title":"What are the differences between these options?","titles":["Marketplaces Overview",null]},"194":{"href":"/solutions/marketplaces/overview#getting-started","html":"\n

To get started with the white-label marketplace, check out our page for more information and a helpful video to walk you through the process.

\n

Additionally, our quickstart page for the Marketplace APIs has a variety of templates, demos, and common integration patterns needed to get you started. We also provide a step by step guide of leveraging the APIs for (building a custom marketplace)[/guides/template-marketplace-api]

","isPage":false,"text":"\nTo get started with the white-label marketplace, check out our page for more information and a helpful video to walk you through the process.\nAdditionally, our quickstart page for the Marketplace APIs has a variety of templates, demos, and common integration patterns needed to get you started. We also provide a step by step guide of leveraging the APIs for (building a custom marketplace)[/guides/template-marketplace-api]","title":"Getting Started","titles":["Marketplaces Overview",null]},"195":{"href":"/solutions/wallets/overview#sequence-wallets-overview","html":"\n

Sequence offers multiple wallet options to integrate into your products, chiefly we call these our In-Game Wallet and our Universal Wallet which are both completely non-custodial.

\n","isPage":true,"text":"\nSequence offers multiple wallet options to integrate into your products, chiefly we call these our In-Game Wallet and our Universal Wallet which are both completely non-custodial.\n","title":"Sequence Wallets Overview","titles":[]},"196":{"href":"/solutions/wallets/overview#what-are-the-differences-between-these-options","html":"\n

The In-Game Wallet is primarily focused on delivering a traditional game experience that is headless with no mandatory pop-ups, modals, transaction signing, or other additional distractions take players out of them trying to enjoy the game. Users can login with common social logins or other authentication providers and simply jump into the experience. We provide native support for a variety of popular game engines such as Unreal and Unity as well as Typescript support so you can stay within your preferred framework for building games or experiences.

\n

\"Wallets\"/

\n

Conversely, our Universal Wallet is geared more towards native blockchain users with a focus on games and gaming assets. Existing blockchain users will feel right at home where you can leverage our wallet infrastructure for creating great experiences for web3 users, complete with a Typescript SDK for easy integration.

\n","isPage":false,"text":"\nThe In-Game Wallet is primarily focused on delivering a traditional game experience that is headless with no mandatory pop-ups, modals, transaction signing, or other additional distractions take players out of them trying to enjoy the game. Users can login with common social logins or other authentication providers and simply jump into the experience. We provide native support for a variety of popular game engines such as Unreal and Unity as well as Typescript support so you can stay within your preferred framework for building games or experiences.\n\nConversely, our Universal Wallet is geared more towards native blockchain users with a focus on games and gaming assets. Existing blockchain users will feel right at home where you can leverage our wallet infrastructure for creating great experiences for web3 users, complete with a Typescript SDK for easy integration.\n","title":"What are the differences between these options?","titles":["Sequence Wallets Overview",null]},"197":{"href":"/solutions/wallets/overview#what-are-the-benefits-of-each-and-how-can-i-leverage-them","html":"\n

All integrations provide non-custodial smart contract wallets with account abstraction advantages like optionality for gasless transactions. We recommend our In-Game Wallet if you are focused on a seamless, headless web2/2.5-like experience for your players or our Universal Wallet for prioritizing web2.5/web3 native users.

\n

Best of all, our wallet connector called SequenceKit integrates both options in a convenient, customizable UI written in Typescript, which you can leverage to cater to users with an existing wallet such as Metamask and millions of potential new users that want the convenience of social login.

\n","isPage":false,"text":"\nAll integrations provide non-custodial smart contract wallets with account abstraction advantages like optionality for gasless transactions. We recommend our In-Game Wallet if you are focused on a seamless, headless web2/2.5-like experience for your players or our Universal Wallet for prioritizing web2.5/web3 native users.\nBest of all, our wallet connector called SequenceKit integrates both options in a convenient, customizable UI written in Typescript, which you can leverage to cater to users with an existing wallet such as Metamask and millions of potential new users that want the convenience of social login.\n","title":"What are the benefits of each and how can I leverage them?","titles":["Sequence Wallets Overview",null]},"198":{"href":"/solutions/wallets/overview#getting-started","html":"\n

Please check out Sequence Builder to create a project and select Wallets to get started. This will provide the corresponding code snippets with our convenient SDKs to get started.

\n

Alternatively, our quickstart page for In-Game Wallets and Universal Wallets has all the templates, demos, and common integration patterns needed to accelerate your development.

","isPage":false,"text":"\nPlease check out Sequence Builder to create a project and select Wallets to get started. This will provide the corresponding code snippets with our convenient SDKs to get started.\nAlternatively, our quickstart page for In-Game Wallets and Universal Wallets has all the templates, demos, and common integration patterns needed to accelerate your development.","title":"Getting Started","titles":["Sequence Wallets Overview",null]},"199":{"href":"/sdk/typescript/03-guides/01-connect-wallet#connect-wallet","html":"\n

Sequence is a very flexible wallet which allow users multiple ways to connect / access their wallet. This includes:

\n
    \n
  1. \n

    On-demand Ethereum web wallet for new users via 0xsequence npm package + https://sequence.app -- this option allows\ndevelopers to offer users an on-demand web3 wallet. No user install required -- any browser will just work, and users\ncan onboard with a familiar Web2 experience. Think of it like Paypal / Stripe but for web3.

    \n
  2. \n
  3. \n

    Surf all of web3 via Sequence Wallet Chrome Extension -- users\nwho have the Sequence Wallet Chrome Extension installed are able to access any Ethereum-compatible Dapp on the Web :) Just like how MetaMask works,\nbut of course with a bunch of the benefits of Sequence.

    \n
  4. \n
  5. \n

    Mobile phone access via WalletConnect support within Sequence Wallet -- users are able to communicate with their wallets remotely\nvia the awesome Wallet Connect protocol. This is an excellent option if using Sequence Wallet from your mobile phone and want to connect\nyour wallet to a desktop dapp.

    \n
  6. \n
\n

Sequence Wallet is built on Web Browser (W3C) and Ethereum web3 standards -- and is available everywhere that a modern browser is able to run.\nWe've carefully designed the wallet for simple onboarding, while maintaining security for users, and allowing users to progressively\nincrease the level of their security through additional keys and measures.

\n

This means, that if you've developed a dapp to work with MetaMask, then Sequence will work too without any changes. If you're\nusing web3.js or ethers.js, Sequence will just work too. This is the beauty of interoperability on web3 :)

\n","isPage":true,"text":"\nSequence is a very flexible wallet which allow users multiple ways to connect / access their wallet. This includes:\n\n\nOn-demand Ethereum web wallet for new users via 0xsequence npm package + https://sequence.app -- this option allows\ndevelopers to offer users an on-demand web3 wallet. No user install required -- any browser will just work, and users\ncan onboard with a familiar Web2 experience. Think of it like Paypal / Stripe but for web3.\n\n\nSurf all of web3 via Sequence Wallet Chrome Extension -- users\nwho have the Sequence Wallet Chrome Extension installed are able to access any Ethereum-compatible Dapp on the Web :) Just like how MetaMask works,\nbut of course with a bunch of the benefits of Sequence.\n\n\nMobile phone access via WalletConnect support within Sequence Wallet -- users are able to communicate with their wallets remotely\nvia the awesome Wallet Connect protocol. This is an excellent option if using Sequence Wallet from your mobile phone and want to connect\nyour wallet to a desktop dapp.\n\n\nSequence Wallet is built on Web Browser (W3C) and Ethereum web3 standards -- and is available everywhere that a modern browser is able to run.\nWe've carefully designed the wallet for simple onboarding, while maintaining security for users, and allowing users to progressively\nincrease the level of their security through additional keys and measures.\nThis means, that if you've developed a dapp to work with MetaMask, then Sequence will work too without any changes. If you're\nusing web3.js or ethers.js, Sequence will just work too. This is the beauty of interoperability on web3 :)\n","title":"Connect Wallet","titles":[]},"200":{"href":"/sdk/typescript/03-guides/01-connect-wallet#connecting-your-dapp-with-0xsequence","html":"\n

:::info A delightful wallet without requiring your users to install anything

\nBy integrating 0xsequence, users may access your dapp without having to install any special extensions,\nand the wallet also works on mobile browsers!\n:::

\n

Your dapp can connect to your user's wallet by first instantiating the Wallet provider:

\n
import { sequence } from "0xsequence";\n \nconst projectAccessKey = '<access_key>'\n \n// This assumes your dapp runs on Ethereum mainnet\nconst wallet = sequence.initWallet(projectAccessKey);\n \n// If your dapp runs on a different EVM-compatible blockchain, you can specify its name\n// const wallet = sequence.initWallet(projectAccessKey, { defaultNetwork: 'polygon' });
\n

Note that is possible to retrieve the above instance by using the getWallet() method:

\n
import { sequence } from "0xsequence";\nconst wallet = sequence.getWallet();
\n

Once you have the instance, you can connect to the wallet:

\n
const connectDetails = await wallet.connect({\n  app: "Your Dapp name",\n  authorize: true,\n  // And pass settings if you would like to customize further\n  settings: {\n    theme: "light",\n    bannerUrl: "https://yoursite.com/banner-image.png", // 3:1 aspect ratio, 1200x400 works best\n    includedPaymentProviders: ["moonpay", "ramp"],\n    defaultFundingCurrency: "matic",\n    lockFundingCurrencyToDefault: false,\n  },\n});\n \nconsole.log("user accepted connect?", connectDetails.connected);\nconsole.log(\n  "users signed connect proof to valid their account address:",\n  connectDetails.proof\n);
\n

You can pick/limit the available sign in options with signInOptions. Will be ignored if user is already signed in.

\n
const wallet = sequence.getWallet();\n \nawait wallet.connect({\n  app: "Your Dapp name",\n  settings: { signInOptions: ["google"] },\n});
\n

After you connect, you can use wallet.openWallet() to open the wallet:

\n
const wallet = sequence.getWallet();\nwallet.openWallet();
\n

You can also optionally pass a path, and use openWithOptions intent to pass settings when you open the wallet:

\n
const settings: Settings = {\n  theme: "dark",\n  bannerUrl: "https://yoursite.com/banner-image.png", // 3:1 aspect ratio, 1200x400 works best\n  includedPaymentProviders: ["moonpay", "ramp"],\n  defaultFundingCurrency: "eth",\n  lockFundingCurrencyToDefault: false,\n};\n \nconst intent: OpenWalletIntent = {\n  type: "openWithOptions",\n  options: {\n    settings: settings,\n  },\n};\n \nconst wallet = sequence.getWallet();\n \nconst path = "wallet/add-funds";\nwallet.openWallet(path, intent);
\n

:::tip Check out some example Dapp source code\nFor a complete examples, see Demo-Dapp and Demo-Dapp-Web3Modal.\n:::

\n

:::caution Avoid Browsers Blocking Sequence Popup\nMost browsers will block popups if they are called outside of user-triggered event handlers like onclick, or when it takes too long to process between the user action and the actual window

\n

Read more about browser popup-blocking here.\n:::

\n

\"Sequence

\n

\"Sequence

\n","isPage":false,"text":"\n:::info A delightful wallet without requiring your users to install anything \nBy integrating 0xsequence, users may access your dapp without having to install any special extensions,\nand the wallet also works on mobile browsers!\n:::\nYour dapp can connect to your user's wallet by first instantiating the Wallet provider:\nimport { sequence } from "0xsequence";\n \nconst projectAccessKey = '<access_key>'\n \n// This assumes your dapp runs on Ethereum mainnet\nconst wallet = sequence.initWallet(projectAccessKey);\n \n// If your dapp runs on a different EVM-compatible blockchain, you can specify its name\n// const wallet = sequence.initWallet(projectAccessKey, { defaultNetwork: 'polygon' });\nNote that is possible to retrieve the above instance by using the getWallet() method:\nimport { sequence } from "0xsequence";\nconst wallet = sequence.getWallet();\nOnce you have the instance, you can connect to the wallet:\nconst connectDetails = await wallet.connect({\n app: "Your Dapp name",\n authorize: true,\n // And pass settings if you would like to customize further\n settings: {\n theme: "light",\n bannerUrl: "https://yoursite.com/banner-image.png", // 3:1 aspect ratio, 1200x400 works best\n includedPaymentProviders: ["moonpay", "ramp"],\n defaultFundingCurrency: "matic",\n lockFundingCurrencyToDefault: false,\n },\n});\n \nconsole.log("user accepted connect?", connectDetails.connected);\nconsole.log(\n "users signed connect proof to valid their account address:",\n connectDetails.proof\n);\nYou can pick/limit the available sign in options with signInOptions. Will be ignored if user is already signed in.\nconst wallet = sequence.getWallet();\n \nawait wallet.connect({\n app: "Your Dapp name",\n settings: { signInOptions: ["google"] },\n});\nAfter you connect, you can use wallet.openWallet() to open the wallet:\nconst wallet = sequence.getWallet();\nwallet.openWallet();\nYou can also optionally pass a path, and use openWithOptions intent to pass settings when you open the wallet:\nconst settings: Settings = {\n theme: "dark",\n bannerUrl: "https://yoursite.com/banner-image.png", // 3:1 aspect ratio, 1200x400 works best\n includedPaymentProviders: ["moonpay", "ramp"],\n defaultFundingCurrency: "eth",\n lockFundingCurrencyToDefault: false,\n};\n \nconst intent: OpenWalletIntent = {\n type: "openWithOptions",\n options: {\n settings: settings,\n },\n};\n \nconst wallet = sequence.getWallet();\n \nconst path = "wallet/add-funds";\nwallet.openWallet(path, intent);\n:::tip Check out some example Dapp source code\nFor a complete examples, see Demo-Dapp and Demo-Dapp-Web3Modal.\n:::\n:::caution Avoid Browsers Blocking Sequence Popup\nMost browsers will block popups if they are called outside of user-triggered event handlers like onclick, or when it takes too long to process between the user action and the actual window\nRead more about browser popup-blocking here.\n:::\n\n\n","title":"Connecting your dapp with 0xsequence","titles":["Connect Wallet"]},"201":{"href":"/sdk/typescript/03-guides/01-connect-wallet#wallet-login-and-connect-options","html":"\n

Dapps with direct sequence integration can specify a ConnectOptions object when running wallet.connect().

\n
const connectDetails = await wallet.connect(connectOptions)
\n

The option parameters are described below.

\n","isPage":false,"text":"\nDapps with direct sequence integration can specify a ConnectOptions object when running wallet.connect().\nconst connectDetails = await wallet.connect(connectOptions)\nThe option parameters are described below.\n","title":"Wallet Login and Connect Options","titles":["Connect Wallet"]},"202":{"href":"/sdk/typescript/03-guides/01-connect-wallet#app","html":"\n

App name of the dapp which will be announced to user on connect screen.

\n

Example: await wallet.connect({ app: 'My defi app' })

\n","isPage":false,"text":"\nApp name of the dapp which will be announced to user on connect screen.\nExample: await wallet.connect({ app: 'My defi app' })\n","title":"app","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"203":{"href":"/sdk/typescript/03-guides/01-connect-wallet#appprotocol","html":"\n

Custom protocol for auth redirect (unity/unreal).

\n","isPage":false,"text":"\nCustom protocol for auth redirect (unity/unreal).\n","title":"appProtocol","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"204":{"href":"/sdk/typescript/03-guides/01-connect-wallet#origin","html":"\n

Origin hint of the dapp's host opening the wallet. This value will automatically be determined and verified for integrity, and can be omitted.

\n","isPage":false,"text":"\nOrigin hint of the dapp's host opening the wallet. This value will automatically be determined and verified for integrity, and can be omitted.\n","title":"origin","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"205":{"href":"/sdk/typescript/03-guides/01-connect-wallet#expiry","html":"\n

Expiry number (in seconds) that is used for ETHAuth proof. Default is 1 week in seconds.

\n

Example: await wallet.connect({ expiry: 36000 })

\n","isPage":false,"text":"\nExpiry number (in seconds) that is used for ETHAuth proof. Default is 1 week in seconds.\nExample: await wallet.connect({ expiry: 36000 })\n","title":"expiry","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"206":{"href":"/sdk/typescript/03-guides/01-connect-wallet#authorize","html":"\n

authorize will perform an ETHAuth eip712 signing and return the proof to the dapp.

\n

Example: await wallet.connect({ authorize: true })

\n","isPage":false,"text":"\nauthorize will perform an ETHAuth eip712 signing and return the proof to the dapp.\nExample: await wallet.connect({ authorize: true })\n","title":"authorize","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"207":{"href":"/sdk/typescript/03-guides/01-connect-wallet#authorizenonce","html":"\n

authorizeNonce is an optional number to be passed as ETHAuth's nonce claim for replay protection.

\n

Example: await wallet.connect({ authorizeNonce: 123 })

\n","isPage":false,"text":"\nauthorizeNonce is an optional number to be passed as ETHAuth's nonce claim for replay protection.\nExample: await wallet.connect({ authorizeNonce: 123 })\n","title":"authorizeNonce","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"208":{"href":"/sdk/typescript/03-guides/01-connect-wallet#refresh","html":"\n

refresh flag will force a full re-connect (ie. disconnect then connect again).

\n

Example: await wallet.connect({ refresh: true })

\n","isPage":false,"text":"\nrefresh flag will force a full re-connect (ie. disconnect then connect again).\nExample: await wallet.connect({ refresh: true })\n","title":"refresh","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"209":{"href":"/sdk/typescript/03-guides/01-connect-wallet#keepwalletopened","html":"\n

keepWalletOpened will keep the wallet window open after connecting. The default is to automatically close the wallet after connecting.

\n

Example: await wallet.connect({ keepWalletOpened: true })

\n","isPage":false,"text":"\nkeepWalletOpened will keep the wallet window open after connecting. The default is to automatically close the wallet after connecting.\nExample: await wallet.connect({ keepWalletOpened: true })\n","title":"keepWalletOpened","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"210":{"href":"/sdk/typescript/03-guides/01-connect-wallet#askforemail","html":"\n

askForEmail will ask user whether they want to share the email they use to sign in to wallet while connecting, and will be returned in connectDetails.

\n

Example: await wallet.connect({ askForEmail: true })

\n","isPage":false,"text":"\naskForEmail will ask user whether they want to share the email they use to sign in to wallet while connecting, and will be returned in connectDetails.\nExample: await wallet.connect({ askForEmail: true })\n","title":"askForEmail","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"211":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingstheme","html":"\n

Name of one of the available theme provided by sequence the sequence wallet will be rendered with.

\n

Example: await wallet.connect({ settings: {theme: "light"}}

\n","isPage":false,"text":"\nName of one of the available theme provided by sequence the sequence wallet will be rendered with.\nExample: await wallet.connect({ settings: {theme: "light"}}\n","title":"settings.theme","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"212":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingsbannerurl","html":"\n

URL of a banner image users will see when connecting or logging into your dapp. The banner image should follow a 3:1 aspect ration where 1200x400 works best.

\n

Example: await wallet.connect({ settings: {bannerUrl: "https://yoursite.com/banner-image.png"}}

\n","isPage":false,"text":"\nURL of a banner image users will see when connecting or logging into your dapp. The banner image should follow a 3:1 aspect ration where 1200x400 works best.\nExample: await wallet.connect({ settings: {bannerUrl: "https://yoursite.com/banner-image.png"}}\n","title":"settings.bannerUrl","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"213":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingssigninwith","html":"\n

Specify signInWith with a supported auth provider to automatically sign in the user with that provider only. Will be ignored if user is already signed in.

\n

Example: await wallet.connect({ settings: {signInWith: "google"}}

\n

Supported Providers: "google", "discord", "twitch", "apple", "facebook"

\n","isPage":false,"text":"\nSpecify signInWith with a supported auth provider to automatically sign in the user with that provider only. Will be ignored if user is already signed in.\nExample: await wallet.connect({ settings: {signInWith: "google"}}\nSupported Providers: "google", "discord", "twitch", "apple", "facebook"\n","title":"settings.signInWith","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"214":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingssigninwithemail","html":"\n

Specify signInWithEmail with an email address to allow user automatically sign in with the email option. Will be ignored if user is already signed in.

\n

Example: await wallet.connect({ settings: {signInWithEmail: "user@email.com"}}

\n","isPage":false,"text":"\nSpecify signInWithEmail with an email address to allow user automatically sign in with the email option. Will be ignored if user is already signed in.\nExample: await wallet.connect({ settings: {signInWithEmail: "user@email.com"}}\n","title":"settings.signInWithEmail","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"215":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingssigninoptions","html":"\n

Specify signInOptions to pick/limit the available sign in options. Will be ignored if user is already signed in.

\n

Example: await wallet.connect({ settings: {signInOptions: ["email", "google", "apple"]}}

\n","isPage":false,"text":"\nSpecify signInOptions to pick/limit the available sign in options. Will be ignored if user is already signed in.\nExample: await wallet.connect({ settings: {signInOptions: ["email", "google", "apple"]}}\n","title":"settings.signInOptions","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"216":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingsincludedpaymentproviders","html":"\n

List of payment providers users will be able to access. By default, users can access all payment providers integrated in Sequence.

\n

Example: await wallet.connect({ settings: {includedPaymentProviders: ["moonpay", "ramp"]}}

\n","isPage":false,"text":"\nList of payment providers users will be able to access. By default, users can access all payment providers integrated in Sequence.\nExample: await wallet.connect({ settings: {includedPaymentProviders: ["moonpay", "ramp"]}}\n","title":"settings.includedPaymentProviders","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"217":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingsdefaultfundingcurrency","html":"\n

The tag of the default currency to show when users open the payment provider page. The currency has to be supported by the payment providers integrated in sequence.

\n

Example: await wallet.connect({ settings: {defaultFundingCurrency: "usdc"}}

\n","isPage":false,"text":"\nThe tag of the default currency to show when users open the payment provider page. The currency has to be supported by the payment providers integrated in sequence.\nExample: await wallet.connect({ settings: {defaultFundingCurrency: "usdc"}}\n","title":"settings.defaultFundingCurrency","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"218":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingsdefaultpurchaseamount","html":"\n

Use to specify a default purchase amount, as an integer, for prefilling the funding amount. If not specified, the default is 100.

\n

Example: await wallet.connect({ settings: {defaultPurchaseAmount: 200}}

\n","isPage":false,"text":"\nUse to specify a default purchase amount, as an integer, for prefilling the funding amount. If not specified, the default is 100.\nExample: await wallet.connect({ settings: {defaultPurchaseAmount: 200}}\n","title":"settings.defaultPurchaseAmount","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"219":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingslockfundingcurrencytodefault","html":"\n

Whether to only allow users to purchase the default currency specified by the defaultFundingCurrency option. If set to false, users will also be able to purchase other tokens. locking the default funding currency can be useful to prevent users from purchasing the wrong currency or the currency on the wrong chain.

\n

Example: await wallet.connect({ settings: {defaultFundingCurrency: true}}

\n","isPage":false,"text":"\nWhether to only allow users to purchase the default currency specified by the defaultFundingCurrency option. If set to false, users will also be able to purchase other tokens. locking the default funding currency can be useful to prevent users from purchasing the wrong currency or the currency on the wrong chain.\nExample: await wallet.connect({ settings: {defaultFundingCurrency: true}}\n","title":"settings.lockFundingCurrencyToDefault","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"220":{"href":"/sdk/typescript/03-guides/01-connect-wallet#connecting-your-dapp-with-web3js-or-ethersjs","html":"\n

For a full example of a dapp which supports Sequence (on-demand + chrome extension), Metamask, and WalletConnect\nplease see the Demo-Dapp-Web3Modal repo.

\n

\"Sequence

\n","isPage":false,"text":"\nFor a full example of a dapp which supports Sequence (on-demand + chrome extension), Metamask, and WalletConnect\nplease see the Demo-Dapp-Web3Modal repo.\n\n","title":"Connecting your dapp with web3.js or ethers.js","titles":["Connect Wallet"]},"221":{"href":"/sdk/typescript/03-guides/01-connect-wallet#connecting-to-any-ethereum-dapp-with-the-sequence-wallet-chrome-extension","html":"\n

Sequence Chrome Extension: Install

\n

\"Sequence

\n","isPage":false,"text":"\nSequence Chrome Extension: Install\n\n","title":"Connecting to any Ethereum dapp with the Sequence Wallet Chrome Extension","titles":["Connect Wallet"]},"222":{"href":"/sdk/typescript/03-guides/01-connect-wallet#connecting-via-walletconnect","html":"\n

Sequence already supports connecting to dapps via WalletConnect.\nIf your dapp already supports WalletConnect, and you don't need Sequence-specific functionality, nothing more needs to be done.\nFrom the user's perspective, the WalletConnect flow behaves as follows.

\n

Taking Uniswap as an example, the user is prompted to connect their wallet using one of multiple possible protocols.

\n\n

The user selects the WalletConnect option.

\n\n

A QR code is displayed, which can be scanned by Sequence.\nAlternatively, the user can also choose to copy the connection details via their OS clipboard.

\n\n

Back in the Sequence interface, the user chooses "Scan".

\n\n

The QR code from the dapp is scanned.\nAlternatively, the code is pasted from the OS clipboard if the user chose that previously.

\n\n

The user confirms the connection request.

\n\n

The connection succeeded, and the dapp is updated to reflect that.

\n\n

While connected, the dapp is able to make signing requests to Sequence.\nSequence will always prompt for confirmation from the user for any activity initiated by the dapp.

\n\n

Once the user has finished using the dapp, they can disconnect the wallet via the session menu.

\n","isPage":false,"text":"\nSequence already supports connecting to dapps via WalletConnect.\nIf your dapp already supports WalletConnect, and you don't need Sequence-specific functionality, nothing more needs to be done.\nFrom the user's perspective, the WalletConnect flow behaves as follows.\nTaking Uniswap as an example, the user is prompted to connect their wallet using one of multiple possible protocols.\n\nThe user selects the WalletConnect option.\n\nA QR code is displayed, which can be scanned by Sequence.\nAlternatively, the user can also choose to copy the connection details via their OS clipboard.\n\nBack in the Sequence interface, the user chooses "Scan".\n\nThe QR code from the dapp is scanned.\nAlternatively, the code is pasted from the OS clipboard if the user chose that previously.\n\nThe user confirms the connection request.\n\nThe connection succeeded, and the dapp is updated to reflect that.\n\nWhile connected, the dapp is able to make signing requests to Sequence.\nSequence will always prompt for confirmation from the user for any activity initiated by the dapp.\n\nOnce the user has finished using the dapp, they can disconnect the wallet via the session menu.\n","title":"Connecting via WalletConnect","titles":["Connect Wallet"]},"223":{"href":"/sdk/typescript/03-guides/02-auth-address#authenticate-users-with-message-signature","html":"\n","isPage":true,"text":"\n","title":"Authenticate Users with Message Signature","titles":[]},"224":{"href":"/sdk/typescript/03-guides/02-auth-address#ask-for-the-wallet-address","html":"\n

To get the user's Sequence wallet address:

\n
const wallet = sequence.getWallet()\nconst address = wallet.getAddress()\nconsole.log(address)
\n","isPage":false,"text":"\nTo get the user's Sequence wallet address:\nconst wallet = sequence.getWallet()\nconst address = wallet.getAddress()\nconsole.log(address)\n","title":"Ask for the wallet address","titles":["Authenticate Users with Message Signature"]},"225":{"href":"/sdk/typescript/03-guides/02-auth-address#authenticate-wallet","html":"\n

In many cases, you'll want your users to connect and then verify they do control this wallet address. Applications typically do this by asking the user\nto sign a message with their wallet, and then verify the signature from the user to ensure its integrity.

\n

As this is such a common workflow, Sequence can automatically authenticate the account address at the same time\nwhile the user is prompt to connect their wallet to your dapp. This allows the user experience to be simpler and\nmore seamless.

\n
import { sequence } from '0xsequence'\n \nconst wallet = sequence.getWallet()\n \nconst connectDetails = await wallet.connect({\n  app: 'Your Dapp name',\n  authorize: true // <---<<< this will automatically sign+verify a EIP712 message when user clicks "Connect"\n})
\n

It will look like this to your users:

\n\"Sequence\n

In the above example, we pass authorize: true to the connect() function, which will automatically have the user\nsign a EIP712 signed message to prove their identity. This allows you to then easily authenticate the connected\nwallet address with absolute certainty.

\n

You can find the signed message proof returned in connectDetails.proof, which is an EIP712 signed object using\na simple convention from ethauth. NOTE: EIP712 allows you to use an actual object for\nsigning instead of just a plain-text string.

\n","isPage":false,"text":"\nIn many cases, you'll want your users to connect and then verify they do control this wallet address. Applications typically do this by asking the user\nto sign a message with their wallet, and then verify the signature from the user to ensure its integrity.\nAs this is such a common workflow, Sequence can automatically authenticate the account address at the same time\nwhile the user is prompt to connect their wallet to your dapp. This allows the user experience to be simpler and\nmore seamless.\nimport { sequence } from '0xsequence'\n \nconst wallet = sequence.getWallet()\n \nconst connectDetails = await wallet.connect({\n app: 'Your Dapp name',\n authorize: true // <---<<< this will automatically sign+verify a EIP712 message when user clicks "Connect"\n})\nIt will look like this to your users:\n\nIn the above example, we pass authorize: true to the connect() function, which will automatically have the user\nsign a EIP712 signed message to prove their identity. This allows you to then easily authenticate the connected\nwallet address with absolute certainty.\nYou can find the signed message proof returned in connectDetails.proof, which is an EIP712 signed object using\na simple convention from ethauth. NOTE: EIP712 allows you to use an actual object for\nsigning instead of just a plain-text string.\n","title":"Authenticate wallet","titles":["Authenticate Users with Message Signature"]},"226":{"href":"/sdk/typescript/03-guides/02-auth-address#authenticate-wallet-server-side","html":"\n

The above example demonstrates how to connect and verify the user's identity in your dapp on the client-side,\nbut if you'd like to authenticate the Sequence authorization proof on your server, then you can do so with the following snippet:

\n
import { ValidateSequenceWalletProof } from '@0xsequence/auth'\nimport { commons, v2 } from '@0xsequence/core'\nimport { ETHAuth } from '@0xsequence/ethauth'\nimport { trackers } from '@0xsequence/sessions'\nimport * as ethers from 'ethers'\n \n// ...\n \nconst rpcUrl = 'https://polygon-mainnet.infura.io/v3/<your infura key here>'\nconst provider = new ethers.providers.JsonRpcProvider(rpcUrl)\n \n// create an EIP-6492-aware ETHAuth proof validator\nconst validator = ValidateSequenceWalletProof(\n  () => new commons.reader.OnChainReader(provider),\n  new trackers.remote.RemoteConfigTracker('https://sessions.sequence.app'),\n  v2.DeployedWalletContext\n)\nconst ethauth = new ETHAuth(validator)\nawait ethauth.configJsonRpcProvider(rpcUrl)\n \ntry {\n  const proof = await ethAuth.decodeProof(connectDetails.proof.proofString)\n  console.log(`proof for address ${proof.address} is valid`)\n} catch (err) {\n  console.log(`invalid proof -- do not trust address: ${err}`)\n}
\n

See the Go Sequence SDK on using Sequence in your Go applications.

\n

If your server is written in a language other than Javascript/Typescript or Go, all you have to do is validate\nthe signature with EIP1271, the standard method for validating signed messages for a smart wallet.

\n

As always, if you have any questions or require help, reach out to us on Discord.

","isPage":false,"text":"\nThe above example demonstrates how to connect and verify the user's identity in your dapp on the client-side,\nbut if you'd like to authenticate the Sequence authorization proof on your server, then you can do so with the following snippet:\nimport { ValidateSequenceWalletProof } from '@0xsequence/auth'\nimport { commons, v2 } from '@0xsequence/core'\nimport { ETHAuth } from '@0xsequence/ethauth'\nimport { trackers } from '@0xsequence/sessions'\nimport * as ethers from 'ethers'\n \n// ...\n \nconst rpcUrl = 'https://polygon-mainnet.infura.io/v3/<your infura key here>'\nconst provider = new ethers.providers.JsonRpcProvider(rpcUrl)\n \n// create an EIP-6492-aware ETHAuth proof validator\nconst validator = ValidateSequenceWalletProof(\n () => new commons.reader.OnChainReader(provider),\n new trackers.remote.RemoteConfigTracker('https://sessions.sequence.app'),\n v2.DeployedWalletContext\n)\nconst ethauth = new ETHAuth(validator)\nawait ethauth.configJsonRpcProvider(rpcUrl)\n \ntry {\n const proof = await ethAuth.decodeProof(connectDetails.proof.proofString)\n console.log(`proof for address ${proof.address} is valid`)\n} catch (err) {\n console.log(`invalid proof -- do not trust address: ${err}`)\n}\nSee the Go Sequence SDK on using Sequence in your Go applications.\nIf your server is written in a language other than Javascript/Typescript or Go, all you have to do is validate\nthe signature with EIP1271, the standard method for validating signed messages for a smart wallet.\nAs always, if you have any questions or require help, reach out to us on Discord.","title":"Authenticate wallet server-side","titles":["Authenticate Users with Message Signature"]},"227":{"href":"/sdk/typescript/03-guides/03-sign-message#todo---replace-with-code-groups-from-vocs","html":"","isPage":true,"text":"","title":"TODO - Replace with Code Groups from Vocs","titles":[]},"228":{"href":"/sdk/typescript/03-guides/04-session-keys#no-wallet-confirmation-signatures","html":"\n

It is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using session keys, or ephemeral keys.

\n
","isPage":true,"text":"\nIt is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using session keys, or ephemeral keys.\n","title":"No-Wallet-Confirmation Signatures","titles":[]},"229":{"href":"/sdk/typescript/03-guides/04-session-keys#session-keys","html":"
\n

Session keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet.

\n

By signing a message with their primary wallet (e.g., Sequence Wallet), users can authorize a session key to act on their behalf for a limited time or scope. Applications can then interpret signed messages from the session key as if they were coming directly from the user's wallet, streamlining the user experience.

\n

Session keys are particularly useful for applications that require frequent user interactions, as they help reduce the number of wallet confirmations needed, while still maintaining a secure and verifiable authentication process.

\n
","isPage":false,"text":"\nSession keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet.\nBy signing a message with their primary wallet (e.g., Sequence Wallet), users can authorize a session key to act on their behalf for a limited time or scope. Applications can then interpret signed messages from the session key as if they were coming directly from the user's wallet, streamlining the user experience.\nSession keys are particularly useful for applications that require frequent user interactions, as they help reduce the number of wallet confirmations needed, while still maintaining a secure and verifiable authentication process.\n","title":"Session Keys","titles":[]},"230":{"href":"/sdk/typescript/03-guides/04-session-keys#using-session-keys-with-sequence","html":"
\n","isPage":false,"text":"\n","title":"Using Session keys with Sequence","titles":[]},"231":{"href":"/sdk/typescript/03-guides/04-session-keys#1-initialize-sequence-wallet-and-connect","html":"\n
import { Wallet } from '@0xsequence/wallet'\nimport { ethers } from 'ethers'\n \nconst wallet = new Wallet()\nawait wallet.connect()\n \nconst signer = wallet.getSigner()\nconst userAddress = signer.getAddress()
\n","isPage":false,"text":"\nimport { Wallet } from '@0xsequence/wallet'\nimport { ethers } from 'ethers'\n \nconst wallet = new Wallet()\nawait wallet.connect()\n \nconst signer = wallet.getSigner()\nconst userAddress = signer.getAddress()\n","title":"1. Initialize Sequence Wallet and Connect","titles":["Using Session keys with Sequence",null]},"232":{"href":"/sdk/typescript/03-guides/04-session-keys#2-generate-a-session-key","html":"\n

Create a new ephemeral private key, store it in local storage, and derive the associated address:

\n
const sessionPrivateKey = ethers.utils.randomBytes(32)\nlocalStorage.setItem('sessionPrivateKey', ethers.utils.hexlify(sessionPrivateKey))\nconst sessionWallet = new ethers.Wallet(sessionPrivateKey)\nconst sessionAddress = await sessionWallet.getAddress()
\n","isPage":false,"text":"\nCreate a new ephemeral private key, store it in local storage, and derive the associated address:\nconst sessionPrivateKey = ethers.utils.randomBytes(32)\nlocalStorage.setItem('sessionPrivateKey', ethers.utils.hexlify(sessionPrivateKey))\nconst sessionWallet = new ethers.Wallet(sessionPrivateKey)\nconst sessionAddress = await sessionWallet.getAddress()\n","title":"2. Generate a Session Key","titles":["Using Session keys with Sequence",null]},"233":{"href":"/sdk/typescript/03-guides/04-session-keys#3-sign-authorization-message","html":"\n

Sign a message with the user's Sequence Wallet to authorize the session key:

\n
const authorizationMessage = `Authorize this device to play this game.`\nconst signature = await signer.signMessage(authorizationMessage)
\n","isPage":false,"text":"\nSign a message with the user's Sequence Wallet to authorize the session key:\nconst authorizationMessage = `Authorize this device to play this game.`\nconst signature = await signer.signMessage(authorizationMessage)\n","title":"3. Sign Authorization Message","titles":["Using Session keys with Sequence",null]},"234":{"href":"/sdk/typescript/03-guides/04-session-keys#4-verify-authorization-signature","html":"\n

Verify the signature on the server or client side using Sequence utility functions:

\n
const provider = wallet.getProvider()\nconst chainId = await wallet.getChainId()\n \nconst isValid = await wallet.utils.isValidMessageSignature(\n  userAddress,\n  authorizationMessage,\n  signature,\n  chainId\n)\n \nif (isValid) {\n  console.log('Session key authorized')\n} else {\n  console.log('Session key not authorized')\n}
\n","isPage":false,"text":"\nVerify the signature on the server or client side using Sequence utility functions:\nconst provider = wallet.getProvider()\nconst chainId = await wallet.getChainId()\n \nconst isValid = await wallet.utils.isValidMessageSignature(\n userAddress,\n authorizationMessage,\n signature,\n chainId\n)\n \nif (isValid) {\n console.log('Session key authorized')\n} else {\n console.log('Session key not authorized')\n}\n","title":"4. Verify Authorization Signature","titles":["Using Session keys with Sequence",null]},"235":{"href":"/sdk/typescript/03-guides/04-session-keys#5-sign-message-with-session-key","html":"\n

Use the session key to sign a message client-side without user interaction:

\n
const message = 'Perform action without wallet confirmation'\nconst sessionSignature = await sessionWallet.signMessage(message)
\n","isPage":false,"text":"\nUse the session key to sign a message client-side without user interaction:\nconst message = 'Perform action without wallet confirmation'\nconst sessionSignature = await sessionWallet.signMessage(message)\n","title":"5. Sign Message with Session Key","titles":["Using Session keys with Sequence",null]},"236":{"href":"/sdk/typescript/03-guides/04-session-keys#6-verify-session-signature","html":"\n

Verify the session signature on the server or client side:

\n
const recoveredSessionAddress = ethers.utils.verifyMessage(message, sessionSignature)\nif (recoveredSessionAddress === sessionAddress) {\n  console.log('Session signature valid')\n} else {\n  console.log('Session signature invalid')\n}
\n

Note: You should retrieve the session key stored in local storage upon loading the application and only create a new session key if none can be found.

","isPage":false,"text":"\nVerify the session signature on the server or client side:\nconst recoveredSessionAddress = ethers.utils.verifyMessage(message, sessionSignature)\nif (recoveredSessionAddress === sessionAddress) {\n console.log('Session signature valid')\n} else {\n console.log('Session signature invalid')\n}\nNote: You should retrieve the session key stored in local storage upon loading the application and only create a new session key if none can be found.","title":"6. Verify Session Signature","titles":["Using Session keys with Sequence",null]},"237":{"href":"/sdk/typescript/03-guides/05-send-transaction#sending-transactions","html":"\n

Signing a transaction will only retrieve the signed payload.\nIf you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from signTransactions to sendTransaction):

\n
const transaction = {\n  to: recipientAddress,\n  value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSigning a transaction will only retrieve the signed payload.\nIf you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from signTransactions to sendTransaction):\nconst transaction = {\n to: recipientAddress,\n value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n ","title":"Sending Transactions","titles":[]},"238":{"href":"/sdk/typescript/03-guides/06-send-erc20#sending-erc-20-tokens","html":"\n

You can ask the wallet to send a single ERC-20 token transfer:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\n \n// Encode an ERC-20 token transfer to recipient of the specified amount\nconst data = erc20Interface.encodeFunctionData(\n  'transfer', [recipientAddress, amount]\n)\n \nconst transaction = {\n  to: daiContractAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\n \n// Encode two different ERC-20 token transfers\nconst data1 = erc20Interface.encodeFunctionData(\n  'transfer', [recipient1Address, amount1]\n)\nconst data2 = erc20Interface.encodeFunctionData(\n  'transfer', [recipient2Address, amount2]\n)\n \nconst transaction1 = {\n  to: daiContractAddress,\n  data: data1\n}\n \nconst transaction2 = {\n  to: daiContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nYou can ask the wallet to send a single ERC-20 token transfer:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\n \n// Encode an ERC-20 token transfer to recipient of the specified amount\nconst data = erc20Interface.encodeFunctionData(\n 'transfer', [recipientAddress, amount]\n)\n \nconst transaction = {\n to: daiContractAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\n \n// Encode two different ERC-20 token transfers\nconst data1 = erc20Interface.encodeFunctionData(\n 'transfer', [recipient1Address, amount1]\n)\nconst data2 = erc20Interface.encodeFunctionData(\n 'transfer', [recipient2Address, amount2]\n)\n \nconst transaction1 = {\n to: daiContractAddress,\n data: data1\n}\n \nconst transaction2 = {\n to: daiContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-20 Tokens","titles":[]},"239":{"href":"/sdk/typescript/03-guides/07-send-erc721#sending-erc-721-nft-tokens","html":"\n

Sending an ERC-721 NFT is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:

\n
const erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode the transfer of the NFT tokenId to recipient\nconst address = await wallet.getAddress()\nconst data = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipientAddress, tokenId]\n)\n \nconst transaction = {\n  to: erc721TokenAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode two different ERC-721 token transfers\nconst data1 = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient1Address, amount1]\n)\nconst data2 = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient2Address, amount2]\n)\n \nconst transaction1 = {\n  to: erc721ContractAddress,\n  data: data1\n}\n \nconst transaction2 = {\n  to: erc721ContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSending an ERC-721 NFT is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode the transfer of the NFT tokenId to recipient\nconst address = await wallet.getAddress()\nconst data = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipientAddress, tokenId]\n)\n \nconst transaction = {\n to: erc721TokenAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode two different ERC-721 token transfers\nconst data1 = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient1Address, amount1]\n)\nconst data2 = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient2Address, amount2]\n)\n \nconst transaction1 = {\n to: erc721ContractAddress,\n data: data1\n}\n \nconst transaction2 = {\n to: erc721ContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-721 (NFT) Tokens","titles":[]},"240":{"href":"/sdk/typescript/03-guides/08-send-erc1155#sending-erc-1155-collectible-tokens","html":"\n

Sending an ERC-1155 collectible is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:

\n
const erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode the transfer of the collectible to recipient\nconst address = await wallet.getAddress()\nconst data = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipientAddress, tokenId, amount, '0x']\n)\n \nconst transaction = {\n  to: erc1155TokenAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode two different ERC-1155 token transfers\nconst data1 = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient1Address, token1Id, amount1, '0x']\n)\nconst data2 = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient2Address, token2Id, amount2, '0x']\n)\n \nconst transaction1 = {\n  to: erc1155ContractAddress,\n  data: data1\n}\nconst transaction2 = {\n  to: erc1155ContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSending an ERC-1155 collectible is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode the transfer of the collectible to recipient\nconst address = await wallet.getAddress()\nconst data = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipientAddress, tokenId, amount, '0x']\n)\n \nconst transaction = {\n to: erc1155TokenAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode two different ERC-1155 token transfers\nconst data1 = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient1Address, token1Id, amount1, '0x']\n)\nconst data2 = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient2Address, token2Id, amount2, '0x']\n)\n \nconst transaction1 = {\n to: erc1155ContractAddress,\n data: data1\n}\nconst transaction2 = {\n to: erc1155ContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-1155 (Collectible) Tokens","titles":[]},"241":{"href":"/sdk/typescript/03-guides/09-send-batch-transactions#sending-a-batch-of-transactions","html":"\n

Likewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:

\n
const transaction1 = {\n  to: recipient1Address,\n  value: 1000000000000000000\n}\n \nconst transaction2 = {\n  to: recipient2Address,\n  value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(response)
\n

The transactions don't have to be the same token or even token standard either.\nYou can mix and match:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\nconst erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\nconst erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \nconst erc20Data = erc20Interface.encodeFunctionData(\n  'transfer', [recipient2Address, amount2]\n)\nconst erc721Data = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient3Address, amount3]\n)\nconst erc1155Data = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient4Address, token4Id, amount4, '0x']\n)\n \nconst transactions = [\n  { to: recipient1Address, value: '1000000000000000000' },\n  { to: daiContractAddress, data: erc20Data },\n  { to: erc721ContractAddress, data: erc721Data },\n  { to: erc1155ContractAddress, data: erc1155Data }\n]\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction(transactions)\nconsole.log(response)
","isPage":true,"text":"\nLikewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:\nconst transaction1 = {\n to: recipient1Address,\n value: 1000000000000000000\n}\n \nconst transaction2 = {\n to: recipient2Address,\n value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(response)\nThe transactions don't have to be the same token or even token standard either.\nYou can mix and match:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \nconst erc20Data = erc20Interface.encodeFunctionData(\n 'transfer', [recipient2Address, amount2]\n)\nconst erc721Data = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient3Address, amount3]\n)\nconst erc1155Data = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient4Address, token4Id, amount4, '0x']\n)\n \nconst transactions = [\n { to: recipient1Address, value: '1000000000000000000' },\n { to: daiContractAddress, data: erc20Data },\n { to: erc721ContractAddress, data: erc721Data },\n { to: erc1155ContractAddress, data: erc1155Data }\n]\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction(transactions)\nconsole.log(response)","title":"Sending a Batch of Transactions","titles":[]},"242":{"href":"/sdk/typescript/03-guides/10-building-backends#building-backends-with-sequence","html":"\n","isPage":true,"text":"\n","title":"Building Backends with Sequence","titles":[]},"243":{"href":"/sdk/typescript/03-guides/10-building-backends#nodejs","html":"\n

The 0xsequence package which is available for browser / client use, also works perfectly on nodejs backends\nwritten in Javascript or Typescript.

\n","isPage":false,"text":"\nThe 0xsequence package which is available for browser / client use, also works perfectly on nodejs backends\nwritten in Javascript or Typescript.\n","title":"nodejs","titles":["Building Backends with Sequence",null]},"244":{"href":"/sdk/typescript/03-guides/10-building-backends#go","html":"\n

A complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.

\n

go-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.

\n","isPage":false,"text":"\nA complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.\ngo-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.\n","title":"Go","titles":["Building Backends with Sequence",null]},"245":{"href":"/sdk/typescript/03-guides/10-building-backends#ethkit","html":"\n

As part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.

\n","isPage":false,"text":"\nAs part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.\n","title":"ethkit","titles":["Building Backends with Sequence",null]},"246":{"href":"/sdk/typescript/03-guides/10-building-backends#support-for-other-backend-languages","html":"\n

If your backend services are written in a language other than JS or Go, you can still easily integrate Sequence,\nas Sequence is really just a standard Ethereum client library with some extra features. In many cases, the extra\nfeatures are best utilized on the client-side / dapp.

\n

If your situation for example is a Python or Java backend where you'd like to verify signatures from a Sequence Wallet,\nwell then, you can call the standard EIP1271 function for the account address\nfrom your backend.

\n

If you'd like to use the Sequence's Meta-Transaction capabilities, see Building Relaying Server with Sequence.

","isPage":false,"text":"\nIf your backend services are written in a language other than JS or Go, you can still easily integrate Sequence,\nas Sequence is really just a standard Ethereum client library with some extra features. In many cases, the extra\nfeatures are best utilized on the client-side / dapp.\nIf your situation for example is a Python or Java backend where you'd like to verify signatures from a Sequence Wallet,\nwell then, you can call the standard EIP1271 function for the account address\nfrom your backend.\nIf you'd like to use the Sequence's Meta-Transaction capabilities, see Building Relaying Server with Sequence.","title":"Support for other backend languages","titles":["Building Backends with Sequence",null]},"247":{"href":"/sdk/typescript/03-guides/overview#install","html":"\n

Sequence.js is a modular web3 stack and smart wallet package for Ethereum chains. You can think of it similar to ethers.js, but tailored to the Sequence stack which streamlines common functions needed for blockchain-enabled game development. The sequence.js SDK is composed of several sub-packages combined into a single meta-package called 0xsequence.\nTo add the SDK to your project, add a dependency on 0xsequence to your package.json:

\n
npm install 0xsequence ethers
\n

or

\n
pnpm install 0xsequence ethers
\n

or

\n
yarn add 0xsequence ethers
\n

If you know that your project only requires specific sub-packages, you can also depend on those directly with\nnpm add @0xsequence/<sub-package name>.

\n

Your package.json should look something like this (actual version may vary):

\n
{\n  "name": "my-dapp",\n  ...\n  "dependencies": {\n    "0xsequence": "^1.0.0",\n    "ethers": ^5.7.0"\n    ...\n  }\n}
\n","isPage":true,"text":"\nSequence.js is a modular web3 stack and smart wallet package for Ethereum chains. You can think of it similar to ethers.js, but tailored to the Sequence stack which streamlines common functions needed for blockchain-enabled game development. The sequence.js SDK is composed of several sub-packages combined into a single meta-package called 0xsequence.\nTo add the SDK to your project, add a dependency on 0xsequence to your package.json:\nnpm install 0xsequence ethers\nor\npnpm install 0xsequence ethers\nor\nyarn add 0xsequence ethers\nIf you know that your project only requires specific sub-packages, you can also depend on those directly with\nnpm add @0xsequence/<sub-package name>.\nYour package.json should look something like this (actual version may vary):\n{\n "name": "my-dapp",\n ...\n "dependencies": {\n "0xsequence": "^1.0.0",\n "ethers": ^5.7.0"\n ...\n }\n}\n","title":"Install","titles":[null]},"248":{"href":"/sdk/typescript/03-guides/overview#cdn-distribution-as-native-js","html":"\n

Optionally, 0xsequence can be installed as a JS script source (UMD distribution) via:

\n
<script src="https://cdn.ethers.io/lib/ethers-5.7.umd.min.js"></script>\n<script src="https://unpkg.com/0xsequence@latest/dist/0xsequence.umd.min.js"></script>
","isPage":false,"text":"\nOptionally, 0xsequence can be installed as a JS script source (UMD distribution) via:\n<script src="https://cdn.ethers.io/lib/ethers-5.7.umd.min.js"></script>\n<script src="https://unpkg.com/0xsequence@latest/dist/0xsequence.umd.min.js"></script>","title":"CDN distribution as native JS","titles":[null,"Install",null]},"249":{"href":"/sdk/typescript/connectors/01-overview#wallet-connectors","html":"\n

Sequence is compatible with all standard Ethereum libraries and connectors. If you've\ndeveloped your dapp to with work Metamask, it will also automatically work with Sequence.

\n

Our SDKs offer all the functionality you'd need to build a web3 dapp, but you can also\ncombine other libraries, tools, and wallet connectors :) Please see our open sourced Demo Dapp\nproject for an example use of Sequence, or see below on usage with additional connectors.

\n

For your dapps, you may also want to support many different kinds of wallets in addition\nto the Sequence Wallet. You may do this by using sequence.js or using one of the connectors below:

\n\n

Additionally, if you are building a mobile app or video game, please see the docs for\nthe respective SDK. Feel free to reach out to our team for help/questions too.

","isPage":true,"text":"\nSequence is compatible with all standard Ethereum libraries and connectors. If you've\ndeveloped your dapp to with work Metamask, it will also automatically work with Sequence.\nOur SDKs offer all the functionality you'd need to build a web3 dapp, but you can also\ncombine other libraries, tools, and wallet connectors :) Please see our open sourced Demo Dapp\nproject for an example use of Sequence, or see below on usage with additional connectors.\nFor your dapps, you may also want to support many different kinds of wallets in addition\nto the Sequence Wallet. You may do this by using sequence.js or using one of the connectors below:\n\nSequence Kit\nWagmi\nWeb3Modal\nRainbowKit\nweb3-onboard\nweb3-react\n\nAdditionally, if you are building a mobile app or video game, please see the docs for\nthe respective SDK. Feel free to reach out to our team for help/questions too.","title":"Wallet Connectors","titles":[]},"250":{"href":"/sdk/typescript/connectors/02-sequence-kit#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","html":"\n

Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.

\n","isPage":true,"text":"\nSequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.\n","title":"Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications","titles":[]},"251":{"href":"/sdk/typescript/connectors/02-sequence-kit#key-features","html":"\n\n

Explore the potential of Sequence Kit by trying out our demo!

\n
","isPage":false,"text":"\n\n\nUniversal Connections: Seamlessly connect via popular social logins such as Facebook, Google, Discord, and more! Your users will enjoy a smooth, secure onboarding process. 🔐🪪\n\n\nWeb3 Wallet Integration: Effortlessly integrate with leading web3 wallets like WalletConnect and MetaMask. Unleash the power of blockchain with just a few clicks! 🦊 ⛓️\n\n\nEmbedded Wallet Experience: Provide your users with a comprehensive embedded wallet, enabling them to manage their coins and collectibles all within your own application. 👛 🖼️ 🪙\n\n\nExplore the potential of Sequence Kit by trying out our demo!\n","title":"Key Features","titles":["Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications"]},"252":{"href":"/sdk/typescript/connectors/02-sequence-kit#next-steps","html":"
\n

Ready to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.

","isPage":false,"text":"\nReady to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.","title":"Next Steps","titles":[]},"253":{"href":"/sdk/typescript/connectors/03-wagmi#using-wagmi","html":"\n

The Sequence wallet used with Wagmi through the connector.

\n

:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Wallet Connect with wagmi.

\n

Source code is available too: https://github.com/0xsequence/demo-dapp-wagmi\n:::

\n","isPage":true,"text":"\nThe Sequence wallet used with Wagmi through the connector.\n:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Wallet Connect with wagmi.\nSource code is available too: https://github.com/0xsequence/demo-dapp-wagmi\n:::\n","title":"Using Wagmi","titles":[]},"254":{"href":"/sdk/typescript/connectors/03-wagmi#installation","html":"\n

The connector is installed via the npm package @0xsequence/wagmi-connector. If you are using the latest version of wagmi (>= 1.0.0) the latest version of the wagmi-connector package can be installed with the following command:

\n
npm install @0xsequence/wagmi-connector 0xsequence ethers
\n

or

\n
yarn add @0xsequence/wagmi-connector 0xsequence ethers
\n","isPage":false,"text":"\nThe connector is installed via the npm package @0xsequence/wagmi-connector. If you are using the latest version of wagmi (>= 1.0.0) the latest version of the wagmi-connector package can be installed with the following command:\nnpm install @0xsequence/wagmi-connector 0xsequence ethers\nor\nyarn add @0xsequence/wagmi-connector 0xsequence ethers\n","title":"Installation","titles":["Using Wagmi"]},"255":{"href":"/sdk/typescript/connectors/03-wagmi#usage","html":"\n

The connector is then imported and added to the list of connectors alongside the other wagmi connectors.

\n
import { SequenceConnector } from "@0xsequence/wagmi-connector";\n \nconst connectors = [\n  new SequenceConnector({\n    chains,\n    options: {\n      defaultNetwork: "polygon",\n      connect: {\n        app: "Demo-app",\n      },\n    },\n  }),\n  ...otherConnectors,\n];\n \nconst wagmiConfig = createConfig({\n  autoConnect: true,\n  connectors,\n  publicClient,\n  webSocketPublicClient,\n});
\n","isPage":false,"text":"\nThe connector is then imported and added to the list of connectors alongside the other wagmi connectors.\nimport { SequenceConnector } from "@0xsequence/wagmi-connector";\n \nconst connectors = [\n new SequenceConnector({\n chains,\n options: {\n defaultNetwork: "polygon",\n connect: {\n app: "Demo-app",\n },\n },\n }),\n ...otherConnectors,\n];\n \nconst wagmiConfig = createConfig({\n autoConnect: true,\n connectors,\n publicClient,\n webSocketPublicClient,\n});\n","title":"Usage","titles":["Using Wagmi"]},"256":{"href":"/sdk/typescript/connectors/03-wagmi#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using Wagmi"]},"257":{"href":"/sdk/typescript/connectors/03-wagmi#chains","html":"\n

Chains supported by app. This is the same parameter as would be passed to other RainbowKit wallets.

\n","isPage":false,"text":"\nChains supported by app. This is the same parameter as would be passed to other RainbowKit wallets.\n","title":"chains","titles":["Using Wagmi","Parameters"]},"258":{"href":"/sdk/typescript/connectors/03-wagmi#optionsconnect-optional","html":"\n

Connection details that will be passed to Sequence upon connection, including app name, network id, etc...\nA more in depth description of the connect options is available here.

\n","isPage":false,"text":"\nConnection details that will be passed to Sequence upon connection, including app name, network id, etc...\nA more in depth description of the connect options is available here.\n","title":"options.connect (optional)","titles":["Using Wagmi","Parameters"]},"259":{"href":"/sdk/typescript/connectors/03-wagmi#optionsdefaultnetwork-optional","html":"\n

The default network to connect to. Sequence will default all operations to this network. It can also be defined using a number (e.g. 1 for Mainnet, 5 for Goerli, etc...).

\n","isPage":false,"text":"\nThe default network to connect to. Sequence will default all operations to this network. It can also be defined using a number (e.g. 1 for Mainnet, 5 for Goerli, etc...).\n","title":"options.defaultNetwork (optional)","titles":["Using Wagmi","Parameters"]},"260":{"href":"/sdk/typescript/connectors/03-wagmi#using-older-versions-of-wagmi--012x","html":"\n

If you are using an older version of Wagmi (<= 0.12.x), which is based on ethers instead of viem, use the following command to install the appropriate version of the wagmi connector:

\n
npm install @0xsequence/wagmi-connector@1.0 0xsequence ethers
\n

or

\n
yarn add @0xsequence/wagmi-connector@1.0 0xsequence ethers
\n","isPage":false,"text":"\nIf you are using an older version of Wagmi (<= 0.12.x), which is based on ethers instead of viem, use the following command to install the appropriate version of the wagmi connector:\nnpm install @0xsequence/wagmi-connector@1.0 0xsequence ethers\nor\nyarn add @0xsequence/wagmi-connector@1.0 0xsequence ethers\n","title":"Using older versions of Wagmi (<= 0.12.x)","titles":["Using Wagmi"]},"261":{"href":"/sdk/typescript/connectors/03-wagmi#using-nextjs","html":"\n

There are special considerations to take into account when using Wagmi with NextJs such that it functions harmoniously with the server-side rendering of NextJs.\nThe correct technique to use differs depending on whether the application uses the older pages router or the more recent app router.

\n

See this section for an explanation on using the Wagmi connector with app router.
\nSee the example app which uses the app router structure.

\n

See this section for an explanation on using the Wagmi connector with pages router.
\nSee the example app which uses the pages router structure.

\n","isPage":false,"text":"\nThere are special considerations to take into account when using Wagmi with NextJs such that it functions harmoniously with the server-side rendering of NextJs.\nThe correct technique to use differs depending on whether the application uses the older pages router or the more recent app router.\nSee this section for an explanation on using the Wagmi connector with app router.\nSee the example app which uses the app router structure.\nSee this section for an explanation on using the Wagmi connector with pages router.\nSee the example app which uses the pages router structure.\n","title":"Using NextJs","titles":["Using Wagmi"]},"262":{"href":"/sdk/typescript/connectors/03-wagmi#examples","html":"\n

Below are example dapps using various versions of wagmi and libraries.

\n

A demo app for the lastest version of Wagmi is available here.
\nA demo app is available for older version of Wagmi(<=0.12.x) is available here.

\n

A demo app for Wagmi + NextJs with the app router structure here.
\nA demo app for Wagmi + NextJs with the older pages router structure here.

","isPage":false,"text":"\nBelow are example dapps using various versions of wagmi and libraries.\nA demo app for the lastest version of Wagmi is available here.\nA demo app is available for older version of Wagmi(<=0.12.x) is available here.\nA demo app for Wagmi + NextJs with the app router structure here.\nA demo app for Wagmi + NextJs with the older pages router structure here.","title":"Examples","titles":["Using Wagmi"]},"263":{"href":"/sdk/typescript/connectors/04-rainbow-kit#using-rainbowkit","html":"\n

The Sequence wallet can be added to RainbowKit through the connector.

\n

:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Rainbow + Wallet Connect with RainbowKit.

\n

Source code is available too: https://github.com/0xsequence/demo-dapp-rainbowkit\n:::

\n","isPage":true,"text":"\nThe Sequence wallet can be added to RainbowKit through the connector.\n:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Rainbow + Wallet Connect with RainbowKit.\nSource code is available too: https://github.com/0xsequence/demo-dapp-rainbowkit\n:::\n","title":"Using RainbowKit","titles":[]},"264":{"href":"/sdk/typescript/connectors/04-rainbow-kit#installation","html":"\n

The connector is installed via the npm package @0xsequence/rainbowkit-plugin.

\n
npm install @0xsequence/rainbowkit-plugin 0xsequence ethers
\n

or

\n
yarn add @0xsequence/rainbowkit-plugin 0xsequence ethers
\n","isPage":false,"text":"\nThe connector is installed via the npm package @0xsequence/rainbowkit-plugin.\nnpm install @0xsequence/rainbowkit-plugin 0xsequence ethers\nor\nyarn add @0xsequence/rainbowkit-plugin 0xsequence ethers\n","title":"Installation","titles":["Using RainbowKit"]},"265":{"href":"/sdk/typescript/connectors/04-rainbow-kit#usage","html":"\n

The connector is then imported and added to the list of connectors alongside the other RainbowKit wallets.

\n
import { sequenceWallet } from '@0xsequence/rainbowkit-plugin'\nimport { connectorsForWallets } from '@rainbow-me/rainbowkit';\n \nconst connectors = connectorsForWallets([\n  {\n    groupName: 'Recommended',\n    wallets: [\n      sequenceWallet({\n        chains,\n        defaultNetwork: 'polygon',\n        connect: {\n          app: 'Demo-app'\n        }\n      }),\n      ...otherRainbowKitWallets\n    ]\n  }\n 
\n","isPage":false,"text":"\nThe connector is then imported and added to the list of connectors alongside the other RainbowKit wallets.\nimport { sequenceWallet } from '@0xsequence/rainbowkit-plugin'\nimport { connectorsForWallets } from '@rainbow-me/rainbowkit';\n \nconst connectors = connectorsForWallets([\n {\n groupName: 'Recommended',\n wallets: [\n sequenceWallet({\n chains,\n defaultNetwork: 'polygon',\n connect: {\n app: 'Demo-app'\n }\n }),\n ...otherRainbowKitWallets\n ]\n }\n \n","title":"Usage","titles":["Using RainbowKit"]},"266":{"href":"/sdk/typescript/connectors/04-rainbow-kit#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using RainbowKit"]},"267":{"href":"/sdk/typescript/connectors/04-rainbow-kit#chains","html":"\n

Chains supported by app. This is the same parameter as would be passed to other RainbowKit wallets.

\n","isPage":false,"text":"\nChains supported by app. This is the same parameter as would be passed to other RainbowKit wallets.\n","title":"chains","titles":["Using RainbowKit","Parameters"]},"268":{"href":"/sdk/typescript/connectors/04-rainbow-kit#connect-optional","html":"\n

Connect options for Sequence, including the name of the app and the default network id the wallet will attempt connection to.\nA more in depth description of the connect options is available here.

\n","isPage":false,"text":"\nConnect options for Sequence, including the name of the app and the default network id the wallet will attempt connection to.\nA more in depth description of the connect options is available here.\n","title":"connect (optional)","titles":["Using RainbowKit","Parameters"]},"269":{"href":"/sdk/typescript/connectors/04-rainbow-kit#defaultnetwork-optional","html":"\n

The default network to connect to. Sequence will default all operations to this network. It can also be defined using a number (e.g. 1 for Mainnet, 5 for Goerli, etc...).

\n","isPage":false,"text":"\nThe default network to connect to. Sequence will default all operations to this network. It can also be defined using a number (e.g. 1 for Mainnet, 5 for Goerli, etc...).\n","title":"defaultNetwork (optional)","titles":["Using RainbowKit","Parameters"]},"270":{"href":"/sdk/typescript/connectors/04-rainbow-kit#using-nextjs","html":"\n

There are special considerations to take into account when using NextJs with Wagmi-based libraries like RainbowKit, such that it functions harmoniously with the server-side rendering of NextJs.\nThe correct technique to use differs depending on whether the application uses the older pages router or the more recent app router.

\n

See this section for an explanation on using Wagmi or Wagmi-based libraries with app router.
\nSee the example app which uses the app router structure.

\n

See this section for an explanation on using Wagmi or Wagmi-based libraries with pages router.
\nSee the example app which uses the pages router structure.

\n","isPage":false,"text":"\nThere are special considerations to take into account when using NextJs with Wagmi-based libraries like RainbowKit, such that it functions harmoniously with the server-side rendering of NextJs.\nThe correct technique to use differs depending on whether the application uses the older pages router or the more recent app router.\nSee this section for an explanation on using Wagmi or Wagmi-based libraries with app router.\nSee the example app which uses the app router structure.\nSee this section for an explanation on using Wagmi or Wagmi-based libraries with pages router.\nSee the example app which uses the pages router structure.\n","title":"Using NextJs","titles":["Using RainbowKit"]},"271":{"href":"/sdk/typescript/connectors/04-rainbow-kit#using-older-versions-of-wagmi--012x","html":"\n

If you are using an older version of Wagmi (<= 0.12.x), which is based on ethers instead of viem, use the following command to install the appropriate version of the wagmi connector:

\n
npm install @0xsequence/wagmi-connector@1.0 0xsequence ethers
\n

or

\n
yarn add @0xsequence/wagmi-connector@1.0 0xsequence ethers
\n","isPage":false,"text":"\nIf you are using an older version of Wagmi (<= 0.12.x), which is based on ethers instead of viem, use the following command to install the appropriate version of the wagmi connector:\nnpm install @0xsequence/wagmi-connector@1.0 0xsequence ethers\nor\nyarn add @0xsequence/wagmi-connector@1.0 0xsequence ethers\n","title":"Using older versions of Wagmi (<= 0.12.x)","titles":["Using RainbowKit"]},"272":{"href":"/sdk/typescript/connectors/04-rainbow-kit#examples","html":"\n

A demo app for RainbowKit is available here

\n

A demo app for NextJs + Wagmi (which is applicable for wagmi-based libraries) with the app router structure here.
\nA demo app for NextJs + Wagmi (which is applicable for wagmi-based libraries) with the older pages router structure here.

","isPage":false,"text":"\nA demo app for RainbowKit is available here\nA demo app for NextJs + Wagmi (which is applicable for wagmi-based libraries) with the app router structure here.\nA demo app for NextJs + Wagmi (which is applicable for wagmi-based libraries) with the older pages router structure here.","title":"Examples","titles":["Using RainbowKit"]},"273":{"href":"/sdk/typescript/connectors/05-web3-onboard#using-web3-onboard","html":"\n

The Sequence wallet can be added through the Blocknative web3-onboard package.

\n

:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Wallet Connect with Web3-Onboard.

\n

Source code is available too: https://github.com/0xsequence/demo-dapp-web3-onboard\n:::

\n","isPage":true,"text":"\nThe Sequence wallet can be added through the Blocknative web3-onboard package.\n:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Wallet Connect with Web3-Onboard.\nSource code is available too: https://github.com/0xsequence/demo-dapp-web3-onboard\n:::\n","title":"Using Web3-Onboard","titles":[]},"274":{"href":"/sdk/typescript/connectors/05-web3-onboard#installation","html":"\n

The Sequence module is available through npm:

\n
npm install @web3-onboard/sequence 0xsequence ethers
\n

or

\n
yarn add @web3-onboard/sequence 0xsequence ethers
\n","isPage":false,"text":"\nThe Sequence module is available through npm:\nnpm install @web3-onboard/sequence 0xsequence ethers\nor\nyarn add @web3-onboard/sequence 0xsequence ethers\n","title":"Installation","titles":["Using Web3-Onboard"]},"275":{"href":"/sdk/typescript/connectors/05-web3-onboard#usage","html":"\n
import sequenceModule from '@web3-onboard/sequence'\n \nconst sequenceOptions = {\n  network: 137,\n  appName: 'My app'\n}\n \nconst sequenceOnboard = sequenceModule({})\n \nconst onboard = Onboard({\n  wallets: [\n    sequenceOnboard,\n    ...restWallets\n  ],\n  ...restofOnboardParams\n})\n 
\n","isPage":false,"text":"\nimport sequenceModule from '@web3-onboard/sequence'\n \nconst sequenceOptions = {\n network: 137,\n appName: 'My app'\n}\n \nconst sequenceOnboard = sequenceModule({})\n \nconst onboard = Onboard({\n wallets: [\n sequenceOnboard,\n ...restWallets\n ],\n ...restofOnboardParams\n})\n \n","title":"Usage","titles":["Using Web3-Onboard"]},"276":{"href":"/sdk/typescript/connectors/05-web3-onboard#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using Web3-Onboard"]},"277":{"href":"/sdk/typescript/connectors/05-web3-onboard#network-optional","html":"\n

The default network that the Sequence wallet will attempt to connect to.

\n","isPage":false,"text":"\nThe default network that the Sequence wallet will attempt to connect to.\n","title":"network (optional)","titles":["Using Web3-Onboard","Parameters"]},"278":{"href":"/sdk/typescript/connectors/05-web3-onboard#appname-optional","html":"\n

The name of the app which will show up in Sequence's prompt upon an attempt to connect.

\n","isPage":false,"text":"\nThe name of the app which will show up in Sequence's prompt upon an attempt to connect.\n","title":"appName (optional)","titles":["Using Web3-Onboard","Parameters"]},"279":{"href":"/sdk/typescript/connectors/05-web3-onboard#example","html":"\n

An example demo of an integration of Sequence + Web3 Onboard is available here

","isPage":false,"text":"\nAn example demo of an integration of Sequence + Web3 Onboard is available here","title":"Example","titles":["Using Web3-Onboard"]},"280":{"href":"/sdk/typescript/connectors/06-web3-react-v6#using-web3-react-v6","html":"\n

The connector is available for web3-react V6. Please note that later versions of web3-react cannot be used with the Web3-React V6 connector due to breaking changes.

\n","isPage":true,"text":"\nThe connector is available for web3-react V6. Please note that later versions of web3-react cannot be used with the Web3-React V6 connector due to breaking changes.\n","title":"Using Web3-React V6","titles":[]},"281":{"href":"/sdk/typescript/connectors/06-web3-react-v6#installation","html":"\n

The connector may be installed via the npm package:

\n
 npm install @0xsequence/web3-react-v6-connector 0xsequence ethers
\n","isPage":false,"text":"\nThe connector may be installed via the npm package:\n npm install @0xsequence/web3-react-v6-connector 0xsequence ethers\n","title":"Installation","titles":["Using Web3-React V6"]},"282":{"href":"/sdk/typescript/connectors/06-web3-react-v6#usage","html":"\n","isPage":false,"text":"\n","title":"Usage","titles":["Using Web3-React V6"]},"283":{"href":"/sdk/typescript/connectors/06-web3-react-v6#initialization","html":"\n

The connector must be initialized similarly to other connectors.

\n
import { SequenceConnector } from '@0xsequence/web3-react-v6-connector'\n \nconst options = {\n  appName: 'Web3 React Demo app'\n}\n \nexport const sequence = new SequenceConnector({ chainId: 137, appName: options.appName  })
\n","isPage":false,"text":"\nThe connector must be initialized similarly to other connectors.\nimport { SequenceConnector } from '@0xsequence/web3-react-v6-connector'\n \nconst options = {\n appName: 'Web3 React Demo app'\n}\n \nexport const sequence = new SequenceConnector({ chainId: 137, appName: options.appName })\n","title":"Initialization","titles":["Using Web3-React V6","Usage"]},"284":{"href":"/sdk/typescript/connectors/06-web3-react-v6#activationdeactivation","html":"\n

The connection can be activated and deactivated from the initialized connector similarly to other connectors.

\n
import { useWeb3React } from '@web3-react/core'\nimport { sequence as sequenceConnector } from './connectors/sequence'\n \nconst { activate } = useWeb3React()\n \nconst connectWeb3React = async () => {\n  activate(sequenceConnector);\n}\n \nconst disconnectWeb3React = async () => {\n  sequenceConnector.deactivate();\n}
\n","isPage":false,"text":"\nThe connection can be activated and deactivated from the initialized connector similarly to other connectors.\nimport { useWeb3React } from '@web3-react/core'\nimport { sequence as sequenceConnector } from './connectors/sequence'\n \nconst { activate } = useWeb3React()\n \nconst connectWeb3React = async () => {\n activate(sequenceConnector);\n}\n \nconst disconnectWeb3React = async () => {\n sequenceConnector.deactivate();\n}\n","title":"Activation/Deactivation","titles":["Using Web3-React V6","Usage"]},"285":{"href":"/sdk/typescript/connectors/06-web3-react-v6#options","html":"\n","isPage":false,"text":"\n","title":"Options","titles":["Using Web3-React V6"]},"286":{"href":"/sdk/typescript/connectors/06-web3-react-v6#chainid","html":"\n

The default chain id as number that the Sequence wallet will attempt to connect to.

\n","isPage":false,"text":"\nThe default chain id as number that the Sequence wallet will attempt to connect to.\n","title":"chainId","titles":["Using Web3-React V6","Options"]},"287":{"href":"/sdk/typescript/connectors/06-web3-react-v6#appname-optional","html":"\n

The value of appName will be displayed by the Sequence wallet when initiating a connection.

\n","isPage":false,"text":"\nThe value of appName will be displayed by the Sequence wallet when initiating a connection.\n","title":"appName (optional)","titles":["Using Web3-React V6","Options"]},"288":{"href":"/sdk/typescript/connectors/06-web3-react-v6#example","html":"\n

A demo app for Web3-React v6 is available here

","isPage":false,"text":"\nA demo app for Web3-React v6 is available here","title":"Example","titles":["Using Web3-React V6"]},"289":{"href":"/sdk/typescript/connectors/07-web3modal#using-web3modal","html":"\n

The Sequence wallet can easily be used with Web3Modal.

\n

:::tip Try it live :)\nTry a live Dapp example using Sequence + Wallet Connect with Web3Modal.

\n

Source code is available too: https://github.com/0xsequence/demo-dapp-web3modal\n:::

\n","isPage":true,"text":"\nThe Sequence wallet can easily be used with Web3Modal.\n:::tip Try it live :)\nTry a live Dapp example using Sequence + Wallet Connect with Web3Modal.\nSource code is available too: https://github.com/0xsequence/demo-dapp-web3modal\n:::\n","title":"Using Web3Modal","titles":[]},"290":{"href":"/sdk/typescript/connectors/07-web3modal#usage","html":"\n

The sequence wallet is compatible with wallet connect V2 and is therefore fully compatible with web3modal by default.\nUsers can use the Scan button in the sequence wallet to connect.

\n\n","isPage":false,"text":"\nThe sequence wallet is compatible with wallet connect V2 and is therefore fully compatible with web3modal by default.\nUsers can use the Scan button in the sequence wallet to connect.\n\n","title":"Usage","titles":["Using Web3Modal"]},"291":{"href":"/sdk/typescript/connectors/07-web3modal#example","html":"\n

An example demo for the sequence Wallet + web3modal is available [here] (https://github.com/0xsequence/demo-dapp-web3modal)

","isPage":false,"text":"\nAn example demo for the sequence Wallet + web3modal is available [here] (https://github.com/0xsequence/demo-dapp-web3modal)","title":"Example","titles":["Using Web3Modal"]},"292":{"href":"/sdk/typescript/connectors/08-FAQ#nextjs","html":"\n","isPage":true,"text":"\n","title":"NextJs","titles":[null]},"293":{"href":"/sdk/typescript/connectors/08-FAQ#why-does-my-wallet-integration-produce-an-error-when-used-with-nextjs","html":"\n

Wallet libraries and connectors must be rendered in the browser. This is particularly true for Wagmi and Wagmi-based libraries. Attempts to render the page elsewhere, such as on backend server, can produce errors in some situations. Rendering on the server is therefore highly discouraged.

\n

The method for fixing this issue will depend on the folder structure. The pages folder structure is available for all versions of NextJs, while the app folder structure is only available for NextJs version 13 and above and may require being turned on through an experimental setting.

\n

See using wallet libraries with next.js pages directory

\n

See using wallet libraries with next.js app directory(NextJs 13+ feature)

\n","isPage":false,"text":"\nWallet libraries and connectors must be rendered in the browser. This is particularly true for Wagmi and Wagmi-based libraries. Attempts to render the page elsewhere, such as on backend server, can produce errors in some situations. Rendering on the server is therefore highly discouraged.\nThe method for fixing this issue will depend on the folder structure. The pages folder structure is available for all versions of NextJs, while the app folder structure is only available for NextJs version 13 and above and may require being turned on through an experimental setting.\nSee using wallet libraries with next.js pages directory\nSee using wallet libraries with next.js app directory(NextJs 13+ feature)\n","title":"Why does my wallet integration produce an error when used with next.js?","titles":[null,"NextJs"]},"294":{"href":"/sdk/typescript/connectors/08-FAQ#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-pages-directory-all-versions-of-nextjs","html":"\n

The content of the application which depends on Wagmi hooks must be mounted only once the application is rendered in the client. This is a limitation due to wagmi when used with NextJs, and all wagmi-based libraries will inherit this limitation. To do so we can use a useEffect hook to wait before rendering the application.

\n

In the example below, we wait until the app is mounted in the client before rendering the rest of the application:

\n
import { useIsMounted } from '../hooks'\nimport Home from '../components/Home'\n \nconst Page = () => {\n  const isMounted = useIsMounted()\n \n  if (!isMounted) return null\n  return (\n    <>\n      <Home />\n    </>\n  )\n}\n \nexport default Page
\n

A full code example of this setup working with the Wagmi library can be found on github.\nThe method described above is the one recommended by Wagmi and is demonstrated in their official example.

\n","isPage":false,"text":"\nThe content of the application which depends on Wagmi hooks must be mounted only once the application is rendered in the client. This is a limitation due to wagmi when used with NextJs, and all wagmi-based libraries will inherit this limitation. To do so we can use a useEffect hook to wait before rendering the application.\nIn the example below, we wait until the app is mounted in the client before rendering the rest of the application:\nimport { useIsMounted } from '../hooks'\nimport Home from '../components/Home'\n \nconst Page = () => {\n const isMounted = useIsMounted()\n \n if (!isMounted) return null\n return (\n <>\n <Home />\n </>\n )\n}\n \nexport default Page\nA full code example of this setup working with the Wagmi library can be found on github.\nThe method described above is the one recommended by Wagmi and is demonstrated in their official example.\n","title":"How do I use a wallet library and connector with next.js using the pages directory (all versions of NextJs)?","titles":[null,"NextJs"]},"295":{"href":"/sdk/typescript/connectors/08-FAQ#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-app-directory-version-13-and-above-only","html":"\n

NextJs 13 and above allows using a new folder structure in which the content is placed in an app directory. Enabling this feature may require explicitly indicating it with an experimental setting.\nWhen using such a folder structure, NextJs allows the declaration of Client Components which are components that will be rendered in the browser.\nA wrapper component containing the wallet library initialized with all the connectors must be declared with the "use client" directive. The "use client" directive is what will turn the wrapper component into a Client Component to be rendered in the browser.

\n

In addition, there is a bug with wagmi and nextJs when using the autoConnect feature which causes

\n

In the example below, we declare a wrapper component with the "use client" directive:

\n
"use client" // this directive informs next.js that the component is a Client Component to be rendered in the browser\n \nconst WagmiWrapper = ({ children }) => {\n  const wagmiClient = createClient({\n    autoConnect: true,\n    connectors,\n    provider,\n    webSocketProvider,\n  });\n \n \n  return (\n    <WagmiConfig client={wagmiClient}>\n      {children}\n    </WagmiConfig>\n  );\n}\n \nexport default WagmiWrapper
\n

This wrapper component can then be imported normally and wrap the rest of the application. The child components can be a combination of Client and Server components.

\n
// We import a custom wrapper component that initializes the wallet library and all its connectors\n// An example of the content of this wrapper component can be found here: https://github.com/0xsequence/demo-dapp-wagmi-next/blob/master/components/WagmiProvider.tsx\nimport WagmiWrapper from './WagmiWrapper'\n \n// We can then wrap our entire app with this browser's rendered component\nfunction MyApp({ Component, pageProps }: AppProps) {\n  return (\n    <WagmiWrapper>\n      <Component {...pageProps} />\n    </WagmiWrapper>\n  );\n}
\n

A full code example using Nextjs and the app directory can be found on github.\nThe method described above is the one recommended by Wagmi through their NextJs example which can be consulted by running the command npx create-wagmi and selecting the nextJs option.

\n

Click here for more information about Client Components.

","isPage":false,"text":"\nNextJs 13 and above allows using a new folder structure in which the content is placed in an app directory. Enabling this feature may require explicitly indicating it with an experimental setting.\nWhen using such a folder structure, NextJs allows the declaration of Client Components which are components that will be rendered in the browser.\nA wrapper component containing the wallet library initialized with all the connectors must be declared with the "use client" directive. The "use client" directive is what will turn the wrapper component into a Client Component to be rendered in the browser.\nIn addition, there is a bug with wagmi and nextJs when using the autoConnect feature which causes\nIn the example below, we declare a wrapper component with the "use client" directive:\n"use client" // this directive informs next.js that the component is a Client Component to be rendered in the browser\n \nconst WagmiWrapper = ({ children }) => {\n const wagmiClient = createClient({\n autoConnect: true,\n connectors,\n provider,\n webSocketProvider,\n });\n \n \n return (\n <WagmiConfig client={wagmiClient}>\n {children}\n </WagmiConfig>\n );\n}\n \nexport default WagmiWrapper\nThis wrapper component can then be imported normally and wrap the rest of the application. The child components can be a combination of Client and Server components.\n// We import a custom wrapper component that initializes the wallet library and all its connectors\n// An example of the content of this wrapper component can be found here: https://github.com/0xsequence/demo-dapp-wagmi-next/blob/master/components/WagmiProvider.tsx\nimport WagmiWrapper from './WagmiWrapper'\n \n// We can then wrap our entire app with this browser's rendered component\nfunction MyApp({ Component, pageProps }: AppProps) {\n return (\n <WagmiWrapper>\n <Component {...pageProps} />\n </WagmiWrapper>\n );\n}\nA full code example using Nextjs and the app directory can be found on github.\nThe method described above is the one recommended by Wagmi through their NextJs example which can be consulted by running the command npx create-wagmi and selecting the nextJs option.\nClick here for more information about Client Components.","title":"How do I use a wallet library and connector with next.js using the app directory (version 13 and above only)?","titles":[null,"NextJs"]},"296":{"href":"/sdk/unity/Advanced/01-introduction#advanced---introduction","html":"\n

For advanced users with experience developing applications on EVM-based blockchains, we've provided our own lightweight, custom-made for Unity, Ethereum library: SequenceEthereum.\nSequenceEthereum should provide everything you need to build your Unity app on the EVM, without all the extra bells and whistles that the popular Nethereum library provides.

\n

While SequenceEthereum is heavily tested, in general, when working with asynchronous methods in the library, you should consider them to be "unsafe", in that they may throw Exceptions when used improperly.\nIn general, wrapping async calls that can potentially throw Exceptions in try catch blocks is a best practice; particularly in Unity, where Tasks can fail silently when throwing exceptions - making debugging difficult when not wrapping calls in try catch blocks.

\n","isPage":true,"text":"\nFor advanced users with experience developing applications on EVM-based blockchains, we've provided our own lightweight, custom-made for Unity, Ethereum library: SequenceEthereum.\nSequenceEthereum should provide everything you need to build your Unity app on the EVM, without all the extra bells and whistles that the popular Nethereum library provides.\nWhile SequenceEthereum is heavily tested, in general, when working with asynchronous methods in the library, you should consider them to be "unsafe", in that they may throw Exceptions when used improperly.\nIn general, wrapping async calls that can potentially throw Exceptions in try catch blocks is a best practice; particularly in Unity, where Tasks can fail silently when throwing exceptions - making debugging difficult when not wrapping calls in try catch blocks.\n","title":"Advanced - Introduction","titles":[]},"297":{"href":"/sdk/unity/Advanced/01-introduction#important-components","html":"\n

When working with the SequenceEthereum library it can be helpful to understand some of the main "components" and how they logically fit together.

\n","isPage":false,"text":"\nWhen working with the SequenceEthereum library it can be helpful to understand some of the main "components" and how they logically fit together.\n","title":"Important Components","titles":["Advanced - Introduction"]},"298":{"href":"/sdk/unity/Advanced/02-wallets#wallets","html":"\n

In the context of SequenceEthereum, a Wallet is defined by the IWallet interface. There are currently 2 implementations of the IWallet interface in this SDK.

\n","isPage":true,"text":"\nIn the context of SequenceEthereum, a Wallet is defined by the IWallet interface. There are currently 2 implementations of the IWallet interface in this SDK.\n","title":"Wallets","titles":[]},"299":{"href":"/sdk/unity/Advanced/02-wallets#1-ethwallet","html":"\n

EthWallet is a standard EOA wallet for EVM chains.

\n

An EthWallet is easily created:

\n
IWallet eoaWallet = new EthWallet(); // This will generate a cryptographically random private key\nIWallet eoaWallet = new EthWallet(privateKeyString); // Create a wallet using a previously generated private key
\n","isPage":false,"text":"\nEthWallet is a standard EOA wallet for EVM chains.\nAn EthWallet is easily created:\nIWallet eoaWallet = new EthWallet(); // This will generate a cryptographically random private key\nIWallet eoaWallet = new EthWallet(privateKeyString); // Create a wallet using a previously generated private key\n","title":"1.","titles":["Wallets"]},"300":{"href":"/sdk/unity/Advanced/02-wallets#2-waastowalletadapter","html":"\n

WaaSToWalletAdapter is an adapter that allows you to use a WaaSWallet with the same IWallet interface as an EthWallet so that it may be used interchangeably with EOA wallets throughout the rest of the SequenceEthereum library.

\n

A WaaSToWalletAdapter is easily created once you have a WaaSWallet:

\n
IWallet waasAdapter = new WaaSToWalletAdapter(waasWallet);
\n","isPage":false,"text":"\nWaaSToWalletAdapter is an adapter that allows you to use a WaaSWallet with the same IWallet interface as an EthWallet so that it may be used interchangeably with EOA wallets throughout the rest of the SequenceEthereum library.\nA WaaSToWalletAdapter is easily created once you have a WaaSWallet:\nIWallet waasAdapter = new WaaSToWalletAdapter(waasWallet);\n","title":"2.","titles":["Wallets"]},"301":{"href":"/sdk/unity/Advanced/02-wallets#methods","html":"\n

The IWallet interface provides a number of methods for you. The most important of which are:

\n","isPage":false,"text":"\nThe IWallet interface provides a number of methods for you. The most important of which are:\n","title":"Methods","titles":["Wallets"]},"302":{"href":"/sdk/unity/Advanced/02-wallets#getaddress","html":"\n

Returns the Address for the wallet

\n
Address address = wallet.GetAddress();
\n","isPage":false,"text":"\nReturns the Address for the wallet\nAddress address = wallet.GetAddress();\n","title":"GetAddress","titles":["Wallets","Methods"]},"303":{"href":"/sdk/unity/Advanced/02-wallets#sendtransaction","html":"\n

Signs the given EthTransaction and submits it via the given client

\n
string transactionHash = await wallet.SendTransaction(client, transaction);
\n","isPage":false,"text":"\nSigns the given EthTransaction and submits it via the given client\nstring transactionHash = await wallet.SendTransaction(client, transaction);\n","title":"SendTransaction","titles":["Wallets","Methods"]},"304":{"href":"/sdk/unity/Advanced/02-wallets#sendtransactionandwaitforreceipt","html":"\n

Signs the given EthTransaction and submits it via the given client then waits for the TransactionReceipt

\n
TransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);
\n","isPage":false,"text":"\nSigns the given EthTransaction and submits it via the given client then waits for the TransactionReceipt\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n","title":"SendTransactionAndWaitForReceipt","titles":["Wallets","Methods"]},"305":{"href":"/sdk/unity/Advanced/02-wallets#sendtransactionbatch","html":"\n

Signs the given EthTransaction[] and submits them via the given client.\nIf wallet is an EthWallet, the transactions will be submitted sequentially, each of which may pass or fail. If the wallet is a WaaSToWalletAdapter, the transactions will be batched together into a single transaction that is submitted all at once and either passes or fails as a whole.\nSimilarly, if a wallet is an EthWallet the string[] (transaction hashes) you receive will be equal in length to the EthTransaction[] you submitted. While, if the wallet is a WaaSToWalletAdapter, you will only receive one transaction hash (string[] of length 1)

\n
string[] transactionHashes = await wallet.SendTransactionBatch(client, transactions);
\n","isPage":false,"text":"\nSigns the given EthTransaction[] and submits them via the given client.\nIf wallet is an EthWallet, the transactions will be submitted sequentially, each of which may pass or fail. If the wallet is a WaaSToWalletAdapter, the transactions will be batched together into a single transaction that is submitted all at once and either passes or fails as a whole.\nSimilarly, if a wallet is an EthWallet the string[] (transaction hashes) you receive will be equal in length to the EthTransaction[] you submitted. While, if the wallet is a WaaSToWalletAdapter, you will only receive one transaction hash (string[] of length 1)\nstring[] transactionHashes = await wallet.SendTransactionBatch(client, transactions);\n","title":"SendTransactionBatch","titles":["Wallets","Methods"]},"306":{"href":"/sdk/unity/Advanced/02-wallets#sendtransactionbatchandwaitforreceipts","html":"\n

Signs the given EthTransaction[] and submits them via the given client then waits for the TransactionReceipt[].\nIf wallet is an EthWallet, the transactions will be submitted sequentially, each of which may pass or fail. If the wallet is a WaaSToWalletAdapter, the transactions will be batched together into a single transaction that is submitted all at once and either passes or fails as a whole.\nSimilarly, if a wallet is an EthWallet the TransactionReceipt[] you receive will be equal in length to the EthTransaction[] you submitted. While, if the wallet is a WaaSToWalletAdapter, you will only receive one transaction receipt (TransactionReceipt[] of length 1)

\n
TransactionReceipt[] receipts = await wallet.SendTransactionAndWaitForReceipt(client, transactions);
\n","isPage":false,"text":"\nSigns the given EthTransaction[] and submits them via the given client then waits for the TransactionReceipt[].\nIf wallet is an EthWallet, the transactions will be submitted sequentially, each of which may pass or fail. If the wallet is a WaaSToWalletAdapter, the transactions will be batched together into a single transaction that is submitted all at once and either passes or fails as a whole.\nSimilarly, if a wallet is an EthWallet the TransactionReceipt[] you receive will be equal in length to the EthTransaction[] you submitted. While, if the wallet is a WaaSToWalletAdapter, you will only receive one transaction receipt (TransactionReceipt[] of length 1)\nTransactionReceipt[] receipts = await wallet.SendTransactionAndWaitForReceipt(client, transactions);\n","title":"SendTransactionBatchAndWaitForReceipts","titles":["Wallets","Methods"]},"307":{"href":"/sdk/unity/Advanced/02-wallets#signmessage","html":"\n

Given a message and an optional chain id, sign the message using the wallet. Omit the chain id from the signature if not provided

\n
string signedMessage = await wallet.SignMessage(message, chainId)
\n

Note: the chainId is expected to be in hexadecimal format. If you are working with a Chain object (recommended), you can use the AsString method to get the hexadecimal format of the chain id

\n
string signedMessage = await wallet.SignMessage(message, Chain.Polygon.AsString());
","isPage":false,"text":"\nGiven a message and an optional chain id, sign the message using the wallet. Omit the chain id from the signature if not provided\nstring signedMessage = await wallet.SignMessage(message, chainId)\nNote: the chainId is expected to be in hexadecimal format. If you are working with a Chain object (recommended), you can use the AsString method to get the hexadecimal format of the chain id\nstring signedMessage = await wallet.SignMessage(message, Chain.Polygon.AsString());","title":"SignMessage","titles":["Wallets","Methods"]},"308":{"href":"/sdk/unity/Advanced/03-clients#clients","html":"\n

In the context of SequenceEthereum, a Client is defined by the IEthClient interface.

\n

Creating a client requires a Chain. This will use our highly available and responsive Node Gateway service for your RPC requests; accessed using the API key from the Builder you've provided in your SequenceConfig scriptable object. If you prefer to use your own RPC URL, you can create a SequenceEthClient using a URL string as a parameter instead.

\n

You can create a client using this snippet:

\n
IEthClient client = new SequenceEthClient(Chain.Polygon);
\n","isPage":true,"text":"\nIn the context of SequenceEthereum, a Client is defined by the IEthClient interface.\nCreating a client requires a Chain. This will use our highly available and responsive Node Gateway service for your RPC requests; accessed using the API key from the Builder you've provided in your SequenceConfig scriptable object. If you prefer to use your own RPC URL, you can create a SequenceEthClient using a URL string as a parameter instead.\nYou can create a client using this snippet:\nIEthClient client = new SequenceEthClient(Chain.Polygon);\n","title":"Clients","titles":[]},"309":{"href":"/sdk/unity/Advanced/03-clients#methods","html":"\n

As your connection point to Ethereum nodes, there are a number of methods that can be performed by a client, these can be found in the IEthClient interface and are implemented by SequenceEthClient.

\n

Note: with the exception of BalanceAt (potentially), most users will not need to make use of these methods, but we have included them in our documentation for completeness.

\n","isPage":false,"text":"\nAs your connection point to Ethereum nodes, there are a number of methods that can be performed by a client, these can be found in the IEthClient interface and are implemented by SequenceEthClient.\nNote: with the exception of BalanceAt (potentially), most users will not need to make use of these methods, but we have included them in our documentation for completeness.\n","title":"Methods","titles":["Clients"]},"310":{"href":"/sdk/unity/Advanced/03-clients#balanceat","html":"\n

Used to get the gas currency balance of a given wallet at a given blockNumber (in hexadecimal format provided as a string)

\n
BigIntegar balance = await client.BalanceAt(wallet.GetAddress()); // By default, if no blockNumber string is provided, check the latest block\nBigIntegar balance = await client.BalanceAt(wallet.GetAddress(), blockNumber);
\n

Note: there are two special values for blockNumber. "earliest" will get the balance at the earliest block on the chain. "latest" will get the balance at the latest block on the chain and is the default parameter when none is provided. Otherwise, you'll want to provide the blockNumber string in hexadecimal format.

\nUnless you really want to get into the weeds with how things work, it is HIGHLY recommended to move on to the next page of the documentation at this point\n","isPage":false,"text":"\nUsed to get the gas currency balance of a given wallet at a given blockNumber (in hexadecimal format provided as a string)\nBigIntegar balance = await client.BalanceAt(wallet.GetAddress()); // By default, if no blockNumber string is provided, check the latest block\nBigIntegar balance = await client.BalanceAt(wallet.GetAddress(), blockNumber);\nNote: there are two special values for blockNumber. "earliest" will get the balance at the earliest block on the chain. "latest" will get the balance at the latest block on the chain and is the default parameter when none is provided. Otherwise, you'll want to provide the blockNumber string in hexadecimal format.\nUnless you really want to get into the weeds with how things work, it is HIGHLY recommended to move on to the next page of the documentation at this point\n","title":"BalanceAt","titles":["Clients","Methods"]},"311":{"href":"/sdk/unity/Advanced/03-clients#blockbynumber","html":"\n

Used to get the Block with a specific block number.

\n
Block block = await client.BlockByNumber(blockNumber);
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nUsed to get the Block with a specific block number.\nBlock block = await client.BlockByNumber(blockNumber);\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"BlockByNumber","titles":["Clients","Methods"]},"312":{"href":"/sdk/unity/Advanced/03-clients#blockbyhash","html":"\n

Used to get the Block by a specified block hash (string)

\n
Block block = await client.BlockByHash(blockHash);
\n","isPage":false,"text":"\nUsed to get the Block by a specified block hash (string)\nBlock block = await client.BlockByHash(blockHash);\n","title":"BlockByHash","titles":["Clients","Methods"]},"313":{"href":"/sdk/unity/Advanced/03-clients#blocknumber","html":"\n

Used to get the most recent block number in hexadecimal format

\n
string blockNumber = await client.BlockNumber();
\n","isPage":false,"text":"\nUsed to get the most recent block number in hexadecimal format\nstring blockNumber = await client.BlockNumber();\n","title":"BlockNumber","titles":["Clients","Methods"]},"314":{"href":"/sdk/unity/Advanced/03-clients#blockrange","html":"\n

Used to get a List<Block> from the blocks in a range specified by blockNumbers

\n
List<Block> blockRange = await client.BlockRange(startingBlockNumber, endingBlockNumber);
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nUsed to get a List<Block> from the blocks in a range specified by blockNumbers\nList<Block> blockRange = await client.BlockRange(startingBlockNumber, endingBlockNumber);\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"BlockRange","titles":["Clients","Methods"]},"315":{"href":"/sdk/unity/Advanced/03-clients#chainid","html":"\n

Used to get the chain id in hexadecimal format for the chain the client is connected to

\n
string chainId = await client.ChainID();
\n","isPage":false,"text":"\nUsed to get the chain id in hexadecimal format for the chain the client is connected to\nstring chainId = await client.ChainID();\n","title":"ChainID","titles":["Clients","Methods"]},"316":{"href":"/sdk/unity/Advanced/03-clients#codeat","html":"\n

Used to get the bytecode for a smart contract at a given address in hexadecimal format at a specified blockNumber

\n
string code = await client.CodeAt(contractAddress, blockNumber);
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nUsed to get the bytecode for a smart contract at a given address in hexadecimal format at a specified blockNumber\nstring code = await client.CodeAt(contractAddress, blockNumber);\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"CodeAt","titles":["Clients","Methods"]},"317":{"href":"/sdk/unity/Advanced/03-clients#estimategas","html":"\n

Given a TransactionCall estimate the amount of gas required for the transaction

\n
BigIntegar gas = await client.EstimateGas(transactionCall);
\n","isPage":false,"text":"\nGiven a TransactionCall estimate the amount of gas required for the transaction\nBigIntegar gas = await client.EstimateGas(transactionCall);\n","title":"EstimateGas","titles":["Clients","Methods"]},"318":{"href":"/sdk/unity/Advanced/03-clients#feehistory","html":"\n

Get a FeeHistoryResult for gas fees paid blockCount blocks since newestBlock (blockNumber)

\n
FeeHistoryResult feeHistory = await client.FeeHistory(blockCount, newestBlock, new int[] { });
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nGet a FeeHistoryResult for gas fees paid blockCount blocks since newestBlock (blockNumber)\nFeeHistoryResult feeHistory = await client.FeeHistory(blockCount, newestBlock, new int[] { });\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"FeeHistory","titles":["Clients","Methods"]},"319":{"href":"/sdk/unity/Advanced/03-clients#networkid","html":"\n

Used to get the chain id in integer format (as string) for the chain the client is connected to

\n
string networkId = await client.NetworkId();
\n","isPage":false,"text":"\nUsed to get the chain id in integer format (as string) for the chain the client is connected to\nstring networkId = await client.NetworkId();\n","title":"NetworkId","titles":["Clients","Methods"]},"320":{"href":"/sdk/unity/Advanced/03-clients#nonceat","html":"\n

Used to get the recommended nonce for a given Address at a given blockNumber (defaults to "latest")

\n
BigInteger nonce = await client.NonceAt(wallet.GetAddress()); // Nonce at latest\nBigIntegar nonce = await client.NonceAt(wallet.GetAddress(), blockNumber);
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nUsed to get the recommended nonce for a given Address at a given blockNumber (defaults to "latest")\nBigInteger nonce = await client.NonceAt(wallet.GetAddress()); // Nonce at latest\nBigIntegar nonce = await client.NonceAt(wallet.GetAddress(), blockNumber);\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"NonceAt","titles":["Clients","Methods"]},"321":{"href":"/sdk/unity/Advanced/03-clients#sendrawtransaction","html":"\n

Given a signed transaction string, submit the transaction to the network and return a transaction hash

\n
string transactionHash = await client.SendRawTransaction(signedTransactionString);
\n","isPage":false,"text":"\nGiven a signed transaction string, submit the transaction to the network and return a transaction hash\nstring transactionHash = await client.SendRawTransaction(signedTransactionString);\n","title":"SendRawTransaction","titles":["Clients","Methods"]},"322":{"href":"/sdk/unity/Advanced/03-clients#suggestgasprice","html":"\n

Used to get a suggested gas price

\n
BigIntegar gasPrice = await client.SuggestGasPrice();
\n","isPage":false,"text":"\nUsed to get a suggested gas price\nBigIntegar gasPrice = await client.SuggestGasPrice();\n","title":"SuggestGasPrice","titles":["Clients","Methods"]},"323":{"href":"/sdk/unity/Advanced/03-clients#suggestgastipcap","html":"\n

Used to get the max suggested priority fee for gas

\n
BigIntegar gasTipCap = await client.SuggestGasTipCap();
\n","isPage":false,"text":"\nUsed to get the max suggested priority fee for gas\nBigIntegar gasTipCap = await client.SuggestGasTipCap();\n","title":"SuggestGasTipCap","titles":["Clients","Methods"]},"324":{"href":"/sdk/unity/Advanced/03-clients#transactionbyhash","html":"\n

Used to get a Transaction by transaction hash

\n
Transaction transaction = await client.TransactionByHash(transactionHash);
\n","isPage":false,"text":"\nUsed to get a Transaction by transaction hash\nTransaction transaction = await client.TransactionByHash(transactionHash);\n","title":"TransactionByHash","titles":["Clients","Methods"]},"325":{"href":"/sdk/unity/Advanced/03-clients#transactioncount","html":"\n

Used to get the number of transactions in a block by block hash

\n
BigIntegar transactionCount = await client.TransactionCount(blockHash);
\n","isPage":false,"text":"\nUsed to get the number of transactions in a block by block hash\nBigIntegar transactionCount = await client.TransactionCount(blockHash);\n","title":"TransactionCount","titles":["Clients","Methods"]},"326":{"href":"/sdk/unity/Advanced/03-clients#waitfortransactionreceipt","html":"\n

Provide a transaction hash in order to wait for and return the TransactionReceipt

\n
TransactionReceipt receipt = await client.WaitForTransactionReceipt(transactionHash);
","isPage":false,"text":"\nProvide a transaction hash in order to wait for and return the TransactionReceipt\nTransactionReceipt receipt = await client.WaitForTransactionReceipt(transactionHash);","title":"WaitForTransactionReceipt","titles":["Clients","Methods"]},"327":{"href":"/sdk/unity/Advanced/04-transfers#transfers","html":"\n

In order to transfer ETH (or the gas currency for your network), it is recommended to use TranferEth.CreateTransaction

\n
EthTransaction transferTransaction = await TransferEth.CreateTransaction(client, wallet, recipientAddress, DecimalNormalizer.Normalize(1));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transferTransaction);
\n

Behind the scenes, this will create a GasLimitEstimator which will construct the transaction for you - including determining the appropriate gasPrice, gasLimit, and nonce.

","isPage":true,"text":"\nIn order to transfer ETH (or the gas currency for your network), it is recommended to use TranferEth.CreateTransaction\nEthTransaction transferTransaction = await TransferEth.CreateTransaction(client, wallet, recipientAddress, DecimalNormalizer.Normalize(1));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transferTransaction);\nBehind the scenes, this will create a GasLimitEstimator which will construct the transaction for you - including determining the appropriate gasPrice, gasLimit, and nonce.","title":"Transfers","titles":[]},"328":{"href":"/sdk/unity/Advanced/05-contracts#contracts","html":"\n

Creating a Contract object for an already deployed contract is rather straightforward.

\n
Contract contract = new Contract(contractAddress, abi);
\n

While it is not strictly required, it is highly recommended to provide the contract ABI as a string when creating a contract object. Failure to do so will make it so that you cannot fully take advantage of our ABI encoding and decoding.\nIf you do chose to go down this route, you will need to provide the entire function signature (function name + parameter types in brackets - e.g. transfer(address,uint256) for the ERC20 transfer method) when calling a function or querying the contract and you will only ever receive a string as a response to queries.

\n","isPage":true,"text":"\nCreating a Contract object for an already deployed contract is rather straightforward.\nContract contract = new Contract(contractAddress, abi);\nWhile it is not strictly required, it is highly recommended to provide the contract ABI as a string when creating a contract object. Failure to do so will make it so that you cannot fully take advantage of our ABI encoding and decoding.\nIf you do chose to go down this route, you will need to provide the entire function signature (function name + parameter types in brackets - e.g. transfer(address,uint256) for the ERC20 transfer method) when calling a function or querying the contract and you will only ever receive a string as a response to queries.\n","title":"Contracts","titles":[]},"329":{"href":"/sdk/unity/Advanced/05-contracts#calling-smart-contract-functions","html":"\n

To call a smart contract, you'll use the CallFunction method to create a CallContractFunction object which will determine the appropriate gasPrice, gasLimit, nonce, and data to include in a newly assembled EthTransaction when provided with a client and a ContractCall object to the Create async Task

\n

An example of calling a smart contract would look like:

\n
Contract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nTransactionReceipt receipt = await erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger).SendTransactionMethodAndWaitForReceipt(wallet, client);
\n

Note: if you don't want to wait for the receipt, you can use SendTransactionMethod instead.

\n

Alternatively, if you want to simply create the EthTransaction and send it at a later time, you can use the CallContractFunction object from CallFunction directly.

\n
Contract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nEthTransaction transaction = await erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger).Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n\n// or \nCallContractFunction transactionCreator = erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger);\nEthTransaction transaction = await transactionCreator.Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n\n// or \nCallContractFunction transactionCreator = erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger);\nTransactionReceipt receipt = await transactionCreator.SendTransactionMethodAndWaitForReceipt(wallet, client);
\n

You'll notice that the CallFunction method accepts an arbitrary number of arguments. You'll want to provide the arguments in the order they are provided in the ABI/function signature.

\n","isPage":false,"text":"\nTo call a smart contract, you'll use the CallFunction method to create a CallContractFunction object which will determine the appropriate gasPrice, gasLimit, nonce, and data to include in a newly assembled EthTransaction when provided with a client and a ContractCall object to the Create async Task\nAn example of calling a smart contract would look like:\nContract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nTransactionReceipt receipt = await erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger).SendTransactionMethodAndWaitForReceipt(wallet, client);\nNote: if you don't want to wait for the receipt, you can use SendTransactionMethod instead.\nAlternatively, if you want to simply create the EthTransaction and send it at a later time, you can use the CallContractFunction object from CallFunction directly.\nContract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nEthTransaction transaction = await erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger).Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n\n// or \nCallContractFunction transactionCreator = erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger);\nEthTransaction transaction = await transactionCreator.Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n\n// or \nCallContractFunction transactionCreator = erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger);\nTransactionReceipt receipt = await transactionCreator.SendTransactionMethodAndWaitForReceipt(wallet, client);\nYou'll notice that the CallFunction method accepts an arbitrary number of arguments. You'll want to provide the arguments in the order they are provided in the ABI/function signature.\n","title":"Calling Smart Contract Functions","titles":["Contracts"]},"330":{"href":"/sdk/unity/Advanced/05-contracts#understanding-data-type-mappings","html":"\n

When interacting with smart contracts, it is important to understand how EVM datatypes are mapped to C# datatypes in the SequenceEthereum library.

\n

bool -> bool

\n

Integers (int, uint, int256, uint8, ...) -> BigInteger

\n

address -> Address or string

\n

string -> string

\n

Fixed bytes (bytesN for any N value) -> FixedByte

\n

bytes -> byte[]

\n

If you were to, for example, provide a string where the ABI expects an Integer, you will receive an exception, even if that string could be converted into an integer.

\n","isPage":false,"text":"\nWhen interacting with smart contracts, it is important to understand how EVM datatypes are mapped to C# datatypes in the SequenceEthereum library.\nbool -> bool\nIntegers (int, uint, int256, uint8, ...) -> BigInteger\naddress -> Address or string\nstring -> string\nFixed bytes (bytesN for any N value) -> FixedByte\nbytes -> byte[]\nIf you were to, for example, provide a string where the ABI expects an Integer, you will receive an exception, even if that string could be converted into an integer.\n","title":"Understanding data type mappings","titles":["Contracts"]},"331":{"href":"/sdk/unity/Advanced/05-contracts#querying-contracts","html":"\n

To query a smart contract (read data from it), you'll use the SendQuery<T> method to query the contract and return the result as type T (if possible).\nAn example of querying a smart contract would look like:

\n
Contract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nBigIntegar balance = await erc20Contract.SendQuery<BigIntegar>(client, "balanceOf", address);
\n

Alternatively, if you wish to simply construct the query and send it at a later time, you can use QueryContract<T> to create a delegate.

\n
Contract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nQueryContractMessageSender<BigIntegar> balanceQuery = erc20Contract.QueryContract<BigIntegar>("balanceOf", address);\nBigIntegar balance = await balanceQuery(client);\n// or\nBigIntegar balance = await balanceQuery.SendQuery(client);
\n","isPage":false,"text":"\nTo query a smart contract (read data from it), you'll use the SendQuery<T> method to query the contract and return the result as type T (if possible).\nAn example of querying a smart contract would look like:\nContract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nBigIntegar balance = await erc20Contract.SendQuery<BigIntegar>(client, "balanceOf", address);\nAlternatively, if you wish to simply construct the query and send it at a later time, you can use QueryContract<T> to create a delegate.\nContract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nQueryContractMessageSender<BigIntegar> balanceQuery = erc20Contract.QueryContract<BigIntegar>("balanceOf", address);\nBigIntegar balance = await balanceQuery(client);\n// or\nBigIntegar balance = await balanceQuery.SendQuery(client);\n","title":"Querying Contracts","titles":["Contracts"]},"332":{"href":"/sdk/unity/Advanced/05-contracts#deploying-contracts","html":"\n

If you want to deploy a contract, you can use the ContractDeployer

\n
ContractDeploymentResult deploymentResult = await ContractDeployer.Deploy(client, wallet, contractBytecodeAsString);\nstring newlyDeployedContractAddress = deploymentResult.Receipt.contractAddress;
","isPage":false,"text":"\nIf you want to deploy a contract, you can use the ContractDeployer\nContractDeploymentResult deploymentResult = await ContractDeployer.Deploy(client, wallet, contractBytecodeAsString);\nstring newlyDeployedContractAddress = deploymentResult.Receipt.contractAddress;","title":"Deploying Contracts","titles":["Contracts"]},"333":{"href":"/sdk/unity/Advanced/06-tokens#tokens","html":"\n

Since their use is so ubiquitous, we've provided ERC20, ERC721, and ERC1155 wrappers of the Contract class with pre-defined ABIs for your convenience. When interacting with tokens, it is recommended to use these.

\n

Any of these contract wrappers can be created via a standard constructor requiring only the contract address. For example:

\n
ERC20 erc20 = new ERC20(contractAddress);
\n

You may also provide your own ABI should you need to rewrite our default; however, doing so may require you to modify or rewrite the contract wrappers.

\n

An example of querying:

\n
string symbol = await erc20.Symbol(client);\nBigIntegar balance = await erc20.BalanceOf(client, address);
\n

An example of sending a transaction:

\n
TransactionReceipt receipt = await erc20.Mint(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1)).SendTransactionMethodAndWaitForReceipt(wallet, client);
\n

As a wrapper of Contract, you also have the option to not create the EthTransaction and send later on.

\n
CallContractFunction transactionCreator = erc20.Transfer(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1));\nEthTransaction transaction = await transactionCreator.Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);
\n
","isPage":true,"text":"\nSince their use is so ubiquitous, we've provided ERC20, ERC721, and ERC1155 wrappers of the Contract class with pre-defined ABIs for your convenience. When interacting with tokens, it is recommended to use these.\nAny of these contract wrappers can be created via a standard constructor requiring only the contract address. For example:\nERC20 erc20 = new ERC20(contractAddress);\nYou may also provide your own ABI should you need to rewrite our default; however, doing so may require you to modify or rewrite the contract wrappers.\nAn example of querying:\nstring symbol = await erc20.Symbol(client);\nBigIntegar balance = await erc20.BalanceOf(client, address);\nAn example of sending a transaction:\nTransactionReceipt receipt = await erc20.Mint(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1)).SendTransactionMethodAndWaitForReceipt(wallet, client);\nAs a wrapper of Contract, you also have the option to not create the EthTransaction and send later on.\nCallContractFunction transactionCreator = erc20.Transfer(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1));\nEthTransaction transaction = await transactionCreator.Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n","title":"Tokens","titles":[]},"334":{"href":"/sdk/unity/Advanced/06-tokens#bonus-ownable","html":"
\n

Similar to with tokens, we have also provided an Ownable wrapper for your convenience as well which has a pre-defined ABI for methods implementing the Ownable interface.\nERC20, ERC721, and ERC1155 all inherit from this, but we encourage you to use Ownable whenever you wish to interact with the Ownable methods on any arbitrary contract for convenience and safety.

","isPage":false,"text":"\nSimilar to with tokens, we have also provided an Ownable wrapper for your convenience as well which has a pre-defined ABI for methods implementing the Ownable interface.\nERC20, ERC721, and ERC1155 all inherit from this, but we encourage you to use Ownable whenever you wish to interact with the Ownable methods on any arbitrary contract for convenience and safety.","title":"Bonus: Ownable","titles":[]},"335":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#how-to-manage-item-metadata-in-sequence-builder","html":"\n","isPage":true,"text":"\n","title":"How to Manage Item Metadata in Sequence Builder","titles":[]},"336":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#introduction","html":"\n

Following this guide, you can easily manage token metadata for your contract items in Sequence Builder, with a little help from Pinata for IPFS hosting.

\n","isPage":false,"text":"\nFollowing this guide, you can easily manage token metadata for your contract items in Sequence Builder, with a little help from Pinata for IPFS hosting.\n","title":"Introduction","titles":["How to Manage Item Metadata in Sequence Builder"]},"337":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-1-prepare-your-token-images-and-metadata","html":"\n

First things first, gather all your token images. For each token, you'll need a metadata file named id.json (like 1.json, 2.json, etc.). These files should look something like this at a minimum:

\n
{\n    "name": "Token Name",\n    "description": "Token Description",\n    "image": "ipfs://"\n}
\n

As you can guess, you can build from these basics. You could have your unique item attributes embedded in this token and generated on the fly.

\n","isPage":false,"text":"\nFirst things first, gather all your token images. For each token, you'll need a metadata file named id.json (like 1.json, 2.json, etc.). These files should look something like this at a minimum:\n{\n "name": "Token Name",\n "description": "Token Description",\n "image": "ipfs://"\n}\nAs you can guess, you can build from these basics. You could have your unique item attributes embedded in this token and generated on the fly.\n","title":"Step 1: Prepare Your Token Images and Metadata","titles":["How to Manage Item Metadata in Sequence Builder"]},"338":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-2-set-up-on-pinatacloud","html":"\n

Head over to Pinata.cloud and create an account. Upload each of your token images as separate files. Next, update the metadata JSON files with the ipfs address for each token. To do this, simply copy the CID (Content Identifier) for each file from Pinata and paste it after ipfs:// in your JSON files. It should look like this:

\n
{\n    "name": "Token Name",\n    "description": "Token Description",\n    "image": "ipfs://QmdJzQExj2wnNY7pNNn4KauzckjH4vA5xhoxmmis919Ev3"\n}
\n

\"Configure

\n","isPage":false,"text":"\nHead over to Pinata.cloud and create an account. Upload each of your token images as separate files. Next, update the metadata JSON files with the ipfs address for each token. To do this, simply copy the CID (Content Identifier) for each file from Pinata and paste it after ipfs:// in your JSON files. It should look like this:\n{\n "name": "Token Name",\n "description": "Token Description",\n "image": "ipfs://QmdJzQExj2wnNY7pNNn4KauzckjH4vA5xhoxmmis919Ev3"\n}\n\n","title":"Step 2: Set Up on Pinata.cloud","titles":["How to Manage Item Metadata in Sequence Builder"]},"339":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-3-upload-your-metadata-files","html":"\n

Now, gather all your JSON metadata files into a single folder on your computer. Use Pinata's 'Upload > Folder' feature to upload this folder. Then, copy the CID for the entire folder.

\n

\"Upload

\n","isPage":false,"text":"\nNow, gather all your JSON metadata files into a single folder on your computer. Use Pinata's 'Upload > Folder' feature to upload this folder. Then, copy the CID for the entire folder.\n\n","title":"Step 3: Upload Your Metadata Files","titles":["How to Manage Item Metadata in Sequence Builder"]},"340":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-4-get-the-folder-url","html":"\n

Click on name of the folder you created on Pinata. This will open a new tab showing all your uploaded JSON files. Copy the URL of this folder.

\n

\"Get

\n","isPage":false,"text":"\nClick on name of the folder you created on Pinata. This will open a new tab showing all your uploaded JSON files. Copy the URL of this folder.\n\n","title":"Step 4: Get the Folder URL","titles":["How to Manage Item Metadata in Sequence Builder"]},"341":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-5-set-up-on-sequence-builder","html":"\n

Navigate to Sequence Builder, set up your account, and create your project on the network of your choice. In the Contracts section, click on "Deploy New Contract".

\n

\"Configure

\n","isPage":false,"text":"\nNavigate to Sequence Builder, set up your account, and create your project on the network of your choice. In the Contracts section, click on "Deploy New Contract".\n\n","title":"Step 5: Set Up on Sequence Builder","titles":["How to Manage Item Metadata in Sequence Builder"]},"342":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-6-deploy-your-contract","html":"\n

Select "Web3 Game Item Collection (ERC-1155)" and name your contract. Sequence Builder will automatically deploy your contract on-chain.

\n

\"Deploy

\n","isPage":false,"text":"\nSelect "Web3 Game Item Collection (ERC-1155)" and name your contract. Sequence Builder will automatically deploy your contract on-chain.\n\n","title":"Step 6: Deploy Your Contract","titles":["How to Manage Item Metadata in Sequence Builder"]},"343":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-7-move-to-contract-details","html":"\n

Once you sign the transaction, your contract is ready! Click on it to view the details screen.

\n

\"Contract

\n","isPage":false,"text":"\nOnce you sign the transaction, your contract is ready! Click on it to view the details screen.\n\n","title":"Step 7: Move to Contract Details","titles":["How to Manage Item Metadata in Sequence Builder"]},"344":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-8-update-contract-attributes","html":"\n

Navigate to the “Write Contract” section. This is where you can modify attributes of your freshly deployed ERC-1155 contract. Two methods are what you should focus on for now:

\n\n","isPage":false,"text":"\nNavigate to the “Write Contract” section. This is where you can modify attributes of your freshly deployed ERC-1155 contract. Two methods are what you should focus on for now:\n\nsetBaseMetadataURI allows the creator to set the base metadata URL for this contract. You want this to point to the JSON files you’ve created, depending on NFT ID.\nmint mints one of your tokens and sends it to an address of your choosing.\n\n","title":"Step 8: Update Contract Attributes","titles":["How to Manage Item Metadata in Sequence Builder"]},"345":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-9-set-the-base-metadata-uri","html":"\n

Scroll to setBaseMetadataURI, expand it, and under tokenBaseURI paste the URL for the JSON folder preview you got from Pinata earlier. It should look something like this:

\n
https://azure-wooden-lemur-911.mypinata.cloud/ipfs/QmW5gvYGWb98GsN8VjTRWu4pLn6jryEXNxZKNWpPhVwtDm/
\n

Click “Write” and you will be prompted to sign again. This will modify the contract on chain to set the metadata base. Essentially any token ID you provide will be appended to this URL, along with the .json suffix. So if you mint token ID 123, it will look for tokenBaseURI + 123.json.

\n

\"Base

\n","isPage":false,"text":"\nScroll to setBaseMetadataURI, expand it, and under tokenBaseURI paste the URL for the JSON folder preview you got from Pinata earlier. It should look something like this:\nhttps://azure-wooden-lemur-911.mypinata.cloud/ipfs/QmW5gvYGWb98GsN8VjTRWu4pLn6jryEXNxZKNWpPhVwtDm/\nClick “Write” and you will be prompted to sign again. This will modify the contract on chain to set the metadata base. Essentially any token ID you provide will be appended to this URL, along with the .json suffix. So if you mint token ID 123, it will look for tokenBaseURI + 123.json.\n\n","title":"Step 9: Set the Base Metadata URI","titles":["How to Manage Item Metadata in Sequence Builder"]},"346":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-10-minting-time","html":"\n

Finally, it's time to mint! Scroll up to mint, expand it, and fill in the details:

\n\n

\"Mint

\n","isPage":false,"text":"\nFinally, it's time to mint! Scroll up to mint, expand it, and fill in the details:\n\nto (address): This is the address that the token will be sent to. Use your Sequence wallet address or any other valid address.\ntokenId (uint256): This is your token ID. As long as you have a tokenId.json file already uploaded to pinata.cloud under the folder, it will work.\namount (uint256): The number of tokens to mint (usually 1).\ndata (bytes): Enter 0x00 for this simple process.\n\n\n","title":"Step 10: Minting Time","titles":["How to Manage Item Metadata in Sequence Builder"]},"347":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-11-finalize-and-admire","html":"\n

Click "Write" and sign the transaction. Congratulations, you've just minted a token! Head over to the "Tokens" section to see your minted tokens with their names and images.

\n

\"Finalize

\n","isPage":false,"text":"\nClick "Write" and sign the transaction. Congratulations, you've just minted a token! Head over to the "Tokens" section to see your minted tokens with their names and images.\n\n","title":"Step 11: Finalize and Admire","titles":["How to Manage Item Metadata in Sequence Builder"]},"348":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-12-updating-metadata","html":"\n

If you make mistakes with the token metadata, you can always update it and then call the Sequence Metadata refresh endpoint to reload the specific tokens:

\n
curl -X GET "https://metadata.sequence.app/tokens/mumbai/0xb392c99d9f8e3e0b248e5c283818be5bf5cecca7/1/refresh"
\n

This is in the format: https://metadata.sequence.app/tokens/<chain-name>/<contract-address>/<token-id>/refresh

\n

Now that you are ready to mint, you might want to read about how you can launch your own serverless endpoint for securely minting tokens.

","isPage":false,"text":"\nIf you make mistakes with the token metadata, you can always update it and then call the Sequence Metadata refresh endpoint to reload the specific tokens:\ncurl -X GET "https://metadata.sequence.app/tokens/mumbai/0xb392c99d9f8e3e0b248e5c283818be5bf5cecca7/1/refresh"\nThis is in the format: https://metadata.sequence.app/tokens/<chain-name>/<contract-address>/<token-id>/refresh\nNow that you are ready to mint, you might want to read about how you can launch your own serverless endpoint for securely minting tokens.","title":"Step 12: Updating Metadata","titles":["How to Manage Item Metadata in Sequence Builder"]},"349":{"href":"/solutions/marketplaces/orderbook/02-quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"350":{"href":"/solutions/marketplaces/orderbook/02-quickstart#try-a-demo","html":"\n\n","isPage":false,"text":"\nCheck out our demo to see a custom marketplace in action.\n","title":"Try a Demo","titles":["Quickstart"]},"351":{"href":"/solutions/marketplaces/orderbook/02-quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template leveraging our Marketplace API.\n","title":"Template","titles":["Quickstart"]},"352":{"href":"/solutions/marketplaces/orderbook/02-quickstart#try-an-api-call","html":"\n
curl --request POST \\\n--url https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetTopOrders \\\n--header 'Content-Type: application/json' \\\n--data '{\n    "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n    "currencyAddresses": [\n        "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n    ],\n    "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n    "tokenIDs": ["0","1", "2", "3", "4", "5"],\n    "isListing": true,\n    "priceSort": "DESC"\n}'
","isPage":false,"text":"\ncurl --request POST \\\n--url https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetTopOrders \\\n--header 'Content-Type: application/json' \\\n--data '{\n "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n "currencyAddresses": [\n "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n ],\n "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n "tokenIDs": ["0","1", "2", "3", "4", "5"],\n "isListing": true,\n "priceSort": "DESC"\n}'","title":"Try an API Call","titles":["Quickstart"]},"353":{"href":"/solutions/payments/onramps/01-fiat-on-ramps#fiat-on-ramps","html":"\n

Sequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;

\n\n

Only providers that support the region the users are in will be displayed.

\n

\"Sequence

\n

As a developer integrating the Sequence Wallet, you can choose which payment provider can be visible to users. You can also specify which token will be available to purchase via the on-ramp providers.

\n

To learn more on how to configure the on-ramp options, see Sequence Connect Options.

","isPage":true,"text":"\nSequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;\n\nMoonpay\nRamp\nUPI via Onmeta\nSardine\nPayTrie\n\nOnly providers that support the region the users are in will be displayed.\n\nAs a developer integrating the Sequence Wallet, you can choose which payment provider can be visible to users. You can also specify which token will be available to purchase via the on-ramp providers.\nTo learn more on how to configure the on-ramp options, see Sequence Connect Options.","title":"Fiat On-Ramps","titles":[]},"354":{"href":"/solutions/technical-references/wallet-contracts/01-why#why-smart-contracts-wallets","html":"\n

Ethereum wallets may take two different forms, Externally owned accounts (EOAs) or Smart Contract Wallets.\nThe Sequence wallet is implemented as a smart contract, which allows the system to provide additional security and functionality.

\n","isPage":true,"text":"\nEthereum wallets may take two different forms, Externally owned accounts (EOAs) or Smart Contract Wallets.\nThe Sequence wallet is implemented as a smart contract, which allows the system to provide additional security and functionality.\n","title":"Why smart contracts wallets?","titles":[]},"355":{"href":"/solutions/technical-references/wallet-contracts/01-why#externally-owned-accounts","html":"\n

Externally owned accounts are the most primitive form of wallet on Ethereum; EOAs are accounts composed of a single ECDSA key pair.

\n","isPage":false,"text":"\nExternally owned accounts are the most primitive form of wallet on Ethereum; EOAs are accounts composed of a single ECDSA key pair.\n","title":"Externally owned accounts","titles":["Why smart contracts wallets?"]},"356":{"href":"/solutions/technical-references/wallet-contracts/01-why#pros","html":"\n\n","isPage":false,"text":"\n\nSimple to implement\nCheap to use (in some scenarios)\nEasy to backup\n\n","title":"Pros","titles":["Why smart contracts wallets?","Externally owned accounts"]},"357":{"href":"/solutions/technical-references/wallet-contracts/01-why#popular-examples","html":"\n\n","isPage":false,"text":"\n\nMetaMask\nRainbow\nMyEtherWallet\nTrust\n\n","title":"Popular examples","titles":["Why smart contracts wallets?","Externally owned accounts"]},"358":{"href":"/solutions/technical-references/wallet-contracts/01-why#smart-contract-wallets","html":"\n

Smart contract wallets are wallets that are implemented as smart contracts; it allows the wallets to implement arbitrary logic within the bounds of what's supported by the underlying virtual machine.\nBecause of this, these contracts can implement functionality that's not available for EOAs, and can also be upgraded if they are prepared to do so.

\n","isPage":false,"text":"\nSmart contract wallets are wallets that are implemented as smart contracts; it allows the wallets to implement arbitrary logic within the bounds of what's supported by the underlying virtual machine.\nBecause of this, these contracts can implement functionality that's not available for EOAs, and can also be upgraded if they are prepared to do so.\n","title":"Smart contract wallets","titles":["Why smart contracts wallets?"]},"359":{"href":"/solutions/technical-references/wallet-contracts/01-why#pros-1","html":"\n\n","isPage":false,"text":"\n\nMultiple keys\nKey rotation\nPay fees using ERC20 tokens (e.g. USDC)\nUpgradeability\nSocial recovery support\nMeta-transactions\nMore flexible design space\n\n","title":"Pros","titles":["Why smart contracts wallets?","Smart contract wallets"]},"360":{"href":"/solutions/technical-references/wallet-contracts/01-why#examples","html":"\n","isPage":false,"text":"\n\nSequence\nGnosis Safe\nArgent\n","title":"Examples","titles":["Why smart contracts wallets?"]},"361":{"href":"/solutions/wallets/embedded-wallet/01-overview#sequence-embedded-wallet","html":"\n

Sequence Embedded Wallet (or Wallet-as-a-Service) enables the creation, management and usage of fully functional EVM compatible wallets. These wallets can be created on-demand for each user and allow you to integrate an application with an Ethereum compatible blockchain, while using familiar constructions like RPC APIs.

\n

Sequence Embedded Wallet offers real non-custodial wallets and the system guarantees that each created wallet can only be accessed with the consent of the owner of the wallet.

\n","isPage":true,"text":"\nSequence Embedded Wallet (or Wallet-as-a-Service) enables the creation, management and usage of fully functional EVM compatible wallets. These wallets can be created on-demand for each user and allow you to integrate an application with an Ethereum compatible blockchain, while using familiar constructions like RPC APIs.\nSequence Embedded Wallet offers real non-custodial wallets and the system guarantees that each created wallet can only be accessed with the consent of the owner of the wallet.\n","title":"Sequence Embedded Wallet","titles":[]},"362":{"href":"/solutions/wallets/embedded-wallet/01-overview#architecture-overview","html":"\n

Sequence Embedded Wallets are native smart contract multisigs, the configuration of the multisig can be seen as a 2/2, both of which are required to sign in order to operate them; each one of the signers protects the wallet from a different facet of possible threats.

\n","isPage":false,"text":"\nSequence Embedded Wallets are native smart contract multisigs, the configuration of the multisig can be seen as a 2/2, both of which are required to sign in order to operate them; each one of the signers protects the wallet from a different facet of possible threats.\n","title":"Architecture overview","titles":["Sequence Embedded Wallet"]},"363":{"href":"/solutions/wallets/embedded-wallet/01-overview#signer-1-sequence-auth","html":"\n

Sequence Auth provides a simple way to add account creation, login, session management, and wallet support to your app, enabling applications to provide traditional web experiences (e.g. social login, email login, etc.) while providing access to crypto wallets to interact with smart contracts.

\n

All user and session data is encrypted by a Hardware Security Module operated by a third party. This makes it protected from both external attackers and internal access by Sequence Team or anyone else. Nobody can access a user's wallet but the user themselves.

\n

You won't need to trust us, this is a guarantee you can verify yourself: this service is hosted in a cryptographically attested secure enclave on Amazon Nitro platform. And we offer publicly available independently audited source code, so you can rest assured that it hasn't been tampered with.

\n","isPage":false,"text":"\nSequence Auth provides a simple way to add account creation, login, session management, and wallet support to your app, enabling applications to provide traditional web experiences (e.g. social login, email login, etc.) while providing access to crypto wallets to interact with smart contracts.\nAll user and session data is encrypted by a Hardware Security Module operated by a third party. This makes it protected from both external attackers and internal access by Sequence Team or anyone else. Nobody can access a user's wallet but the user themselves.\nYou won't need to trust us, this is a guarantee you can verify yourself: this service is hosted in a cryptographically attested secure enclave on Amazon Nitro platform. And we offer publicly available independently audited source code, so you can rest assured that it hasn't been tampered with.\n","title":"Signer 1: Sequence Auth","titles":["Sequence Embedded Wallet","Architecture overview"]},"364":{"href":"/solutions/wallets/embedded-wallet/01-overview#signer-2-sequence-guard","html":"\n

Sequence Guard is a service hosted by Sequence and contains the other key of the wallets. It's meant to be another line of defense, verifying not only user's identity but also their intent. It achieves this in two different ways:

\n

1 - Limits and allowlists: you can (from the development dashboard) configure what kind of actions are allowed, this means that the guard will only sign transactions within these constraints. For example, you can define that only NFT contract X can be called, and the guard will enforce that no other transactions can take place.

\n

2 - Authenticating the user: the Sequence Guard will authenticate the user independently of the Sequence Auth, it performs this action either by using a 3rd party OAuth 2.0 id token (from Meta, Google, X, etc.) or by directly communicating with the user via email/phone number with an OTP code. The direct communication is not always required and, when it does happen, it's seamless and branded with your project details.

\n","isPage":false,"text":"\nSequence Guard is a service hosted by Sequence and contains the other key of the wallets. It's meant to be another line of defense, verifying not only user's identity but also their intent. It achieves this in two different ways:\n1 - Limits and allowlists: you can (from the development dashboard) configure what kind of actions are allowed, this means that the guard will only sign transactions within these constraints. For example, you can define that only NFT contract X can be called, and the guard will enforce that no other transactions can take place.\n2 - Authenticating the user: the Sequence Guard will authenticate the user independently of the Sequence Auth, it performs this action either by using a 3rd party OAuth 2.0 id token (from Meta, Google, X, etc.) or by directly communicating with the user via email/phone number with an OTP code. The direct communication is not always required and, when it does happen, it's seamless and branded with your project details.\n","title":"Signer 2: Sequence Guard","titles":["Sequence Embedded Wallet","Architecture overview"]},"365":{"href":"/solutions/wallets/embedded-wallet/01-overview#threat-model","html":"\n

With these safeguards in place wallets are safe against the following scenarios:

\n
    \n
  1. \n

    Sequence.app backend is compromised, or guard keys are leaked: in this scenario, the user's identity must still be verified by Sequence Auth.

    \n
  2. \n
  3. \n

    Sequence Auth is compromised: in this scenario the Sequence Guard protects the wallets, because it independently authenticates the user, an attacker in this scenario wouldn't be able to access any wallets.

    \n
  4. \n
\n

The model also provides partial protection against the scenario:

\n
    \n
  1. Partner frontend is compromised, or MITM on the partner side: If an attacker were to be able to vulnerate the frontend of the partner, it could gain access to wallets at the time of login, but it cannot gain access to wallets of users who are currently inactive. This means that recovery from such a scenario is possible, with limited damage.
  2. \n
","isPage":false,"text":"\nWith these safeguards in place wallets are safe against the following scenarios:\n\n\nSequence.app backend is compromised, or guard keys are leaked: in this scenario, the user's identity must still be verified by Sequence Auth.\n\n\nSequence Auth is compromised: in this scenario the Sequence Guard protects the wallets, because it independently authenticates the user, an attacker in this scenario wouldn't be able to access any wallets.\n\n\nThe model also provides partial protection against the scenario:\n\nPartner frontend is compromised, or MITM on the partner side: If an attacker were to be able to vulnerate the frontend of the partner, it could gain access to wallets at the time of login, but it cannot gain access to wallets of users who are currently inactive. This means that recovery from such a scenario is possible, with limited damage.\n","title":"Threat model","titles":["Sequence Embedded Wallet"]},"366":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"367":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#try-a-demo","html":"\n\n","isPage":false,"text":"\nTry out seamless UX of our embedded wallet at our demo\n","title":"Try a Demo","titles":["Quickstart"]},"368":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template leveraging our embedded wallet.\n","title":"Template","titles":["Quickstart"]},"369":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#getting-started","html":"\n","isPage":false,"text":"\n","title":"Getting Started","titles":["Quickstart"]},"370":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#sdk-installation","html":"\n

We provide TypeScript and Unity SDKs for the Embedded Wallet authentication system. You can install the TypeScript SDK with:

\n
pnpm install @0xsequence/waas
\n

For more information on the Unity Embedded Wallet SDK, please refer to the TODO add link Unity SDK documentation

\n","isPage":false,"text":"\nWe provide TypeScript and Unity SDKs for the Embedded Wallet authentication system. You can install the TypeScript SDK with:\npnpm install @0xsequence/waas\nFor more information on the Unity Embedded Wallet SDK, please refer to the TODO add link Unity SDK documentation\n","title":"SDK Installation","titles":["Quickstart","Getting Started"]},"371":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#project-setup","html":"\n

Sequence Embedded Wallet is currently only available as a closed beta. To start using the Embedded Wallet SDKs, you'll need to contact the Sequence team and acquire API credentials. Once this is done, you will be provided with two keys:

\n\n","isPage":false,"text":"\nSequence Embedded Wallet is currently only available as a closed beta. To start using the Embedded Wallet SDKs, you'll need to contact the Sequence team and acquire API credentials. Once this is done, you will be provided with two keys:\n\nProject access key\nEmbedded Wallet configuration key\n\n","title":"Project Setup","titles":["Quickstart","Getting Started"]},"372":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#library-setup","html":"\n

To start using Sequence Embedded Wallet SDK, you'll need to create a new instance of the waas class:

\n
import { SequenceWaaS } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);
\n

Note that the library is operational, but it can't be used to interact with any wallet until you have authenticated as a user.

","isPage":false,"text":"\nTo start using Sequence Embedded Wallet SDK, you'll need to create a new instance of the waas class:\nimport { SequenceWaaS } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\nNote that the library is operational, but it can't be used to interact with any wallet until you have authenticated as a user.","title":"Library Setup","titles":["Quickstart","Getting Started"]},"373":{"href":"/solutions/wallets/universal-wallet/02-quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"374":{"href":"/solutions/wallets/universal-wallet/02-quickstart#try-a-demo","html":"\n\n","isPage":false,"text":"\nTry out the Universal Wallet leveraging SequenceKit at our demo\n","title":"Try a Demo","titles":["Quickstart"]},"375":{"href":"/solutions/wallets/universal-wallet/02-quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template using SequenceKit\n","title":"Template","titles":["Quickstart"]},"376":{"href":"/solutions/wallets/universal-wallet/02-quickstart#install","html":"\n

The sequence.js SDK is composed of several sub-packages combined into a single meta-package called 0xsequence.\nTo add the SDK to your project, add a dependency on 0xsequence to your package.json:

\n
npm install 0xsequence ethers
\n

or

\n
pnpm install 0xsequence ethers
\n

or

\n
yarn add 0xsequence ethers
\n

If you know that your project only requires specific sub-packages, you can also depend on those directly with\nnpm add @0xsequence/<sub-package name>.

\n

Your package.json should look something like this (actual version may vary):

\n
{\n  "name": "my-dapp",\n  ...\n  "dependencies": {\n    "0xsequence": "^1.0.0",\n    "ethers": ^5.7.0"\n    ...\n  }\n}
\n","isPage":false,"text":"\nThe sequence.js SDK is composed of several sub-packages combined into a single meta-package called 0xsequence.\nTo add the SDK to your project, add a dependency on 0xsequence to your package.json:\nnpm install 0xsequence ethers\nor\npnpm install 0xsequence ethers\nor\nyarn add 0xsequence ethers\nIf you know that your project only requires specific sub-packages, you can also depend on those directly with\nnpm add @0xsequence/<sub-package name>.\nYour package.json should look something like this (actual version may vary):\n{\n "name": "my-dapp",\n ...\n "dependencies": {\n "0xsequence": "^1.0.0",\n "ethers": ^5.7.0"\n ...\n }\n}\n","title":"Install","titles":["Quickstart"]},"377":{"href":"/solutions/wallets/universal-wallet/02-quickstart#cdn-distribution-as-native-js","html":"\n

Optionally, 0xsequence can be installed as a JS script source (UMD distribution) via:

\n
<script src="https://cdn.ethers.io/lib/ethers-5.7.umd.min.js"></script>\n<script src="https://unpkg.com/0xsequence@latest/dist/0xsequence.umd.min.js"></script>
","isPage":false,"text":"\nOptionally, 0xsequence can be installed as a JS script source (UMD distribution) via:\n<script src="https://cdn.ethers.io/lib/ethers-5.7.umd.min.js"></script>\n<script src="https://unpkg.com/0xsequence@latest/dist/0xsequence.umd.min.js"></script>","title":"CDN distribution as native JS","titles":["Quickstart","Install",null]},"378":{"href":"/solutions/wallets/universal-wallet/04-sequence-kit#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","html":"\n

Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.

\n","isPage":true,"text":"\nSequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.\n","title":"Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications","titles":[]},"379":{"href":"/solutions/wallets/universal-wallet/04-sequence-kit#key-features","html":"\n\n

Explore the potential of Sequence Kit by trying out our demo!

\n
","isPage":false,"text":"\n\n\nUniversal Connections: Seamlessly connect via popular social logins such as Facebook, Google, Discord, and more! Your users will enjoy a smooth, secure onboarding process. 🔐🪪\n\n\nWeb3 Wallet Integration: Effortlessly integrate with leading web3 wallets like WalletConnect and MetaMask. Unleash the power of blockchain with just a few clicks! 🦊 ⛓️\n\n\nEmbedded Wallet Experience: Provide your users with a comprehensive embedded wallet, enabling them to manage their coins and collectibles all within your own application. 👛 🖼️ 🪙\n\n\nExplore the potential of Sequence Kit by trying out our demo!\n","title":"Key Features","titles":["Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications"]},"380":{"href":"/solutions/wallets/universal-wallet/04-sequence-kit#next-steps","html":"
\n

Ready to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.

","isPage":false,"text":"\nReady to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.","title":"Next Steps","titles":[]},"381":{"href":"/solutions/wallets/universal-wallet/05-platforms#platforms","html":"\n","isPage":true,"text":"\n","title":"Platforms","titles":[]},"382":{"href":"/solutions/wallets/universal-wallet/05-platforms#web-wallet","html":"\n

Sequence works beautifully on all modern Web Browsers! Try it at https://sequence.app from any computer, phone or tablet.

\n

See Build With Sequence to get started.

\n","isPage":false,"text":"\nSequence works beautifully on all modern Web Browsers! Try it at https://sequence.app from any computer, phone or tablet.\nSee Build With Sequence to get started.\n","title":"Web Wallet","titles":["Platforms"]},"383":{"href":"/solutions/wallets/universal-wallet/05-platforms#mobile-wallet","html":"\n

Sequence works beautifully on your Mobile Web Browser! Try it at https://sequence.app from any phone or tablet.

\n

This means dapps which integrate the Sequence Wallet will automatically support users on all mobile devices,\nwhile using standard Ethereum web3 dapp-to-wallet communication. See Build With Sequence to get started.

\n","isPage":false,"text":"\nSequence works beautifully on your Mobile Web Browser! Try it at https://sequence.app from any phone or tablet.\nThis means dapps which integrate the Sequence Wallet will automatically support users on all mobile devices,\nwhile using standard Ethereum web3 dapp-to-wallet communication. See Build With Sequence to get started.\n","title":"Mobile Wallet","titles":["Platforms"]},"384":{"href":"/solutions/wallets/universal-wallet/05-platforms#browser-extension-wallet","html":"\n

Sequence Chrome Extension: Install

\n

\"Sequence

\n

\"Sequence

","isPage":false,"text":"\nSequence Chrome Extension: Install\n\n","title":"Browser Extension Wallet","titles":["Platforms"]},"385":{"href":"/solutions/wallets/universal-wallet/06-fiat-on-ramps#fiat-on-ramps","html":"\n

Sequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;

\n\n

Only providers that support the region the users are in will be displayed.

\n

\"Sequence

\n

As a developer integrating the Sequence Wallet, you can choose which payment provider can be visible to users. You can also specify which token will be available to purchase via the on-ramp providers.

\n

To learn more on how to configure the on-ramp options, see Sequence Connect Options.

","isPage":true,"text":"\nSequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;\n\nMoonpay\nRamp\nUPI via Onmeta\nSardine\nPayTrie\nWyre (deprecated)\n\nOnly providers that support the region the users are in will be displayed.\n\nAs a developer integrating the Sequence Wallet, you can choose which payment provider can be visible to users. You can also specify which token will be available to purchase via the on-ramp providers.\nTo learn more on how to configure the on-ramp options, see Sequence Connect Options.","title":"Fiat On-Ramps","titles":[]},"386":{"href":"/solutions/wallets/universal-wallet/07-key-management#key-management","html":"\n

Each Sequence wallet can be controlled by multiple private keys, acting like a multisignature wallet. Users can either create a Sequence wallet using one of the supported social login options or create a wallet with a private key stored only on that device.

\n

The improved security compared to traditional blockchain wallet comes from the fact that multiple independent keys need to be compromised for a malicious actor to take control of a user’s wallet, instead of a single key. The philosophy is that the more independent private-keys the user adds to their wallet, the more secure their wallet becomes, even if each individual key is only moderately secure on their own.

\n","isPage":true,"text":"\nEach Sequence wallet can be controlled by multiple private keys, acting like a multisignature wallet. Users can either create a Sequence wallet using one of the supported social login options or create a wallet with a private key stored only on that device.\nThe improved security compared to traditional blockchain wallet comes from the fact that multiple independent keys need to be compromised for a malicious actor to take control of a user’s wallet, instead of a single key. The philosophy is that the more independent private-keys the user adds to their wallet, the more secure their wallet becomes, even if each individual key is only moderately secure on their own.\n","title":"Key Management","titles":[]},"387":{"href":"/solutions/wallets/universal-wallet/07-key-management#social-login-wallets","html":"\n

Sequence Wallet created with social logins are currently secured using three private keys: Session keys, a Guard key and a Torus key. The Session key and Torus key are both generated for the first time when a user creates their Sequence Wallet via social login or email authentication.\nAt least two of the three keys are needed to unlock an account. This means that if one of the three keys is lost or compromised, a user can use the two remaining keys to replace the lost/compromised key. For example, if a user lost their device containing their Session Key, they can unlock their Sequence Wallet account by email or social login for the Torus key combined with the Guard key. Once done, another session key is auto-generated and the user is back in their account with all 3 keys accessible again.

\n","isPage":false,"text":"\nSequence Wallet created with social logins are currently secured using three private keys: Session keys, a Guard key and a Torus key. The Session key and Torus key are both generated for the first time when a user creates their Sequence Wallet via social login or email authentication.\nAt least two of the three keys are needed to unlock an account. This means that if one of the three keys is lost or compromised, a user can use the two remaining keys to replace the lost/compromised key. For example, if a user lost their device containing their Session Key, they can unlock their Sequence Wallet account by email or social login for the Torus key combined with the Guard key. Once done, another session key is auto-generated and the user is back in their account with all 3 keys accessible again.\n","title":"Social Login Wallets","titles":["Key Management"]},"388":{"href":"/solutions/wallets/universal-wallet/07-key-management#session-keys","html":"\n

Session keys are stored in the browser's IndexedDB.\nUsers should be prudent in safeguarding their devices from unauthorized access since an attacker with access to their IndexedDB effectively has control of their session key.

\n","isPage":false,"text":"\nSession keys are stored in the browser's IndexedDB.\nUsers should be prudent in safeguarding their devices from unauthorized access since an attacker with access to their IndexedDB effectively has control of their session key.\n","title":"Session Keys","titles":["Key Management","Social Login Wallets"]},"389":{"href":"/solutions/wallets/universal-wallet/07-key-management#guard-key","html":"\n

A Guard key is a key owned by Horizon. This key allows Horizon to help users that lost their Session key and can require additional information from the user in case of suspicious activity, if the user wants this additional protection. This key would be compromised if a malicious actor took control over Horizon servers hosting the Guard key.

\n","isPage":false,"text":"\nA Guard key is a key owned by Horizon. This key allows Horizon to help users that lost their Session key and can require additional information from the user in case of suspicious activity, if the user wants this additional protection. This key would be compromised if a malicious actor took control over Horizon servers hosting the Guard key.\n","title":"Guard Key","titles":["Key Management","Social Login Wallets"]},"390":{"href":"/solutions/wallets/universal-wallet/07-key-management#torus-key","html":"\n

A Torus key is a key generated by the Torus network, and is generated using a user’s email or social login credentials such as Google or AppleID. Torus uses threshold cryptography to ensure that only the user can access their private key, making these keys non-custodial. A Torus key would be compromised if a malicious actor had control over the social account or email a user used to generate their Torus key. All Torus keys could be compromised if the Torus network itself was compromised.

\n

:::info DEFAULTS + CUSTOMIZATION

\n

While this is the default setup for new Sequence Wallets, we intend to add the ability for users to add, remove and replace the keys controlling their wallet such that users can choose their preference in terms of security and user experience tradeoff. Even the Guard key will be able to be removed. Security tips and recommendations will be added to ensure users are well informed of the risks and how to protect themselves against them.

\n

:::

","isPage":false,"text":"\nA Torus key is a key generated by the Torus network, and is generated using a user’s email or social login credentials such as Google or AppleID. Torus uses threshold cryptography to ensure that only the user can access their private key, making these keys non-custodial. A Torus key would be compromised if a malicious actor had control over the social account or email a user used to generate their Torus key. All Torus keys could be compromised if the Torus network itself was compromised.\n:::info DEFAULTS + CUSTOMIZATION\nWhile this is the default setup for new Sequence Wallets, we intend to add the ability for users to add, remove and replace the keys controlling their wallet such that users can choose their preference in terms of security and user experience tradeoff. Even the Guard key will be able to be removed. Security tips and recommendations will be added to ensure users are well informed of the risks and how to protect themselves against them.\n:::","title":"Torus Key","titles":["Key Management","Social Login Wallets"]},"391":{"href":"/solutions/marketplaces/orderbook/examples/05-get-user-activities#getuseractivities","html":"\n

Retrieve activity data for a specific user, including orders and trades.

\n\nExample: GetUserActivities for a user with specific token IDs\n
curl -X POST -H "Content-Type: application/json" https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetUserActivities -d '{\n    "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n    "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n    "currencyAddresses": [\n        "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n    ],\n    "userAddress": "0xC2Be9CF6D9ee4fd211f88620760e829792659b16",\n    "tokenIDs": ["1"]\n}'
// Works in both a Webapp (browser) or Node.js:\nimport fetch from "cross-fetch";\n \n(async () => {\n  const res = await fetch(\n    "https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetUserActivities",\n    {\n      method: "POST",\n      headers: {\n        "Content-Type": "application/json",\n      },\n      body: JSON.stringify({\n        "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n        "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n        "currencyAddresses": [\n            "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n        ],\n        "userAddress": "0xC2Be9CF6D9ee4fd211f88620760e829792659b16",\n        "tokenIDs": ["1"]\n      }),\n    }\n  );\n \n  console.log("res", await res.json());\n})();
 Please contact our team for assistance with integrations to another target.
","isPage":true,"text":"\nRetrieve activity data for a specific user, including orders and trades.\n\nRequest: POST /api/Marketplace/GetUserActivities\nContent-Type: application/json\nBody (in JSON):\n\norderbookContractAddress (string) -- the address of the protocol contract.\ncollectionAddress (string) -- the address of the NFT collection.\ncurrencyAddresses (string[]) -- an array of currency contract addresses.\nuserAddress (string) -- the address of the user whose activities are being queried.\ntokenIDs (string[]) -- an array of token IDs to filter the activities by.\n\n\nResponse (in JSON):\n\npage\n\npage (i32) -- number of the page\npageSize (i32) -- number of orders on the page\nmore (bool) -- if there are more orders\n\n\norders (OrderbookOrder[])\n[\n\norderId (string) -- order id\ntokenContract (string) -- the collection contract\ntokenId (string) -- the tokenId of the collection in the order\nisListing (bool) -- is true if it's a listing for sale, or false if it's an offer\nquantity (string) -- the number of tokens the order is for\nquantityRemaining (string) -- the number of tokens after the order\ncurrencyAddress (string) -- the currency the token is trading in\npricePerToken (string) -- the price per token\nexpiry (string) -- the expiry of when the order is no longer valid\norderStatus (OrderStatus) -- the status of the order as an enum fom "OPEN", "CLOSED", "CANCELLED"\ncreatedBy (string) -- the address the order was created by\ncreatedAt (uint64) -- the time the order was created\norderbookContractAddress (string) -- the orderbook contract address\n]\n\n\n\n\n\nExample: GetUserActivities for a user with specific token IDs\ncurl -X POST -H "Content-Type: application/json" https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetUserActivities -d '{\n "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n "currencyAddresses": [\n "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n ],\n "userAddress": "0xC2Be9CF6D9ee4fd211f88620760e829792659b16",\n "tokenIDs": ["1"]\n}'// Works in both a Webapp (browser) or Node.js:\nimport fetch from "cross-fetch";\n \n(async () => {\n const res = await fetch(\n "https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetUserActivities",\n {\n method: "POST",\n headers: {\n "Content-Type": "application/json",\n },\n body: JSON.stringify({\n "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n "currencyAddresses": [\n "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n ],\n "userAddress": "0xC2Be9CF6D9ee4fd211f88620760e829792659b16",\n "tokenIDs": ["1"]\n }),\n }\n );\n \n console.log("res", await res.json());\n})(); Please contact our team for assistance with integrations to another target.","title":"GetUserActivities","titles":[null]},"392":{"href":"/solutions/marketplaces/orderbook/examples/05-get-user-activities#example-implementation","html":"

With the use of the GetUserActivities api developers can build custom and personalized social or tracking experiences to follow certain users in various interfaces.

\"GetUserActivities\"/

","isPage":false,"text":"With the use of the GetUserActivities api developers can build custom and personalized social or tracking experiences to follow certain users in various interfaces.","title":"Example implementation","titles":[null,"GetUserActivities"]},"393":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#wallet-configuration","html":"\n

Every Sequence wallet has a configuration defined by a threshold and a list of signers with their corresponding weights.

\n","isPage":true,"text":"\nEvery Sequence wallet has a configuration defined by a threshold and a list of signers with their corresponding weights.\n","title":"Wallet Configuration","titles":[]},"394":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#configuration-layout","html":"\n
NameTypeRangeDescription
Thresholduint161 - 65535Required combined total "weight" of signers for a signature to be considered valid.
Signerssigner[]unlimited - bounded by gasList of signers that with their corresponding "weight"s.
\n","isPage":false,"text":"\nNameTypeRangeDescriptionThresholduint161 - 65535Required combined total "weight" of signers for a signature to be considered valid.Signerssigner[]unlimited - bounded by gasList of signers that with their corresponding "weight"s.\n","title":"Configuration layout","titles":["Wallet Configuration"]},"395":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#signer-layout","html":"\n
NameTypeRangeDescription
"weight"uint80 - 255"weight" of every signature of the signer.
"address""address"--"address" of the signer, it may be an EOA or another smart contract wallet with EIP-1271 support.
\n","isPage":false,"text":"\nNameTypeRangeDescription"weight"uint80 - 255"weight" of every signature of the signer."address""address"--"address" of the signer, it may be an EOA or another smart contract wallet with EIP-1271 support.\n","title":"Signer layout","titles":["Wallet Configuration","Configuration layout"]},"396":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#example","html":"\n
{\n  "threshold": 5,\n  "signers": [\n    {\n      "address": "0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea",\n      "weight": 2\n    },\n    {\n      "address": "0x596af90cecdbf9a768886e771178fd5561dd27ab",\n      "weight": 3\n    },\n    {\n      "address": "0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1",\n      "weight": 2\n    },\n    {\n      "address": "0xec9a7204a43d3f4a82c84fde92d25bfc9110981e",\n      "weight": 1\n    }\n  ]\n}
\n

This example has a threshold of 5 and 4 signers.

\n","isPage":false,"text":"\n{\n "threshold": 5,\n "signers": [\n {\n "address": "0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea",\n "weight": 2\n },\n {\n "address": "0x596af90cecdbf9a768886e771178fd5561dd27ab",\n "weight": 3\n },\n {\n "address": "0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1",\n "weight": 2\n },\n {\n "address": "0xec9a7204a43d3f4a82c84fde92d25bfc9110981e",\n "weight": 1\n }\n ]\n}\nThis example has a threshold of 5 and 4 signers.\n","title":"Example","titles":["Wallet Configuration","Configuration layout","Signer layout"]},"397":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#the-valid-combinations-of-signers-are","html":"\n
- 0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea & 0x596af90cecdbf9a768886e771178fd5561dd27ab - combined weight of 2 + 3 = 5\n- 0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1 & 0x596af90cecdbf9a768886e771178fd5561dd27ab - combined weight of 2 + 3 = 5\n- 0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea, 0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1 & 0xec9a7204a43d3f4a82c84fde92d25bfc9110981e - combined weight of 2 + 2 + 1 = 5
\n

Any combination of signers with a combined weight under the threshold is considered invalid; any additional signers above the threshold are ignored.

\n","isPage":false,"text":"\n- 0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea & 0x596af90cecdbf9a768886e771178fd5561dd27ab - combined weight of 2 + 3 = 5\n- 0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1 & 0x596af90cecdbf9a768886e771178fd5561dd27ab - combined weight of 2 + 3 = 5\n- 0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea, 0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1 & 0xec9a7204a43d3f4a82c84fde92d25bfc9110981e - combined weight of 2 + 2 + 1 = 5\nAny combination of signers with a combined weight under the threshold is considered invalid; any additional signers above the threshold are ignored.\n","title":"The valid combinations of signers are:","titles":["Wallet Configuration","Configuration layout","Signer layout"]},"398":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#configuration-hash---imagehash","html":"\n

The configuration is never stored directly on the contract, but instead is hashed and checked against every time a signature is validated. This allows the wallet contracts to reduce the usage of storage and therefore the gas cost.

\n

Wallets that never have been updated don't store the imageHash directly, instead the imageHash is used as the salt during the contract creation, and signatures are validated against the address of the wallet.

\n","isPage":false,"text":"\nThe configuration is never stored directly on the contract, but instead is hashed and checked against every time a signature is validated. This allows the wallet contracts to reduce the usage of storage and therefore the gas cost.\nWallets that never have been updated don't store the imageHash directly, instead the imageHash is used as the salt during the contract creation, and signatures are validated against the address of the wallet.\n","title":"Configuration hash - ImageHash","titles":["Wallet Configuration","Configuration layout"]},"399":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#compute-image-hash","html":"\n
  keccak256(abi.encode( uint8 weight_1, address signer_1,\n  keccak256(abi.encode( uint8 weight_2, address signer_2,\n  keccak256(abi.encode( uint8 weight_3, address signer_3,\n  keccak256(abi.encode( uint256 threshold )) )) )) )) 
  let tmp = ethers.utils.solidityPack(['uint256'], [configuration.threshold])\n \n  for (const signer of configuration.signers) {\n    tmp = ethers.utils.keccak256(\n      ethers.utils.defaultAbiCoder.encode(\n        ['bytes32', 'uint8', 'address'],\n        [tmp, signer.weight, signer.address]\n      )\n    )\n  }\n \n  const imageHash = tmp
\n","isPage":false,"text":"\n keccak256(abi.encode( uint8 weight_1, address signer_1,\n keccak256(abi.encode( uint8 weight_2, address signer_2,\n keccak256(abi.encode( uint8 weight_3, address signer_3,\n keccak256(abi.encode( uint256 threshold )) )) )) )) let tmp = ethers.utils.solidityPack(['uint256'], [configuration.threshold])\n \n for (const signer of configuration.signers) {\n tmp = ethers.utils.keccak256(\n ethers.utils.defaultAbiCoder.encode(\n ['bytes32', 'uint8', 'address'],\n [tmp, signer.weight, signer.address]\n )\n )\n }\n \n const imageHash = tmp\n","title":"Compute image hash","titles":["Wallet Configuration","Configuration layout","Configuration hash - ImageHash"]},"400":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#initial-wallet-configuration","html":"\n

The initial wallet configuration determines the address of the wallet, subsequent updates don't change the address.

\n

The wallet address can be computed using the imageHash, the factory and mainModule of the wallet.

\n","isPage":false,"text":"\nThe initial wallet configuration determines the address of the wallet, subsequent updates don't change the address.\nThe wallet address can be computed using the imageHash, the factory and mainModule of the wallet.\n","title":"Initial wallet configuration","titles":["Wallet Configuration"]},"401":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#compute-wallet-address","html":"\n
// The code of the wallet proxy contract\nconst WalletProxyBytecode =\n"0x603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3";\n \n// These values are defined by the wallet context\n// they must be known in order to validate the counter-factual wallet imageHash\nconst factory = "0xf9D09D634Fb818b05149329C1dcCFAeA53639d96";\nconst mainModule = "0xd01F11855bCcb95f88D7A48492F66410d4637313";\n \n// Append the `mainModule` to the `WalletProxyBytecode`\n// this completed the creation code of the proxy contract\n// used for computing the wallet address as defined by the CREATE2 opcode\nconst codeHash = ethers.utils.keccak256(\nethers.utils.solidityPack(\n["bytes", "bytes32"],\n[WalletContractBytecode, ethers.utils.hexZeroPad(mainModule, 32)]\n)\n);\n \n// Compute the wallet address\nconst hash = ethers.utils.keccak256(\nethers.utils.solidityPack(\n["bytes1", "address", "bytes32", "bytes32"],\n["0xff", factory, salt, codeHash]\n)\n);\n \nconst address = ethers.utils.getAddress(ethers.utils.hexDataSlice(hash, 12));
","isPage":false,"text":"\n// The code of the wallet proxy contract\nconst WalletProxyBytecode =\n"0x603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3";\n \n// These values are defined by the wallet context\n// they must be known in order to validate the counter-factual wallet imageHash\nconst factory = "0xf9D09D634Fb818b05149329C1dcCFAeA53639d96";\nconst mainModule = "0xd01F11855bCcb95f88D7A48492F66410d4637313";\n \n// Append the `mainModule` to the `WalletProxyBytecode`\n// this completed the creation code of the proxy contract\n// used for computing the wallet address as defined by the CREATE2 opcode\nconst codeHash = ethers.utils.keccak256(\nethers.utils.solidityPack(\n["bytes", "bytes32"],\n[WalletContractBytecode, ethers.utils.hexZeroPad(mainModule, 32)]\n)\n);\n \n// Compute the wallet address\nconst hash = ethers.utils.keccak256(\nethers.utils.solidityPack(\n["bytes1", "address", "bytes32", "bytes32"],\n["0xff", factory, salt, codeHash]\n)\n);\n \nconst address = ethers.utils.getAddress(ethers.utils.hexDataSlice(hash, 12));","title":"Compute wallet address","titles":["Wallet Configuration","Initial wallet configuration","Configuration hash - ImageHash"]},"402":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#modules--wallet-update","html":"\n

Sequence modules are the underlying program implementation of the wallets; wallets can change modules at runtime.

\n

The MainModule is the initial module of every Sequence wallet; it differs from the other modules because it doesn't store the set of signers on contract storage; it uses the salt provided to the Factory contract.

\n","isPage":true,"text":"\nSequence modules are the underlying program implementation of the wallets; wallets can change modules at runtime.\nThe MainModule is the initial module of every Sequence wallet; it differs from the other modules because it doesn't store the set of signers on contract storage; it uses the salt provided to the Factory contract.\n","title":"Modules & wallet update","titles":[]},"403":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#wallet-implementation","html":"\n

Sequence modules can be assigned to wallets either by the factory or by updating it after the initial deployment. Only one module can be assigned to a wallet at a time.

\n","isPage":false,"text":"\nSequence modules can be assigned to wallets either by the factory or by updating it after the initial deployment. Only one module can be assigned to a wallet at a time.\n","title":"Wallet implementation","titles":["Modules & wallet update"]},"404":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#_updateconfiguration","html":"\n

The updateImplementation allows to update the underlying implementation of the wallet proxy. This implementation contains all the core code that defines the wallet's behaviour.

\n

:::warning Dangerous operation\nCalling updateImplementation with an invalid implementation will result in the corruption of the wallet.

\n

Corrupt wallets may lead to the loss of funds.\n:::

\n
function updateImplementation(\n  address _implementation\n) external override onlySelf {
\n","isPage":false,"text":"\nThe updateImplementation allows to update the underlying implementation of the wallet proxy. This implementation contains all the core code that defines the wallet's behaviour.\n:::warning Dangerous operation\nCalling updateImplementation with an invalid implementation will result in the corruption of the wallet.\nCorrupt wallets may lead to the loss of funds.\n:::\nfunction updateImplementation(\n address _implementation\n) external override onlySelf {\n","title":"_updateConfiguration","titles":["Modules & wallet update","Wallet implementation"]},"405":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#parameters","html":"\n
NameTypeDescription
_implementationaddressAddress of the new wallet implementation.
\n

This method has the onlySelf modifier, which means that it can only be called by the wallet itself using a self-referencing transaction. Calls to this method coming from other addresses, even if these addresses are signers of the wallet, will be rejected.

\n","isPage":false,"text":"\nNameTypeDescription_implementationaddressAddress of the new wallet implementation.\nThis method has the onlySelf modifier, which means that it can only be called by the wallet itself using a self-referencing transaction. Calls to this method coming from other addresses, even if these addresses are signers of the wallet, will be rejected.\n","title":"Parameters:","titles":["Modules & wallet update","Wallet implementation","_updateConfiguration"]},"406":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#reading-current-implementation","html":"\n

The wallet implementation is stored on the contract storage slot defined by the address of the wallet itself. Given that every wallet has a unique address, the implementation slot varies from wallet to wallet.

\n
import "ethers"\n \nconst address = "0x596af90cecdbf9a768886e771178fd5561dd27ab"\nconst provider = new ethers.providers.JsonRpcProvider("http://localhost:8545")\n \n// Read storage slot address(address)\nconst slot = await provider.getStorageAt(address, ethers.utils.defaultAbiCoder.encode(['address'], [address]))\n \n// Decode bytes32 as address value\nconst implementation = ethers.utils.defaultAbiCoder.decode(['address'], slot)[0]\n \nconsole.log(implementation)
\n","isPage":false,"text":"\nThe wallet implementation is stored on the contract storage slot defined by the address of the wallet itself. Given that every wallet has a unique address, the implementation slot varies from wallet to wallet.\nimport "ethers"\n \nconst address = "0x596af90cecdbf9a768886e771178fd5561dd27ab"\nconst provider = new ethers.providers.JsonRpcProvider("http://localhost:8545")\n \n// Read storage slot address(address)\nconst slot = await provider.getStorageAt(address, ethers.utils.defaultAbiCoder.encode(['address'], [address]))\n \n// Decode bytes32 as address value\nconst implementation = ethers.utils.defaultAbiCoder.decode(['address'], slot)[0]\n \nconsole.log(implementation)\n","title":"Reading current implementation","titles":["Modules & wallet update","Wallet implementation"]},"407":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#wallet-configuration-validation","html":"\n

:::info Fixed configuration\nSigner's configuration on wallets using MainModule can't be changed. The only way to change the set of signers or threshold is by updating the module of the wallet.\n:::

\n

All sequence modules must implement the ModuleAuth interface, this interface allows the rest of the module to validate signatures for the wallet. In the case of MainModule this interface is implemented as a counter-factual validation of hash passed to the factory during the contract wallet creation.

\n","isPage":false,"text":"\n:::info Fixed configuration\nSigner's configuration on wallets using MainModule can't be changed. The only way to change the set of signers or threshold is by updating the module of the wallet.\n:::\nAll sequence modules must implement the ModuleAuth interface, this interface allows the rest of the module to validate signatures for the wallet. In the case of MainModule this interface is implemented as a counter-factual validation of hash passed to the factory during the contract wallet creation.\n","title":"Wallet configuration validation","titles":["Modules & wallet update"]},"408":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#_isvalidimage","html":"\n
  function _isValidImage(\n    bytes32 _imageHash\n  ) internal override view returns (bool _isValid)
\n

Validates if the provided imageHash corresponds to the one configured in the wallet. This function is called internally to validate transaction and message signatures.

\n

The imageHash is a hash of the wallet configuration, which contains the wallet's threshold, signers and weights.

\n","isPage":false,"text":"\n function _isValidImage(\n bytes32 _imageHash\n ) internal override view returns (bool _isValid)\nValidates if the provided imageHash corresponds to the one configured in the wallet. This function is called internally to validate transaction and message signatures.\nThe imageHash is a hash of the wallet configuration, which contains the wallet's threshold, signers and weights.\n","title":"_isValidImage","titles":["Modules & wallet update","Wallet configuration validation"]},"409":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#parameters-1","html":"\n
NameTypeDescription
_imageHashbytes32Hash of wallet configuration to be validated.
\n","isPage":false,"text":"\nNameTypeDescription_imageHashbytes32Hash of wallet configuration to be validated.\n","title":"Parameters:","titles":["Modules & wallet update","Wallet configuration validation","_isValidImage"]},"410":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#return-values","html":"\n
NameTypeDescription
_isValidboolTrue if the given imageHash corresponds to the current wallet configuration.
\n","isPage":false,"text":"\nNameTypeDescription_isValidboolTrue if the given imageHash corresponds to the current wallet configuration.\n","title":"Return Values:","titles":["Modules & wallet update","Wallet configuration validation","_isValidImage"]},"411":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#mainmoduleupgradeable","html":"\n

MainModuleUpgradable is a module that mimics the behaviour of the MainModule but allows the wallet configuration to be updated.

\n","isPage":false,"text":"\nMainModuleUpgradable is a module that mimics the behaviour of the MainModule but allows the wallet configuration to be updated.\n","title":"MainModuleUpgradeable","titles":["Modules & wallet update"]},"412":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#updateimagehash","html":"\n

Updates the wallet imageHash, this is the hash that defines the wallet configuration (signers, weights, threshold).

\n
  function updateImageHash(\n    bytes32 _imageHash\n  ) external override onlySelf {
\n","isPage":false,"text":"\nUpdates the wallet imageHash, this is the hash that defines the wallet configuration (signers, weights, threshold).\n function updateImageHash(\n bytes32 _imageHash\n ) external override onlySelf {\n","title":"updateImageHash","titles":["Modules & wallet update","MainModuleUpgradeable"]},"413":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#parameters-2","html":"\n
NameTypeDescription
_imageHashbytes32Hash of the new configuration for the wallet.
\n

:::caution Unsanitized input\nThe imageHash is not validated, it is the responsibility of the caller to ensure that the hash is correct. Reasons for incorrect hashes include:

\n\n

In any of this cases the wallet will be rendered unusable.\n:::

\n

This method has the onlySelf modifier, which means that it can only be called by the wallet itself using a self-referencing transaction. Calls to this method coming from other addresses, even if these addresses are signers of the wallet, will be rejected.

\n","isPage":false,"text":"\nNameTypeDescription_imageHashbytes32Hash of the new configuration for the wallet.\n:::caution Unsanitized input\nThe imageHash is not validated, it is the responsibility of the caller to ensure that the hash is correct. Reasons for incorrect hashes include:\n\nThe combined weight of the signers is below the threshold.\nThe signers are not valid addresses.\nThe signers are smart contract wallets without proper support for EIP-1271.\nThe imageHash doesn't correspond to any wallet configuration (may be a random string).\nThe imageHash corresponds to an unknown wallet configuration.\n\nIn any of this cases the wallet will be rendered unusable.\n:::\nThis method has the onlySelf modifier, which means that it can only be called by the wallet itself using a self-referencing transaction. Calls to this method coming from other addresses, even if these addresses are signers of the wallet, will be rejected.\n","title":"Parameters:","titles":["Modules & wallet update","MainModuleUpgradeable","updateImageHash"]},"414":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#first-configuration-update","html":"\n

When Sequence wallets are created, the factory contract doesn't call an initialize function. The configuration is instead defined by the salt provided to the factory, the MainModule then checks the counterfactual validity of all signatures against the wallet address.

\n

This means there is no direct way to update the configuration of a wallet while still using the MainModule. Given that the first configuration update needs to also change the wallet implementation to the MainModuleUpgradable, the MainModule is updated to the MainModuleUpgradable and the updateImageHash method is called to update the wallet configuration.

\n
const transactions = [\n  {\n    delegateCall: false,\n    revertOnError: true,\n    to: wallet,\n    data: walletInterface.encodeFunctionData(\n      walletInterface.getFunction('updateImplementation'), [this.context.mainModuleUpgradable]\n    ),\n    value: ethers.constants.Zero,\n    gasLimit: ethers.constants.Zero,\n  },\n  {\n    delegateCall: false,\n    revertOnError: true,\n    to: wallet,\n    data: mainModuleInterface.encodeFunctionData(\n      mainModuleInterface.getFunction('updateImageHash'), [newImageHash]\n    ),\n    value: ethers.constants.Zero,\n    gasLimit: ethers.constants.Zero,\n  }\n]
\n","isPage":false,"text":"\nWhen Sequence wallets are created, the factory contract doesn't call an initialize function. The configuration is instead defined by the salt provided to the factory, the MainModule then checks the counterfactual validity of all signatures against the wallet address.\nThis means there is no direct way to update the configuration of a wallet while still using the MainModule. Given that the first configuration update needs to also change the wallet implementation to the MainModuleUpgradable, the MainModule is updated to the MainModuleUpgradable and the updateImageHash method is called to update the wallet configuration.\nconst transactions = [\n {\n delegateCall: false,\n revertOnError: true,\n to: wallet,\n data: walletInterface.encodeFunctionData(\n walletInterface.getFunction('updateImplementation'), [this.context.mainModuleUpgradable]\n ),\n value: ethers.constants.Zero,\n gasLimit: ethers.constants.Zero,\n },\n {\n delegateCall: false,\n revertOnError: true,\n to: wallet,\n data: mainModuleInterface.encodeFunctionData(\n mainModuleInterface.getFunction('updateImageHash'), [newImageHash]\n ),\n value: ethers.constants.Zero,\n gasLimit: ethers.constants.Zero,\n }\n]\n","title":"First configuration update","titles":["Modules & wallet update"]},"415":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#delegatecall-false","html":"\n

delegateCall is used to extend the wallet functionality beyond what's allowed by the module. In this case the called methods are defined on the modules themselves, so there is no need to use delegateCall.

\n","isPage":false,"text":"\ndelegateCall is used to extend the wallet functionality beyond what's allowed by the module. In this case the called methods are defined on the modules themselves, so there is no need to use delegateCall.\n","title":"delegateCall: false","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"416":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#revertonerror-true","html":"\n

revertOnError is used to revert the whole transaction bundle if a transaction flagged by it fails. In this case the operation should be atomic given that a partial wallet configuration update will render the wallet unusable.

\n","isPage":false,"text":"\nrevertOnError is used to revert the whole transaction bundle if a transaction flagged by it fails. In this case the operation should be atomic given that a partial wallet configuration update will render the wallet unusable.\n","title":"revertOnError: true","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"417":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#to-wallet","html":"\n

The methods being called are defined on the wallet itself, but need to be called externally, so the to address is the wallet itself.

\n","isPage":false,"text":"\nThe methods being called are defined on the wallet itself, but need to be called externally, so the to address is the wallet itself.\n","title":"to: wallet","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"418":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#value-ethersconstantszero","html":"\n

The value of the transaction is always zero, since the transaction is a self-referencing transaction and doesn't require transferring funds.

\n","isPage":false,"text":"\nThe value of the transaction is always zero, since the transaction is a self-referencing transaction and doesn't require transferring funds.\n","title":"value: ethers.constants.Zero","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"419":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#gaslimit-ethersconstantszero","html":"\n

The gasLimit of the transaction is always zero, since it represents an unlimited amount of gas.

\n

:::warning Dangerous operation

\n

When the wallet is first updated to the MainModuleUpgradable it doesn't have a valid imageHash yet. It's imperative that the imageHash is updated before the transaction bundle finishes executing.\nIf the imageHash is not updated before the transaction bundle finishes executing, the wallet will be rendered unusable.

\n

For this reason the following considerations should be taken when updating the wallet for the first time:

\n\n

:::

\n","isPage":false,"text":"\nThe gasLimit of the transaction is always zero, since it represents an unlimited amount of gas.\n:::warning Dangerous operation\nWhen the wallet is first updated to the MainModuleUpgradable it doesn't have a valid imageHash yet. It's imperative that the imageHash is updated before the transaction bundle finishes executing.\nIf the imageHash is not updated before the transaction bundle finishes executing, the wallet will be rendered unusable.\nFor this reason the following considerations should be taken when updating the wallet for the first time:\n\nAll transactions should be marked revertOnError = true.\nupdateImplementation and updateImageHash should both be declared on the same transaction bundle.\nThe gasLimit of both transactions should be set to unlimited (0).\n\n:::\n","title":"gasLimit: ethers.constants.Zero","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"420":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#subsequent-configuration-updates","html":"\n

Once the wallet is updated to the MainModuleUpgradable it can be updated by calling the updateImageHash method, without any additional transaction.

\n
const transactions = [\n  {\n    delegateCall: false,\n    revertOnError: true,\n    to: wallet,\n    data: mainModuleInterface.encodeFunctionData(\n      mainModuleInterface.getFunction('updateImageHash'), [newImageHash]\n    ),\n    value: ethers.constants.Zero,\n    gasLimit: ethers.constants.Zero,\n  }\n]
\n","isPage":false,"text":"\nOnce the wallet is updated to the MainModuleUpgradable it can be updated by calling the updateImageHash method, without any additional transaction.\nconst transactions = [\n {\n delegateCall: false,\n revertOnError: true,\n to: wallet,\n data: mainModuleInterface.encodeFunctionData(\n mainModuleInterface.getFunction('updateImageHash'), [newImageHash]\n ),\n value: ethers.constants.Zero,\n gasLimit: ethers.constants.Zero,\n }\n]\n","title":"Subsequent configuration updates","titles":["Modules & wallet update","First configuration update"]},"421":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#retrieving-the-current-configuration","html":"\n

If the wallet is updated to the MainModuleUpgradable it can be queried for the current configuration by calling the getImageHash method.

\n

This method should return the wallet's current configuration hash, which can be compared to a list of known wallet configurations to find the correct one.

\n","isPage":false,"text":"\nIf the wallet is updated to the MainModuleUpgradable it can be queried for the current configuration by calling the getImageHash method.\nThis method should return the wallet's current configuration hash, which can be compared to a list of known wallet configurations to find the correct one.\n","title":"Retrieving the current configuration","titles":["Modules & wallet update","First configuration update"]},"422":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#retrieving-the-wallet-configuration","html":"\n

The imageHash method returns bytes32(0) if the wallet is not yet updated to the MainModuleUpgradable.\nIn this case the wallet is in a counter-factual state and the imageHash can't be directly queried.

\n

This is also the case for non-deployed wallets.

\n

To find the imageHash of a non-deployed or non-updated wallet, a candidate known imageHash needs to be compared against the wallet address.

\n

See Compute wallet address.

","isPage":false,"text":"\nThe imageHash method returns bytes32(0) if the wallet is not yet updated to the MainModuleUpgradable.\nIn this case the wallet is in a counter-factual state and the imageHash can't be directly queried.\nThis is also the case for non-deployed wallets.\nTo find the imageHash of a non-deployed or non-updated wallet, a candidate known imageHash needs to be compared against the wallet address.\nSee Compute wallet address.","title":"Retrieving the wallet configuration","titles":["Modules & wallet update","First configuration update","Retrieving the current configuration"]},"423":{"href":"/solutions/technical-references/internals/v1/06-main-module-upgradeable#mainmoduleupgradeable--configuration-migration","html":"","isPage":true,"text":"","title":"MainModuleUpgradeable & configuration migration","titles":[]},"424":{"href":"/solutions/technical-references/internals/v1/08-signature-encoding#signature-encoding","html":"\n

Sequence Wallets support ERC-1271 Standard Contract Signature Verification to allow signing of transactions and messages.

\n","isPage":true,"text":"\nSequence Wallets support ERC-1271 Standard Contract Signature Verification to allow signing of transactions and messages.\n","title":"Signature Encoding","titles":[]},"425":{"href":"/solutions/technical-references/internals/v1/08-signature-encoding#erc-191-ethereum-signed-data","html":"\n

Messages encoded with as ERC-191 Ethereum Signed Data are able to be created and signed as follows.

\n
import { Wallet } from '@0xsequence/wallet'\n \n// Construct your Sequence Wallet (out of scope for this section)\nconst wallet: Wallet\n \nconst message = "Hello, World!"\n \nconst prefixedMessage = "\\x19Ethereum Signed Message:\\n" + len(message) + message\nconst signature = await wallet.signMessage(prefixedMessage)
\n

The above will iterate through local, signing the message. If the threshold is reached, the signature is returned.\nOtherwise the library will iterate through the remote signers as well.\nThe resulting signatures are joined and encoded as a hex string.

\n","isPage":false,"text":"\nMessages encoded with as ERC-191 Ethereum Signed Data are able to be created and signed as follows.\nimport { Wallet } from '@0xsequence/wallet'\n \n// Construct your Sequence Wallet (out of scope for this section)\nconst wallet: Wallet\n \nconst message = "Hello, World!"\n \nconst prefixedMessage = "\\x19Ethereum Signed Message:\\n" + len(message) + message\nconst signature = await wallet.signMessage(prefixedMessage)\nThe above will iterate through local, signing the message. If the threshold is reached, the signature is returned.\nOtherwise the library will iterate through the remote signers as well.\nThe resulting signatures are joined and encoded as a hex string.\n","title":"ERC-191 Ethereum Signed Data","titles":["Signature Encoding"]},"426":{"href":"/solutions/technical-references/internals/v1/08-signature-encoding#erc-712-structured-data-signatures","html":"\n

ERC-712 Structured Data can also be signed in a similar fashion.

\n
import { Wallet } from '@0xsequence/wallet'\nimport { encodeTypedDataDigest } from '@0xsequence/utils'\n \n// Construct your Sequence Wallet (out of scope for this section)\nconst wallet: Wallet\n \n// Encode the typed data\nconst chainId = 1\nconst typedData = {\n\ttypes: {\n\t\tPerson: [\n\t\t\t{ name: 'name', type: 'string' },\n\t\t\t{ name: 'wallet', type: 'address' },\n\t\t\t{ name: 'count', type: 'uint8' }\n\t\t]\n\t},\n\tprimaryType: 'Person' as const,\n\tdomain: {\n\t\tname: 'Ether Mail',\n\t\tversion: '1',\n\t\tchainId: chainId,\n\t\tverifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC'\n\t},\n\tmessage: {\n\t\tname: 'Bob',\n\t\twallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n\t\tcount: 4\n\t}\n} \nconst hashedData = encodeTypedDataDigest(typedData)\n \nconst signature = await wallet.signMessage(hashedData)
\n

The above will iterate through local, signing the message. If the threshold is reached, the signature is returned.\nOtherwise the library will iterate through the remote signers as well.\nThe resulting signatures are joined and encoded as a hex string.

\n","isPage":false,"text":"\nERC-712 Structured Data can also be signed in a similar fashion.\nimport { Wallet } from '@0xsequence/wallet'\nimport { encodeTypedDataDigest } from '@0xsequence/utils'\n \n// Construct your Sequence Wallet (out of scope for this section)\nconst wallet: Wallet\n \n// Encode the typed data\nconst chainId = 1\nconst typedData = {\n\ttypes: {\n\t\tPerson: [\n\t\t\t{ name: 'name', type: 'string' },\n\t\t\t{ name: 'wallet', type: 'address' },\n\t\t\t{ name: 'count', type: 'uint8' }\n\t\t]\n\t},\n\tprimaryType: 'Person' as const,\n\tdomain: {\n\t\tname: 'Ether Mail',\n\t\tversion: '1',\n\t\tchainId: chainId,\n\t\tverifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC'\n\t},\n\tmessage: {\n\t\tname: 'Bob',\n\t\twallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n\t\tcount: 4\n\t}\n} \nconst hashedData = encodeTypedDataDigest(typedData)\n \nconst signature = await wallet.signMessage(hashedData)\nThe above will iterate through local, signing the message. If the threshold is reached, the signature is returned.\nOtherwise the library will iterate through the remote signers as well.\nThe resulting signatures are joined and encoded as a hex string.\n","title":"ERC-712 Structured Data Signatures","titles":["Signature Encoding"]},"427":{"href":"/solutions/technical-references/internals/v1/08-signature-encoding#verification","html":"\n

The signature can be verified by calling the isValidSignature method on the wallet.

\n
  /**\n   * @notice Verifies whether the provided signature is valid with respect to the provided hash\n   * @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n   *   > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256("isValidSignature(bytes32,bytes)"))\n   * @param _hash       keccak256 hash that was signed\n   * @param _signatures Signature byte array associated with _data.\n   *                    Encoded as abi.encode(Signature[], Configs)\n   * @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\n   */\n  function isValidSignature(\n    bytes32 _hash,\n    bytes calldata _signatures\n  ) public override virtual view returns (bytes4) {\n    // Validate signatures\n    (bool isValid,) = _signatureValidation(_hash, _signatures);\n    if (isValid) {\n      return SELECTOR_ERC1271_BYTES32_BYTES;\n    }\n\n    return bytes4(0);\n  }
\n

This will iterate through the combined signatures and validate that the resulting signature breaches the wallet's threshold.

","isPage":false,"text":"\nThe signature can be verified by calling the isValidSignature method on the wallet.\n /**\n * @notice Verifies whether the provided signature is valid with respect to the provided hash\n * @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n * > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256("isValidSignature(bytes32,bytes)"))\n * @param _hash keccak256 hash that was signed\n * @param _signatures Signature byte array associated with _data.\n * Encoded as abi.encode(Signature[], Configs)\n * @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\n */\n function isValidSignature(\n bytes32 _hash,\n bytes calldata _signatures\n ) public override virtual view returns (bytes4) {\n // Validate signatures\n (bool isValid,) = _signatureValidation(_hash, _signatures);\n if (isValid) {\n return SELECTOR_ERC1271_BYTES32_BYTES;\n }\n\n return bytes4(0);\n }\nThis will iterate through the combined signatures and validate that the resulting signature breaches the wallet's threshold.","title":"Verification","titles":["Signature Encoding"]},"428":{"href":"/solutions/technical-references/internals/v1/09-nested-transaction-batching#nested-transaction-batching","html":"","isPage":true,"text":"","title":"Nested Transaction Batching","titles":[]},"429":{"href":"/solutions/technical-references/internals/v1/10-guest-module#guestmodule-and-on-demand-deployment","html":"","isPage":true,"text":"","title":"GuestModule and on-demand deployment","titles":[]},"430":{"href":"/solutions/technical-references/internals/v1/11-wallet-context#wallet-context","html":"\n
export const sequenceContext: WalletContext = {\n  factory: '0xf9D09D634Fb818b05149329C1dcCFAeA53639d96',\n  mainModule: '0xd01F11855bCcb95f88D7A48492F66410d4637313',\n  mainModuleUpgradable: '0x7EFE6cE415956c5f80C6530cC6cc81b4808F6118',\n  guestModule: '0x02390F3E6E5FD1C6786CB78FD3027C117a9955A7',\n  sequenceUtils: '0xd130B43062D875a4B7aF3f8fc036Bc6e9D3E1B3E',\n  libs: {\n    requireFreshSigner: '0xE6B9B21C077F382333220a072e4c44280b873907'\n  }\n}
","isPage":true,"text":"\nexport const sequenceContext: WalletContext = {\n factory: '0xf9D09D634Fb818b05149329C1dcCFAeA53639d96',\n mainModule: '0xd01F11855bCcb95f88D7A48492F66410d4637313',\n mainModuleUpgradable: '0x7EFE6cE415956c5f80C6530cC6cc81b4808F6118',\n guestModule: '0x02390F3E6E5FD1C6786CB78FD3027C117a9955A7',\n sequenceUtils: '0xd130B43062D875a4B7aF3f8fc036Bc6e9D3E1B3E',\n libs: {\n requireFreshSigner: '0xE6B9B21C077F382333220a072e4c44280b873907'\n }\n}","title":"Wallet Context","titles":[]},"431":{"href":"/solutions/technical-references/internals/v1/12-contract-audits#contract-audits","html":"\n

Sequence wallet contracts underwent two independent audits by Consensys Diligence and Quantstamp.

\n

Note: Sequence Wallet was formerly known as "Arcadeum Wallet". Any references of "Arcadeum" in these reports are synonymous with "Sequence".

\n","isPage":true,"text":"\nSequence wallet contracts underwent two independent audits by Consensys Diligence and Quantstamp.\nNote: Sequence Wallet was formerly known as "Arcadeum Wallet". Any references of "Arcadeum" in these reports are synonymous with "Sequence".\n","title":"Contract Audits","titles":[]},"432":{"href":"/solutions/technical-references/internals/v1/12-contract-audits#quantstamp","html":"\n\n","isPage":false,"text":"\n\nJuly 2nd, 2020\nFeb 24th, 2021\n\n","title":"Quantstamp","titles":["Contract Audits"]},"433":{"href":"/solutions/technical-references/internals/v1/12-contract-audits#consensys-diligence","html":"\n\n","isPage":false,"text":"\n\nMay 2020\n\n","title":"Consensys Diligence","titles":["Contract Audits"]},"434":{"href":"/solutions/technical-references/internals/v1/12-contract-audits#zellic","html":"\n","isPage":false,"text":"\n\nMarch 2023\n","title":"Zellic","titles":["Contract Audits"]},"435":{"href":"/solutions/technical-references/internals/v2/04-configuration#wallet-configuration","html":"\n

In the context of Sequence Wallets, the "Wallet Configuration" is a set of parameters that defines the behavior of the wallet, primarily used to define the access control of the wallet, meaning who can sign transactions and how many signatures are needed.

\n","isPage":true,"text":"\nIn the context of Sequence Wallets, the "Wallet Configuration" is a set of parameters that defines the behavior of the wallet, primarily used to define the access control of the wallet, meaning who can sign transactions and how many signatures are needed.\n","title":"Wallet Configuration","titles":[]},"436":{"href":"/solutions/technical-references/internals/v2/04-configuration#top-level-properties","html":"\n

Sequence v2 configurations contain the following 3 properties:

\n\n","isPage":false,"text":"\nSequence v2 configurations contain the following 3 properties:\n\nthreshold - The required "weight sum" needed for a signature to be considered valid.\ncheckpoint - Used as a salt and ordering mechanism for wallet updates.\ntree - Determines the signers and their weights for the wallet.\n\n","title":"Top level properties","titles":["Wallet Configuration"]},"437":{"href":"/solutions/technical-references/internals/v2/04-configuration#threshold","html":"\n

The threshold is a uint16; it can have any value between 0 and 65535. Signatures are only considered valid or invalid if the sum of the weights of the signers that signed the transaction is greater or equal to the threshold.

\n","isPage":false,"text":"\nThe threshold is a uint16; it can have any value between 0 and 65535. Signatures are only considered valid or invalid if the sum of the weights of the signers that signed the transaction is greater or equal to the threshold.\n","title":"Threshold","titles":["Wallet Configuration","Top level properties"]},"438":{"href":"/solutions/technical-references/internals/v2/04-configuration#checkpoint","html":"\n

The checkpoint is a uint32. During wallet creation, a semi-random value can be provided to generate independent wallets with the same initial configuration. Then, during normal operation, the checkpoint is used by Light State Sync to ensure that wallet updates are applied in the correct order.

\n","isPage":false,"text":"\nThe checkpoint is a uint32. During wallet creation, a semi-random value can be provided to generate independent wallets with the same initial configuration. Then, during normal operation, the checkpoint is used by Light State Sync to ensure that wallet updates are applied in the correct order.\n","title":"Checkpoint","titles":["Wallet Configuration","Top level properties"]},"439":{"href":"/solutions/technical-references/internals/v2/04-configuration#tree","html":"\n

The tree is an unbalanced binary Merkle tree, where each leaf may contain a signer, a static signature, or a subtree. The tree can represent any combination of signers and weights and can be used to create complex multi-signature wallets.

\n

The possible leaf types are:

\n","isPage":false,"text":"\nThe tree is an unbalanced binary Merkle tree, where each leaf may contain a signer, a static signature, or a subtree. The tree can represent any combination of signers and weights and can be used to create complex multi-signature wallets.\nThe possible leaf types are:\n","title":"Tree","titles":["Wallet Configuration","Top level properties"]},"440":{"href":"/solutions/technical-references/internals/v2/04-configuration#signer","html":"\n

Signers are represented by a signer address and a uint8 weight. The weight is how much the signer contributes to the threshold.\nThe address can belong to either an ERC1271 compliant contract or an EOA wallet.

\n

The leaf hash is calculated as follows:

\n
bytes32(uint256(weight) << 160 | uint256(uint160(addr)))
\n","isPage":false,"text":"\nSigners are represented by a signer address and a uint8 weight. The weight is how much the signer contributes to the threshold.\nThe address can belong to either an ERC1271 compliant contract or an EOA wallet.\nThe leaf hash is calculated as follows:\nbytes32(uint256(weight) << 160 | uint256(uint160(addr)))\n","title":"Signer","titles":["Wallet Configuration","Top level properties","Tree"]},"441":{"href":"/solutions/technical-references/internals/v2/04-configuration#subdigest","html":"\n

This represents a static subdigest for which any signature is valid. If a signature for this subdigest is provided, the total weight of the signature is automatically set to Infinity.

\n

Notice static subdigests that exist within nested trees will have their "Infinity" weight reduced to the weight of the nested tree.

\n

The leaf hash is calculated as follows:

\n
keccak256(abi.encodePacked('Sequence static digest:\\n', subdigest));
\n","isPage":false,"text":"\nThis represents a static subdigest for which any signature is valid. If a signature for this subdigest is provided, the total weight of the signature is automatically set to Infinity.\nNotice static subdigests that exist within nested trees will have their "Infinity" weight reduced to the weight of the nested tree.\nThe leaf hash is calculated as follows:\nkeccak256(abi.encodePacked('Sequence static digest:\\n', subdigest));\n","title":"Subdigest","titles":["Wallet Configuration","Top level properties","Tree"]},"442":{"href":"/solutions/technical-references/internals/v2/04-configuration#subtree-nested-configuration","html":"\n

This represents a whole new wallet configuration, this "nested configuration" has its own:

\n\n

The way it works is that if a signature reaches the internal threshold within the subtree it is considered valid, and the external weight is added to the parent tree. Any number of nested configurations can be created, and it is possible to create multiple nesting levels.

\n

This pattern can be used, among other things, to express the following scenarios:

\n\n

The leaf hash is calculated as follows:

\n
keccak256(abi.encodePacked(\n  'Sequence nested config:\\n',\n  imageHash(tree),\n  threshold,\n  weight\n))
\n\n","isPage":false,"text":"\nThis represents a whole new wallet configuration, this "nested configuration" has its own:\n\nExternal weight (uint8)\nInternal threshold (uint16)\nInternal tree\n\nThe way it works is that if a signature reaches the internal threshold within the subtree it is considered valid, and the external weight is added to the parent tree. Any number of nested configurations can be created, and it is possible to create multiple nesting levels.\nThis pattern can be used, among other things, to express the following scenarios:\n\nNon-linear weight distribution, A and B signers can provide 1 weight each, but together they can provide 3 weight.\nLimited total weight contribution, A, B, and C signers can provide 1 weight each, but together they can only provide 2 weight.\n"Department configurations", N departments are required to sign, and each department has its own inner configuration.\n\nThe leaf hash is calculated as follows:\nkeccak256(abi.encodePacked(\n 'Sequence nested config:\\n',\n imageHash(tree),\n threshold,\n weight\n))\nThe wallet contracts have no way of validating the correctness of the configuration, the responsibility of ensuring the configuration is correct is on the SDKs interacting with the contracts.Things like threshold == 0 or threshold > total weight will result in fully unauthenticated wallets or inaccessible wallets respectively.\n","title":"Subtree (nested configuration)","titles":["Wallet Configuration","Top level properties","Tree"]},"443":{"href":"/solutions/technical-references/internals/v2/04-configuration#imagehash","html":"\n

The configuration is never stored as a whole; instead, the Merkle tree is hashed into a single bytes32 value, this is internally called the imageHash of the configuration.

\n

The imageHash is calculated as follows:

\n
imageHash := keccak256(abi.encode(\n  keccak256(abi.encode(\n    hashTree(tree),\n    threshold\n  )),\n  checkpoint\n))
\n

The hashTree function is a recursive function that hashes the tree into a single bytes32 value, pseudo code for the hashTree function is as follows:

\n
export function hashTree(node: Node | Leaf): string {\n  if (isSignerLeaf(node)) {\n    return ethers.utils.solidityPack(\n      ['uint96', 'address'],\n      [node.weight, node.address]\n    )\n  }\n \n  if (isSubdigestLeaf(node)) {\n    return ethers.utils.solidityKeccak256(\n      ['string', 'bytes32'],\n      ['Sequence static digest:\\n', node.subdigest]\n    )\n  }\n \n  if (isNestedLeaf(node)) {\n    const nested = hashTree(node.tree)\n    return ethers.utils.solidityKeccak256(\n      ['string', 'bytes32', 'uint256', 'uint256'],\n      ['Sequence nested config:\\n', nested, node.threshold, node.weight]\n    )\n  }\n \n  return ethers.utils.solidityKeccak256(\n    ['bytes32', 'bytes32'],\n    [hashTree(node.left), hashTree(node.right)]\n  )\n}
\n","isPage":false,"text":"\nThe configuration is never stored as a whole; instead, the Merkle tree is hashed into a single bytes32 value, this is internally called the imageHash of the configuration.\nThe imageHash is calculated as follows:\nimageHash := keccak256(abi.encode(\n keccak256(abi.encode(\n hashTree(tree),\n threshold\n )),\n checkpoint\n))\nThe hashTree function is a recursive function that hashes the tree into a single bytes32 value, pseudo code for the hashTree function is as follows:\nexport function hashTree(node: Node | Leaf): string {\n if (isSignerLeaf(node)) {\n return ethers.utils.solidityPack(\n ['uint96', 'address'],\n [node.weight, node.address]\n )\n }\n \n if (isSubdigestLeaf(node)) {\n return ethers.utils.solidityKeccak256(\n ['string', 'bytes32'],\n ['Sequence static digest:\\n', node.subdigest]\n )\n }\n \n if (isNestedLeaf(node)) {\n const nested = hashTree(node.tree)\n return ethers.utils.solidityKeccak256(\n ['string', 'bytes32', 'uint256', 'uint256'],\n ['Sequence nested config:\\n', nested, node.threshold, node.weight]\n )\n }\n \n return ethers.utils.solidityKeccak256(\n ['bytes32', 'bytes32'],\n [hashTree(node.left), hashTree(node.right)]\n )\n}\n","title":"ImageHash","titles":["Wallet Configuration"]},"444":{"href":"/solutions/technical-references/internals/v2/04-configuration#initial-configuration","html":"\n

All Sequence Wallets have an "initial configuration", implemented by using the imageHash of the initial configuration as the SALT during the CREATE2 deployment of the wallet.

\n

Wallets are deployed by calling the deploy function of the Factory contract, which takes the following parameters:

\n\n","isPage":false,"text":"\nAll Sequence Wallets have an "initial configuration", implemented by using the imageHash of the initial configuration as the SALT during the CREATE2 deployment of the wallet.\nWallets are deployed by calling the deploy function of the Factory contract, which takes the following parameters:\n\nmainModule: The address of the initial code implementation of the wallet.\nsalt: The imageHash of the initial configuration.\n\nThe MainModule should always be used as the initial code implementation of the wallet. The MainModule validates the imageHash (during signature validation) by re-computing the counterfactual address of the wallet, hence it does not require any storage initialization.If the imageHash is ever changed, MainModule will automatically replace the wallet code implementation with MainModuleUpgradeable, while handling the storage initialization.","title":"Initial Configuration","titles":["Wallet Configuration"]},"445":{"href":"/solutions/wallets/embedded-wallet/examples/03-manage-sessions#session-management","html":"\n

Sequence Auth + Embedded Wallet handles the following aspects of your application:

\n\n

This means you don't need to implement an account system yourself; instead, you interact with the Auth + WaaS SDK whenever you need to authenticate a user.

\n","isPage":true,"text":"\nSequence Auth + Embedded Wallet handles the following aspects of your application:\n\nUser creation\nUser authentication\nSession management\n\nThis means you don't need to implement an account system yourself; instead, you interact with the Auth + WaaS SDK whenever you need to authenticate a user.\n","title":"Session Management","titles":[]},"446":{"href":"/solutions/wallets/embedded-wallet/examples/03-manage-sessions#sign-in--sign-up","html":"\n

Signing in and signing up are the same operation; the account is automatically created if it doesn't already exist.

\n
import { SequenceWaaS } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);\n \n// Get a sessionHash\nconst sessionHash = await waas.getSessionHash();\n \n// Get an idToken using the social auth provider of your choice\n// (Google, Facebook, Twitter, etc.)\n// Note: remember to pass the sessionHash as a nonce!\n \n// Then sign in with Sequence WaaS\nconst res = await waas.signIn({ idToken }, "MacBook Pro - Chrome");\n \nconsole.log(res);
\n
{\n  "sessionId": "0x63A21cCa14ed7454B9cF6466af422B5c597c6b57",\n  "wallet": "0xd6043fe6f06d90ec2cB36cA5CD1B193A8515f350"\n}
\n\n","isPage":false,"text":"\nSigning in and signing up are the same operation; the account is automatically created if it doesn't already exist.\nimport { SequenceWaaS } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\n \n// Get a sessionHash\nconst sessionHash = await waas.getSessionHash();\n \n// Get an idToken using the social auth provider of your choice\n// (Google, Facebook, Twitter, etc.)\n// Note: remember to pass the sessionHash as a nonce!\n \n// Then sign in with Sequence WaaS\nconst res = await waas.signIn({ idToken }, "MacBook Pro - Chrome");\n \nconsole.log(res);\n{\n "sessionId": "0x63A21cCa14ed7454B9cF6466af422B5c597c6b57",\n "wallet": "0xd6043fe6f06d90ec2cB36cA5CD1B193A8515f350"\n}\nSessions opened with some providers might require a second step in order to be usable for sending transactions.See Email validation.\n","title":"Sign in / Sign Up","titles":["Session Management"]},"447":{"href":"/solutions/wallets/embedded-wallet/examples/03-manage-sessions#email-sign-in--sign-up","html":"\n

Email sign-in is directly supported by the SDK, as long as the used key has been generated with the email scope. Email logins work similarly to social logins, except that the idToken is generated by the SDK itself.

\n

To open a session using an email, you will need to provide an email for the user. The Embedded Wallet Nitro API will then send an email to the user with a One-Time Password (OTP) that can be used to open a session. This OTP has to be provided to the SDK to obtain an idToken.

\n

Once the idToken is obtained, the session can be opened as usual.

\n
import { SequenceWaaS } from "@0xsequence/waas";\n \n// Define the user's email address\nconst email = "user@example.com";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);\n \n// This will send an email to the user with an OTP\nconst { instance } = await waas.email.initiateAuth({ email });\n \n// Obtain the OTP from the user\nconst answer = "123456";\n \nconst sessionHash = await sequence.getSessionHash();\nconst { idToken } = await waas.email.finalizeAuth({\n  instance,\n  answer,\n  email,\n  sessionHash,\n});\n \n// Log in using the idToken, as usual\nawait waas.signIn({ idToken }, "Apple Vision Pro - Chrome");
\n","isPage":false,"text":"\nEmail sign-in is directly supported by the SDK, as long as the used key has been generated with the email scope. Email logins work similarly to social logins, except that the idToken is generated by the SDK itself.\nTo open a session using an email, you will need to provide an email for the user. The Embedded Wallet Nitro API will then send an email to the user with a One-Time Password (OTP) that can be used to open a session. This OTP has to be provided to the SDK to obtain an idToken.\nOnce the idToken is obtained, the session can be opened as usual.\nimport { SequenceWaaS } from "@0xsequence/waas";\n \n// Define the user's email address\nconst email = "user@example.com";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\n \n// This will send an email to the user with an OTP\nconst { instance } = await waas.email.initiateAuth({ email });\n \n// Obtain the OTP from the user\nconst answer = "123456";\n \nconst sessionHash = await sequence.getSessionHash();\nconst { idToken } = await waas.email.finalizeAuth({\n instance,\n answer,\n email,\n sessionHash,\n});\n \n// Log in using the idToken, as usual\nawait waas.signIn({ idToken }, "Apple Vision Pro - Chrome");\n","title":"Email Sign In / Sign Up","titles":["Session Management","Sign in / Sign Up"]},"448":{"href":"/solutions/wallets/embedded-wallet/examples/03-manage-sessions#google--apple-auth","html":"\n

Google and Apple auth are directly supported by the SDK. The idToken is obtained from the social auth provider and used to open a session. You can see a sample React application using Google auth below. To see a complete application, see the demo-waas-auth repository. A functional demo is also available here.

\n

Begin with a simple main.tsx file that sets up the WaaS SDK, the router, and the Google OAuth provider.

\n
import { SequenceWaaS } from "@0xsequence/waas";\nimport { GoogleOAuthProvider } from "@react-oauth/google";\nimport { createHashRouter, RouterProvider } from "react-router-dom";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);\n \nexport const router = createHashRouter([\n  {\n    path: "/login",\n    element: <Login />,\n  },\n  {\n    path: "/",\n    element: <App />,\n  },\n]);\n \nReactDOM.createRoot(document.getElementById("root")!).render(\n  <React.StrictMode>\n    <GoogleOAuthProvider clientId={GOOGLE_CLIENT_ID}>\n      <RouterProvider router={router} />\n    </GoogleOAuthProvider>\n  </React.StrictMode>\n);
\n

The useSessionHash hook is used to obtain a session hash that is used to prevent replay attacks. The sequence.getSessionHash function is used to obtain the session hash, and the sequence.onSessionStateChanged function is used to update the session hash when the session state changes.

\n
import { sequence } from "./main";\nimport { useEffect, useState } from "react";\n \nexport function useSessionHash() {\n  const [sessionHash, setSessionHash] = useState("");\n  const [error, setError] = useState<any>(undefined);\n \n  useEffect(() => {\n    const handler = async () => {\n      try {\n        setSessionHash(await sequence.getSessionHash());\n      } catch (error) {\n        console.error(error);\n        setError(error);\n      }\n    };\n    handler();\n    return sequence.onSessionStateChanged(handler);\n  }, [setSessionHash, setError]);\n \n  return {\n    sessionHash,\n    error,\n    loading: !!sessionHash,\n  };\n}
\n

To handle the Google login, you can use the GoogleLogin component from the @react-oauth/google package. The handleGoogleLogin function is called when the user successfully logs in.

\n
import { router, sequence } from './main'\nimport { CredentialResponse, GoogleLogin } from '@react-oauth/google'\nimport { useSessionHash } from "./useSessionHash.ts";\n \nfunction Login() {\n  const { sessionHash } = useSessionHash()\n  const [signingIn, setSigningIn] = useState(false)\n \n  useEffect(() => {\n    (async () => {\n      if (await sequence.isSignedIn()) {\n        router.navigate('/')\n      }\n    })()\n  }, [])\n \n  const handleGoogleLogin = async (tokenResponse: CredentialResponse) => {\n    const walletAddress = await sequence.signIn({\n      idToken: tokenResponse.credential!\n    }, "MacBook Pro - Chrome")\n \n    console.log(`Wallet address: ${walletAddress}`)\n    router.navigate('/')\n  }\n \n  return (\n    {!!sessionHash && (<>\n      <GoogleLogin onSuccess={handleGoogleLogin} shape="circle" width={230} nonce={sessionHash} />\n    </>)}\n )\n}\n \nexport default Login
\n","isPage":false,"text":"\nGoogle and Apple auth are directly supported by the SDK. The idToken is obtained from the social auth provider and used to open a session. You can see a sample React application using Google auth below. To see a complete application, see the demo-waas-auth repository. A functional demo is also available here.\nBegin with a simple main.tsx file that sets up the WaaS SDK, the router, and the Google OAuth provider.\nimport { SequenceWaaS } from "@0xsequence/waas";\nimport { GoogleOAuthProvider } from "@react-oauth/google";\nimport { createHashRouter, RouterProvider } from "react-router-dom";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\n \nexport const router = createHashRouter([\n {\n path: "/login",\n element: <Login />,\n },\n {\n path: "/",\n element: <App />,\n },\n]);\n \nReactDOM.createRoot(document.getElementById("root")!).render(\n <React.StrictMode>\n <GoogleOAuthProvider clientId={GOOGLE_CLIENT_ID}>\n <RouterProvider router={router} />\n </GoogleOAuthProvider>\n </React.StrictMode>\n);\nThe useSessionHash hook is used to obtain a session hash that is used to prevent replay attacks. The sequence.getSessionHash function is used to obtain the session hash, and the sequence.onSessionStateChanged function is used to update the session hash when the session state changes.\nimport { sequence } from "./main";\nimport { useEffect, useState } from "react";\n \nexport function useSessionHash() {\n const [sessionHash, setSessionHash] = useState("");\n const [error, setError] = useState<any>(undefined);\n \n useEffect(() => {\n const handler = async () => {\n try {\n setSessionHash(await sequence.getSessionHash());\n } catch (error) {\n console.error(error);\n setError(error);\n }\n };\n handler();\n return sequence.onSessionStateChanged(handler);\n }, [setSessionHash, setError]);\n \n return {\n sessionHash,\n error,\n loading: !!sessionHash,\n };\n}\nTo handle the Google login, you can use the GoogleLogin component from the @react-oauth/google package. The handleGoogleLogin function is called when the user successfully logs in.\nimport { router, sequence } from './main'\nimport { CredentialResponse, GoogleLogin } from '@react-oauth/google'\nimport { useSessionHash } from "./useSessionHash.ts";\n \nfunction Login() {\n const { sessionHash } = useSessionHash()\n const [signingIn, setSigningIn] = useState(false)\n \n useEffect(() => {\n (async () => {\n if (await sequence.isSignedIn()) {\n router.navigate('/')\n }\n })()\n }, [])\n \n const handleGoogleLogin = async (tokenResponse: CredentialResponse) => {\n const walletAddress = await sequence.signIn({\n idToken: tokenResponse.credential!\n }, "MacBook Pro - Chrome")\n \n console.log(`Wallet address: ${walletAddress}`)\n router.navigate('/')\n }\n \n return (\n {!!sessionHash && (<>\n <GoogleLogin onSuccess={handleGoogleLogin} shape="circle" width={230} nonce={sessionHash} />\n </>)}\n )\n}\n \nexport default Login\n","title":"Google / Apple Auth","titles":["Session Management","Sign in / Sign Up"]},"449":{"href":"/solutions/wallets/embedded-wallet/examples/03-manage-sessions#list-sessions","html":"\n

This function returns a list of sessions for the current user and only includes sessions that are still valid.

\n
import { SequenceWaaS } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);\n \nawait waas.signIn({ idToken }, "MacBook Pro - Chrome");\n \nconst sessions = await waas.listSessions();\nconsole.log(sessions);
\n
[\n  {\n    "id": "0x574372ff1A0Eede68B5358Cce7bbb93155A9dfe0",\n    "address": "0x574372ff1a0eede68b5358cce7bbb93155a9dfe0",\n    "userId": "42#https://accounts.google.com#109234880945084120673",\n    "projectId": 42,\n    "issuer": "https://accounts.google.com",\n    "subject": "109234880945084120673",\n    "friendlyName": "Pixel 3 - Brave",\n    "createdAt": "2023-11-02T18:22:03.102950917Z",\n    "refreshedAt": "2023-11-02T18:22:03.109787921Z",\n    "expiresAt": "2123-10-09T18:22:03.102951017Z",\n    "isThis": false\n  },\n  {\n    "id": "0x3C4E11E4dbF23B87C14bd75d0Da9C75707392D21",\n    "address": "0x3c4e11e4dbf23b87c14bd75d0da9c75707392d21",\n    "userId": "42#https://accounts.google.com#109234880945084120673",\n    "projectId": 42,\n    "issuer": "https://accounts.google.com",\n    "subject": "109234880945084120673",\n    "friendlyName": "MacBook Pro - Chrome",\n    "createdAt": "2023-11-02T18:50:32.815189174Z",\n    "refreshedAt": "2023-11-02T18:50:32.819722082Z",\n    "expiresAt": "2123-10-09T18:50:32.815189234Z",\n    "isThis": true\n  }\n]
\n","isPage":false,"text":"\nThis function returns a list of sessions for the current user and only includes sessions that are still valid.\nimport { SequenceWaaS } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\n \nawait waas.signIn({ idToken }, "MacBook Pro - Chrome");\n \nconst sessions = await waas.listSessions();\nconsole.log(sessions);\n[\n {\n "id": "0x574372ff1A0Eede68B5358Cce7bbb93155A9dfe0",\n "address": "0x574372ff1a0eede68b5358cce7bbb93155a9dfe0",\n "userId": "42#https://accounts.google.com#109234880945084120673",\n "projectId": 42,\n "issuer": "https://accounts.google.com",\n "subject": "109234880945084120673",\n "friendlyName": "Pixel 3 - Brave",\n "createdAt": "2023-11-02T18:22:03.102950917Z",\n "refreshedAt": "2023-11-02T18:22:03.109787921Z",\n "expiresAt": "2123-10-09T18:22:03.102951017Z",\n "isThis": false\n },\n {\n "id": "0x3C4E11E4dbF23B87C14bd75d0Da9C75707392D21",\n "address": "0x3c4e11e4dbf23b87c14bd75d0da9c75707392d21",\n "userId": "42#https://accounts.google.com#109234880945084120673",\n "projectId": 42,\n "issuer": "https://accounts.google.com",\n "subject": "109234880945084120673",\n "friendlyName": "MacBook Pro - Chrome",\n "createdAt": "2023-11-02T18:50:32.815189174Z",\n "refreshedAt": "2023-11-02T18:50:32.819722082Z",\n "expiresAt": "2123-10-09T18:50:32.815189234Z",\n "isThis": true\n }\n]\n","title":"List Sessions","titles":["Session Management"]},"450":{"href":"/solutions/wallets/embedded-wallet/examples/03-manage-sessions#close-session","html":"\n

A session can be closed using the id of the session. Any session can be closed from any device with an active session.

\n
import { SequenceWaaS } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);\n \nawait waas.signIn({ idToken }, "MacBook Pro - Chrome");\n \nconst sessions = await waas.listSessions();\nawait waas.dropSession({ sessionId: sessions[0].id });
","isPage":false,"text":"\nA session can be closed using the id of the session. Any session can be closed from any device with an active session.\nimport { SequenceWaaS } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\n \nawait waas.signIn({ idToken }, "MacBook Pro - Chrome");\n \nconst sessions = await waas.listSessions();\nawait waas.dropSession({ sessionId: sessions[0].id });","title":"Close Session","titles":["Session Management"]},"451":{"href":"/solutions/wallets/embedded-wallet/examples/05-validation#validation","html":"\n

Users with Auth + Embedded Wallet go through two distinct flows based on the login method:

\n","isPage":true,"text":"\nUsers with Auth + Embedded Wallet go through two distinct flows based on the login method:\n","title":"Validation","titles":[]},"452":{"href":"/solutions/wallets/embedded-wallet/examples/05-validation#email-login-one-time-code","html":"\n

For users logging in with an email, Amazon Cognito sends a one-time code to validate their identity. This is a trusted method that does not require additional verification.

\n","isPage":false,"text":"\nFor users logging in with an email, Amazon Cognito sends a one-time code to validate their identity. This is a trusted method that does not require additional verification.\n","title":"Email login (one-time code)","titles":["Validation",null]},"453":{"href":"/solutions/wallets/embedded-wallet/examples/05-validation#social-login","html":"\n

Users who log in via established social auth providers like Google or Facebook don't need additional validation. However, when logging in using a custom provider, we cannot guarantee sufficient protection of user's identity. Due to this, we might require additional verification by asking the user to provide a one-time code we send to their email address.

\n

Please contact Sequence support if you wish to discuss whether your authentication provider can be considered trusted.

\n","isPage":false,"text":"\nUsers who log in via established social auth providers like Google or Facebook don't need additional validation. However, when logging in using a custom provider, we cannot guarantee sufficient protection of user's identity. Due to this, we might require additional verification by asking the user to provide a one-time code we send to their email address.\nPlease contact Sequence support if you wish to discuss whether your authentication provider can be considered trusted.\n","title":"Social login","titles":["Validation",null]},"454":{"href":"/solutions/wallets/embedded-wallet/examples/05-validation#validation-status","html":"\n

To check the validation status of the current session, use the isSessionValid method. This returns true for email login and trusted social logins and false for custom logins until email validation is complete.

\n
const isValid = await waas.isSessionValid();\nconsole.log(isValid);
\n
true
\n","isPage":false,"text":"\nTo check the validation status of the current session, use the isSessionValid method. This returns true for email login and trusted social logins and false for custom logins until email validation is complete.\nconst isValid = await waas.isSessionValid();\nconsole.log(isValid);\ntrue\n","title":"Validation status","titles":["Validation"]},"455":{"href":"/solutions/wallets/embedded-wallet/examples/05-validation#trigger-session-validation","html":"\n

Manually trigger a session validation with the validateSession method. This will send a code to the user's email. If validated within 10 minutes, the method returns true; otherwise, it returns false.

\n
const result = await waas.validateSession();
\n
true
\n

Once user receives the code, he can validate the session with the finishValidateSession method that takes the code as an argument. If the code is valid, the method returns true; otherwise, it returns false.

\n
const result = await waas.finishValidateSession("123456");
\n
true
\n","isPage":false,"text":"\nManually trigger a session validation with the validateSession method. This will send a code to the user's email. If validated within 10 minutes, the method returns true; otherwise, it returns false.\nconst result = await waas.validateSession();\ntrue\nOnce user receives the code, he can validate the session with the finishValidateSession method that takes the code as an argument. If the code is valid, the method returns true; otherwise, it returns false.\nconst result = await waas.finishValidateSession("123456");\ntrue\n","title":"Trigger session validation","titles":["Validation","Validation status"]},"456":{"href":"/solutions/wallets/embedded-wallet/examples/05-validation#onvalidationrequired-callback","html":"\n

The onValidationRequired callback is triggered when a session validation is required. This can happen when a user tries to perform an action that requires validation, such as sending a transaction or signing a message. It determines whether the session validation should be triggered or not. If the callback returns true, the session validation is triggered. If it returns false, the action is cancelled.

\n
const tx = await waas.sendERC20({\n  validation: {\n    onValidationRequired: () => true,\n  },\n  chainId: 42161,\n  token: "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI\n  to: "0x27CabC9700EE6Db2797b6AC1e1eCe81C72A2cD8D", // Recipient\n  value: "200000000000000000000", // 200 DAI\n});
\n","isPage":false,"text":"\nThe onValidationRequired callback is triggered when a session validation is required. This can happen when a user tries to perform an action that requires validation, such as sending a transaction or signing a message. It determines whether the session validation should be triggered or not. If the callback returns true, the session validation is triggered. If it returns false, the action is cancelled.\nconst tx = await waas.sendERC20({\n validation: {\n onValidationRequired: () => true,\n },\n chainId: 42161,\n token: "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI\n to: "0x27CabC9700EE6Db2797b6AC1e1eCe81C72A2cD8D", // Recipient\n value: "200000000000000000000", // 200 DAI\n});\n","title":"onValidationRequired callback","titles":["Validation","Validation status","Trigger session validation"]},"457":{"href":"/solutions/wallets/embedded-wallet/examples/05-validation#listen-for-session-validations","html":"\n

Events like transaction sends may silently prompt session validation. Use the onValidationRequired hook to catch such instances.

\n
waas.onValidationRequired(() => {\n  console.log("Session has been triggered for validation");\n});\n \nawait waas.sendTransaction({ chainId: 1 }, { to: "0x...", value: "1" });
\n
Session has been triggered for validation
\n","isPage":false,"text":"\nEvents like transaction sends may silently prompt session validation. Use the onValidationRequired hook to catch such instances.\nwaas.onValidationRequired(() => {\n console.log("Session has been triggered for validation");\n});\n \nawait waas.sendTransaction({ chainId: 1 }, { to: "0x...", value: "1" });\nSession has been triggered for validation\n","title":"Listen for session validations","titles":["Validation","Validation status"]},"458":{"href":"/solutions/wallets/embedded-wallet/examples/05-validation#automatic-session-validation","html":"\n

Session validation is automatic when certain actions requiring validation are performed. This can be managed using the onValidationRequired hook.

\n
const tx = await waas.sendTransaction({\n  chainId: 1,\n  validation: {\n    onValidationRequired: () => {\n      console.log("Session has been triggered for validation");\n      return true;\n    },\n  },\n  to: "0x061150e5574716DBb1a2cdf54b3DcE9F94395f65",\n  value: "1",\n});
\n

By returning true or false from the onValidationRequired hook, you either continue or cancel the action, respectively.

","isPage":false,"text":"\nSession validation is automatic when certain actions requiring validation are performed. This can be managed using the onValidationRequired hook.\nconst tx = await waas.sendTransaction({\n chainId: 1,\n validation: {\n onValidationRequired: () => {\n console.log("Session has been triggered for validation");\n return true;\n },\n },\n to: "0x061150e5574716DBb1a2cdf54b3DcE9F94395f65",\n value: "1",\n});\nBy returning true or false from the onValidationRequired hook, you either continue or cancel the action, respectively.","title":"Automatic session validation","titles":["Validation"]},"459":{"href":"/solutions/wallets/embedded-wallet/examples/06-transaction-receipts#transaction-receipts","html":"\n

Any methods that involve sending transactions will return either successful or failed transaction receipts. Failed transaction receipts are generated without executing the transaction.

\n","isPage":true,"text":"\nAny methods that involve sending transactions will return either successful or failed transaction receipts. Failed transaction receipts are generated without executing the transaction.\n","title":"Transaction receipts","titles":[]},"460":{"href":"/solutions/wallets/embedded-wallet/examples/06-transaction-receipts#successful-transaction-response","html":"\n

Any transaction that is successfully included in a block will return a SentTransactionResponse object. This must be checked for before accessing the transaction hash, using the isSentTransactionResponse type guard.

\n
import { Sequence, isSentTransactionResponse } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);\n \nawait waas.signIn({ idToken }, "Session name");\n \nconst tx = await waas.sendTransaction({\n  chainId: 42161,\n  transactions: [\n    {\n      to: "0xD72C236Be524Ec24F72329317e2785E687105B69",\n      value: "0",\n    },\n  ],\n});\n \nif (isSentTransactionResponse(tx)) {\n  console.log(tx);\n}
\n

The relevant fields are:

\n\n

To view the full response object, see the [Transaction Receipt Response] section.

\n
{\n  "code": "transactionReceipt",\n  "data": {\n    "txHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n    "metaTxHash": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n    "nativeReceipt": { ... },\n    "receipt": {\n      "id": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n      "index": 0,\n      "logs": [\n        {\n          "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n          "data": "0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",\n          "topics": [\n            "0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881"\n          ]\n        },\n        {\n          "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n          "data": "0x0000000000000000000000000000000000000000000000000000000000000000",\n          "topics": [\n            "0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",\n            "0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0"\n          ]\n        }\n      ],\n      "receipts": [ ... ],\n      "revertReason": null,\n      "status": "SUCCEEDED"\n    },\n    "request": { ... },\n    "simulations": [ ... ]\n  }\n}
\n","isPage":false,"text":"\nAny transaction that is successfully included in a block will return a SentTransactionResponse object. This must be checked for before accessing the transaction hash, using the isSentTransactionResponse type guard.\nimport { Sequence, isSentTransactionResponse } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\n \nawait waas.signIn({ idToken }, "Session name");\n \nconst tx = await waas.sendTransaction({\n chainId: 42161,\n transactions: [\n {\n to: "0xD72C236Be524Ec24F72329317e2785E687105B69",\n value: "0",\n },\n ],\n});\n \nif (isSentTransactionResponse(tx)) {\n console.log(tx);\n}\nThe relevant fields are:\n\ntxHash: The transaction hash of the transaction that was sent to the network.\nreceipt.logs: Logs emitted by the transaction.\nreceipt.status: The status of the transaction. SUCCEEDED or FAILED.\nreceipt.revertReason: If the transaction was executed but reverted, it includes the reason.\n\nTo view the full response object, see the [Transaction Receipt Response] section.\n{\n "code": "transactionReceipt",\n "data": {\n "txHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n "metaTxHash": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n "nativeReceipt": { ... },\n "receipt": {\n "id": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n "index": 0,\n "logs": [\n {\n "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n "data": "0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",\n "topics": [\n "0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881"\n ]\n },\n {\n "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n "data": "0x0000000000000000000000000000000000000000000000000000000000000000",\n "topics": [\n "0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",\n "0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0"\n ]\n }\n ],\n "receipts": [ ... ],\n "revertReason": null,\n "status": "SUCCEEDED"\n },\n "request": { ... },\n "simulations": [ ... ]\n }\n}\n","title":"Successful transaction response","titles":["Transaction receipts"]},"461":{"href":"/solutions/wallets/embedded-wallet/examples/06-transaction-receipts#failed-transaction-response","html":"\n

An Embedded Wallet will try to catch any failing transactions before they are sent to the network. This is done by simulating the transaction on the network before sending it. If the simulation fails, the transaction will not be sent to the network and a FailedTransactionResponse will be returned.

\n

To view the full response object, see the TODO: link to wallet API [Transaction Receipt Response] section.

\n
import { Sequence, isSentTransactionResponse } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);\n \nawait waas.signIn({ idToken }, "Session name");\n \nconst tx = await waas.sendTransaction({\n  chainId: 137,\n  transactions: [\n    {\n      // This address always fails on Polygon, give it a try :D\n      to: "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n      value: "0",\n    },\n  ],\n});\n \nif (isSentTransactionResponse(tx)) {\n  // ... This will never be executed\n} else {\n  // tx can only be `SentTransactionResponse` or `FailedTransactionResponse`\n  console.log(tx);\n}
\n
{\n  "code": "transactionFailed",\n  "data": {\n    "error": "This is an error message",\n    "request": {\n      "code": "sendTransaction",\n      "expires": 1699443005,\n      "identifier": "ts-sdk-1699442705965-0x153824576D03629b264683B430bBF9AcEA1d0975",\n      "issued": 1699442705,\n      "network": "137",\n      "transactions": [\n        {\n          "data": "0x",\n          "to": "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n          "type": "transaction",\n          "value": "0x00"\n        }\n      ],\n      "wallet": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6"\n    },\n    "simulations": [\n      {\n        "executed": true,\n        "gasLimit": 7908,\n        "gasUsed": 5931,\n        "reason": "This is an error message :)",\n        "result": null,\n        "succeeded": false\n      }\n    ]\n  }\n}
","isPage":false,"text":"\nAn Embedded Wallet will try to catch any failing transactions before they are sent to the network. This is done by simulating the transaction on the network before sending it. If the simulation fails, the transaction will not be sent to the network and a FailedTransactionResponse will be returned.\nTo view the full response object, see the TODO: link to wallet API [Transaction Receipt Response] section.\nimport { Sequence, isSentTransactionResponse } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\n \nawait waas.signIn({ idToken }, "Session name");\n \nconst tx = await waas.sendTransaction({\n chainId: 137,\n transactions: [\n {\n // This address always fails on Polygon, give it a try :D\n to: "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n value: "0",\n },\n ],\n});\n \nif (isSentTransactionResponse(tx)) {\n // ... This will never be executed\n} else {\n // tx can only be `SentTransactionResponse` or `FailedTransactionResponse`\n console.log(tx);\n}\n{\n "code": "transactionFailed",\n "data": {\n "error": "This is an error message",\n "request": {\n "code": "sendTransaction",\n "expires": 1699443005,\n "identifier": "ts-sdk-1699442705965-0x153824576D03629b264683B430bBF9AcEA1d0975",\n "issued": 1699442705,\n "network": "137",\n "transactions": [\n {\n "data": "0x",\n "to": "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n "type": "transaction",\n "value": "0x00"\n }\n ],\n "wallet": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6"\n },\n "simulations": [\n {\n "executed": true,\n "gasLimit": 7908,\n "gasUsed": 5931,\n "reason": "This is an error message :)",\n "result": null,\n "succeeded": false\n }\n ]\n }\n}","title":"Failed transaction response","titles":["Transaction receipts"]},"462":{"href":"/solutions/wallets/universal-wallet/examples/02-auth-address#authenticate-users-with-message-signature","html":"\n","isPage":true,"text":"\n","title":"Authenticate Users with Message Signature","titles":[]},"463":{"href":"/solutions/wallets/universal-wallet/examples/02-auth-address#ask-for-the-wallet-address","html":"\n

To get the user's Sequence wallet address:

\n
const wallet = sequence.getWallet()\nconst address = wallet.getAddress()\nconsole.log(address)
\n","isPage":false,"text":"\nTo get the user's Sequence wallet address:\nconst wallet = sequence.getWallet()\nconst address = wallet.getAddress()\nconsole.log(address)\n","title":"Ask for the wallet address","titles":["Authenticate Users with Message Signature"]},"464":{"href":"/solutions/wallets/universal-wallet/examples/02-auth-address#authenticate-wallet","html":"\n

In many cases, you'll want your users to connect and then verify they do control this wallet address. Applications typically do this by asking the user\nto sign a message with their wallet, and then verify the signature from the user to ensure its integrity.

\n

As this is such a common workflow, Sequence can automatically authenticate the account address at the same time\nwhile the user is prompt to connect their wallet to your dapp. This allows the user experience to be simpler and\nmore seamless.

\n
import { sequence } from '0xsequence'\n \nconst wallet = sequence.getWallet()\n \nconst connectDetails = await wallet.connect({\n  app: 'Your Dapp name',\n  authorize: true // <---<<< this will automatically sign+verify a EIP712 message when user clicks "Connect"\n})
\n

It will look like this to your users:

\n\"Sequence\n

In the above example, we pass authorize: true to the connect() function, which will automatically have the user\nsign a EIP712 signed message to prove their identity. This allows you to then easily authenticate the connected\nwallet address with absolute certainty.

\n

You can find the signed message proof returned in connectDetails.proof, which is an EIP712 signed object using\na simple convention from ethauth. NOTE: EIP712 allows you to use an actual object for\nsigning instead of just a plain-text string.

\n","isPage":false,"text":"\nIn many cases, you'll want your users to connect and then verify they do control this wallet address. Applications typically do this by asking the user\nto sign a message with their wallet, and then verify the signature from the user to ensure its integrity.\nAs this is such a common workflow, Sequence can automatically authenticate the account address at the same time\nwhile the user is prompt to connect their wallet to your dapp. This allows the user experience to be simpler and\nmore seamless.\nimport { sequence } from '0xsequence'\n \nconst wallet = sequence.getWallet()\n \nconst connectDetails = await wallet.connect({\n app: 'Your Dapp name',\n authorize: true // <---<<< this will automatically sign+verify a EIP712 message when user clicks "Connect"\n})\nIt will look like this to your users:\n\nIn the above example, we pass authorize: true to the connect() function, which will automatically have the user\nsign a EIP712 signed message to prove their identity. This allows you to then easily authenticate the connected\nwallet address with absolute certainty.\nYou can find the signed message proof returned in connectDetails.proof, which is an EIP712 signed object using\na simple convention from ethauth. NOTE: EIP712 allows you to use an actual object for\nsigning instead of just a plain-text string.\n","title":"Authenticate wallet","titles":["Authenticate Users with Message Signature"]},"465":{"href":"/solutions/wallets/universal-wallet/examples/02-auth-address#authenticate-wallet-server-side","html":"\n

The above example demonstrates how to connect and verify the user's identity in your dapp on the client-side,\nbut if you'd like to authenticate the Sequence authorization proof on your server, then you can do so with the following snippet:

\n
import { ValidateSequenceWalletProof } from '@0xsequence/auth'\nimport { commons, v2 } from '@0xsequence/core'\nimport { ETHAuth } from '@0xsequence/ethauth'\nimport { trackers } from '@0xsequence/sessions'\nimport * as ethers from 'ethers'\n \n// ...\n \nconst rpcUrl = 'https://polygon-mainnet.infura.io/v3/<your infura key here>'\nconst provider = new ethers.providers.JsonRpcProvider(rpcUrl)\n \n// create an EIP-6492-aware ETHAuth proof validator\nconst validator = ValidateSequenceWalletProof(\n  () => new commons.reader.OnChainReader(provider),\n  new trackers.remote.RemoteConfigTracker('https://sessions.sequence.app'),\n  v2.DeployedWalletContext\n)\nconst ethauth = new ETHAuth(validator)\nawait ethauth.configJsonRpcProvider(rpcUrl)\n \ntry {\n  const proof = await ethAuth.decodeProof(connectDetails.proof.proofString)\n  console.log(`proof for address ${proof.address} is valid`)\n} catch (err) {\n  console.log(`invalid proof -- do not trust address: ${err}`)\n}
\n

See the Go Sequence SDK on using Sequence in your Go applications.

\n

If your server is written in a language other than Javascript/Typescript or Go, all you have to do is validate\nthe signature with EIP1271, the standard method for validating signed messages for a smart wallet.

\n

As always, if you have any questions or require help, reach out to us on Discord.

","isPage":false,"text":"\nThe above example demonstrates how to connect and verify the user's identity in your dapp on the client-side,\nbut if you'd like to authenticate the Sequence authorization proof on your server, then you can do so with the following snippet:\nimport { ValidateSequenceWalletProof } from '@0xsequence/auth'\nimport { commons, v2 } from '@0xsequence/core'\nimport { ETHAuth } from '@0xsequence/ethauth'\nimport { trackers } from '@0xsequence/sessions'\nimport * as ethers from 'ethers'\n \n// ...\n \nconst rpcUrl = 'https://polygon-mainnet.infura.io/v3/<your infura key here>'\nconst provider = new ethers.providers.JsonRpcProvider(rpcUrl)\n \n// create an EIP-6492-aware ETHAuth proof validator\nconst validator = ValidateSequenceWalletProof(\n () => new commons.reader.OnChainReader(provider),\n new trackers.remote.RemoteConfigTracker('https://sessions.sequence.app'),\n v2.DeployedWalletContext\n)\nconst ethauth = new ETHAuth(validator)\nawait ethauth.configJsonRpcProvider(rpcUrl)\n \ntry {\n const proof = await ethAuth.decodeProof(connectDetails.proof.proofString)\n console.log(`proof for address ${proof.address} is valid`)\n} catch (err) {\n console.log(`invalid proof -- do not trust address: ${err}`)\n}\nSee the Go Sequence SDK on using Sequence in your Go applications.\nIf your server is written in a language other than Javascript/Typescript or Go, all you have to do is validate\nthe signature with EIP1271, the standard method for validating signed messages for a smart wallet.\nAs always, if you have any questions or require help, reach out to us on Discord.","title":"Authenticate wallet server-side","titles":["Authenticate Users with Message Signature"]},"466":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#no-wallet-confirmation-signatures","html":"\n

It is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using session keys, or ephemeral keys.

\n
","isPage":true,"text":"\nIt is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using session keys, or ephemeral keys.\n","title":"No-Wallet-Confirmation Signatures","titles":[]},"467":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#session-keys","html":"
\n

Session keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet.

\n

By signing a message with their primary wallet (e.g., Sequence Wallet), users can authorize a session key to act on their behalf for a limited time or scope. Applications can then interpret signed messages from the session key as if they were coming directly from the user's wallet, streamlining the user experience.

\n

Session keys are particularly useful for applications that require frequent user interactions, as they help reduce the number of wallet confirmations needed, while still maintaining a secure and verifiable authentication process.

\n
","isPage":false,"text":"\nSession keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet.\nBy signing a message with their primary wallet (e.g., Sequence Wallet), users can authorize a session key to act on their behalf for a limited time or scope. Applications can then interpret signed messages from the session key as if they were coming directly from the user's wallet, streamlining the user experience.\nSession keys are particularly useful for applications that require frequent user interactions, as they help reduce the number of wallet confirmations needed, while still maintaining a secure and verifiable authentication process.\n","title":"Session Keys","titles":[]},"468":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#using-session-keys-with-sequence","html":"
\n","isPage":false,"text":"\n","title":"Using Session keys with Sequence","titles":[]},"469":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#1-initialize-sequence-wallet-and-connect","html":"\n
import { Wallet } from '@0xsequence/wallet'\nimport { ethers } from 'ethers'\n \nconst wallet = new Wallet()\nawait wallet.connect()\n \nconst signer = wallet.getSigner()\nconst userAddress = signer.getAddress()
\n","isPage":false,"text":"\nimport { Wallet } from '@0xsequence/wallet'\nimport { ethers } from 'ethers'\n \nconst wallet = new Wallet()\nawait wallet.connect()\n \nconst signer = wallet.getSigner()\nconst userAddress = signer.getAddress()\n","title":"1. Initialize Sequence Wallet and Connect","titles":["Using Session keys with Sequence",null]},"470":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#2-generate-a-session-key","html":"\n

Create a new ephemeral private key, store it in local storage, and derive the associated address:

\n
const sessionPrivateKey = ethers.utils.randomBytes(32)\nlocalStorage.setItem('sessionPrivateKey', ethers.utils.hexlify(sessionPrivateKey))\nconst sessionWallet = new ethers.Wallet(sessionPrivateKey)\nconst sessionAddress = await sessionWallet.getAddress()
\n","isPage":false,"text":"\nCreate a new ephemeral private key, store it in local storage, and derive the associated address:\nconst sessionPrivateKey = ethers.utils.randomBytes(32)\nlocalStorage.setItem('sessionPrivateKey', ethers.utils.hexlify(sessionPrivateKey))\nconst sessionWallet = new ethers.Wallet(sessionPrivateKey)\nconst sessionAddress = await sessionWallet.getAddress()\n","title":"2. Generate a Session Key","titles":["Using Session keys with Sequence",null]},"471":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#3-sign-authorization-message","html":"\n

Sign a message with the user's Sequence Wallet to authorize the session key:

\n
const authorizationMessage = `Authorize this device to play this game.`\nconst signature = await signer.signMessage(authorizationMessage)
\n","isPage":false,"text":"\nSign a message with the user's Sequence Wallet to authorize the session key:\nconst authorizationMessage = `Authorize this device to play this game.`\nconst signature = await signer.signMessage(authorizationMessage)\n","title":"3. Sign Authorization Message","titles":["Using Session keys with Sequence",null]},"472":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#4-verify-authorization-signature","html":"\n

Verify the signature on the server or client side using Sequence utility functions:

\n
const provider = wallet.getProvider()\nconst chainId = await wallet.getChainId()\n \nconst isValid = await wallet.utils.isValidMessageSignature(\n  userAddress,\n  authorizationMessage,\n  signature,\n  chainId\n)\n \nif (isValid) {\n  console.log('Session key authorized')\n} else {\n  console.log('Session key not authorized')\n}
\n","isPage":false,"text":"\nVerify the signature on the server or client side using Sequence utility functions:\nconst provider = wallet.getProvider()\nconst chainId = await wallet.getChainId()\n \nconst isValid = await wallet.utils.isValidMessageSignature(\n userAddress,\n authorizationMessage,\n signature,\n chainId\n)\n \nif (isValid) {\n console.log('Session key authorized')\n} else {\n console.log('Session key not authorized')\n}\n","title":"4. Verify Authorization Signature","titles":["Using Session keys with Sequence",null]},"473":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#5-sign-message-with-session-key","html":"\n

Use the session key to sign a message client-side without user interaction:

\n
const message = 'Perform action without wallet confirmation'\nconst sessionSignature = await sessionWallet.signMessage(message)
\n","isPage":false,"text":"\nUse the session key to sign a message client-side without user interaction:\nconst message = 'Perform action without wallet confirmation'\nconst sessionSignature = await sessionWallet.signMessage(message)\n","title":"5. Sign Message with Session Key","titles":["Using Session keys with Sequence",null]},"474":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#6-verify-session-signature","html":"\n

Verify the session signature on the server or client side:

\n
const recoveredSessionAddress = ethers.utils.verifyMessage(message, sessionSignature)\nif (recoveredSessionAddress === sessionAddress) {\n  console.log('Session signature valid')\n} else {\n  console.log('Session signature invalid')\n}
\n

Note: You should retrieve the session key stored in local storage upon loading the application and only create a new session key if none can be found.

","isPage":false,"text":"\nVerify the session signature on the server or client side:\nconst recoveredSessionAddress = ethers.utils.verifyMessage(message, sessionSignature)\nif (recoveredSessionAddress === sessionAddress) {\n console.log('Session signature valid')\n} else {\n console.log('Session signature invalid')\n}\nNote: You should retrieve the session key stored in local storage upon loading the application and only create a new session key if none can be found.","title":"6. Verify Session Signature","titles":["Using Session keys with Sequence",null]},"475":{"href":"/solutions/wallets/universal-wallet/examples/05-send-transaction#sending-transactions","html":"\n

Signing a transaction will only retrieve the signed payload.\nIf you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from signTransactions to sendTransaction):

\n
const transaction = {\n  to: recipientAddress,\n  value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSigning a transaction will only retrieve the signed payload.\nIf you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from signTransactions to sendTransaction):\nconst transaction = {\n to: recipientAddress,\n value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n ","title":"Sending Transactions","titles":[]},"476":{"href":"/solutions/wallets/universal-wallet/examples/06-send-erc20#sending-erc-20-tokens","html":"\n

You can ask the wallet to send a single ERC-20 token transfer:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\n \n// Encode an ERC-20 token transfer to recipient of the specified amount\nconst data = erc20Interface.encodeFunctionData(\n  'transfer', [recipientAddress, amount]\n)\n \nconst transaction = {\n  to: daiContractAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\n \n// Encode two different ERC-20 token transfers\nconst data1 = erc20Interface.encodeFunctionData(\n  'transfer', [recipient1Address, amount1]\n)\nconst data2 = erc20Interface.encodeFunctionData(\n  'transfer', [recipient2Address, amount2]\n)\n \nconst transaction1 = {\n  to: daiContractAddress,\n  data: data1\n}\n \nconst transaction2 = {\n  to: daiContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nYou can ask the wallet to send a single ERC-20 token transfer:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\n \n// Encode an ERC-20 token transfer to recipient of the specified amount\nconst data = erc20Interface.encodeFunctionData(\n 'transfer', [recipientAddress, amount]\n)\n \nconst transaction = {\n to: daiContractAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\n \n// Encode two different ERC-20 token transfers\nconst data1 = erc20Interface.encodeFunctionData(\n 'transfer', [recipient1Address, amount1]\n)\nconst data2 = erc20Interface.encodeFunctionData(\n 'transfer', [recipient2Address, amount2]\n)\n \nconst transaction1 = {\n to: daiContractAddress,\n data: data1\n}\n \nconst transaction2 = {\n to: daiContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-20 Tokens","titles":[]},"477":{"href":"/solutions/wallets/universal-wallet/examples/07-send-erc721#sending-erc-721-nft-tokens","html":"\n

Sending an ERC-721 NFT is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:

\n
const erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode the transfer of the NFT tokenId to recipient\nconst address = await wallet.getAddress()\nconst data = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipientAddress, tokenId]\n)\n \nconst transaction = {\n  to: erc721TokenAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode two different ERC-721 token transfers\nconst data1 = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient1Address, amount1]\n)\nconst data2 = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient2Address, amount2]\n)\n \nconst transaction1 = {\n  to: erc721ContractAddress,\n  data: data1\n}\n \nconst transaction2 = {\n  to: erc721ContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSending an ERC-721 NFT is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode the transfer of the NFT tokenId to recipient\nconst address = await wallet.getAddress()\nconst data = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipientAddress, tokenId]\n)\n \nconst transaction = {\n to: erc721TokenAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode two different ERC-721 token transfers\nconst data1 = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient1Address, amount1]\n)\nconst data2 = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient2Address, amount2]\n)\n \nconst transaction1 = {\n to: erc721ContractAddress,\n data: data1\n}\n \nconst transaction2 = {\n to: erc721ContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-721 (NFT) Tokens","titles":[]},"478":{"href":"/solutions/wallets/universal-wallet/examples/08-send-erc1155#sending-erc-1155-collectible-tokens","html":"\n

Sending an ERC-1155 collectible is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:

\n
const erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode the transfer of the collectible to recipient\nconst address = await wallet.getAddress()\nconst data = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipientAddress, tokenId, amount, '0x']\n)\n \nconst transaction = {\n  to: erc1155TokenAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode two different ERC-1155 token transfers\nconst data1 = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient1Address, token1Id, amount1, '0x']\n)\nconst data2 = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient2Address, token2Id, amount2, '0x']\n)\n \nconst transaction1 = {\n  to: erc1155ContractAddress,\n  data: data1\n}\nconst transaction2 = {\n  to: erc1155ContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSending an ERC-1155 collectible is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode the transfer of the collectible to recipient\nconst address = await wallet.getAddress()\nconst data = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipientAddress, tokenId, amount, '0x']\n)\n \nconst transaction = {\n to: erc1155TokenAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode two different ERC-1155 token transfers\nconst data1 = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient1Address, token1Id, amount1, '0x']\n)\nconst data2 = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient2Address, token2Id, amount2, '0x']\n)\n \nconst transaction1 = {\n to: erc1155ContractAddress,\n data: data1\n}\nconst transaction2 = {\n to: erc1155ContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-1155 (Collectible) Tokens","titles":[]},"479":{"href":"/solutions/wallets/universal-wallet/examples/09-send-batch-transactions#sending-a-batch-of-transactions","html":"\n

Likewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:

\n
const transaction1 = {\n  to: recipient1Address,\n  value: 1000000000000000000\n}\n \nconst transaction2 = {\n  to: recipient2Address,\n  value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(response)
\n

The transactions don't have to be the same token or even token standard either.\nYou can mix and match:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\nconst erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\nconst erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \nconst erc20Data = erc20Interface.encodeFunctionData(\n  'transfer', [recipient2Address, amount2]\n)\nconst erc721Data = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient3Address, amount3]\n)\nconst erc1155Data = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient4Address, token4Id, amount4, '0x']\n)\n \nconst transactions = [\n  { to: recipient1Address, value: '1000000000000000000' },\n  { to: daiContractAddress, data: erc20Data },\n  { to: erc721ContractAddress, data: erc721Data },\n  { to: erc1155ContractAddress, data: erc1155Data }\n]\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction(transactions)\nconsole.log(response)
","isPage":true,"text":"\nLikewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:\nconst transaction1 = {\n to: recipient1Address,\n value: 1000000000000000000\n}\n \nconst transaction2 = {\n to: recipient2Address,\n value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(response)\nThe transactions don't have to be the same token or even token standard either.\nYou can mix and match:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \nconst erc20Data = erc20Interface.encodeFunctionData(\n 'transfer', [recipient2Address, amount2]\n)\nconst erc721Data = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient3Address, amount3]\n)\nconst erc1155Data = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient4Address, token4Id, amount4, '0x']\n)\n \nconst transactions = [\n { to: recipient1Address, value: '1000000000000000000' },\n { to: daiContractAddress, data: erc20Data },\n { to: erc721ContractAddress, data: erc721Data },\n { to: erc1155ContractAddress, data: erc1155Data }\n]\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction(transactions)\nconsole.log(response)","title":"Sending a Batch of Transactions","titles":[]},"480":{"href":"/solutions/wallets/universal-wallet/examples/10-building-backends#building-backends-with-sequence","html":"\n","isPage":true,"text":"\n","title":"Building Backends with Sequence","titles":[]},"481":{"href":"/solutions/wallets/universal-wallet/examples/10-building-backends#nodejs","html":"\n

The 0xsequence package which is available for browser / client use, also works perfectly on nodejs backends\nwritten in Javascript or Typescript.

\n","isPage":false,"text":"\nThe 0xsequence package which is available for browser / client use, also works perfectly on nodejs backends\nwritten in Javascript or Typescript.\n","title":"nodejs","titles":["Building Backends with Sequence",null]},"482":{"href":"/solutions/wallets/universal-wallet/examples/10-building-backends#go","html":"\n

A complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.

\n

go-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.

\n","isPage":false,"text":"\nA complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.\ngo-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.\n","title":"Go","titles":["Building Backends with Sequence",null]},"483":{"href":"/solutions/wallets/universal-wallet/examples/10-building-backends#ethkit","html":"\n

As part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.

\n","isPage":false,"text":"\nAs part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.\n","title":"ethkit","titles":["Building Backends with Sequence",null]},"484":{"href":"/solutions/wallets/universal-wallet/examples/10-building-backends#support-for-other-backend-languages","html":"\n

If your backend services are written in a language other than JS or Go, you can still easily integrate Sequence,\nas Sequence is really just a standard Ethereum client library with some extra features. In many cases, the extra\nfeatures are best utilized on the client-side / dapp.

\n

If your situation for example is a Python or Java backend where you'd like to verify signatures from a Sequence Wallet,\nwell then, you can call the standard EIP1271 function for the account address\nfrom your backend.

\n

If you'd like to use the Sequence's Meta-Transaction capabilities, see Building Relaying Server with Sequence.

","isPage":false,"text":"\nIf your backend services are written in a language other than JS or Go, you can still easily integrate Sequence,\nas Sequence is really just a standard Ethereum client library with some extra features. In many cases, the extra\nfeatures are best utilized on the client-side / dapp.\nIf your situation for example is a Python or Java backend where you'd like to verify signatures from a Sequence Wallet,\nwell then, you can call the standard EIP1271 function for the account address\nfrom your backend.\nIf you'd like to use the Sequence's Meta-Transaction capabilities, see Building Relaying Server with Sequence.","title":"Support for other backend languages","titles":["Building Backends with Sequence",null]}},"dirtCount":0,"index":[["zellic",{"0":{"434":1}}],["zero",{"0":{"418":1,"419":1},"2":{"414":4,"418":1,"419":1,"420":2}}],["^5",{"2":{"247":1,"376":1}}],["^1",{"2":{"247":1,"376":1}}],["❤️",{"2":{"131":1}}],["🖼️",{"2":{"102":1,"251":1,"379":1}}],["👛",{"2":{"102":1,"251":1,"379":1}}],["🔐🪪",{"2":{"102":1,"251":1,"379":1}}],["⛓️",{"2":{"102":1,"251":1,"379":1}}],["🪙",{"2":{"102":1,"251":1,"379":1}}],["🦊",{"2":{"102":1,"251":1,"379":1}}],["🧰",{"2":{"101":1,"250":1,"378":1}}],["7908",{"2":{"461":1}}],["712",{"0":{"426":1},"2":{"426":1}}],["7f1",{"2":{"145":2}}],["7",{"0":{"343":1},"2":{"91":1,"105":3,"247":1,"248":1,"376":1,"377":1}}],["721",{"0":{"47":1,"239":1,"477":1},"2":{"41":1,"67":1,"239":2,"477":2}}],["5931",{"2":{"461":1}}],["50",{"2":{"449":3}}],["500",{"2":{"86":1}}],["5",{"0":{"235":1,"341":1,"473":1},"2":{"91":1,"105":3,"148":1,"167":1,"197":2,"248":1,"259":1,"269":1,"352":1,"377":1,"396":2,"397":3}}],["~0",{"2":{"79":1}}],["`failedtransactionresponse`",{"2":{"461":1}}],["`wallet",{"2":{"448":1}}],["`walletproxybytecode`",{"2":{"401":1}}],["`mainmodule`",{"2":{"401":1}}],["`authorize",{"2":{"233":1,"471":1}}],["`invalid",{"2":{"226":1,"465":1}}],["`proof",{"2":{"226":1,"465":1}}],["`senttransactionresponse`",{"2":{"461":1}}],["`sequenceconfig`",{"2":{"145":2}}],["`something",{"2":{"86":2}}],["`https",{"2":{"91":3}}],["`block",{"2":{"86":1}}],["`unauthorized",{"2":{"86":1}}],["`unauthorized`",{"2":{"86":1}}],["`unexpected",{"2":{"72":2,"78":1}}],["`$",{"2":{"86":1,"98":2,"372":2,"446":2,"447":2,"448":2,"449":2,"450":2,"460":2,"461":2}}],["`your",{"2":{"83":1}}],["`",{"2":{"72":2,"78":1,"83":1,"86":5,"91":2,"98":2,"173":4,"178":6,"181":4,"226":1,"233":1,"372":2,"446":2,"447":2,"448":3,"449":2,"450":2,"460":2,"461":2,"465":1,"471":1}}],["815189234z",{"2":{"449":1}}],["815189174z",{"2":{"449":1}}],["819722082z",{"2":{"449":1}}],["8545",{"2":{"406":1}}],["8",{"0":{"344":1},"2":{"68":1,"145":2}}],["qmw5gvygwb98gsn8vjtrwu4pln6jryexnxzknwpphvwtdm",{"2":{"345":1}}],["qmdjzqexj2wnny7pnnn4kauzckjh4va5xhoxmmis919ev3",{"2":{"338":1}}],["qmuqgkka8ew7exiuhnmwz4uoxa11wv7nfjhaogvabassyy",{"2":{"67":1}}],["qr",{"2":{"222":2}}],["quantstamp",{"0":{"432":1},"2":{"431":1}}],["quantityremaining",{"2":{"391":1}}],["quantityraw",{"2":{"127":1}}],["quantity",{"2":{"391":1}}],["quicker",{"2":{"165":1}}],["quickly",{"2":{"94":1,"351":1,"368":1,"375":1}}],["quickstart",{"0":{"92":1,"349":1,"366":1,"373":1},"1":{"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"350":1,"351":1,"352":1,"367":1,"368":1,"369":1,"370":1,"371":1,"372":1,"374":1,"375":1,"376":1,"377":1},"2":{"194":1,"198":1}}],["quite",{"2":{"55":1}}],["quote",{"2":{"12":1,"13":1}}],["quot",{"2":{"4":4,"7":8,"10":88,"12":10,"13":8,"14":22,"29":26,"30":30,"34":8,"36":16,"38":24,"43":30,"45":28,"47":26,"48":2,"49":46,"53":8,"56":78,"61":2,"62":44,"63":56,"67":93,"68":68,"72":8,"78":8,"79":4,"81":2,"83":14,"86":40,"87":8,"89":12,"90":12,"91":2,"135":8,"136":14,"137":4,"139":2,"145":58,"149":8,"150":10,"156":12,"159":2,"160":2,"163":2,"164":2,"173":14,"185":2,"200":38,"211":2,"212":2,"213":12,"214":2,"215":6,"216":4,"217":2,"222":2,"225":2,"247":13,"248":4,"255":6,"295":8,"296":2,"297":2,"310":4,"311":4,"314":4,"316":4,"318":4,"320":6,"329":8,"331":4,"337":12,"338":12,"341":2,"342":2,"347":4,"348":2,"352":32,"372":4,"376":13,"377":4,"391":60,"394":4,"395":10,"396":28,"401":20,"406":6,"425":4,"427":2,"431":6,"435":2,"436":2,"441":2,"442":4,"444":2,"446":14,"447":10,"448":26,"449":86,"450":6,"455":2,"456":6,"457":6,"458":6,"460":74,"461":76,"464":2}}],["queried",{"2":{"187":1,"391":1,"421":1,"422":1}}],["queries",{"2":{"33":1,"34":1,"41":1,"328":1}}],["querycontractmessagesender",{"2":{"331":1}}],["querycontract",{"2":{"331":2}}],["queryclientprovider",{"2":{"106":3,"107":5,"123":2,"130":2}}],["queryclient",{"2":{"106":4,"107":5,"123":1,"130":1}}],["querying",{"0":{"331":1},"2":{"36":1,"56":1,"67":1,"68":1,"70":1,"328":1,"331":1,"333":1}}],["query",{"0":{"16":1},"2":{"2":1,"29":1,"30":1,"31":1,"33":1,"34":1,"38":1,"39":6,"43":1,"45":6,"47":6,"48":2,"51":1,"55":3,"56":6,"61":2,"105":3,"106":1,"107":1,"331":3}}],["questions",{"2":{"226":1,"249":1,"465":1}}],["question",{"2":{"0":1}}],["911",{"2":{"345":1}}],["9",{"0":{"345":1},"2":{"67":3}}],["96",{"2":{"9":2}}],["🌄",{"2":{"32":1}}],["\tmessage",{"2":{"426":1}}],["\tdomain",{"2":{"426":1}}],["\tprimarytype",{"2":{"426":1}}],["\ttypes",{"2":{"426":1}}],["\ttry",{"2":{"91":1}}],["\ttokenbalances",{"2":{"29":1,"38":1}}],["\treturn",{"2":{"91":1}}],["\tconst",{"2":{"91":12}}],["\tcontractaddress",{"2":{"30":1,"45":1,"47":1}}],["\t\twallet",{"2":{"426":1}}],["\t\tverifyingcontract",{"2":{"426":1}}],["\t\tversion",{"2":{"426":1}}],["\t\tcount",{"2":{"426":1}}],["\t\tcontractaddress",{"2":{"45":1,"47":1}}],["\t\tchainid",{"2":{"426":1}}],["\t\tname",{"2":{"426":2}}],["\t\tnetworks",{"2":{"91":1}}],["\t\tperson",{"2":{"426":1}}],["\t\tposition",{"2":{"111":1}}],["\t\tprojectaccesskey",{"2":{"91":1}}],["\t\tdefaulttheme",{"2":{"111":1}}],["\t\tthrow",{"2":{"91":1}}],["\t\treturn",{"2":{"91":1}}],["\t\tsigner",{"2":{"91":1}}],["\t\tsettings",{"2":{"91":1}}],["\t\t",{"2":{"91":3,"111":1,"426":1}}],["\t\t\t\t",{"2":{"91":1}}],["\t\t\t\t\turl",{"2":{"91":1}}],["\t\t\t\tprovider",{"2":{"91":1}}],["\t\t\t\turl",{"2":{"91":1}}],["\t\t\trelayer",{"2":{"91":1}}],["\t\t\trpcurl",{"2":{"91":1}}],["\t\t\tprovider",{"2":{"91":1}}],["\t\t\t",{"2":{"91":2,"426":3}}],["\t\taccountaddress",{"2":{"43":1}}],["\t\tlog",{"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1}}],["\tfilter",{"2":{"43":2,"45":2,"47":1}}],["\tfmt",{"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1}}],["\tverifiedonly",{"2":{"34":1}}],["\tnftbalances",{"2":{"30":1}}],["\tif",{"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1}}],["\tincludemetadata",{"2":{"29":2,"30":2,"38":1,"43":2,"45":1,"47":2}}],["\tseqindexer",{"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1}}],["\t",{"2":{"29":6,"30":6,"34":1,"38":7,"43":9,"45":9,"47":8,"49":1,"53":1,"62":1,"63":2,"91":11,"111":1,"426":3}}],["\taccountaddress",{"2":{"29":1,"30":1,"38":1,"43":1}}],["42",{"2":{"449":4}}],["42161",{"2":{"72":1,"78":1,"456":1,"460":1}}],["401",{"2":{"86":2}}],["400",{"2":{"86":6}}],["4",{"0":{"91":1,"234":1,"340":1,"472":1},"2":{"56":1,"80":1,"81":1,"352":1,"396":1,"426":1}}],["462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b",{"2":{"14":4}}],["486",{"2":{"4":8}}],["230",{"2":{"448":1}}],["24th",{"2":{"432":1}}],["2nd",{"2":{"432":1}}],["255",{"2":{"395":1}}],["2fa",{"2":{"140":2}}],["22",{"2":{"56":2,"449":3}}],["2123",{"2":{"449":2}}],["21",{"2":{"56":2,"58":1}}],["2020",{"2":{"432":1,"433":1}}],["2023",{"2":{"145":4,"434":1,"449":4}}],["2022",{"2":{"145":3}}],["2021",{"2":{"133":1,"145":1,"432":1}}],["200000000000000000000",{"2":{"456":1}}],["200",{"2":{"86":1,"218":1,"456":1}}],["20",{"0":{"238":1,"476":1},"2":{"56":8,"58":2,"72":1,"79":2,"80":1,"238":3,"239":1,"240":1,"476":3,"477":1,"478":1}}],["2",{"0":{"77":1,"83":1,"141":1,"232":1,"300":1,"338":1,"364":1,"470":1},"1":{"84":1,"85":1,"142":1,"143":1,"144":1,"145":1,"146":1},"2":{"12":1,"13":1,"56":1,"62":1,"63":2,"68":1,"83":1,"91":1,"105":3,"135":1,"145":2,"167":1,"197":1,"298":1,"337":1,"352":1,"362":2,"364":2,"396":2,"397":4,"399":2,"442":1}}],["6492",{"2":{"226":1,"465":1}}],["6f1",{"2":{"133":1}}],["66597",{"2":{"127":1}}],["65548",{"2":{"68":3}}],["65535",{"2":{"437":1}}],["65535required",{"2":{"394":1}}],["65539",{"2":{"62":2,"63":1}}],["65538",{"2":{"62":2,"63":1}}],["65537",{"2":{"62":2,"63":1}}],["65556",{"2":{"56":1}}],["6x",{"2":{"56":1,"68":1}}],["6",{"0":{"236":1,"342":1,"474":1},"2":{"10":1,"140":1,"353":1,"385":1}}],["09t18",{"2":{"449":2}}],["03",{"2":{"449":3}}],["02t18",{"2":{"449":4}}],["0a1",{"2":{"145":1}}],["0b3",{"2":{"145":1}}],["0x3c4e11e4dbf23b87c14bd75d0da9c75707392d21",{"2":{"449":2}}],["0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",{"2":{"460":1}}],["0x574372ff1a0eede68b5358cce7bbb93155a9dfe0",{"2":{"449":2}}],["0x596af90cecdbf9a768886e771178fd5561dd27ab",{"2":{"396":1,"397":2,"406":1}}],["0xe6b9b21c077f382333220a072e4c44280b873907",{"2":{"430":1}}],["0xec9a7204a43d3f4a82c84fde92d25bfc9110981e",{"2":{"396":1,"397":1}}],["0xd72c236be524ec24f72329317e2785e687105b69",{"2":{"460":1}}],["0xd6043fe6f06d90ec2cb36ca5cd1b193a8515f350",{"2":{"446":1}}],["0xd130b43062d875a4b7af3f8fc036bc6e9d3e1b3e",{"2":{"430":1}}],["0xd01f11855bccb95f88d7a48492f66410d4637313",{"2":{"401":1,"430":1}}],["0x061150e5574716dbb1a2cdf54b3dce9f94395f65",{"2":{"458":1}}],["0x02390f3e6e5fd1c6786cb78fd3027c117a9955a7",{"2":{"430":1}}],["0x0",{"2":{"427":1}}],["0x0000000000000000000000000000000000000000000000000000000000000000",{"2":{"460":1}}],["0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",{"2":{"460":1}}],["0x00",{"2":{"91":1,"346":1,"461":1}}],["0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",{"2":{"460":1}}],["0xff",{"2":{"401":1}}],["0xf9d09d634fb818b05149329c1dccfaea53639d96",{"2":{"401":1,"430":1}}],["0x6b175474e89094c44da98b954eedeac495271d0f",{"2":{"456":1}}],["0x63a21cca14ed7454b9cf6466af422b5c597c6b57",{"2":{"446":1}}],["0x631998e91476da5b870d741192fc5cbc55f5a52e",{"2":{"30":2,"36":1,"45":3,"47":3,"49":3,"53":1,"56":7,"58":3,"62":3,"63":3,"127":1}}],["0x603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3",{"2":{"401":1}}],["0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1",{"2":{"396":1,"397":2}}],["0x4d4ee1b8583e31fe789eaf2e1b6e011c220c10b6",{"2":{"460":2,"461":1}}],["0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea",{"2":{"396":1,"397":2}}],["0x468e8e29f6cfb0f6b7ff10ec6a1ab516ec849c04",{"2":{"12":1,"13":1}}],["0xcccccccccccccccccccccccccccccccccccccccc",{"2":{"426":1}}],["0xc2be9cf6d9ee4fd211f88620760e829792659b16",{"2":{"391":2}}],["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",{"2":{"10":2}}],["0x153824576d03629b264683b430bbf9acea1d0975",{"2":{"461":1}}],["0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881",{"2":{"460":1}}],["0x1626ba7e",{"2":{"427":2}}],["0x1693ffc74edbb50d6138517fe5cd64fd1c917709",{"2":{"352":1,"391":2}}],["0x17b66009af459dc8ebf37acf8a8b355379be2fe5",{"2":{"49":2}}],["0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",{"2":{"426":1}}],["0xb537a160472183f2150d42eb1c3dd6684a55f74c",{"2":{"352":1,"391":2}}],["0xb392c99d9f8e3e0b248e5c283818be5bf5cecca7",{"2":{"348":1}}],["0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",{"2":{"67":2}}],["0x9766bf76b2e3e7bcb8c61410a3fc873f1e89b43f",{"2":{"149":2}}],["0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",{"2":{"83":1}}],["0x",{"2":{"86":1,"90":1,"240":3,"241":1,"457":1,"461":1,"478":3,"479":1}}],["0x7efe6ce415956c5f80c6530cc6cc81b4808f6118",{"2":{"430":1}}],["0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d",{"2":{"49":2}}],["0x7227e371540cf7b8e512544ba6871472031f3335",{"2":{"49":2,"67":1}}],["0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0",{"2":{"10":1}}],["0x27cabc9700ee6db2797b6ac1e1ece81c72a2cd8d",{"2":{"456":1}}],["0x27a11c1563a5dda238379b95c91b3abbad9c0cf6",{"2":{"68":2}}],["0x2791bca1f2de4661ed88a30c99a7a9449aa84174",{"2":{"49":2,"72":1,"126":1}}],["0x2953399124f0cbb46d2cbacd8a89cf0599974963",{"2":{"49":2}}],["0x839ee023b21f4ffe2294025de0ac30ba7278d6fd",{"2":{"461":2}}],["0x8f3cf7ad23cd3cadbd9735aff958023239c6a063",{"2":{"49":2}}],["0x8bb759bb68995343ff1e9d57ac85ff5c5fb79334",{"2":{"36":1}}],["0x8e3e38fe7367dd3b52d1e281e4e8400447c8d8b9",{"2":{"29":1,"30":1,"38":1,"43":1}}],["0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",{"2":{"460":1}}],["0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7",{"2":{"352":1,"391":2}}],["0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4",{"2":{"49":2}}],["0xabc",{"2":{"29":1,"30":1,"38":1,"43":1}}],["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",{"2":{"10":2}}],["0xsequence",{"0":{"200":1},"2":{"12":1,"29":2,"30":2,"33":5,"34":2,"36":1,"38":2,"43":2,"45":2,"47":2,"49":2,"52":4,"53":2,"62":2,"63":4,"72":2,"78":1,"83":1,"86":5,"91":2,"96":1,"98":1,"99":2,"105":10,"106":2,"107":4,"108":1,"109":1,"123":4,"124":1,"128":1,"130":1,"135":1,"199":1,"200":3,"225":1,"226":4,"231":1,"243":1,"244":2,"247":7,"248":3,"253":1,"254":5,"255":1,"260":4,"263":1,"264":5,"265":1,"271":4,"273":1,"274":2,"281":2,"283":1,"289":1,"291":1,"295":1,"370":1,"372":1,"376":7,"377":3,"425":1,"426":2,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1,"464":1,"465":4,"469":1,"481":1,"482":2}}],["0",{"0":{"260":1,"271":1},"2":{"10":3,"14":1,"67":1,"89":1,"90":1,"132":3,"135":1,"145":2,"156":2,"164":1,"166":3,"247":3,"254":2,"260":3,"271":3,"352":1,"364":1,"376":3,"406":1,"419":1,"422":1,"427":1,"437":1,"442":1,"450":1,"460":2,"461":1}}],["$",{"2":{"10":1,"72":2,"78":1,"83":1,"86":4,"91":2,"226":2,"448":1,"465":2}}],["||",{"2":{"9":1,"86":4}}],["|",{"2":{"9":4,"10":1,"14":1,"440":1,"443":1}}],["+=",{"2":{"147":1,"148":2,"159":1,"160":2}}],["+1",{"2":{"68":2}}],["+",{"2":{"8":1,"30":1,"135":1,"137":1,"173":1,"185":1,"199":1,"220":1,"253":2,"262":2,"263":3,"272":2,"273":2,"279":1,"289":1,"291":1,"328":1,"345":1,"390":1,"397":4,"425":2,"445":2,"451":1}}],["=0",{"2":{"262":1}}],["==",{"2":{"13":1,"442":1}}],["===",{"2":{"12":1,"72":1,"86":10,"236":1,"474":1}}],["=",{"0":{"260":1,"271":1},"2":{"7":3,"12":15,"13":9,"14":2,"29":7,"30":8,"33":2,"34":5,"38":7,"43":8,"45":9,"47":8,"49":4,"52":1,"53":2,"62":4,"63":8,"72":20,"78":9,"79":6,"83":8,"86":14,"87":4,"88":1,"91":17,"98":1,"106":8,"107":10,"108":6,"109":5,"111":1,"123":2,"124":6,"125":1,"126":2,"129":4,"130":3,"151":2,"153":2,"155":2,"158":1,"160":2,"173":7,"178":2,"181":2,"200":11,"201":1,"224":2,"225":2,"226":6,"231":3,"232":3,"233":2,"234":3,"235":2,"236":1,"237":3,"238":12,"239":13,"240":13,"241":13,"254":1,"255":2,"260":1,"265":1,"271":1,"275":3,"283":2,"284":5,"294":3,"295":3,"299":2,"300":1,"302":1,"303":1,"304":1,"305":1,"306":1,"307":2,"308":1,"310":2,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1,"320":2,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1,"327":2,"328":1,"329":10,"331":6,"332":2,"333":7,"372":1,"391":2,"397":3,"399":3,"401":6,"406":4,"414":1,"419":1,"420":1,"425":3,"426":4,"427":1,"430":1,"443":2,"446":3,"447":6,"448":14,"449":2,"450":2,"454":1,"455":2,"456":2,"457":1,"458":2,"460":2,"461":2,"463":2,"464":2,"465":6,"469":3,"470":3,"471":2,"472":3,"473":2,"474":1,"475":3,"476":12,"477":13,"478":13,"479":13}}],["yet",{"2":{"165":1,"419":1,"422":1}}],["yes",{"2":{"136":1}}],["y",{"2":{"132":1,"166":1}}],["yarn",{"2":{"7":1,"33":1,"105":1,"123":1,"247":1,"254":1,"260":1,"264":1,"271":1,"274":1,"376":1}}],["you",{"2":{"1":1,"3":4,"4":5,"6":2,"10":4,"12":1,"29":2,"30":1,"31":1,"32":3,"33":3,"34":2,"38":1,"39":4,"40":1,"41":1,"43":1,"45":3,"47":2,"52":1,"55":1,"56":6,"59":1,"68":1,"69":2,"71":2,"72":5,"73":4,"79":4,"80":3,"81":3,"82":1,"83":4,"84":1,"88":2,"89":3,"90":3,"91":2,"96":1,"97":2,"98":2,"100":1,"103":1,"104":1,"105":1,"108":1,"110":1,"111":1,"128":2,"129":3,"130":2,"133":1,"135":5,"136":6,"137":8,"138":4,"139":2,"142":1,"143":1,"145":4,"147":5,"148":6,"149":3,"150":3,"151":5,"152":3,"153":5,"154":3,"155":5,"156":13,"157":3,"158":1,"159":4,"160":8,"161":4,"163":1,"164":5,"165":4,"169":4,"170":2,"171":7,"173":5,"174":3,"175":5,"178":4,"180":7,"181":2,"183":1,"184":1,"185":2,"186":3,"187":1,"188":2,"193":4,"194":2,"196":2,"197":2,"199":2,"200":9,"222":1,"225":4,"226":4,"236":1,"237":1,"238":2,"239":1,"240":1,"241":1,"245":1,"246":4,"247":3,"249":6,"252":1,"254":1,"260":1,"271":1,"296":2,"300":2,"301":1,"305":3,"306":3,"307":2,"308":4,"310":2,"327":1,"328":4,"329":7,"330":2,"331":3,"332":2,"333":4,"334":2,"336":1,"337":4,"340":1,"343":1,"344":4,"345":4,"346":1,"347":1,"348":5,"353":2,"361":1,"363":3,"364":2,"370":1,"371":2,"372":2,"376":2,"380":1,"385":2,"445":3,"447":1,"448":2,"453":1,"458":1,"464":4,"465":4,"474":1,"475":1,"476":2,"477":1,"478":1,"479":1,"483":1,"484":4}}],["yourself",{"2":{"363":1,"445":1}}],["yoursite",{"2":{"200":2,"212":1}}],["yours",{"2":{"193":1}}],["yourcallshowauthfailurescreen",{"2":{"173":1}}],["yourcallreadytoreceivecode",{"2":{"173":1}}],["your",{"0":{"131":1,"200":1,"220":1,"250":1,"337":1,"339":1,"342":1,"378":1},"1":{"251":1,"379":1},"2":{"0":1,"3":2,"4":3,"5":1,"6":2,"7":2,"8":2,"10":2,"12":8,"17":1,"28":1,"29":1,"31":2,"32":2,"34":1,"36":4,"37":1,"38":1,"39":5,"41":1,"42":1,"44":1,"46":1,"48":1,"52":2,"53":1,"55":1,"56":1,"61":1,"65":2,"69":1,"71":2,"72":11,"73":3,"78":3,"79":2,"80":1,"81":5,"83":7,"84":2,"86":4,"87":2,"88":1,"89":4,"90":5,"101":2,"102":3,"103":1,"104":1,"106":3,"123":1,"129":2,"130":2,"131":2,"132":1,"135":3,"136":2,"137":3,"138":3,"139":2,"145":1,"147":1,"150":2,"151":1,"153":1,"155":1,"156":1,"157":1,"160":4,"161":2,"163":2,"164":3,"165":1,"171":5,"173":1,"174":4,"175":1,"178":4,"180":1,"182":1,"183":1,"185":2,"186":2,"187":1,"188":2,"192":2,"193":7,"195":1,"196":1,"197":1,"198":1,"199":2,"200":8,"212":1,"222":1,"225":4,"226":5,"246":3,"247":4,"249":2,"250":2,"251":3,"252":1,"296":1,"308":3,"309":1,"327":1,"333":2,"334":1,"336":1,"337":2,"338":2,"339":2,"340":1,"341":3,"342":2,"343":1,"344":3,"346":2,"347":1,"348":1,"363":1,"364":1,"376":4,"378":2,"379":3,"380":1,"383":1,"425":1,"426":1,"445":1,"446":1,"453":1,"464":4,"465":5,"484":3}}],["risks",{"2":{"390":1}}],["ripped",{"2":{"136":1}}],["right",{"2":{"114":3,"132":1,"164":1,"188":1,"196":1,"443":1}}],["rotation",{"2":{"359":1}}],["rotate",{"2":{"178":1}}],["root",{"2":{"138":1,"448":1}}],["robust",{"2":{"101":1,"250":1,"378":1}}],["role",{"2":{"83":6}}],["router=",{"2":{"448":1}}],["routerprovider",{"2":{"448":2}}],["router",{"2":{"261":6,"262":2,"270":6,"272":2,"448":7}}],["route",{"2":{"39":1,"137":1,"328":1}}],["routes",{"2":{"39":1}}],["runtime",{"2":{"402":1}}],["runs",{"2":{"200":2}}],["running",{"2":{"185":1,"201":1,"295":1}}],["run",{"2":{"81":1,"133":1,"185":4,"199":1}}],["rainbow",{"2":{"263":1,"265":1,"357":1}}],["rainbowkit",{"0":{"263":1},"1":{"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1},"2":{"249":1,"257":1,"263":3,"264":3,"265":3,"267":1,"270":1,"272":1}}],["ramps",{"0":{"353":1,"385":1}}],["ramp",{"2":{"200":2,"216":1,"353":5,"385":5}}],["ration",{"2":{"212":1}}],["ratio",{"2":{"200":2}}],["rather",{"2":{"148":1,"328":1}}],["randomly",{"2":{"81":1,"82":1}}],["randomnoncespace2",{"2":{"79":2}}],["randomnoncespace1",{"2":{"79":2}}],["randombytes",{"2":{"79":2,"232":1,"470":1}}],["random",{"2":{"68":1,"79":1,"299":1,"413":1,"438":1}}],["range",{"2":{"13":1,"314":1}}],["rawtransactions",{"2":{"151":1,"153":1,"155":1}}],["rawtransaction",{"0":{"149":1},"2":{"149":1,"151":2,"153":2,"155":2,"157":2}}],["raw",{"2":{"10":1,"149":2}}],["rpcurl",{"2":{"7":2,"12":2,"91":2,"226":3,"465":3}}],["rpc",{"0":{"59":1,"60":1},"2":{"6":2,"7":2,"10":1,"14":1,"29":2,"30":2,"32":2,"36":3,"38":2,"43":2,"45":2,"47":2,"49":2,"55":6,"57":3,"59":2,"60":1,"62":2,"63":4,"308":2,"352":1,"361":1,"391":2}}],["rejected",{"2":{"405":1,"413":1}}],["region",{"2":{"353":1,"385":1}}],["registers",{"2":{"185":1}}],["registersession",{"2":{"178":1,"180":1}}],["registering",{"2":{"179":1}}],["registered",{"2":{"174":1,"180":1}}],["register",{"2":{"141":2,"178":2}}],["registry",{"2":{"39":1}}],["rewrite",{"2":{"333":2}}],["remaining",{"2":{"387":1}}],["remember",{"2":{"185":1,"446":1}}],["removed",{"2":{"390":1}}],["remove",{"2":{"390":1}}],["removing",{"2":{"156":1}}],["remoteconfigtracker",{"2":{"226":1,"465":1}}],["remotely",{"2":{"199":1}}],["remote",{"0":{"20":1},"2":{"226":1,"425":1,"426":1,"465":1}}],["redirect",{"2":{"203":1}}],["reducing",{"2":{"178":1}}],["reduced",{"2":{"441":1}}],["reduce",{"2":{"29":1,"30":1,"43":1,"47":1,"229":1,"398":1,"467":1}}],["reddit",{"2":{"147":1,"148":1,"159":1,"160":1}}],["redeploy",{"2":{"89":1,"91":1}}],["reflect",{"2":{"222":1}}],["referencing",{"2":{"405":1,"413":1,"418":1}}],["references",{"2":{"33":1,"34":1,"431":1}}],["reference",{"0":{"55":1},"1":{"56":1,"57":1,"58":1,"59":1,"60":1},"2":{"32":2,"59":2,"139":1,"151":1,"153":1,"155":1}}],["referred",{"2":{"154":1}}],["refer",{"2":{"96":1,"106":1,"129":1,"182":1,"183":1,"370":1}}],["refreshedat",{"2":{"449":2}}],["refreshes",{"2":{"164":1}}],["refreshjobstatus",{"2":{"63":3}}],["refreshjob",{"2":{"63":1}}],["refresh",{"0":{"208":1},"2":{"63":3,"64":2,"208":2,"348":3}}],["refreshing",{"0":{"63":1},"1":{"64":1}}],["rendered",{"2":{"211":1,"293":1,"294":1,"295":4,"413":1,"419":1}}],["rendering",{"2":{"43":1,"261":1,"270":1,"293":1,"294":2}}],["render",{"2":{"39":3,"47":1,"293":1,"416":1,"448":1}}],["relevant",{"2":{"460":1}}],["release",{"2":{"137":1}}],["reload",{"2":{"348":1}}],["rely",{"2":{"130":1}}],["relayed",{"2":{"78":1}}],["relayerfeeoption",{"2":{"13":1}}],["relayerurl",{"2":{"12":2,"91":2}}],["relayer",{"0":{"8":1,"80":1},"1":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1},"2":{"8":6,"10":6,"12":4,"13":4,"14":5,"17":2,"72":2,"79":1,"80":2,"83":4,"91":1}}],["relaying",{"0":{"71":1},"1":{"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1},"2":{"73":1,"246":1,"484":1}}],["reliable",{"2":{"39":1}}],["reason",{"2":{"419":1,"460":1,"461":1}}],["reasons",{"2":{"413":1}}],["reaches",{"2":{"442":1}}],["reached",{"2":{"425":1,"426":1}}],["reach",{"2":{"165":1,"226":1,"249":1,"465":1}}],["reactdom",{"2":{"448":1}}],["react",{"0":{"110":1,"280":1},"1":{"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1},"2":{"105":3,"106":1,"107":1,"109":1,"249":1,"280":3,"281":1,"283":2,"284":1,"288":1,"448":8}}],["really",{"2":{"246":1,"310":1,"484":1}}],["realm",{"2":{"101":1,"157":1,"250":1,"378":1}}],["real",{"2":{"36":1,"39":2,"187":2,"361":1}}],["reader",{"2":{"226":1,"465":1}}],["reading",{"0":{"406":1},"2":{"158":1}}],["readable",{"2":{"150":1,"156":1}}],["ready",{"2":{"103":1,"174":1,"252":1,"343":1,"348":1,"380":1}}],["read",{"0":{"158":1},"2":{"32":1,"51":1,"59":1,"67":1,"79":1,"137":2,"150":2,"200":1,"331":1,"348":1,"406":1}}],["recursive",{"2":{"443":1}}],["recovery",{"2":{"359":1,"365":1}}],["recoveredsessionaddress",{"2":{"236":2,"474":2}}],["recognize",{"2":{"137":1,"160":1}}],["recommendations",{"2":{"390":1}}],["recommended",{"0":{"135":1},"1":{"136":1},"2":{"148":1,"150":1,"151":1,"153":1,"155":1,"156":1,"159":1,"160":1,"265":1,"294":1,"295":1,"307":1,"310":1,"320":1,"327":1,"328":1,"333":1}}],["recommend",{"2":{"33":1,"36":1,"52":1,"55":1,"57":1,"69":1,"139":2,"156":1,"158":1,"160":1,"197":1}}],["recipient4address",{"2":{"241":1,"479":1}}],["recipient3address",{"2":{"241":1,"479":1}}],["recipient2address",{"2":{"238":1,"239":1,"240":1,"241":2,"476":1,"477":1,"478":1,"479":2}}],["recipient2",{"2":{"79":1}}],["recipient1address",{"2":{"238":1,"239":1,"240":1,"241":2,"476":1,"477":1,"478":1,"479":2}}],["recipient1",{"2":{"79":1}}],["recipient",{"2":{"72":1,"238":1,"239":1,"240":1,"456":1,"476":1,"477":1,"478":1}}],["recipientaddress",{"2":{"72":1,"78":1,"237":1,"238":1,"239":1,"240":1,"327":1,"475":1,"476":1,"477":1,"478":1}}],["receives",{"2":{"455":1}}],["received",{"2":{"147":1,"180":1}}],["receive",{"2":{"83":1,"140":1,"157":1,"160":1,"174":1,"305":2,"306":2,"328":1,"330":1}}],["receipts",{"0":{"14":1,"459":1},"1":{"460":1,"461":1},"2":{"306":1,"459":2,"460":1}}],["receipt",{"2":{"13":4,"14":4,"157":1,"304":1,"306":1,"326":1,"327":1,"329":5,"332":1,"333":2,"460":5,"461":1}}],["recent",{"2":{"39":1,"261":1,"270":1,"313":1}}],["re",{"2":{"33":1,"39":1,"52":1,"71":1,"80":1,"103":1,"132":1,"147":2,"148":1,"150":1,"156":3,"159":1,"160":1,"166":1,"175":1,"199":1,"208":1,"252":1,"380":1,"444":1}}],["reports",{"2":{"431":1}}],["repo",{"2":{"220":1}}],["repository",{"2":{"81":1,"110":1,"448":1}}],["represents",{"2":{"189":1,"191":1,"419":1,"441":1,"442":1}}],["represented",{"2":{"70":1,"149":2,"440":1}}],["represent",{"2":{"29":1,"439":1}}],["replay",{"2":{"9":1,"207":1,"448":1}}],["replaced",{"2":{"161":1}}],["replace",{"0":{"227":1},"2":{"7":1,"89":1,"90":1,"136":1,"138":1,"145":1,"161":1,"387":1,"390":1,"444":1}}],["revert",{"2":{"416":1}}],["reverted",{"2":{"72":1,"460":1}}],["revertreason",{"2":{"14":1,"460":2}}],["revertonerror",{"0":{"416":1},"2":{"13":1,"414":2,"416":1,"419":1,"420":1}}],["resource",{"2":{"136":1}}],["resources",{"2":{"135":1,"138":6}}],["res",{"2":{"86":4,"145":2,"391":3,"446":2}}],["resulting",{"2":{"425":1,"426":1,"427":1}}],["result",{"2":{"56":1,"80":1,"82":1,"83":1,"148":2,"149":1,"160":3,"170":2,"178":1,"331":1,"404":1,"442":1,"455":2,"461":1}}],["results",{"2":{"36":3,"164":1}}],["restofonboardparams",{"2":{"275":1}}],["restwallets",{"2":{"275":1}}],["restarted",{"2":{"145":1}}],["rest",{"0":{"55":1,"58":1},"1":{"56":1,"57":1,"58":1,"59":1,"60":1},"2":{"39":1,"51":1,"55":3,"57":2,"58":1,"294":1,"295":1,"300":1,"363":1,"407":1}}],["respect",{"2":{"427":1}}],["respectively",{"2":{"442":1,"458":1}}],["respective",{"2":{"35":1,"54":1,"249":1}}],["responsibility",{"2":{"413":1,"442":1}}],["responsible",{"2":{"171":1}}],["responsive",{"2":{"178":1,"308":1}}],["responses",{"2":{"39":1,"56":1}}],["response",{"0":{"460":1,"461":1},"2":{"13":2,"14":1,"29":2,"30":1,"43":2,"47":1,"56":2,"67":1,"86":19,"181":2,"241":4,"328":1,"391":1,"460":2,"461":2,"479":4}}],["responds",{"2":{"13":1}}],["resilient",{"2":{"6":1,"39":1}}],["retrieving",{"0":{"421":1,"422":1},"1":{"422":1}}],["retrieve",{"2":{"200":1,"236":1,"237":1,"391":1,"474":1,"475":1}}],["retrieved",{"2":{"10":1}}],["returning",{"2":{"72":2,"458":1}}],["returns",{"2":{"13":1,"48":1,"80":2,"151":1,"153":1,"155":1,"302":1,"408":1,"422":1,"427":1,"449":1,"454":1,"455":4,"456":2}}],["return",{"0":{"410":1},"2":{"4":1,"12":1,"29":3,"30":1,"43":1,"47":1,"67":1,"68":1,"72":2,"78":1,"86":17,"89":1,"90":1,"91":2,"106":1,"107":2,"108":1,"109":1,"123":1,"124":1,"129":2,"130":1,"149":1,"206":1,"294":2,"295":2,"321":1,"326":1,"331":1,"421":1,"427":5,"443":4,"448":3,"458":1,"459":1,"460":1}}],["returned",{"2":{"4":2,"36":1,"63":1,"141":1,"180":1,"210":1,"225":1,"425":1,"426":1,"461":1,"464":1}}],["requiring",{"2":{"200":1,"228":1,"229":1,"333":1,"458":1,"466":1,"467":1}}],["requirefreshsigner",{"2":{"430":1}}],["requirements",{"0":{"133":1,"167":1},"2":{"141":1}}],["required",{"2":{"13":2,"88":1,"132":1,"144":1,"173":1,"199":1,"317":1,"328":1,"362":1,"364":1,"436":1,"442":1,"456":1}}],["require",{"2":{"8":1,"181":1,"226":1,"229":1,"293":1,"295":1,"333":1,"389":1,"418":1,"444":1,"446":1,"452":1,"453":1,"465":1,"467":1}}],["requires",{"2":{"2":1,"3":1,"5":1,"29":1,"33":1,"49":1,"52":1,"62":1,"161":1,"178":1,"237":1,"247":1,"308":1,"376":1,"456":1,"475":1}}],["requests",{"0":{"191":1},"2":{"17":1,"32":1,"39":1,"59":1,"83":1,"186":1,"187":1,"191":1,"222":1,"308":1}}],["request",{"2":{"3":1,"4":1,"5":1,"29":1,"30":1,"38":1,"39":1,"43":1,"45":1,"47":1,"48":1,"49":1,"56":2,"61":1,"62":1,"63":3,"86":20,"89":1,"91":6,"131":1,"157":1,"222":1,"352":1,"391":1,"460":1,"461":1}}],["vulnerate",{"2":{"365":1}}],["v6",{"0":{"280":1},"1":{"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1},"2":{"280":2,"281":1,"283":1,"288":1}}],["v3",{"2":{"226":1,"465":1}}],["vocs",{"0":{"227":1}}],["volume",{"2":{"187":1}}],["void",{"2":{"147":1,"148":3,"159":2,"160":3,"173":5,"181":2}}],["v2",{"2":{"72":2,"226":2,"290":1,"436":1,"465":2}}],["v1",{"2":{"72":1}}],["v18",{"2":{"33":1,"52":1}}],["ve",{"2":{"65":1,"69":1,"136":1,"142":1,"143":1,"147":2,"151":1,"152":1,"153":1,"155":1,"156":1,"164":1,"173":2,"174":1,"178":2,"180":1,"199":2,"249":1,"296":1,"308":1,"333":1,"344":1,"347":1}}],["verifies",{"2":{"427":1}}],["verified",{"2":{"29":1,"30":1,"36":3,"43":1,"47":1,"148":1,"204":1,"365":1,"427":1}}],["verifiedonly",{"2":{"29":2,"30":2,"36":2,"43":2,"47":2}}],["verifiable",{"2":{"229":1,"467":1}}],["verification",{"0":{"427":1},"2":{"86":1,"424":1,"452":1,"453":1}}],["verifying",{"2":{"364":1}}],["verifymessage",{"2":{"236":1,"474":1}}],["verify",{"0":{"234":1,"236":1,"472":1,"474":1},"2":{"86":5,"225":2,"226":1,"234":1,"236":1,"246":1,"363":1,"464":2,"465":1,"472":1,"474":1,"484":1}}],["version=",{"2":{"145":2}}],["versioning",{"2":{"132":1,"166":1}}],["versions",{"0":{"260":1,"271":1,"294":1},"2":{"72":1,"145":3,"262":1,"280":1,"293":1}}],["version",{"0":{"295":1},"2":{"72":2,"132":3,"136":1,"137":1,"164":1,"166":3,"247":1,"254":2,"260":2,"262":2,"271":2,"293":1,"376":1}}],["versus",{"2":{"72":1}}],["versa",{"2":{"69":1}}],["very",{"2":{"36":1,"138":1,"149":1,"160":1,"181":1,"185":1,"199":1}}],["vs",{"0":{"69":1},"2":{"55":1}}],["v",{"2":{"12":1,"63":2}}],["virtual",{"2":{"358":1,"427":1}}],["virtually",{"2":{"9":1}}],["vision",{"2":{"447":1}}],["visibility",{"2":{"178":1}}],["visible",{"2":{"178":1,"353":1,"385":1}}],["visualizations",{"2":{"187":1}}],["viem",{"2":{"105":4,"260":1,"271":1}}],["viewable",{"2":{"148":1}}],["viewer",{"0":{"90":1},"2":{"90":1}}],["view",{"2":{"32":1,"82":1,"121":3,"145":2,"171":1,"178":2,"343":1,"408":1,"427":1,"460":1,"461":1}}],["vice",{"2":{"69":1}}],["via",{"0":{"222":1},"2":{"10":1,"14":1,"63":2,"64":1,"102":1,"128":1,"137":3,"138":1,"141":2,"160":2,"164":1,"186":1,"189":1,"190":1,"193":1,"199":4,"222":3,"248":1,"251":1,"254":1,"264":1,"281":1,"303":1,"304":1,"305":1,"306":1,"333":1,"353":3,"364":1,"377":1,"379":1,"385":3,"387":1,"453":1}}],["video",{"2":{"4":2,"194":1,"249":1}}],["valuable",{"2":{"186":1}}],["valueasstring",{"2":{"156":2,"157":1}}],["value=",{"2":{"145":2}}],["value",{"0":{"418":1},"2":{"12":1,"13":2,"67":8,"68":1,"90":1,"149":4,"150":1,"188":1,"204":1,"237":1,"238":2,"240":2,"241":5,"287":1,"330":1,"406":1,"414":2,"418":1,"420":1,"427":3,"437":1,"438":1,"443":2,"456":1,"457":1,"458":1,"460":1,"461":2,"475":1,"476":2,"478":2,"479":5}}],["values",{"0":{"410":1},"2":{"4":1,"113":1,"114":1,"119":1,"120":1,"138":1,"149":1,"156":1,"164":1,"310":1,"311":1,"314":1,"316":1,"318":1,"320":1,"401":1}}],["validity",{"2":{"414":1}}],["valid`",{"2":{"226":1,"465":1}}],["validating",{"2":{"226":1,"442":1,"465":1}}],["validations",{"0":{"457":1}}],["validation",{"0":{"407":1,"451":1,"454":1,"455":1,"458":1},"1":{"408":1,"409":1,"410":1,"452":1,"453":1,"454":1,"455":2,"456":3,"457":2,"458":1},"2":{"86":1,"407":1,"444":1,"446":1,"453":1,"454":2,"455":1,"456":5,"457":3,"458":4}}],["validatesession",{"2":{"455":2}}],["validatesequencewalletproof",{"2":{"226":2,"465":2}}],["validates",{"2":{"408":1,"444":1}}],["validated",{"2":{"398":2,"409":1,"413":1,"455":1}}],["validate",{"2":{"226":1,"401":1,"407":1,"408":1,"427":2,"452":1,"455":1,"465":1}}],["validator",{"2":{"226":3,"465":3}}],["valid",{"0":{"397":1},"2":{"86":2,"173":1,"180":1,"200":1,"236":1,"346":1,"391":1,"394":1,"413":1,"419":1,"427":4,"436":1,"437":1,"441":1,"442":1,"449":1,"455":1,"474":1}}],["vary",{"2":{"247":1,"376":1}}],["vars",{"2":{"87":2}}],["varies",{"2":{"406":1}}],["variety",{"2":{"8":1,"32":1,"192":1,"194":1,"196":1}}],["variable",{"2":{"156":1}}],["variables",{"0":{"87":1},"2":{"86":1,"87":1,"156":1,"181":2}}],["variation",{"2":{"151":1,"153":1,"155":1}}],["various",{"2":{"105":1,"114":1,"262":1,"392":1}}],["var",{"2":{"13":1}}],["joined",{"2":{"425":1,"426":1}}],["job",{"2":{"63":2}}],["jobid",{"2":{"63":1}}],["july",{"2":{"432":1}}],["jump",{"2":{"196":1}}],["just",{"2":{"36":1,"56":1,"70":1,"73":1,"90":1,"102":1,"136":1,"147":1,"156":2,"171":1,"173":1,"178":1,"199":3,"225":1,"246":1,"251":1,"347":1,"379":1,"464":1,"484":1}}],["java",{"2":{"246":1,"484":1}}],["javascript",{"2":{"32":1,"83":1,"226":1,"243":1,"465":1,"481":1}}],["jacket",{"2":{"67":1}}],["jpg",{"2":{"56":1}}],["js",{"0":{"33":1,"52":1,"220":2,"248":1,"293":1,"294":1,"295":1,"377":1},"2":{"29":1,"30":1,"32":1,"33":1,"38":1,"43":1,"45":1,"47":1,"49":1,"52":1,"59":1,"62":1,"63":2,"100":1,"199":2,"245":1,"246":1,"247":3,"248":3,"249":1,"293":2,"295":1,"376":1,"377":3,"391":1,"483":1,"484":1}}],["jsonrpcprovider",{"2":{"7":1,"83":1,"91":2,"226":1,"406":1,"465":1}}],["json",{"2":{"4":2,"10":1,"12":1,"13":1,"14":1,"29":3,"30":3,"38":3,"43":3,"45":3,"47":3,"49":3,"56":1,"62":3,"63":6,"67":1,"68":1,"81":1,"86":5,"89":1,"90":1,"137":2,"247":2,"337":3,"338":2,"339":1,"340":1,"344":1,"345":3,"346":1,"352":1,"376":2,"391":7}}],["jq",{"2":{"10":1,"14":1}}],["jwt",{"2":{"3":1,"4":1,"140":1}}],["1699442705",{"2":{"461":1}}],["1699442705965",{"2":{"461":1}}],["1699443005",{"2":{"461":1}}],["160",{"2":{"9":2,"440":1}}],["191",{"0":{"425":1},"2":{"425":1}}],["11",{"0":{"347":1},"2":{"449":4}}],["1155",{"0":{"47":1,"240":1,"478":1},"2":{"29":2,"41":1,"56":2,"67":2,"68":2,"240":2,"342":1,"344":1,"478":2}}],["102951017z",{"2":{"449":1}}],["102950917z",{"2":{"449":1}}],["109787921z",{"2":{"449":1}}],["109234880945084120673",{"2":{"449":4}}],["10",{"0":{"346":1},"2":{"449":2,"455":1}}],["10^decimals",{"2":{"149":1}}],["10^18",{"2":{"149":1}}],["100",{"2":{"127":1,"218":1}}],["10000000000",{"2":{"126":1}}],["1000000000000000000",{"2":{"12":1,"13":1,"149":1,"237":1,"241":3,"475":1,"479":3}}],["1447300",{"2":{"145":1}}],["14",{"2":{"135":1}}],["158456331411102687640546264635",{"2":{"67":1}}],["1271",{"2":{"395":1,"413":1,"424":1}}],["123",{"2":{"207":1,"345":2}}],["123456",{"2":{"447":1,"455":1}}],["1234",{"2":{"63":3}}],["1200x400",{"2":{"200":2,"212":1}}],["12",{"0":{"260":1,"271":1,"348":1},"2":{"68":2,"260":1,"262":1,"271":1,"401":1}}],["128",{"2":{"10":1}}],["13+",{"2":{"293":1}}],["13",{"0":{"295":1},"2":{"293":1,"295":1}}],["131092",{"2":{"56":1}}],["137",{"2":{"49":1,"56":1,"62":1,"63":1,"72":3,"78":2,"79":2,"106":1,"107":1,"126":1,"130":1,"275":1,"283":1,"461":2}}],["18",{"2":{"10":2,"149":2,"150":1}}],["1",{"0":{"76":1,"81":1,"140":1,"231":1,"299":1,"337":1,"363":1,"469":1},"1":{"82":1},"2":{"4":13,"10":3,"49":1,"62":2,"63":3,"72":4,"78":2,"83":1,"91":1,"132":1,"142":1,"143":1,"145":3,"149":4,"156":1,"157":1,"166":1,"183":1,"200":2,"205":1,"212":1,"254":1,"259":1,"260":2,"269":1,"271":2,"305":1,"306":1,"327":1,"333":2,"337":1,"346":1,"348":1,"352":1,"364":1,"391":2,"396":1,"397":1,"399":2,"426":2,"442":2,"457":2,"458":2}}],["3rd",{"2":{"364":1}}],["32",{"2":{"232":1,"401":1,"449":3,"470":1}}],["36000",{"2":{"205":1}}],["30",{"2":{"80":1,"188":1}}],["3",{"0":{"78":1,"86":1,"233":1,"339":1,"471":1},"1":{"87":1,"88":1,"89":1,"90":1},"2":{"4":1,"133":1,"145":2,"200":2,"212":1,"352":1,"387":1,"396":1,"397":2,"399":2,"436":1,"442":1,"449":1}}],["x19ethereum",{"2":{"425":1}}],["xattr",{"2":{"185":1}}],["xavier",{"2":{"68":1}}],["xavi",{"2":{"68":1}}],["xcodeproj",{"2":{"185":3}}],["xcode",{"0":{"185":1},"2":{"185":2}}],["xmlns",{"2":{"145":4}}],["xml",{"2":{"145":6}}],["xyz",{"2":{"33":1,"34":1,"86":1,"87":1,"158":1}}],["x",{"0":{"260":1,"271":1},"2":{"3":1,"10":1,"14":1,"29":2,"30":2,"33":1,"38":2,"43":2,"45":2,"47":2,"49":2,"52":1,"62":2,"63":4,"89":1,"90":1,"132":1,"166":1,"178":1,"260":1,"262":1,"271":1,"348":1,"364":2,"391":1}}],["x27",{"2":{"0":1,"4":1,"8":1,"10":4,"12":14,"13":6,"14":6,"29":16,"30":17,"32":2,"33":8,"34":1,"36":1,"38":13,"43":13,"45":13,"47":14,"49":24,"52":7,"55":1,"56":5,"59":1,"62":16,"63":22,"65":1,"67":1,"68":2,"69":1,"72":18,"79":1,"80":1,"81":2,"84":1,"86":2,"88":1,"89":2,"90":2,"91":8,"97":1,"98":6,"99":1,"103":1,"106":18,"107":22,"108":5,"109":2,"111":5,"113":4,"119":9,"120":9,"123":2,"124":2,"126":6,"127":6,"129":6,"130":17,"132":2,"133":1,"135":1,"136":2,"137":2,"138":1,"142":1,"143":1,"145":8,"147":6,"148":1,"150":1,"151":4,"152":1,"153":4,"155":4,"156":7,"159":1,"160":3,"161":1,"163":1,"164":3,"165":1,"166":1,"171":3,"173":3,"174":2,"175":2,"178":5,"179":1,"180":1,"181":1,"186":1,"199":3,"200":5,"202":2,"204":1,"207":1,"222":2,"224":1,"225":5,"226":16,"229":2,"231":4,"232":2,"233":1,"234":4,"235":2,"236":4,"238":10,"239":10,"240":16,"241":17,"244":1,"246":3,"249":2,"252":1,"265":10,"275":4,"278":1,"283":4,"284":4,"294":4,"295":3,"296":1,"308":1,"310":1,"329":6,"331":3,"333":1,"337":1,"339":3,"346":1,"347":1,"352":4,"358":2,"363":3,"364":3,"365":2,"371":1,"372":2,"380":1,"388":1,"391":4,"398":1,"399":8,"400":1,"402":1,"404":1,"406":4,"407":2,"408":1,"413":1,"414":5,"415":1,"418":1,"419":2,"420":2,"421":1,"422":1,"425":2,"426":28,"427":1,"430":12,"441":2,"442":2,"443":24,"445":1,"446":1,"447":1,"448":8,"453":2,"455":1,"463":1,"464":5,"465":16,"467":2,"469":4,"470":2,"471":1,"472":4,"473":2,"474":4,"476":10,"477":10,"478":16,"479":17,"482":1,"484":3}}],["human",{"2":{"150":1,"156":1}}],["html",{"2":{"145":1}}],["http",{"2":{"29":1,"30":1,"32":2,"38":1,"43":1,"45":1,"47":1,"59":1,"106":2,"107":2,"145":4,"406":1}}],["https",{"2":{"4":8,"7":1,"10":5,"12":2,"14":1,"29":3,"30":3,"32":2,"33":2,"34":2,"36":2,"38":3,"43":3,"45":3,"47":3,"49":2,"50":1,"52":1,"56":7,"58":6,"60":1,"62":2,"63":5,"67":6,"68":4,"72":1,"73":1,"78":1,"80":2,"82":1,"83":1,"86":2,"87":1,"89":1,"90":1,"99":1,"135":1,"145":2,"158":1,"199":1,"200":2,"212":1,"226":2,"244":1,"248":2,"253":1,"263":1,"273":1,"289":1,"291":1,"295":1,"345":1,"348":2,"352":1,"377":2,"382":1,"383":1,"391":2,"449":4,"465":2,"482":1}}],["hint",{"2":{"204":1}}],["hit",{"2":{"185":2}}],["hides",{"2":{"178":1}}],["hide",{"2":{"178":1}}],["hidden",{"2":{"139":1}}],["highly",{"2":{"293":1,"308":1,"310":1,"328":1}}],["high",{"2":{"39":1,"185":1,"187":1,"188":1}}],["higher",{"2":{"5":1}}],["history",{"0":{"42":1,"43":1,"44":1,"45":1},"1":{"43":1,"45":1},"2":{"39":2,"41":2,"43":6,"45":6,"161":1}}],["horizon",{"2":{"389":3}}],["horik",{"2":{"68":1}}],["home",{"2":{"196":1,"294":3}}],["hope",{"2":{"164":1,"165":1}}],["hooks",{"2":{"294":2}}],["hook",{"2":{"108":2,"109":1,"124":1,"294":1,"448":1,"457":1,"458":2}}],["house",{"2":{"39":1}}],["hosting",{"2":{"336":1,"389":1}}],["hosted",{"2":{"80":1,"363":1,"364":1}}],["hosts",{"2":{"33":1,"34":1}}],["host",{"2":{"32":1,"204":1}}],["however",{"2":{"67":1,"128":1,"136":1,"137":1,"161":1,"333":1,"453":1}}],["how",{"0":{"162":1,"187":1,"197":1,"294":1,"295":1,"335":1},"1":{"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"4":1,"31":1,"48":2,"51":1,"56":1,"61":2,"65":1,"79":1,"80":1,"111":1,"129":2,"137":1,"139":1,"147":1,"150":2,"152":1,"154":1,"156":1,"171":1,"178":1,"179":1,"181":1,"183":1,"199":1,"226":1,"297":1,"310":1,"330":1,"348":1,"353":1,"385":1,"390":1,"435":1,"440":1,"465":1}}],["he",{"2":{"455":1}}],["hence",{"2":{"444":1}}],["henrique",{"2":{"68":1}}],["hesitate",{"2":{"165":1}}],["hello",{"2":{"81":1,"82":1,"425":1}}],["helps",{"2":{"181":1,"183":1}}],["helper",{"2":{"149":1}}],["helpful",{"2":{"36":1,"45":1,"47":1,"194":1,"297":1}}],["help",{"2":{"29":1,"30":1,"36":1,"43":1,"47":1,"65":1,"136":1,"139":1,"164":1,"165":1,"226":1,"229":1,"249":1,"336":1,"389":1,"465":1,"467":1}}],["hex",{"2":{"425":1,"426":1}}],["hexdataslice",{"2":{"401":1}}],["hexzeropad",{"2":{"401":1}}],["hexadecimal",{"2":{"149":1,"160":1,"307":2,"310":2,"311":1,"313":1,"314":1,"315":1,"316":2,"318":1,"320":1}}],["hexlify",{"2":{"79":2,"232":1,"470":1}}],["hextoaddress",{"2":{"12":1}}],["heavily",{"2":{"296":1}}],["head",{"2":{"338":1,"347":1}}],["headless",{"2":{"196":1,"197":1}}],["header",{"2":{"185":1,"352":1}}],["headers",{"2":{"3":1,"86":5,"391":1}}],["heard",{"2":{"152":1}}],["healthy",{"2":{"39":1}}],["health",{"2":{"39":1}}],["here",{"2":{"32":1,"40":1,"41":1,"45":1,"47":1,"67":1,"68":1,"79":1,"91":1,"111":1,"129":1,"158":1,"160":1,"179":1,"200":1,"226":1,"258":1,"262":4,"268":1,"272":3,"279":1,"288":1,"291":1,"295":2,"448":1,"465":1}}],["h",{"2":{"10":1,"14":1,"29":2,"30":2,"38":2,"43":2,"45":2,"47":2,"49":2,"62":2,"63":4,"89":1,"90":1,"169":2,"173":2,"181":1,"183":1,"391":1}}],["had",{"2":{"390":1}}],["happen",{"2":{"364":1,"456":1}}],["happens",{"2":{"185":1}}],["hardware",{"2":{"363":1}}],["harmoniously",{"2":{"261":1,"270":1}}],["handling",{"2":{"444":1}}],["handlegooglelogin",{"2":{"448":3}}],["handlers",{"2":{"200":1}}],["handler",{"2":{"148":1,"159":1,"160":1,"448":3}}],["handlerequest",{"2":{"86":2}}],["handles",{"2":{"148":1,"445":1}}],["handle",{"2":{"7":2,"58":1,"86":8,"87":1,"91":6,"147":1,"156":1,"448":1}}],["hand",{"2":{"68":1,"185":1}}],["hat",{"2":{"67":2}}],["having",{"2":{"6":1,"71":1,"79":1,"80":1,"139":1,"200":1}}],["haven",{"2":{"135":1,"137":1}}],["have",{"2":{"1":1,"6":1,"9":1,"36":1,"39":1,"65":1,"67":1,"70":1,"72":1,"73":3,"83":1,"86":2,"90":1,"98":1,"135":1,"136":1,"145":1,"149":1,"151":1,"153":1,"155":1,"156":1,"165":2,"171":2,"178":2,"180":1,"181":1,"185":1,"188":1,"199":1,"200":1,"225":1,"226":2,"241":1,"300":1,"309":1,"333":1,"334":1,"337":1,"346":1,"372":1,"398":1,"419":1,"437":1,"441":1,"442":1,"444":1,"464":1,"465":2,"479":1}}],["hasn",{"2":{"178":1,"363":1}}],["hashtree",{"2":{"443":7}}],["hasheddata",{"2":{"426":2}}],["hashed",{"2":{"398":1,"443":1}}],["hashes",{"2":{"43":1,"305":1,"413":1,"443":1}}],["hash",{"0":{"398":1,"399":1},"1":{"399":1,"401":1},"2":{"13":1,"80":1,"86":2,"91":1,"305":1,"312":1,"321":1,"324":1,"325":1,"326":1,"401":2,"407":1,"408":1,"412":1,"413":1,"421":1,"427":6,"440":1,"441":1,"442":1,"448":3,"460":2}}],["has",{"2":{"0":1,"36":1,"100":1,"150":2,"178":1,"194":1,"198":1,"217":1,"222":1,"245":1,"334":1,"388":1,"393":1,"396":1,"405":1,"406":1,"413":1,"442":2,"447":2,"457":2,"458":1,"483":1}}],["kind",{"2":{"364":1}}],["kinds",{"2":{"33":1,"34":1,"249":1}}],["kitcheckoutprovider",{"2":{"123":4}}],["kitconfig",{"2":{"107":1,"111":2,"130":2}}],["kitwalletprovider",{"2":{"107":7}}],["kitprovider",{"2":{"106":4,"107":6,"111":3,"123":2,"130":2}}],["kit",{"0":{"104":1,"105":1,"106":1,"128":1,"250":1,"378":1},"1":{"105":1,"129":1,"251":1,"379":1},"2":{"101":1,"102":1,"103":2,"104":1,"105":8,"106":3,"107":4,"108":1,"109":1,"110":1,"111":2,"113":1,"123":6,"124":1,"128":3,"129":2,"130":3,"131":1,"249":1,"250":1,"251":1,"252":2,"378":1,"379":1,"380":2}}],["kitexavier",{"2":{"68":1}}],["keccak256",{"2":{"83":2,"399":5,"401":2,"427":2,"441":1,"442":1,"443":2}}],["keepwalletopened",{"0":{"209":1},"2":{"209":2}}],["keeps",{"2":{"36":1}}],["keep",{"2":{"3":1,"181":1,"209":1}}],["keyboard",{"2":{"135":1}}],["keypair",{"2":{"83":1}}],["keyword",{"2":{"81":1,"156":1}}],["keystore",{"2":{"183":1}}],["keys",{"0":{"229":1,"230":1,"388":1,"467":1,"468":1},"1":{"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"469":1,"470":1,"471":1,"472":1,"473":1,"474":1},"2":{"3":1,"97":1,"138":2,"145":1,"169":1,"199":1,"228":2,"229":3,"359":1,"365":1,"371":1,"386":3,"387":6,"388":1,"390":3,"466":2,"467":3}}],["key",{"0":{"102":1,"232":1,"235":1,"251":1,"379":1,"386":1,"389":1,"390":1,"470":1,"473":1},"1":{"387":1,"388":1,"389":1,"390":1},"2":{"3":4,"7":2,"12":2,"17":1,"28":1,"29":3,"30":1,"31":1,"33":1,"37":1,"38":2,"39":1,"42":1,"43":2,"44":1,"45":1,"46":1,"47":1,"49":2,"52":2,"62":2,"63":3,"72":2,"78":1,"83":3,"86":5,"87":2,"91":2,"97":2,"98":2,"106":1,"107":1,"130":1,"138":1,"169":2,"170":3,"183":1,"185":2,"186":1,"188":1,"200":1,"226":1,"229":2,"232":1,"233":1,"234":2,"235":1,"236":2,"299":2,"308":1,"355":1,"359":1,"364":1,"371":2,"372":2,"386":3,"387":9,"388":1,"389":6,"390":6,"446":2,"447":3,"448":2,"449":2,"450":2,"460":2,"461":2,"465":1,"467":2,"470":1,"471":1,"472":2,"473":1,"474":2}}],["known",{"2":{"156":1,"329":2,"331":2,"401":1,"421":1,"422":1,"431":1}}],["knowledge",{"2":{"80":1}}],["know",{"2":{"0":1,"83":1,"247":1,"376":1}}],["pseudo",{"2":{"443":1}}],["python",{"2":{"246":1,"484":1}}],["philosophy",{"2":{"386":1}}],["phone",{"2":{"199":2,"364":1,"382":1,"383":1}}],["phase",{"2":{"185":2}}],["pc",{"0":{"144":1},"2":{"133":1,"167":1}}],["pkey",{"2":{"86":4,"87":1,"91":1}}],["person",{"2":{"426":1}}],["personalized",{"2":{"392":1}}],["perspective",{"2":{"222":1}}],["per",{"2":{"391":1}}],["period",{"2":{"189":1}}],["perfectly",{"2":{"243":1,"481":1}}],["perfect",{"2":{"164":2}}],["performs",{"2":{"364":1}}],["performed",{"2":{"309":1,"458":1}}],["perform",{"2":{"81":1,"82":1,"86":1,"89":1,"164":1,"206":1,"235":1,"456":1,"473":1}}],["permission",{"2":{"3":1,"83":1}}],["pixel",{"2":{"449":1}}],["pinata",{"0":{"338":1},"2":{"336":1,"338":2,"339":1,"340":1,"345":1,"346":1}}],["piece",{"2":{"39":1}}],["pick",{"2":{"36":1,"133":1,"200":1,"215":1}}],["plugin",{"2":{"169":1,"171":1,"175":1,"179":1,"264":3,"265":1}}],["plugins",{"2":{"145":1,"171":3}}],["plain",{"2":{"225":1,"464":1}}],["platforms",{"0":{"381":1},"1":{"382":1,"383":1,"384":1},"2":{"140":1,"141":1}}],["platformspecificsetup",{"2":{"133":1}}],["platform",{"2":{"81":1,"141":1,"173":1,"178":1,"363":1}}],["players",{"2":{"196":1,"197":1}}],["playercontroller",{"2":{"178":1}}],["player",{"2":{"142":2,"143":2,"145":3}}],["playground",{"2":{"113":1}}],["play",{"2":{"56":1,"135":1,"136":1,"137":1,"233":1,"471":1}}],["places",{"2":{"161":1}}],["placed",{"2":{"86":1,"295":1}}],["place",{"2":{"39":1,"123":1,"138":1,"183":2,"364":1,"365":1}}],["plan",{"2":{"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1,"156":1}}],["please",{"2":{"2":1,"5":1,"29":1,"31":1,"49":1,"51":1,"63":2,"96":1,"106":1,"137":1,"139":1,"145":3,"147":1,"149":1,"150":1,"156":1,"161":1,"164":1,"165":1,"180":2,"182":1,"185":1,"198":1,"220":1,"249":2,"280":1,"370":1,"391":1,"453":1}}],["png",{"2":{"10":3,"56":2,"68":1,"200":2,"212":1}}],["pnpm",{"2":{"7":1,"33":1,"81":2,"86":1,"91":1,"96":1,"105":1,"123":1,"247":1,"370":1,"376":1}}],["pair",{"2":{"355":1}}],["paid",{"2":{"73":1,"78":1,"318":1}}],["packaging",{"0":{"182":1},"1":{"183":1,"184":1,"185":1},"2":{"182":1,"185":2}}],["packaged",{"2":{"185":1}}],["packages",{"0":{"105":1},"2":{"91":1,"105":1,"247":2,"376":2}}],["package",{"0":{"135":1},"1":{"136":1},"2":{"81":1,"105":2,"128":1,"135":5,"136":1,"137":6,"164":1,"185":1,"199":1,"243":1,"247":5,"254":2,"264":1,"273":1,"281":1,"376":4,"448":1,"481":1}}],["pawn",{"2":{"171":6,"178":2}}],["pattern",{"2":{"442":1}}],["patterns",{"2":{"194":1,"198":1}}],["path",{"2":{"145":1,"185":1,"200":3,"448":2}}],["path=",{"2":{"135":1}}],["patch",{"2":{"132":2,"166":2}}],["pasting",{"2":{"156":1}}],["pasted",{"2":{"222":1}}],["paste",{"2":{"135":1,"145":1,"160":1,"338":1,"345":1}}],["password",{"2":{"447":1}}],["passes",{"2":{"305":1,"306":1}}],["passed",{"2":{"36":1,"86":1,"119":2,"120":2,"173":1,"207":1,"257":1,"258":1,"267":1,"407":1}}],["passing",{"2":{"111":1,"113":1,"121":1}}],["pass",{"2":{"3":1,"4":3,"29":1,"36":1,"48":1,"61":1,"87":1,"124":1,"130":1,"157":1,"173":2,"200":3,"225":1,"305":1,"306":1,"446":1,"464":1}}],["palette",{"2":{"113":1}}],["pageprops",{"2":{"295":2}}],["pagesize",{"2":{"391":1}}],["pages",{"0":{"294":1},"2":{"261":3,"262":1,"270":3,"272":1,"293":2}}],["page",{"2":{"83":1,"90":1,"107":1,"119":1,"120":1,"123":1,"140":1,"194":2,"198":1,"217":1,"293":1,"294":2,"310":1,"391":4}}],["parent",{"2":{"442":1}}],["parentheses",{"2":{"156":1}}],["param",{"2":{"427":2}}],["parametersasobjectarray",{"2":{"156":2,"157":1}}],["parameters",{"0":{"256":1,"266":1,"276":1,"405":1,"409":1,"413":1},"1":{"257":1,"258":1,"259":1,"267":1,"268":1,"269":1,"277":1,"278":1},"2":{"156":5,"201":1,"435":1,"444":1}}],["parameter",{"2":{"114":1,"147":1,"149":1,"150":1,"156":1,"173":1,"174":1,"257":1,"267":1,"308":1,"310":1,"328":1}}],["parallelize",{"2":{"8":1}}],["parallel",{"0":{"79":1},"2":{"8":1,"9":1,"79":1}}],["parse",{"2":{"65":1,"69":1,"86":1}}],["partner",{"2":{"365":3}}],["party",{"2":{"363":1,"364":1}}],["parts",{"2":{"179":2}}],["partial",{"2":{"91":2,"365":1,"416":1}}],["particularly",{"2":{"229":1,"293":1,"296":1,"467":1}}],["particular",{"0":{"47":1},"2":{"41":2,"45":1}}],["part",{"2":{"8":1,"100":1,"245":1,"483":1}}],["paytrie",{"2":{"353":1,"385":1}}],["paypal",{"2":{"199":1}}],["payload",{"2":{"185":1,"237":1,"475":1}}],["payable",{"2":{"156":3}}],["payments",{"2":{"122":1}}],["payment",{"2":{"10":2,"80":1,"216":2,"217":2,"353":1,"385":1}}],["pay",{"2":{"8":1,"10":2,"13":1,"72":5,"359":1}}],["purchasing",{"2":{"219":1}}],["purchase",{"2":{"218":1,"219":2,"353":2,"385":2}}],["purpose",{"2":{"132":1,"148":1,"179":1}}],["purple",{"2":{"67":1}}],["pull",{"2":{"131":1}}],["publishing",{"2":{"145":1}}],["published",{"2":{"36":1}}],["publishcollection",{"2":{"4":1}}],["publicclient",{"2":{"255":1}}],["publically",{"2":{"148":1}}],["public",{"2":{"3":1,"4":1,"6":1,"147":1,"148":3,"159":2,"160":3,"427":1}}],["publicly",{"2":{"3":2,"363":1}}],["putting",{"2":{"156":1}}],["put",{"2":{"4":3,"86":1,"137":1}}],["portrait",{"2":{"178":2}}],["potentially",{"2":{"296":1,"309":1}}],["potential",{"2":{"102":1,"197":1,"251":1,"379":1}}],["points",{"2":{"161":1}}],["point",{"2":{"81":1,"129":1,"149":1,"178":1,"309":1,"310":1,"344":1}}],["power",{"2":{"102":1,"251":1,"379":1}}],["powered",{"2":{"56":1,"145":5}}],["powerful",{"2":{"39":1}}],["popups",{"2":{"200":1}}],["popup",{"2":{"200":2}}],["popular",{"0":{"357":1},"2":{"36":2,"56":1,"65":1,"101":1,"102":1,"196":1,"250":1,"251":1,"296":1,"378":1,"379":1}}],["pop",{"2":{"196":1}}],["pops",{"2":{"3":1}}],["polygonindexer",{"2":{"158":1}}],["polygon",{"0":{"38":1},"2":{"12":1,"14":1,"29":5,"30":5,"32":2,"34":1,"38":5,"43":5,"45":6,"47":5,"49":5,"53":1,"56":6,"58":3,"62":4,"63":4,"67":1,"68":1,"72":2,"78":1,"89":1,"106":2,"107":2,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":2,"157":1,"158":1,"159":1,"160":1,"200":1,"226":1,"255":1,"265":1,"307":1,"308":1,"461":1,"465":1}}],["position",{"0":{"114":1},"2":{"114":1}}],["possibilities",{"2":{"101":1,"157":1,"250":1,"378":1}}],["possible",{"2":{"3":1,"113":1,"114":1,"178":1,"200":1,"222":1,"228":2,"331":1,"362":1,"365":1,"439":1,"442":1,"466":2}}],["post",{"2":{"10":1,"14":1,"29":2,"30":2,"38":2,"43":2,"45":2,"47":2,"49":2,"62":2,"63":5,"80":1,"86":5,"89":1,"90":1,"91":1,"135":1,"147":1,"148":1,"159":1,"160":1,"352":1,"391":3}}],["prudent",{"2":{"388":1}}],["pr",{"2":{"161":1,"165":1}}],["practices",{"2":{"65":1}}],["practice",{"2":{"65":1,"67":1,"69":2,"296":1}}],["primitive",{"2":{"355":1}}],["primary",{"2":{"229":2,"467":2}}],["primarily",{"2":{"196":1,"435":1}}],["pricepertoken",{"2":{"391":1}}],["price",{"2":{"322":1,"391":1}}],["pricesort",{"2":{"352":1}}],["prices",{"2":{"161":1}}],["pricing",{"0":{"5":1},"2":{"8":1}}],["privatekeystring",{"2":{"299":1}}],["privatekey",{"2":{"83":4}}],["private",{"2":{"83":2,"86":1,"87":1,"91":1,"166":1,"169":1,"170":1,"229":1,"232":1,"299":2,"386":3,"387":1,"390":1,"467":1,"470":1}}],["privately",{"2":{"4":1}}],["print",{"2":{"82":1,"83":1}}],["println",{"2":{"13":2,"29":1,"30":1,"38":1,"43":1,"45":1,"47":1}}],["prism",{"2":{"68":1}}],["priority",{"2":{"323":1}}],["prioritizing",{"2":{"197":1}}],["prior",{"2":{"2":1,"4":1,"91":1,"145":2,"173":1,"178":1}}],["prepared",{"2":{"358":1}}],["prepare",{"0":{"337":1}}],["pre",{"2":{"333":1,"334":1}}],["presented",{"2":{"187":1}}],["press",{"2":{"81":1,"90":1,"135":1}}],["prefixedmessage",{"2":{"425":2}}],["prefilling",{"2":{"218":1}}],["prefabs",{"2":{"139":1,"161":1}}],["prefab",{"2":{"139":2,"161":1}}],["preference",{"2":{"390":1}}],["preferred",{"2":{"196":1}}],["prefer",{"2":{"4":1,"308":1}}],["preview",{"2":{"345":1}}],["previously",{"2":{"91":1,"222":1,"299":1}}],["previous",{"2":{"4":1,"72":1,"237":1,"475":1}}],["prevent",{"0":{"86":1},"1":{"87":1,"88":1,"89":1,"90":1},"2":{"80":1,"88":1,"219":1,"448":1}}],["proxy",{"2":{"401":2,"404":1}}],["pros",{"0":{"356":1,"359":1}}],["proper",{"2":{"413":1}}],["properly",{"2":{"183":1}}],["properties",{"0":{"69":1,"436":1},"1":{"437":1,"438":1,"439":1,"440":1,"441":1,"442":1},"2":{"56":1,"67":4,"68":2,"69":6,"436":1}}],["progressively",{"2":{"199":1}}],["progress",{"2":{"161":1}}],["program",{"2":{"63":1,"402":1}}],["produce",{"0":{"293":1},"2":{"293":1}}],["produced",{"2":{"83":1}}],["products",{"2":{"195":1}}],["product",{"2":{"161":1}}],["prone",{"2":{"156":1}}],["proceed",{"2":{"140":1}}],["process",{"2":{"72":1,"86":1,"98":2,"102":1,"135":1,"156":3,"164":1,"181":2,"185":1,"194":1,"200":1,"229":1,"251":1,"346":1,"372":2,"379":1,"446":2,"447":2,"448":2,"449":2,"450":2,"460":2,"461":2,"467":1}}],["provisioning",{"2":{"184":1}}],["providing",{"2":{"83":1,"101":1,"151":1,"153":1,"155":1,"156":1,"250":1,"363":1,"378":1}}],["provided",{"2":{"72":1,"78":1,"81":1,"97":1,"121":3,"136":1,"149":1,"151":1,"153":1,"155":1,"211":1,"296":1,"307":1,"308":1,"310":3,"329":2,"333":1,"334":1,"371":1,"402":1,"408":1,"414":1,"427":4,"438":1,"441":1,"447":1}}],["provides",{"2":{"56":1,"61":1,"113":1,"128":1,"132":1,"140":1,"157":1,"166":1,"192":1,"296":1,"301":1,"363":1,"365":1}}],["provide",{"2":{"32":1,"36":1,"59":1,"96":1,"102":1,"129":1,"130":1,"139":1,"156":3,"161":3,"170":2,"194":1,"196":1,"197":1,"198":1,"229":1,"251":1,"296":1,"310":1,"326":1,"328":2,"329":1,"330":1,"333":1,"345":1,"354":1,"363":1,"370":1,"379":1,"442":4,"447":1,"453":1,"467":1}}],["providerurl",{"2":{"178":1,"180":2}}],["provider",{"2":{"7":4,"12":3,"39":1,"72":2,"78":1,"83":2,"91":5,"123":1,"180":1,"200":1,"213":2,"217":1,"226":2,"234":1,"295":1,"353":1,"385":1,"406":2,"446":1,"448":2,"453":2,"465":2,"472":1}}],["providers",{"2":{"6":1,"7":1,"39":1,"83":1,"86":1,"91":3,"105":1,"196":1,"213":1,"216":2,"217":1,"226":1,"353":4,"385":4,"406":1,"446":1,"453":1,"465":1}}],["prove",{"2":{"90":1,"225":1,"464":1}}],["proofstring",{"2":{"86":1,"226":1,"465":1}}],["proof",{"2":{"80":1,"86":5,"89":5,"90":4,"200":2,"205":1,"206":1,"225":2,"226":6,"464":2,"465":6}}],["prompted",{"2":{"222":1,"345":1}}],["prompt",{"2":{"135":1,"137":1,"222":1,"225":1,"278":1,"457":1,"464":1}}],["prompts",{"2":{"17":1,"81":1}}],["promise",{"2":{"79":1,"86":4,"91":2}}],["probably",{"2":{"152":1}}],["probability",{"2":{"79":1}}],["problem",{"2":{"39":1,"79":1}}],["problems",{"2":{"0":1,"181":1}}],["pro",{"2":{"29":1,"48":1,"55":1,"61":1,"185":1,"446":1,"447":1,"448":1,"449":2,"450":1}}],["protocol",{"2":{"199":1,"203":1,"391":1}}],["protocols",{"2":{"1":1,"222":1}}],["protected",{"2":{"363":1}}],["protects",{"2":{"362":1,"365":1}}],["protection",{"2":{"207":1,"365":1,"389":1,"453":1}}],["protect",{"2":{"9":1,"390":1}}],["projectfilesios",{"2":{"185":1}}],["projectname",{"0":{"117":1}}],["projectaccesskey",{"2":{"12":6,"72":2,"78":1,"83":1,"98":1,"106":2,"107":2,"130":1,"169":1,"200":3,"372":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["projectid",{"2":{"4":2,"449":2}}],["project",{"0":{"97":1,"371":1},"2":{"3":1,"5":1,"7":1,"10":2,"12":3,"17":1,"36":1,"56":1,"69":2,"81":7,"82":1,"83":1,"86":5,"87":1,"91":1,"97":1,"98":1,"117":1,"136":5,"137":2,"138":1,"142":1,"143":1,"145":2,"171":2,"185":8,"186":1,"187":1,"188":1,"191":1,"198":1,"247":2,"249":1,"341":1,"364":1,"371":1,"372":1,"376":2,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["projects",{"2":{"0":1,"4":10,"8":1,"65":3,"69":1}}],["circle",{"2":{"448":1}}],["cid",{"2":{"338":1,"339":1}}],["certain",{"2":{"392":1,"458":1}}],["certainty",{"2":{"225":1,"464":1}}],["center",{"2":{"114":3}}],["c++",{"2":{"171":3,"173":1}}],["cpp",{"2":{"170":1,"173":2,"181":1}}],["cs",{"2":{"147":1}}],["cdn",{"0":{"248":1,"377":1},"2":{"248":1,"377":1}}],["cd",{"2":{"81":1,"82":1}}],["c",{"0":{"76":1,"77":1,"78":1},"2":{"138":2,"160":1,"330":1,"442":1}}],["custodial",{"2":{"147":1,"195":1,"197":1,"361":1,"390":1}}],["customization",{"0":{"165":1},"2":{"193":1,"390":1}}],["customizable",{"2":{"163":1,"197":1}}],["customizability",{"0":{"163":1},"1":{"164":1,"165":1}}],["customize",{"2":{"111":1,"129":1,"165":1,"193":1,"200":1}}],["custom",{"0":{"128":1,"129":1,"130":1,"131":1,"173":1},"1":{"129":1},"2":{"128":2,"129":6,"130":5,"131":2,"133":1,"141":2,"145":1,"151":1,"153":1,"155":1,"157":1,"171":3,"178":1,"194":1,"203":1,"295":1,"296":1,"350":1,"392":1,"453":1,"454":1}}],["cut",{"2":{"68":1}}],["curious",{"2":{"147":1,"156":1}}],["currencies",{"2":{"149":1}}],["currencyaddress",{"2":{"391":1}}],["currencyaddresses",{"2":{"352":1,"391":3}}],["currency",{"2":{"72":1,"149":2,"217":2,"219":4,"310":1,"327":1,"391":2}}],["currently",{"2":{"97":1,"141":1,"298":1,"353":1,"365":1,"371":1,"385":1,"387":1}}],["current",{"0":{"406":1,"421":1},"1":{"422":1},"2":{"64":1,"410":1,"421":2,"449":1,"454":1}}],["curl",{"2":{"10":1,"14":1,"29":1,"30":1,"32":1,"38":1,"43":1,"45":1,"47":1,"49":1,"62":1,"63":2,"89":2,"90":1,"348":1,"352":1,"391":1}}],["c3bgcu3lkfr9bp9jfsslenpaaaaaaaaaa",{"2":{"29":3,"30":4,"33":1,"34":1,"38":3,"43":3,"45":4,"47":4,"49":4,"52":1,"53":1,"62":4,"63":4}}],["claim",{"2":{"207":1}}],["class",{"2":{"98":1,"151":1,"153":1,"155":1,"158":2,"171":2,"333":1,"372":1}}],["closing",{"2":{"179":1}}],["close",{"0":{"450":1},"2":{"108":1,"209":1}}],["closed",{"2":{"97":1,"371":1,"391":1,"450":2}}],["cloud",{"0":{"338":1},"2":{"81":1,"338":1,"345":1,"346":1}}],["cloudflare",{"0":{"25":1,"81":1,"87":1},"1":{"82":1},"2":{"17":2,"80":3,"81":3,"86":1}}],["clone",{"2":{"81":1}}],["clothes",{"2":{"67":1}}],["clipboard",{"2":{"90":1,"222":2}}],["cli",{"0":{"81":1},"1":{"82":1},"2":{"80":2,"81":1}}],["clientid=",{"2":{"448":1}}],["client=",{"2":{"106":1,"107":2,"123":1,"130":1,"295":1}}],["clients",{"0":{"308":1},"1":{"309":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1,"320":1,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1},"2":{"57":1}}],["client",{"0":{"59":1},"2":{"32":2,"57":3,"59":2,"89":1,"156":1,"170":2,"183":6,"226":1,"229":1,"234":1,"235":1,"236":1,"243":1,"246":2,"294":2,"295":9,"303":2,"304":2,"305":2,"306":2,"308":4,"309":1,"310":2,"311":1,"312":1,"313":1,"314":1,"315":2,"316":1,"317":1,"318":1,"319":2,"320":2,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1,"327":2,"329":7,"331":3,"332":1,"333":5,"448":1,"465":1,"467":1,"472":1,"473":1,"474":1,"481":1,"484":2}}],["clicks",{"2":{"102":1,"225":1,"251":1,"379":1,"464":1}}],["clicking",{"2":{"83":1,"188":1}}],["click",{"2":{"3":3,"56":1,"135":3,"136":3,"137":1,"138":1,"164":2,"185":7,"295":1,"340":1,"341":1,"343":1,"345":1,"347":1}}],["ctx",{"2":{"12":1,"13":3,"14":1,"86":3}}],["cross",{"2":{"391":1}}],["cr",{"2":{"185":1}}],["cryptography",{"2":{"390":1}}],["cryptographically",{"2":{"299":1,"363":1}}],["crypto",{"0":{"126":1},"2":{"363":1}}],["cryptocurrencies",{"2":{"353":1,"385":1}}],["cryptocurrency",{"2":{"10":1,"122":1,"126":1}}],["cryptocheckout",{"0":{"126":1},"2":{"125":1,"126":2}}],["credential",{"2":{"448":1}}],["credentialresponse",{"2":{"448":2}}],["credentialsin",{"2":{"171":1,"173":3,"178":2,"180":2}}],["credentials",{"0":{"169":1},"2":{"97":1,"169":2,"171":3,"173":3,"174":2,"178":2,"179":1,"180":2,"371":1,"390":1}}],["credit",{"2":{"73":1,"353":1,"385":1}}],["creator",{"2":{"344":1}}],["creators",{"2":{"154":1}}],["creation",{"2":{"17":1,"361":1,"363":1,"398":1,"401":1,"407":1,"438":1,"445":1}}],["creating",{"0":{"4":1,"129":1},"2":{"128":1,"129":1,"131":1,"147":1,"148":1,"151":1,"153":1,"155":1,"158":1,"185":1,"196":1,"308":1,"328":2}}],["createroot",{"2":{"448":1}}],["createrandom",{"2":{"83":1}}],["createhashrouter",{"2":{"448":2}}],["create2",{"2":{"401":1,"444":1}}],["creates",{"2":{"387":1}}],["createtransaction",{"2":{"327":2}}],["createtoken",{"2":{"4":1}}],["createclient",{"2":{"295":1}}],["createconnector",{"2":{"129":2}}],["createconfig",{"2":{"106":2,"107":2,"130":1,"255":1}}],["createcollection",{"2":{"4":1}}],["createasset",{"2":{"4":1}}],["createdat",{"2":{"391":1,"449":2}}],["createdby",{"2":{"391":1}}],["created",{"2":{"4":2,"136":1,"138":1,"151":1,"153":1,"155":1,"164":1,"299":1,"300":1,"333":1,"340":1,"344":1,"361":2,"387":1,"391":2,"414":1,"425":1,"442":1,"446":1}}],["create",{"0":{"74":1},"2":{"3":1,"4":1,"7":2,"10":1,"12":1,"71":1,"72":5,"78":2,"79":1,"81":4,"83":2,"86":1,"91":5,"98":1,"129":3,"130":1,"136":1,"138":4,"145":1,"151":2,"153":2,"155":2,"157":1,"164":2,"171":2,"173":1,"178":1,"183":1,"198":1,"226":1,"232":1,"236":1,"295":1,"299":1,"308":2,"327":1,"329":5,"331":1,"333":2,"338":1,"341":1,"372":1,"386":2,"439":1,"442":1,"465":1,"470":1,"474":1}}],["craft",{"2":{"72":1,"78":1}}],["cheap",{"2":{"356":1}}],["checkpoint",{"0":{"438":1},"2":{"436":1,"438":2,"443":1}}],["checks",{"2":{"414":1}}],["checked",{"2":{"398":1,"460":1}}],["checking",{"2":{"36":1,"126":1,"180":1}}],["check",{"2":{"32":1,"64":2,"72":2,"78":1,"86":2,"103":1,"147":1,"148":1,"159":1,"160":1,"173":1,"194":1,"198":1,"200":1,"252":1,"310":1,"350":1,"380":1,"454":1}}],["checkoutconfig",{"2":{"126":1}}],["checkoutsettings",{"2":{"124":2,"125":2}}],["checkout",{"0":{"26":1,"124":1,"125":1,"126":1},"1":{"126":1,"127":1},"2":{"103":1,"122":1,"123":6,"124":3,"125":1,"252":1,"380":1}}],["chrome",{"0":{"221":1},"2":{"199":2,"220":1,"221":1,"384":1,"446":1,"447":1,"448":1,"449":2,"450":1}}],["chiefly",{"2":{"195":1}}],["children",{"2":{"295":2}}],["child",{"2":{"171":1,"295":1}}],["choosing",{"2":{"344":1}}],["chooses",{"2":{"222":1}}],["choose",{"2":{"7":1,"161":1,"222":1,"353":1,"385":1,"390":1}}],["choice",{"2":{"193":1,"341":1,"446":1}}],["chose",{"2":{"137":1,"175":1,"222":1,"328":1}}],["chop",{"2":{"56":1}}],["chart",{"2":{"188":1}}],["chance",{"2":{"185":1}}],["changed",{"2":{"136":1,"407":1,"444":1}}],["changes",{"2":{"8":1,"64":1,"132":2,"137":2,"164":1,"166":2,"185":1,"199":1,"280":1,"448":1}}],["change",{"2":{"3":1,"56":2,"188":1,"237":1,"400":1,"402":1,"407":1,"414":1,"475":1}}],["challenge",{"2":{"140":2}}],["challenging",{"2":{"137":1}}],["chainindexer",{"2":{"158":3}}],["chainid",{"0":{"286":1,"315":1},"2":{"10":3,"12":5,"14":1,"49":3,"56":1,"62":3,"63":3,"72":1,"78":1,"86":4,"91":4,"121":1,"126":1,"234":2,"283":1,"307":2,"315":2,"426":2,"456":1,"457":1,"458":1,"460":1,"461":1,"472":2}}],["chainconfig",{"2":{"86":2}}],["chain",{"2":{"3":1,"7":1,"12":1,"13":1,"33":2,"34":2,"36":1,"39":6,"49":1,"58":2,"61":1,"62":1,"63":1,"79":1,"86":10,"87":3,"91":6,"106":5,"107":5,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":2,"157":1,"158":1,"159":1,"160":1,"219":1,"238":1,"239":1,"240":1,"286":1,"307":5,"308":2,"310":2,"315":2,"319":2,"342":1,"345":1,"348":1,"476":1,"477":1,"478":1}}],["chains",{"0":{"257":1,"267":1},"2":{"2":1,"39":3,"51":1,"55":2,"106":4,"107":4,"130":1,"247":1,"255":1,"257":1,"265":1,"267":1,"299":1}}],["calculated",{"2":{"440":1,"441":1,"442":1,"443":1}}],["caller",{"2":{"413":1}}],["called",{"2":{"12":1,"50":1,"63":1,"67":1,"68":1,"197":1,"200":1,"247":1,"364":1,"376":1,"405":1,"408":1,"413":1,"414":1,"415":1,"417":2,"443":1,"448":1}}],["callfunction",{"2":{"329":7}}],["callable",{"2":{"171":2}}],["calldata",{"2":{"91":1,"240":2,"241":1,"427":1,"478":2,"479":1}}],["callcontractfunction",{"2":{"151":1,"153":1,"155":1,"329":4,"333":1}}],["callcontract",{"2":{"86":3,"91":2}}],["callshowauthsuccessscreen",{"2":{"173":4}}],["calls",{"2":{"36":2,"67":1,"173":2,"178":1,"180":1,"296":2,"405":1,"413":1}}],["callbacks",{"2":{"181":2}}],["callback",{"0":{"456":1},"2":{"12":1,"72":2,"181":2,"456":2}}],["calling",{"0":{"329":1},"2":{"2":1,"10":1,"36":1,"86":1,"148":1,"156":3,"159":1,"160":1,"171":1,"178":1,"328":1,"329":1,"404":1,"420":1,"421":1,"427":1,"444":1}}],["call",{"0":{"352":1},"2":{"2":1,"3":1,"4":1,"7":1,"14":1,"32":1,"64":1,"79":1,"86":3,"148":1,"156":5,"159":1,"160":2,"173":5,"174":1,"178":1,"180":2,"195":1,"246":1,"329":1,"348":1,"414":1,"484":1}}],["capturables",{"2":{"181":1}}],["capturable",{"2":{"181":2}}],["capabilities",{"2":{"12":1,"13":2,"59":1,"246":1,"484":1}}],["cater",{"2":{"197":1}}],["category",{"2":{"145":12,"173":5}}],["catch",{"2":{"7":1,"72":1,"86":3,"91":1,"226":1,"296":2,"448":1,"457":1,"461":1,"465":1}}],["causes",{"2":{"295":1}}],["cause",{"2":{"132":3,"138":1,"166":3}}],["caution",{"2":{"72":1,"200":1,"413":1}}],["came",{"2":{"86":1}}],["carefully",{"2":{"199":1}}],["care",{"2":{"78":1}}],["cardtype",{"2":{"68":1}}],["cards",{"2":{"56":2,"68":2,"188":1}}],["card",{"2":{"56":2,"68":1,"73":1,"353":2,"385":2}}],["cast",{"2":{"68":1}}],["case",{"2":{"31":1,"67":1,"79":1,"121":1,"157":1,"173":1,"329":2,"331":2,"389":1,"407":1,"415":1,"416":1,"422":2}}],["cases",{"2":{"8":1,"69":1,"137":1,"160":1,"179":1,"225":1,"246":1,"413":1,"464":1,"484":1}}],["caches",{"2":{"39":1}}],["cancel",{"2":{"458":1}}],["cancelled",{"2":{"391":1,"456":1}}],["canvas",{"2":{"139":4}}],["cannot",{"2":{"72":1,"141":1,"280":1,"328":1,"365":1,"453":1}}],["candidate",{"2":{"12":1,"422":1}}],["can",{"0":{"197":1},"2":{"4":3,"6":1,"8":1,"10":7,"33":1,"34":1,"36":1,"39":4,"40":1,"41":1,"45":1,"47":1,"56":3,"68":1,"69":1,"70":2,"71":2,"72":4,"73":2,"79":5,"80":1,"81":2,"82":1,"83":4,"84":1,"86":1,"89":2,"90":1,"91":1,"96":1,"98":1,"100":1,"108":1,"110":1,"111":2,"113":1,"121":1,"128":1,"129":3,"130":1,"131":1,"132":1,"136":3,"137":1,"139":1,"147":1,"148":3,"149":2,"150":3,"151":1,"152":2,"153":1,"154":3,"155":1,"156":2,"159":2,"160":4,"161":2,"164":2,"166":1,"169":3,"170":1,"171":1,"173":1,"175":3,"180":1,"181":2,"185":2,"186":1,"193":4,"196":3,"197":1,"199":1,"200":6,"201":1,"204":1,"216":1,"219":1,"222":3,"225":2,"226":1,"229":3,"236":1,"238":2,"239":1,"240":1,"241":1,"245":1,"246":2,"247":2,"248":1,"249":1,"254":1,"259":1,"263":1,"269":1,"273":1,"284":1,"289":1,"290":1,"293":1,"294":2,"295":6,"296":2,"297":1,"307":1,"308":2,"309":2,"329":2,"331":1,"332":1,"333":1,"336":1,"337":2,"344":1,"348":2,"353":3,"358":2,"361":2,"362":1,"363":3,"364":4,"370":1,"372":1,"376":1,"377":1,"385":3,"386":2,"387":2,"389":1,"390":2,"392":1,"400":1,"402":1,"403":2,"405":1,"407":1,"413":1,"420":1,"421":2,"422":1,"426":1,"427":1,"435":1,"437":1,"438":1,"439":2,"440":1,"442":6,"447":2,"448":2,"450":2,"453":1,"455":1,"456":1,"458":1,"461":1,"464":2,"465":1,"467":3,"474":1,"476":2,"477":1,"478":1,"479":1,"483":1,"484":2}}],["cost",{"2":{"398":1}}],["coding",{"2":{"193":1}}],["codehash",{"2":{"401":2}}],["codeat",{"0":{"316":1},"2":{"316":1}}],["codein",{"2":{"173":1,"174":1}}],["code",{"0":{"227":1,"452":1},"2":{"29":1,"32":1,"33":1,"49":1,"59":1,"62":1,"73":1,"78":1,"81":1,"83":1,"86":1,"91":1,"107":1,"140":1,"147":1,"150":1,"152":1,"154":1,"156":3,"160":2,"174":2,"185":2,"198":1,"200":1,"222":3,"253":1,"263":1,"273":1,"289":1,"294":1,"295":1,"316":1,"363":1,"364":1,"401":2,"404":1,"443":1,"444":3,"452":1,"453":1,"455":4,"460":1,"461":2}}],["co",{"2":{"154":1}}],["cognito",{"2":{"140":2,"452":1}}],["coinquantity",{"2":{"126":1}}],["coinbase",{"2":{"120":1}}],["coins",{"2":{"102":1,"251":1,"379":1}}],["coingecko",{"2":{"36":1}}],["copied",{"2":{"90":1}}],["copy",{"2":{"3":1,"90":1,"156":1,"171":2,"222":1,"338":1,"339":1,"340":1}}],["corrupt",{"2":{"404":1}}],["corruption",{"2":{"404":1}}],["corresponds",{"2":{"408":1,"410":1,"413":1}}],["correspond",{"2":{"119":1,"120":1,"413":1}}],["corresponding",{"2":{"2":1,"32":1,"45":1,"47":1,"119":1,"120":1,"198":1,"393":1,"394":1}}],["correctness",{"2":{"442":1}}],["correct",{"2":{"72":1,"261":1,"270":1,"413":1,"421":1,"427":1,"438":1,"442":1}}],["corner",{"2":{"188":1}}],["core",{"2":{"105":1,"106":1,"123":1,"226":1,"284":1,"404":1,"465":1}}],["cors",{"2":{"86":1}}],["counterfactual",{"2":{"414":1,"444":1}}],["counter",{"2":{"401":1,"407":1,"422":1}}],["count",{"2":{"189":1,"426":1}}],["could",{"2":{"72":2,"330":1,"337":1,"365":1,"390":1}}],["course",{"2":{"39":1,"56":1,"199":1}}],["covalenthq",{"2":{"10":2}}],["colleted",{"2":{"175":1}}],["collect",{"2":{"174":1,"183":1}}],["collected",{"2":{"173":2,"174":1}}],["collectibleinterface",{"2":{"91":2}}],["collectibleinfo",{"2":{"62":1}}],["collectible",{"0":{"91":1,"240":1,"478":1},"2":{"80":2,"91":1,"240":2,"478":2}}],["collectibles",{"0":{"15":1,"19":1,"80":1},"1":{"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1},"2":{"102":1,"127":1,"251":1,"379":1}}],["collectionaddress",{"2":{"352":1,"391":3}}],["collectionid",{"2":{"4":4}}],["collection",{"2":{"4":5,"30":2,"342":1,"391":3}}],["collections",{"0":{"4":1,"30":1},"2":{"2":1,"4":10}}],["collision",{"2":{"79":1}}],["colorschememanager",{"2":{"164":4}}],["colors",{"2":{"113":2,"164":1,"193":1}}],["color",{"0":{"164":1},"2":{"10":1,"113":1,"164":3}}],["comes",{"2":{"386":1}}],["come",{"2":{"56":1}}],["combine",{"2":{"249":1}}],["combined",{"2":{"247":1,"376":1,"387":1,"394":1,"397":4,"413":1,"427":1}}],["combinations",{"0":{"397":1}}],["combination",{"2":{"56":1,"295":1,"397":1,"439":1}}],["combat",{"2":{"36":1}}],["coming",{"0":{"26":1,"165":1},"2":{"86":1,"146":1,"161":1,"229":1,"405":1,"413":1,"467":1}}],["communicating",{"2":{"364":1}}],["communication",{"2":{"17":1,"364":1,"383":1}}],["communicate",{"2":{"199":1}}],["command",{"2":{"63":1,"81":1,"82":1,"185":1,"254":1,"260":1,"271":1,"295":1}}],["commands",{"2":{"32":1,"133":2}}],["comma",{"2":{"56":1}}],["commons",{"2":{"226":2,"465":2}}],["common",{"2":{"12":1,"65":1,"194":1,"196":1,"198":1,"225":1,"247":1,"464":1}}],["com",{"2":{"10":3,"29":1,"30":1,"34":2,"36":1,"38":1,"43":1,"45":1,"47":1,"49":1,"53":2,"62":1,"63":2,"67":2,"68":2,"99":1,"135":1,"137":1,"145":8,"200":2,"212":1,"214":1,"244":1,"248":1,"253":1,"263":1,"273":1,"289":1,"291":1,"295":1,"377":1,"447":1,"449":4,"482":1}}],["computing",{"2":{"401":1,"444":1}}],["computed",{"2":{"400":1}}],["compute",{"0":{"399":1,"401":1},"2":{"401":1,"422":1}}],["computer",{"2":{"339":1,"382":1}}],["compared",{"2":{"386":1,"421":1,"422":1}}],["compat",{"2":{"88":1}}],["compatible",{"2":{"2":1,"8":2,"39":4,"51":1,"55":1,"67":1,"88":1,"199":1,"200":1,"249":1,"290":2,"361":2}}],["composed",{"2":{"247":1,"355":1,"376":1}}],["component",{"2":{"139":1,"171":1,"178":2,"295":12,"448":1}}],["components",{"0":{"297":1},"2":{"106":1,"107":1,"162":1,"294":1,"295":6,"297":1}}],["compromised",{"2":{"365":3,"386":1,"387":2,"389":1,"390":3}}],["comprised",{"2":{"162":1}}],["comprehensive",{"2":{"102":1,"251":1,"379":1}}],["compiled",{"2":{"160":1}}],["compile",{"2":{"160":1}}],["compliant",{"2":{"440":1}}],["complicated",{"2":{"156":2}}],["complexity",{"2":{"148":1,"193":1}}],["complex",{"0":{"151":1,"153":1,"155":1},"2":{"148":1,"156":1,"157":1,"439":1}}],["completeness",{"2":{"309":1}}],["completes",{"2":{"140":1}}],["completely",{"2":{"67":1,"69":1,"136":1,"195":1}}],["complete",{"2":{"36":1,"80":2,"81":1,"83":2,"91":1,"99":1,"107":1,"193":1,"196":1,"200":1,"244":1,"448":1,"454":1,"482":1}}],["completed",{"2":{"3":1,"91":1,"178":1,"401":1}}],["convention",{"2":{"225":1,"464":1}}],["convenient",{"2":{"197":1,"198":1,"229":1,"467":1}}],["convenience",{"2":{"55":1,"57":1,"151":1,"153":1,"155":1,"165":1,"197":1,"333":1,"334":2}}],["conversely",{"2":{"193":1,"196":1}}],["converted",{"2":{"330":1}}],["convert",{"2":{"150":1,"156":1}}],["congratulations",{"2":{"147":1,"347":1}}],["conflicts",{"2":{"129":1}}],["configs",{"2":{"427":1}}],["configjsonrpcprovider",{"2":{"226":1,"465":1}}],["config=",{"2":{"106":1,"107":3,"111":1,"123":1,"130":2}}],["configuring",{"0":{"125":1},"1":{"126":1,"127":1},"2":{"136":1}}],["configure",{"2":{"106":1,"111":1,"115":1,"125":1,"353":1,"364":1,"385":1}}],["configured",{"2":{"86":4,"142":1,"143":1,"408":1}}],["configurations",{"2":{"106":1,"130":1,"421":1,"436":1,"442":2}}],["configuration",{"0":{"111":1,"115":1,"126":1,"127":1,"393":1,"394":1,"398":1,"400":1,"407":1,"414":1,"420":1,"421":1,"422":1,"423":1,"435":1,"442":1,"444":1},"1":{"116":1,"117":1,"118":1,"119":1,"120":1,"394":1,"395":2,"396":2,"397":2,"398":2,"399":3,"400":1,"401":3,"408":1,"409":1,"410":1,"415":1,"416":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":2,"436":1,"437":1,"438":1,"439":1,"440":1,"441":1,"442":1,"443":1,"444":1},"2":{"97":1,"103":1,"106":1,"111":1,"126":1,"127":1,"130":2,"142":1,"143":1,"252":1,"362":1,"371":1,"380":1,"393":1,"398":1,"399":2,"400":1,"407":2,"408":1,"409":1,"410":1,"411":1,"412":1,"413":3,"414":4,"416":1,"421":2,"435":1,"438":1,"442":5,"443":2,"444":3}}],["config",{"2":{"12":4,"14":1,"98":1,"106":2,"107":3,"123":1,"130":1,"136":1,"138":2,"169":3,"183":2,"372":1,"442":1,"443":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["confirms",{"2":{"222":1}}],["confirmations",{"2":{"229":1,"467":1}}],["confirmation",{"0":{"228":1,"466":1},"2":{"80":1,"222":1,"228":1,"235":1,"466":1,"473":1}}],["confirmed",{"2":{"13":1}}],["confirm",{"2":{"3":1,"229":1,"467":1}}],["connectweb3react",{"2":{"284":1}}],["connectoptions",{"2":{"201":2}}],["connector",{"0":{"129":1,"294":1,"295":1},"2":{"119":2,"120":2,"129":12,"130":3,"197":1,"253":1,"254":5,"255":2,"260":3,"261":2,"263":1,"264":1,"265":1,"271":3,"280":2,"281":2,"283":2,"284":1}}],["connectorsforwallets",{"2":{"265":2}}],["connectors",{"0":{"128":1,"130":1,"131":1,"249":1},"1":{"129":1},"2":{"105":4,"106":3,"107":3,"119":2,"120":2,"128":4,"129":5,"130":5,"131":2,"249":4,"255":4,"265":2,"283":1,"284":2,"293":1,"295":3}}],["connectdetails",{"2":{"200":3,"201":1,"210":1,"225":2,"226":1,"464":2,"465":1}}],["connected",{"0":{"189":1},"2":{"147":1,"186":1,"189":2,"200":1,"222":1,"225":1,"315":1,"319":1,"464":1}}],["connecttowaas",{"2":{"147":1}}],["connecting",{"0":{"147":1,"200":1,"220":1,"221":1,"222":1},"2":{"106":1,"147":1,"209":2,"210":1,"212":1,"222":1}}],["connections",{"2":{"102":1,"251":1,"379":1}}],["connection",{"2":{"7":1,"104":1,"108":1,"222":3,"258":2,"268":1,"284":1,"287":1,"309":1}}],["connect",{"0":{"108":1,"199":1,"201":1,"231":1,"258":1,"268":1,"469":1},"1":{"200":1,"201":1,"202":2,"203":2,"204":2,"205":2,"206":2,"207":2,"208":2,"209":2,"210":2,"211":2,"212":2,"213":2,"214":2,"215":2,"216":2,"217":2,"218":2,"219":2,"220":1,"221":1,"222":1},"2":{"81":1,"90":2,"102":1,"106":1,"107":1,"108":1,"120":1,"130":1,"199":3,"200":7,"201":2,"202":2,"205":1,"206":1,"207":1,"208":3,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"222":1,"225":5,"226":1,"231":1,"251":1,"253":1,"255":1,"258":1,"259":1,"263":1,"265":1,"268":2,"269":1,"273":1,"277":1,"278":1,"286":1,"289":1,"290":2,"353":1,"379":1,"385":1,"464":5,"465":1,"469":1}}],["consensys",{"0":{"433":1},"2":{"431":1}}],["consent",{"2":{"136":1,"361":1}}],["consulted",{"2":{"295":1}}],["consumption",{"2":{"43":1}}],["considered",{"2":{"394":1,"397":1,"436":1,"437":1,"442":1,"453":1}}],["consider",{"2":{"296":1}}],["considerations",{"2":{"261":1,"270":1,"419":1}}],["consists",{"2":{"9":1}}],["cons",{"2":{"126":1}}],["console",{"2":{"7":2,"12":1,"13":1,"29":1,"30":1,"38":1,"43":1,"45":1,"47":1,"49":1,"62":1,"63":2,"72":3,"78":2,"83":1,"86":1,"126":1,"200":2,"224":1,"226":2,"234":2,"236":2,"237":1,"238":2,"239":2,"240":2,"241":2,"391":1,"406":1,"446":1,"448":2,"449":1,"454":1,"457":1,"458":1,"460":1,"461":1,"463":1,"465":2,"472":2,"474":2,"475":1,"476":2,"477":2,"478":2,"479":2}}],["constants",{"0":{"418":1,"419":1},"2":{"414":4,"420":2}}],["constraints",{"2":{"364":1}}],["constructions",{"2":{"361":1}}],["constructor",{"2":{"333":1}}],["construct",{"2":{"327":1,"331":1,"425":1,"426":1}}],["const",{"2":{"7":3,"12":4,"13":3,"14":1,"29":3,"30":4,"33":2,"38":3,"43":3,"45":4,"47":3,"49":2,"52":1,"62":2,"63":4,"72":14,"78":7,"79":6,"83":7,"86":11,"91":3,"98":1,"106":6,"107":7,"108":4,"109":3,"111":1,"123":1,"124":4,"125":1,"129":2,"130":3,"173":6,"174":1,"175":1,"181":4,"200":11,"201":1,"224":2,"225":2,"226":5,"231":3,"232":3,"233":2,"234":3,"235":2,"236":1,"237":3,"238":12,"239":13,"240":13,"241":13,"255":2,"265":1,"275":3,"283":2,"284":3,"294":2,"295":2,"372":1,"391":1,"399":2,"401":6,"406":4,"414":1,"420":1,"425":4,"426":6,"430":1,"443":1,"446":3,"447":6,"448":9,"449":2,"450":2,"454":1,"455":2,"456":1,"458":1,"460":2,"461":2,"463":2,"464":2,"465":5,"469":3,"470":3,"471":2,"472":3,"473":2,"474":1,"475":3,"476":12,"477":13,"478":13,"479":13}}],["continue",{"2":{"458":1}}],["contains",{"2":{"67":1,"68":1,"69":1,"110":1,"185":1,"364":1,"404":1,"408":1}}],["contain",{"2":{"67":1,"68":1,"145":1,"436":1,"439":1}}],["containing",{"2":{"62":1,"63":1,"295":1,"387":1}}],["contact",{"2":{"5":1,"29":1,"49":1,"62":1,"63":2,"97":1,"371":1,"391":1,"453":1}}],["contribution",{"2":{"442":1}}],["contributes",{"2":{"440":1}}],["contribute",{"2":{"131":1}}],["controlling",{"2":{"178":1,"390":1}}],["controlled",{"2":{"72":2,"78":1,"83":1,"386":1}}],["control",{"2":{"36":1,"86":3,"129":1,"137":1,"193":1,"225":1,"386":1,"388":1,"389":1,"390":1,"435":1,"464":1}}],["contractbytecodeasstring",{"2":{"332":1}}],["contractdeploymentresult",{"2":{"332":1}}],["contractdeploymentreturn",{"2":{"160":1}}],["contractdeployer",{"2":{"332":2}}],["contractcall",{"2":{"329":3,"333":1}}],["contractabi",{"2":{"329":2,"331":2}}],["contractabiasstring",{"2":{"156":2,"157":1}}],["contractaddresses",{"2":{"43":1,"49":3}}],["contractaddress",{"2":{"10":3,"13":1,"29":2,"30":6,"43":1,"45":4,"47":6,"56":1,"58":3,"62":3,"63":3,"67":1,"68":1,"72":1,"91":2,"121":1,"126":1,"127":1,"156":2,"157":1,"316":1,"328":1,"329":2,"331":2,"332":1,"333":1}}],["contracturi",{"2":{"50":1,"70":1}}],["contractinfo",{"2":{"49":1,"53":1}}],["contractmetadata",{"2":{"49":2}}],["contracts",{"0":{"328":1,"331":1,"332":1,"354":1},"1":{"329":1,"330":1,"331":1,"332":1,"355":1,"356":1,"357":1,"358":1,"359":1,"360":1},"2":{"8":2,"10":1,"13":1,"29":1,"30":1,"36":2,"43":1,"47":1,"49":1,"60":1,"63":1,"67":2,"68":1,"83":2,"157":1,"160":1,"330":1,"341":1,"358":2,"363":1,"398":1,"431":1,"442":2}}],["contract",{"0":{"15":1,"16":1,"19":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":2,"50":1,"62":1,"83":1,"85":1,"160":1,"329":1,"342":1,"343":1,"344":1,"358":1,"431":1},"1":{"45":1,"47":1,"49":1,"50":1,"84":1,"85":1,"359":1,"432":1,"433":1,"434":1},"2":{"4":4,"8":1,"17":2,"29":2,"30":4,"36":1,"39":1,"41":3,"43":3,"45":8,"47":9,"48":5,"49":2,"50":1,"51":1,"55":3,"56":10,"58":1,"60":5,"61":3,"62":1,"63":1,"67":2,"68":2,"70":3,"71":1,"72":3,"73":4,"80":1,"83":4,"84":1,"85":2,"86":7,"87":2,"91":2,"126":2,"147":1,"150":2,"151":2,"152":1,"153":2,"154":2,"155":2,"156":4,"157":2,"160":5,"197":1,"239":1,"240":1,"316":1,"328":8,"329":8,"331":9,"332":1,"333":5,"334":1,"336":1,"341":1,"342":2,"343":1,"344":3,"345":1,"348":1,"354":2,"358":1,"362":1,"364":1,"391":4,"395":1,"398":2,"401":2,"402":2,"406":1,"407":1,"413":1,"414":1,"424":1,"440":1,"444":1,"477":1,"478":1}}],["contrast",{"2":{"3":1}}],["context",{"0":{"430":1},"2":{"29":2,"30":2,"34":1,"38":2,"43":2,"45":2,"47":2,"49":1,"53":1,"62":1,"63":2,"298":1,"308":1,"401":1,"414":1,"435":1}}],["content",{"2":{"10":1,"14":1,"29":2,"30":2,"38":2,"43":2,"45":2,"47":2,"49":2,"62":2,"63":4,"64":1,"86":1,"89":1,"90":1,"171":3,"294":1,"295":2,"338":1,"352":1,"391":3}}],["ubiquitous",{"2":{"333":1}}],["umd",{"2":{"248":3,"377":3}}],["ue",{"2":{"173":1}}],["ufunction",{"2":{"173":6,"181":1}}],["ufunctions",{"2":{"173":1}}],["uobject",{"2":{"173":3,"178":1,"180":1}}],["uauthenticator",{"2":{"173":5,"175":1,"180":2,"181":1}}],["utf",{"2":{"145":2}}],["utility",{"2":{"130":1,"234":1,"472":1}}],["utilizing",{"2":{"4":1}}],["utilized",{"2":{"193":1,"246":1,"484":1}}],["utilize",{"2":{"3":1,"69":1,"106":1,"108":1}}],["utils",{"2":{"72":1,"78":1,"79":4,"83":2,"91":1,"232":2,"234":1,"236":1,"238":2,"239":2,"240":2,"241":3,"399":3,"401":7,"406":2,"426":1,"443":4,"470":2,"472":1,"474":1,"476":2,"477":2,"478":2,"479":3}}],["ui",{"0":{"161":1,"163":1,"173":1},"1":{"162":1,"163":1,"164":2,"165":2},"2":{"137":1,"139":2,"161":6,"162":1,"163":2,"164":1,"165":1,"171":1,"173":1,"174":1,"178":6,"193":1,"197":1}}],["uint96",{"2":{"443":1}}],["uint32",{"2":{"438":1}}],["uint160",{"2":{"440":1}}],["uint16",{"2":{"437":1,"442":1}}],["uint80",{"2":{"395":1}}],["uint8",{"2":{"330":1,"399":4,"426":1,"440":1,"442":1}}],["uint64",{"2":{"63":1,"391":1}}],["uint",{"2":{"63":1,"330":1}}],["uint256",{"2":{"9":1,"67":1,"68":1,"72":1,"78":1,"91":2,"156":1,"238":2,"239":2,"240":4,"241":4,"328":1,"346":2,"399":2,"440":2,"443":2,"476":2,"477":2,"478":4,"479":4}}],["ultimate",{"2":{"101":1,"250":1,"378":1}}],["ux",{"2":{"93":1,"367":1}}],["u",{"2":{"34":1,"53":1}}],["unauthenticated",{"2":{"442":1}}],["unauthorized",{"2":{"388":1}}],["unbalanced",{"2":{"439":1}}],["unbuffered",{"2":{"79":1}}],["unusable",{"2":{"413":1,"416":1,"419":1}}],["unpkg",{"2":{"248":1,"377":1}}],["unparalleled",{"2":{"154":1}}],["unfamiliar",{"2":{"147":1,"148":1,"159":1,"160":1}}],["unexpected",{"2":{"138":1}}],["unnoticed",{"2":{"137":1}}],["unless",{"2":{"133":1,"156":1,"310":1}}],["unleash",{"2":{"102":1,"251":1,"379":1}}],["unlock",{"2":{"101":1,"250":1,"378":1,"387":2}}],["unlimited",{"2":{"9":1,"394":1,"419":2}}],["unlike",{"2":{"9":1}}],["until",{"2":{"98":1,"178":1,"294":1,"372":1,"454":1}}],["unknown",{"2":{"86":1,"413":1}}],["unsanitized",{"2":{"413":1}}],["unsafe",{"2":{"296":1}}],["unsupported",{"2":{"86":1}}],["unstoppable",{"2":{"56":1}}],["underwent",{"2":{"431":1}}],["underlying",{"2":{"358":1,"402":1,"404":1}}],["understand",{"2":{"297":1,"330":1}}],["understands",{"2":{"165":1}}],["understanding",{"0":{"330":1},"2":{"156":1}}],["under",{"2":{"83":1,"136":1,"138":1,"139":3,"145":1,"150":1,"161":2,"169":2,"185":2,"345":1,"346":1,"397":1}}],["undefined",{"2":{"12":1,"13":1,"72":1,"78":1,"86":5,"121":1,"448":1}}],["unwanted",{"2":{"72":1}}],["uniswap",{"2":{"222":1}}],["universal",{"2":{"102":1,"195":1,"196":1,"197":1,"198":1,"251":1,"374":1,"379":1}}],["unit",{"2":{"56":1,"68":1}}],["unityactivity",{"2":{"145":2}}],["unitythemeselector",{"2":{"145":2}}],["unityplayer",{"2":{"145":2}}],["unityplayeractivity",{"2":{"145":2}}],["unitypackage",{"2":{"137":2}}],["unity3d",{"2":{"145":3}}],["unity",{"0":{"35":1,"54":1},"2":{"35":1,"54":1,"96":3,"132":3,"133":1,"135":2,"136":3,"137":3,"145":4,"147":1,"148":1,"158":2,"159":1,"160":3,"163":1,"164":2,"193":1,"196":1,"203":1,"296":3,"370":3}}],["unique",{"0":{"47":1},"2":{"41":1,"129":1,"138":1,"337":1,"406":1}}],["unverified",{"2":{"36":1}}],["unreal",{"0":{"35":1,"54":1,"179":1,"185":1},"2":{"35":1,"54":1,"166":3,"167":1,"175":1,"179":1,"185":5,"193":1,"196":1,"203":1}}],["uri",{"0":{"345":1},"2":{"67":2,"68":4}}],["uris",{"2":{"4":1}}],["url",{"0":{"340":1},"2":{"4":2,"7":2,"56":2,"63":1,"68":1,"82":2,"90":1,"91":2,"116":1,"133":1,"135":2,"138":1,"141":2,"142":2,"143":2,"145":3,"180":1,"212":1,"308":2,"340":1,"344":1,"345":2,"352":1}}],["upgradeability",{"2":{"359":1}}],["upgraded",{"2":{"358":1}}],["upi",{"2":{"353":1,"385":1}}],["upon",{"2":{"236":1,"258":1,"278":1,"474":1}}],["ups",{"2":{"196":1}}],["uproject",{"2":{"171":1}}],["updating",{"0":{"348":1},"2":{"87":1,"136":1,"137":1,"403":1,"407":1,"419":1}}],["updateimagehash",{"0":{"412":1},"1":{"413":1,"415":1,"416":1,"417":1,"418":1,"419":1},"2":{"412":1,"414":2,"419":1,"420":2}}],["updateimplementation",{"2":{"404":3,"414":1,"419":1}}],["updateconfiguration",{"0":{"404":1},"1":{"405":1}}],["updated",{"2":{"222":1,"398":1,"411":1,"414":1,"419":3,"420":2,"421":1,"422":2}}],["updates",{"0":{"420":1},"2":{"63":1,"161":1,"400":1,"412":1,"436":1,"438":1}}],["update",{"0":{"83":1,"84":1,"344":1,"402":1,"414":1},"1":{"84":1,"85":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1,"412":1,"413":1,"414":1,"415":2,"416":2,"417":2,"418":2,"419":2,"420":2,"421":2,"422":2},"2":{"2":1,"3":1,"4":1,"80":1,"83":2,"84":1,"136":1,"171":1,"338":1,"348":1,"404":1,"414":3,"416":1,"448":1}}],["uptime",{"2":{"39":1}}],["uploaded",{"2":{"340":1,"346":1}}],["uploading",{"2":{"17":1}}],["upload",{"0":{"339":1},"2":{"4":6,"338":1,"339":2}}],["up",{"0":{"106":1,"107":1,"338":1,"341":1,"446":1,"447":1},"1":{"447":1,"448":1},"2":{"3":1,"28":1,"31":1,"36":1,"37":1,"39":1,"42":1,"44":1,"46":1,"133":1,"141":1,"145":1,"178":1,"179":1,"182":1,"185":1,"278":1,"341":1,"346":1,"446":1,"448":1}}],["usual",{"2":{"447":2}}],["usually",{"2":{"156":1,"346":1}}],["us",{"2":{"156":1,"165":1,"193":1,"226":1,"363":1,"465":1}}],["usable",{"2":{"8":1,"446":1}}],["usage",{"0":{"5":1,"55":1,"57":1,"255":1,"265":1,"275":1,"282":1,"290":1},"1":{"56":1,"57":1,"58":1,"59":1,"60":1,"283":1,"284":1},"2":{"51":1,"249":1,"361":1,"398":1}}],["usdc",{"2":{"8":1,"10":2,"12":2,"13":2,"72":4,"217":1,"359":1}}],["using",{"0":{"24":1,"73":1,"80":1,"90":1,"130":1,"230":1,"253":1,"260":1,"261":1,"263":1,"270":1,"271":1,"273":1,"280":1,"289":1,"294":1,"295":1,"468":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1,"290":1,"291":1,"469":1,"470":1,"471":1,"472":1,"473":1,"474":1},"2":{"3":1,"6":1,"7":1,"12":1,"13":2,"29":1,"30":1,"33":2,"36":1,"38":1,"39":3,"43":1,"45":1,"47":1,"48":1,"49":1,"52":3,"61":1,"62":1,"64":3,"72":1,"79":1,"83":2,"86":1,"89":2,"97":1,"98":1,"108":1,"109":1,"111":1,"125":1,"128":1,"130":1,"133":1,"136":1,"137":1,"139":1,"150":2,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"161":2,"174":1,"178":1,"180":2,"181":1,"199":2,"200":1,"222":2,"225":1,"226":1,"228":1,"234":1,"249":2,"253":1,"254":1,"259":1,"260":1,"261":3,"262":1,"263":1,"269":1,"270":3,"271":1,"273":1,"289":1,"293":2,"295":4,"299":1,"307":1,"308":3,"359":1,"361":1,"364":1,"371":1,"372":1,"375":1,"383":1,"386":1,"387":1,"390":1,"400":1,"405":1,"407":1,"413":1,"414":1,"444":1,"446":1,"447":2,"448":1,"450":1,"453":1,"458":1,"460":1,"464":1,"465":1,"466":1,"472":1}}],["useismounted",{"2":{"294":2}}],["useeffect",{"2":{"294":1,"448":3}}],["useweb3react",{"2":{"284":2}}],["usequencewallet",{"0":{"180":1},"2":{"178":6,"180":4}}],["usecheckoutmodal",{"2":{"124":3}}],["useopenwalletmodal",{"2":{"109":3}}],["useopenconnectmodal",{"2":{"108":3}}],["useaccount",{"2":{"108":3}}],["usefulness",{"2":{"154":1}}],["useful",{"2":{"55":1,"113":1,"136":2,"149":1,"160":1,"219":1,"229":1,"467":1}}],["usestate",{"2":{"448":4}}],["usesessionhash",{"2":{"448":5}}],["uses",{"2":{"39":1,"67":1,"68":1,"138":1,"141":1,"193":1,"261":3,"270":3,"390":1,"402":1}}],["userid",{"2":{"449":2}}],["useraddress",{"2":{"231":1,"234":1,"391":3,"469":1,"472":1}}],["userwallet",{"2":{"178":1}}],["user",{"2":{"10":3,"80":1,"98":1,"108":2,"140":3,"141":1,"147":1,"174":1,"193":2,"199":1,"200":5,"202":1,"210":1,"213":2,"214":3,"215":1,"222":9,"224":1,"225":6,"226":1,"229":4,"233":1,"235":1,"361":1,"363":3,"364":4,"365":2,"372":1,"386":2,"387":4,"389":2,"390":4,"391":3,"445":3,"447":6,"448":1,"449":1,"453":2,"455":2,"456":1,"463":1,"464":6,"465":1,"467":4,"471":1,"473":1}}],["users",{"0":{"223":1,"462":1},"1":{"224":1,"225":1,"226":1,"463":1,"464":1,"465":1},"2":{"8":2,"71":1,"101":1,"102":2,"137":1,"141":1,"161":1,"173":1,"193":1,"196":4,"197":3,"199":8,"200":3,"212":1,"216":2,"217":1,"219":3,"225":2,"228":1,"229":2,"250":1,"251":2,"290":1,"296":1,"309":1,"353":3,"365":1,"378":1,"379":2,"383":1,"385":3,"386":1,"388":1,"389":1,"390":3,"392":1,"451":1,"452":1,"453":1,"464":2,"466":1,"467":2}}],["usedisconnect",{"2":{"108":1}}],["used",{"0":{"293":1},"2":{"3":1,"39":1,"70":1,"72":1,"78":1,"81":1,"98":1,"113":1,"115":1,"136":1,"151":1,"153":1,"155":1,"170":1,"173":1,"205":1,"253":1,"280":1,"289":1,"294":1,"296":1,"300":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"319":1,"320":1,"322":1,"323":1,"324":1,"325":1,"372":1,"390":1,"398":1,"401":1,"415":1,"416":1,"435":1,"436":1,"438":1,"439":1,"442":1,"444":1,"447":2,"448":5}}],["use",{"0":{"86":1,"294":1,"295":1},"1":{"87":1,"88":1,"89":1,"90":1},"2":{"1":1,"4":4,"6":1,"9":1,"32":1,"39":2,"45":2,"47":2,"51":1,"67":3,"69":3,"71":1,"72":3,"79":1,"80":1,"81":1,"83":1,"86":1,"110":1,"124":1,"129":2,"130":1,"137":1,"139":2,"145":1,"148":1,"149":1,"150":2,"151":1,"152":1,"153":1,"154":1,"155":1,"156":2,"157":1,"159":1,"160":3,"161":1,"164":1,"169":1,"170":1,"171":2,"175":2,"178":1,"179":1,"180":2,"181":1,"183":1,"186":1,"200":2,"210":1,"218":1,"225":1,"235":1,"243":1,"246":1,"249":1,"260":1,"261":1,"270":1,"271":1,"290":1,"294":1,"295":4,"300":1,"307":1,"308":2,"309":1,"327":1,"329":5,"331":4,"332":1,"333":2,"334":1,"339":1,"346":1,"356":1,"387":1,"392":1,"415":1,"448":1,"454":1,"457":1,"464":1,"473":1,"481":1,"484":1}}],["effectively",{"2":{"388":1}}],["efforts",{"2":{"161":1}}],["effortlessly",{"2":{"101":1,"102":1,"250":1,"251":1,"378":1,"379":1}}],["ecdsa",{"2":{"355":1}}],["ecosystem",{"2":{"65":1,"131":1}}],["equal",{"2":{"305":1,"306":1,"437":1}}],["equally",{"2":{"241":1,"479":1}}],["equivalent",{"2":{"99":1,"244":1,"482":1}}],["ephemeral",{"2":{"228":1,"229":1,"232":1,"466":1,"467":1,"470":1}}],["eye",{"2":{"181":1}}],["eyes",{"2":{"67":1}}],["estimate",{"2":{"317":1}}],["estimategas",{"0":{"317":1},"2":{"317":1}}],["established",{"2":{"453":1}}],["establish",{"2":{"140":1}}],["establishing",{"2":{"139":1}}],["esocialsignintype",{"2":{"173":1}}],["essentially",{"2":{"158":1,"160":1,"345":1}}],["essentials",{"2":{"135":1,"137":1}}],["edit",{"2":{"137":1,"142":1,"143":1,"145":1,"164":1}}],["editor",{"2":{"135":1,"141":1}}],["emitted",{"2":{"460":1}}],["empower",{"2":{"137":1}}],["emailauth",{"2":{"174":1}}],["emailcode",{"2":{"173":1,"174":1}}],["emailin",{"2":{"173":1,"174":1}}],["emaillogin",{"2":{"173":1,"174":1}}],["emailed",{"2":{"140":1}}],["email",{"0":{"140":1,"174":1,"447":1,"452":1},"2":{"118":1,"140":1,"147":1,"173":1,"174":3,"210":1,"214":3,"215":1,"363":1,"364":1,"387":2,"390":2,"446":1,"447":13,"452":1,"453":1,"454":2,"455":1}}],["embedded",{"0":{"23":1,"107":1,"109":1,"361":1},"1":{"362":1,"363":1,"364":1,"365":1},"2":{"93":1,"94":1,"96":2,"97":3,"98":1,"102":2,"104":1,"105":1,"107":1,"109":1,"121":1,"132":2,"139":2,"251":2,"337":1,"361":2,"362":1,"367":1,"368":1,"370":2,"371":3,"372":1,"379":2,"445":1,"447":1,"451":1,"461":1}}],["elsewhere",{"2":{"293":1}}],["else",{"2":{"86":2,"173":1,"234":1,"236":1,"363":1,"461":1,"472":1,"474":1}}],["elements",{"2":{"139":1}}],["element",{"2":{"68":1,"142":1,"143":1,"448":2}}],["eoas",{"2":{"354":1,"355":1,"358":1}}],["eoawallet",{"2":{"299":2}}],["eoa",{"0":{"86":1},"1":{"87":1,"88":1,"89":1,"90":1},"2":{"72":7,"78":2,"80":1,"83":5,"86":1,"87":1,"91":1,"100":1,"245":1,"299":1,"300":1,"395":1,"440":1,"483":1}}],["eip1271",{"2":{"226":1,"246":1,"465":1,"484":1}}],["eip1155",{"2":{"65":1}}],["eip712",{"2":{"206":1,"225":4,"464":4}}],["eip721",{"2":{"65":1}}],["eips",{"2":{"67":4,"68":2}}],["eip",{"2":{"67":3,"68":2,"226":1,"395":1,"413":1,"465":1}}],["either",{"2":{"10":1,"57":1,"64":1,"67":1,"69":2,"83":1,"90":1,"130":1,"147":1,"156":1,"157":1,"175":1,"178":1,"180":1,"241":1,"305":1,"306":1,"364":1,"386":1,"403":1,"440":1,"458":1,"459":1,"479":1}}],["evm",{"2":{"32":1,"39":1,"61":1,"149":1,"150":1,"156":2,"200":1,"296":2,"299":1,"330":1,"361":1}}],["ever",{"2":{"178":1,"328":1,"444":1}}],["everywhere",{"2":{"199":1}}],["every",{"2":{"39":1,"228":1,"393":1,"395":1,"398":1,"402":1,"406":1,"466":1}}],["everything",{"2":{"4":1,"36":1,"296":1}}],["event",{"2":{"147":1,"159":1,"170":1,"185":1,"200":1}}],["events",{"2":{"39":1,"147":1,"148":2,"159":1,"160":3,"187":1,"190":1,"457":1}}],["even",{"2":{"8":1,"29":1,"30":1,"39":1,"43":1,"47":1,"136":1,"193":1,"241":1,"330":1,"386":1,"390":1,"405":1,"413":1,"479":1}}],["ealiest",{"2":{"311":1,"314":1,"316":1,"318":1,"320":1}}],["earliest",{"2":{"310":2}}],["earlier",{"2":{"136":1,"345":1}}],["earring",{"2":{"67":1}}],["each",{"0":{"197":1},"2":{"29":1,"79":1,"157":2,"173":1,"179":1,"185":1,"229":1,"305":1,"306":1,"337":1,"338":3,"361":2,"362":1,"386":2,"439":1,"442":3,"467":1}}],["easier",{"2":{"165":1}}],["easily",{"2":{"8":1,"39":3,"56":1,"122":1,"137":1,"150":2,"152":1,"154":1,"225":1,"246":1,"289":1,"299":1,"300":1,"336":1,"464":1,"484":1}}],["ease",{"2":{"12":1}}],["easy",{"2":{"1":1,"39":2,"43":1,"65":1,"139":1,"157":1,"181":1,"196":1,"241":1,"356":1,"479":1}}],["ethtransaction",{"2":{"303":1,"304":1,"305":2,"306":2,"327":1,"329":4,"333":2}}],["ethauth",{"2":{"205":1,"206":1,"207":1,"225":1,"226":7,"464":1,"465":7}}],["ethauthproofstring",{"2":{"86":2}}],["ethauthproof",{"0":{"86":1,"90":1},"1":{"87":1,"88":1,"89":1,"90":1},"2":{"80":1,"90":1}}],["ethkit",{"0":{"100":1,"245":1,"483":1},"2":{"100":2,"245":2,"483":2}}],["eth",{"0":{"37":1,"38":1},"1":{"38":1},"2":{"149":3,"200":1,"327":1}}],["ethrpc",{"2":{"12":1}}],["ethwallet",{"2":{"12":1,"299":4,"300":1,"305":2,"306":2}}],["ether",{"2":{"10":1,"426":1}}],["etherscan",{"2":{"156":1}}],["ethers",{"0":{"220":1,"418":1,"419":1},"2":{"7":7,"12":3,"33":3,"72":4,"78":2,"79":6,"83":7,"86":2,"91":8,"100":1,"105":3,"199":1,"226":3,"231":2,"232":3,"236":1,"238":2,"239":2,"240":2,"241":3,"245":1,"247":5,"248":2,"254":2,"260":3,"264":2,"271":3,"274":2,"281":1,"376":4,"377":2,"399":3,"401":7,"406":4,"414":4,"420":2,"443":4,"465":3,"469":2,"470":3,"474":1,"476":2,"477":2,"478":2,"479":3,"483":1}}],["ethereum",{"0":{"38":1,"221":1,"425":1},"2":{"2":1,"8":2,"9":2,"32":1,"39":3,"51":1,"55":2,"56":1,"67":2,"68":1,"72":1,"78":1,"100":1,"199":3,"200":1,"245":1,"246":1,"247":1,"249":1,"296":1,"309":1,"354":1,"355":1,"361":1,"383":1,"425":1,"483":1,"484":1}}],["etc",{"0":{"37":1,"38":1},"1":{"38":1},"2":{"8":1,"12":1,"49":1,"62":1,"63":1,"258":1,"259":1,"269":1,"337":1,"363":1,"364":1,"446":1}}],["err",{"2":{"29":3,"30":3,"34":1,"38":3,"43":3,"45":3,"47":3,"49":1,"53":1,"62":1,"63":2,"86":7,"91":2,"226":2,"465":2}}],["errors",{"2":{"178":1,"293":1}}],["error",{"0":{"293":1},"2":{"7":1,"72":2,"83":1,"156":1,"173":1,"181":2,"185":1,"448":6,"461":3}}],["erc1271",{"2":{"427":1,"440":1}}],["erc1155data",{"2":{"241":2,"479":2}}],["erc1155contractaddress",{"2":{"240":2,"241":1,"478":2,"479":1}}],["erc1155interface",{"2":{"240":5,"241":2,"478":5,"479":2}}],["erc1155tokenaddress",{"2":{"154":1,"157":1,"240":1,"478":1}}],["erc1155s",{"2":{"136":1}}],["erc1155",{"0":{"29":1,"30":1,"45":1,"49":1,"62":1,"68":1,"83":1,"155":1},"1":{"84":1,"85":1},"2":{"4":1,"29":1,"30":1,"36":1,"39":2,"41":1,"43":1,"45":1,"47":2,"48":2,"55":1,"56":1,"60":4,"61":3,"67":2,"68":2,"69":1,"80":1,"86":1,"87":1,"154":5,"155":9,"333":1,"334":1}}],["erc21",{"2":{"153":1}}],["erc20contract",{"2":{"329":6,"331":4}}],["erc20data",{"2":{"241":2,"479":2}}],["erc20tokenaddress",{"2":{"150":1,"157":2}}],["erc20interface",{"2":{"79":2,"238":5,"241":2,"476":5,"479":2}}],["erc20",{"0":{"29":1,"45":1,"47":1,"49":1,"70":1,"151":1},"2":{"10":3,"36":1,"39":2,"41":2,"43":1,"45":1,"47":2,"48":2,"55":1,"60":2,"70":3,"150":5,"151":9,"156":1,"157":1,"328":1,"329":2,"331":2,"333":8,"334":1,"359":1}}],["erc",{"0":{"238":1,"239":1,"240":1,"425":1,"426":1,"476":1,"477":1,"478":1},"2":{"67":1,"68":1,"72":1,"238":3,"239":3,"240":3,"342":1,"344":1,"424":1,"425":1,"426":1,"476":3,"477":3,"478":3}}],["erc721data",{"2":{"241":2,"479":2}}],["erc721contractaddress",{"2":{"239":2,"241":1,"477":2,"479":1}}],["erc721tokenaddress",{"2":{"72":1,"78":1,"152":1,"157":1,"239":1,"477":1}}],["erc721interface",{"2":{"72":2,"78":2,"239":5,"241":2,"477":5,"479":2}}],["erc721",{"0":{"29":1,"30":1,"45":1,"49":1,"62":1,"67":1,"153":1},"2":{"4":1,"29":3,"30":1,"36":1,"39":2,"43":1,"45":1,"47":2,"48":2,"55":1,"60":4,"61":3,"67":1,"69":1,"86":1,"87":1,"152":3,"153":8,"333":1,"334":1}}],["e",{"2":{"4":1,"12":1,"72":1,"78":1,"126":1,"145":1,"151":1,"153":1,"155":1,"161":1,"229":1,"259":1,"269":1,"328":1,"359":1,"363":1,"467":1}}],["enum",{"2":{"391":1}}],["ensuring",{"2":{"193":1,"442":1}}],["ensures",{"2":{"78":1}}],["ensure",{"2":{"4":1,"7":1,"8":1,"135":1,"180":2,"185":1,"225":1,"390":2,"413":1,"438":1,"464":1}}],["engines",{"2":{"193":1,"196":1}}],["enclave",{"2":{"363":1}}],["encrypted",{"2":{"363":1}}],["encrypt",{"2":{"170":1}}],["encryption",{"2":{"170":1}}],["encourage",{"2":{"163":1,"334":1}}],["encoding",{"0":{"424":1},"1":{"425":1,"426":1,"427":1},"2":{"156":2,"328":1}}],["encoding=",{"2":{"145":2}}],["encodepacked",{"2":{"441":1,"442":1}}],["encodetypeddatadigest",{"2":{"426":2}}],["encodefunctiondata",{"2":{"72":1,"78":1,"79":2,"91":1,"238":3,"239":3,"240":3,"241":3,"414":2,"420":1,"476":3,"477":3,"478":3,"479":3}}],["encode",{"2":{"13":1,"156":1,"238":2,"239":2,"240":2,"399":5,"406":1,"426":1,"427":1,"443":2,"476":2,"477":2,"478":2}}],["encoded",{"2":{"9":1,"156":1,"425":2,"426":1,"427":1}}],["enabling",{"2":{"102":1,"251":1,"295":1,"363":1,"379":1}}],["enable",{"2":{"141":1,"145":1,"171":1}}],["enabled",{"2":{"29":1,"30":1,"43":1,"47":1,"247":1}}],["enables",{"2":{"6":1,"122":1,"361":1}}],["enjoy",{"2":{"102":1,"131":1,"196":1,"251":1,"379":1}}],["env",{"2":{"86":20,"91":11,"98":2,"372":2,"446":2,"447":2,"448":2,"449":2,"450":2,"460":2,"461":2}}],["environment",{"0":{"81":1,"87":1},"1":{"82":1},"2":{"80":1,"81":1,"86":5,"87":1,"88":1}}],["entire",{"2":{"156":1,"295":1,"328":1,"339":1}}],["entirely",{"2":{"70":1,"163":1}}],["entered",{"2":{"140":1}}],["enter",{"2":{"81":1,"82":1,"135":1,"140":1,"142":1,"143":1,"346":1}}],["enqueuetokensforrefresh",{"2":{"63":6}}],["enforce",{"2":{"9":1,"72":3,"364":1}}],["endingblocknumber",{"2":{"314":1}}],["endian",{"2":{"9":1}}],["endpoint",{"2":{"4":2,"6":1,"7":2,"10":1,"14":2,"32":2,"55":1,"56":1,"58":1,"60":1,"89":1,"348":2}}],["endpointssequence",{"2":{"55":1}}],["endpoints",{"0":{"40":1,"58":1},"2":{"2":3,"6":1,"8":1,"32":3,"55":3,"64":1}}],["end",{"2":{"4":2}}],["examine",{"2":{"156":1}}],["examples",{"0":{"262":1,"272":1,"357":1,"360":1},"2":{"32":1,"33":1,"34":1,"58":1,"200":1}}],["example",{"0":{"56":1,"110":1,"279":1,"288":1,"291":1,"392":1,"396":1},"2":{"1":1,"4":3,"29":1,"30":1,"32":1,"36":1,"38":1,"41":1,"43":1,"45":2,"47":2,"49":1,"56":2,"58":2,"62":1,"67":2,"68":1,"73":1,"78":2,"79":1,"91":1,"110":1,"126":1,"127":1,"129":2,"148":1,"149":2,"151":1,"153":1,"155":1,"156":1,"157":1,"159":1,"171":1,"193":1,"200":1,"202":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"225":1,"226":1,"237":1,"246":1,"249":1,"253":1,"261":2,"262":1,"263":1,"270":2,"273":1,"279":1,"289":1,"291":1,"294":3,"295":4,"329":3,"330":1,"331":3,"333":3,"364":1,"387":1,"391":1,"396":1,"447":1,"464":1,"465":1,"475":1,"484":1}}],["exists",{"2":{"171":1}}],["exist",{"2":{"145":2,"441":1,"446":1}}],["existing",{"2":{"8":1,"83":1,"129":1,"141":1,"196":1,"197":1}}],["excellent",{"2":{"199":1}}],["exception",{"2":{"309":1,"330":1}}],["exceptions",{"2":{"296":3}}],["except",{"2":{"141":1,"447":1}}],["exclude",{"2":{"156":1}}],["excluding",{"2":{"133":1}}],["external",{"2":{"363":1,"404":1,"412":1,"442":2}}],["externally",{"0":{"355":1},"1":{"356":1,"357":1},"2":{"354":1,"355":1,"417":1}}],["extension",{"0":{"221":1,"384":1},"2":{"70":1,"199":2,"220":1,"221":1,"384":1}}],["extensions",{"2":{"56":1,"200":1}}],["extend",{"2":{"69":1,"137":1,"415":1}}],["extra",{"2":{"246":2,"296":1,"484":2}}],["extremely",{"2":{"139":1,"157":1}}],["executing",{"2":{"419":2,"459":1}}],["executioncontext",{"2":{"86":2}}],["executed",{"2":{"9":1,"71":1,"79":2,"238":1,"239":1,"240":1,"460":1,"461":2,"476":1,"477":1,"478":1}}],["expires",{"2":{"461":1}}],["expiresat",{"2":{"449":2}}],["expiry",{"0":{"205":1},"2":{"205":2,"391":2}}],["express",{"2":{"442":1}}],["explicitly",{"2":{"295":1}}],["explanation",{"2":{"261":2,"270":2}}],["explain",{"2":{"183":1}}],["explorer",{"2":{"156":1}}],["explore",{"2":{"102":1,"251":1,"379":1}}],["expose",{"2":{"158":1}}],["exposes",{"2":{"148":1}}],["exposed",{"2":{"3":1}}],["exported=",{"2":{"145":1}}],["export",{"2":{"86":2,"129":1,"283":1,"294":1,"295":1,"430":1,"443":1,"448":3}}],["expanding",{"2":{"131":1}}],["expand",{"2":{"83":1,"142":1,"143":1,"185":1,"345":1,"346":1}}],["experimental",{"2":{"293":1,"295":1}}],["experiment",{"2":{"164":1}}],["experience",{"2":{"80":1,"101":1,"102":1,"111":1,"193":4,"196":2,"197":1,"199":1,"225":1,"229":1,"250":1,"251":1,"296":1,"378":1,"379":1,"390":1,"464":1,"467":1}}],["experiences",{"2":{"0":1,"196":2,"363":1,"392":1}}],["expects",{"2":{"330":1}}],["expect",{"2":{"160":1,"161":1}}],["expected",{"2":{"72":1,"307":1}}],["blueprintcallable",{"2":{"173":5}}],["blueprint",{"2":{"171":2}}],["blob",{"2":{"67":2,"68":1,"295":1}}],["blockcount",{"2":{"318":2}}],["blockchains",{"2":{"296":1}}],["blockchain",{"0":{"148":1,"158":1},"1":{"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1},"2":{"31":1,"36":1,"39":1,"41":1,"102":1,"148":3,"158":1,"193":1,"196":2,"200":1,"247":1,"251":1,"361":1,"379":1,"386":1}}],["blockrange",{"0":{"314":1},"2":{"314":2}}],["blockhash",{"2":{"312":1,"325":1}}],["blockbyhash",{"0":{"312":1},"2":{"312":1}}],["blockbynumber",{"0":{"311":1},"2":{"311":1}}],["blocknative",{"2":{"273":1}}],["blocknumbers",{"2":{"314":1}}],["blocknumber",{"0":{"313":1},"2":{"80":1,"310":5,"311":2,"313":2,"314":1,"316":3,"318":2,"320":3}}],["blocking",{"2":{"200":2}}],["blocks",{"2":{"36":1,"296":2,"314":1,"318":1}}],["block",{"2":{"7":4,"91":1,"156":1,"200":1,"310":3,"311":4,"312":4,"313":1,"314":2,"325":2,"460":1}}],["bp",{"2":{"171":1,"178":1}}],["bd",{"2":{"166":1}}],["b",{"0":{"75":1},"2":{"135":1,"138":2,"145":1,"171":1,"442":2}}],["bsc",{"0":{"38":1}}],["bnb",{"0":{"38":1}}],["breaches",{"2":{"427":1}}],["breaking",{"2":{"132":3,"166":3,"280":1}}],["breaks",{"2":{"67":1}}],["break",{"2":{"13":1}}],["brave",{"2":{"449":1}}],["branded",{"2":{"364":1}}],["branding",{"2":{"193":1}}],["brackets",{"2":{"328":1}}],["broken",{"2":{"179":1}}],["broadcast",{"2":{"173":1}}],["browsable",{"2":{"145":2}}],["browse",{"2":{"91":1,"145":1}}],["browsers",{"2":{"200":3,"382":1}}],["browser",{"0":{"384":1},"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1,"49":1,"57":1,"62":1,"63":2,"82":1,"175":1,"193":2,"199":3,"200":1,"243":1,"293":1,"295":4,"383":1,"388":1,"391":1,"481":1}}],["brown",{"2":{"67":1}}],["bring",{"2":{"165":1}}],["bob",{"2":{"426":1}}],["box",{"2":{"185":1}}],["bounded",{"2":{"394":1}}],["bounds",{"2":{"358":1}}],["bound",{"2":{"173":1}}],["bool",{"2":{"173":1,"330":2,"391":2,"408":1,"427":1}}],["boolean",{"2":{"29":3,"30":2,"43":2,"47":2,"86":1}}],["bonus",{"0":{"334":1},"2":{"161":1}}],["bow",{"2":{"68":1}}],["bored",{"2":{"67":2}}],["body",{"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1,"49":1,"62":1,"63":2,"86":3,"181":2,"391":2}}],["both",{"2":{"4":1,"29":1,"30":1,"32":1,"38":1,"43":1,"45":1,"47":1,"49":1,"55":1,"62":1,"63":2,"65":1,"67":1,"69":5,"195":1,"197":1,"362":1,"363":1,"387":1,"391":1,"419":2}}],["bottom",{"2":{"0":1,"114":3}}],["binaries",{"2":{"185":1}}],["binary",{"2":{"156":1,"439":1}}],["bindufunction",{"2":{"173":1}}],["bind",{"2":{"171":1,"173":3}}],["bin",{"2":{"81":1}}],["biginteger",{"2":{"320":1,"330":1}}],["bigintegar",{"2":{"310":2,"317":1,"320":1,"322":1,"323":1,"325":1,"331":6,"333":1}}],["bignumber",{"2":{"79":2}}],["big",{"2":{"9":1,"12":1}}],["bits",{"2":{"9":2}}],["bit",{"2":{"9":2,"185":1}}],["buy",{"2":{"190":1}}],["bug",{"2":{"145":1,"295":1}}],["bugfixes",{"2":{"132":1,"166":1}}],["built",{"2":{"32":1,"39":2,"99":1,"100":1,"101":1,"132":1,"163":1,"166":1,"171":1,"178":1,"185":1,"199":1,"244":1,"245":1,"250":1,"378":1,"482":1,"483":1}}],["builds",{"2":{"132":1,"133":1,"166":1}}],["building",{"0":{"71":1,"242":1,"480":1},"1":{"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"243":1,"244":1,"245":1,"246":1,"481":1,"482":1,"483":1,"484":1},"2":{"193":1,"194":1,"196":1,"246":1,"249":1,"484":1}}],["builder",{"0":{"24":1,"73":1,"83":1,"186":1,"335":1,"341":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1,"84":1,"85":1,"187":1,"188":1,"189":1,"190":1,"191":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"2":1,"3":1,"7":1,"10":1,"12":2,"13":2,"17":1,"28":3,"29":1,"31":3,"33":1,"36":1,"37":3,"39":3,"42":3,"44":3,"46":3,"49":1,"52":1,"62":1,"63":1,"78":1,"80":2,"83":2,"113":1,"138":2,"150":3,"152":2,"154":2,"160":1,"169":1,"186":1,"187":1,"188":1,"198":1,"308":1,"336":1,"341":1,"342":1}}],["build",{"2":{"1":1,"10":1,"36":1,"39":1,"56":1,"73":1,"80":1,"86":1,"87":2,"135":2,"137":1,"139":1,"145":1,"185":4,"186":1,"193":2,"228":1,"249":1,"296":1,"337":1,"382":1,"383":1,"392":1,"466":1}}],["burn",{"0":{"22":1},"2":{"157":1}}],["bundling",{"2":{"241":1,"479":1}}],["bundle",{"0":{"9":1},"2":{"9":1,"10":1,"238":1,"239":1,"240":1,"416":1,"419":3,"476":1,"477":1,"478":1}}],["bunch",{"2":{"8":1,"199":1}}],["bump",{"2":{"8":1}}],["button",{"2":{"83":1,"90":1,"108":2,"109":2,"124":2,"290":1}}],["but",{"2":{"5":1,"36":2,"39":1,"45":2,"47":2,"55":2,"57":1,"65":1,"67":1,"70":1,"78":2,"98":1,"99":1,"100":1,"137":1,"148":1,"156":1,"161":1,"164":1,"199":2,"226":1,"244":1,"245":1,"247":1,"249":1,"309":1,"334":1,"363":1,"364":1,"365":1,"372":1,"398":1,"411":1,"417":1,"442":2,"460":1,"465":1,"482":1,"483":1}}],["banner",{"2":{"200":2,"212":3}}],["bannerurl",{"0":{"212":1},"2":{"200":2,"212":1}}],["bar",{"2":{"138":1,"164":1}}],["basis",{"2":{"129":1}}],["basics",{"2":{"337":1}}],["basic",{"2":{"80":1,"106":1,"149":2,"151":1,"153":1,"155":1,"164":1}}],["bash",{"2":{"81":1}}],["baseuri",{"2":{"64":1}}],["baseuris",{"2":{"4":1}}],["basecardid",{"2":{"56":1,"68":1}}],["based",{"0":{"174":1,"175":1,"176":1},"2":{"39":1,"156":1,"174":2,"175":2,"178":1,"193":3,"260":1,"270":3,"271":1,"272":2,"293":1,"294":1,"296":1,"451":1}}],["base",{"0":{"345":1},"2":{"4":1,"344":1,"345":1}}],["batching",{"0":{"428":1},"2":{"79":1,"157":1,"238":1,"239":1,"240":1,"476":1,"477":1,"478":1}}],["batch",{"0":{"157":1,"241":1,"479":1},"2":{"60":2,"79":3,"157":3}}],["batched",{"2":{"8":1,"56":1,"79":1,"157":1,"305":1,"306":1}}],["balancequery",{"2":{"331":3}}],["balanceof",{"2":{"331":2,"333":1}}],["balanceat",{"0":{"310":1},"2":{"309":1,"310":2}}],["balance",{"0":{"38":1},"2":{"38":3,"310":5,"331":3,"333":1}}],["balances",{"0":{"17":1,"30":1,"37":1},"1":{"38":1},"2":{"29":2,"30":1,"39":2}}],["back",{"2":{"56":1,"188":1,"222":1,"387":1}}],["background",{"2":{"29":1,"30":1,"34":1,"38":1,"43":1,"45":1,"47":1,"49":1,"53":1,"62":1,"63":2,"67":1}}],["backends",{"0":{"242":1,"480":1},"1":{"243":1,"244":1,"245":1,"246":1,"481":1,"482":1,"483":1,"484":1},"2":{"8":1,"31":1,"99":1,"100":1,"243":1,"244":1,"245":1,"481":1,"482":1,"483":1}}],["backend",{"0":{"246":1,"484":1},"2":{"3":1,"32":1,"171":2,"173":1,"174":1,"193":1,"246":3,"293":1,"365":1,"484":3}}],["backup",{"2":{"0":1,"356":1}}],["byte",{"2":{"330":1,"427":1}}],["bytecode",{"2":{"160":5,"316":1}}],["bytes4",{"2":{"427":4}}],["bytes1",{"2":{"401":1}}],["bytesn",{"2":{"330":1}}],["bytes",{"2":{"91":1,"240":2,"241":1,"330":2,"346":1,"401":1,"427":3,"478":2,"479":1}}],["bytes32",{"2":{"83":1,"399":1,"401":3,"406":1,"408":1,"412":1,"422":1,"427":3,"440":1,"443":6}}],["by",{"2":{"4":1,"6":1,"8":1,"9":1,"10":2,"29":2,"36":2,"56":1,"63":1,"67":1,"70":3,"71":1,"72":4,"73":1,"78":3,"80":1,"81":1,"83":4,"84":1,"87":1,"88":1,"89":1,"102":1,"111":1,"113":1,"121":1,"130":1,"131":2,"136":2,"137":1,"138":1,"139":2,"145":6,"149":1,"151":2,"153":2,"154":1,"155":2,"156":1,"157":1,"158":1,"164":1,"169":1,"178":1,"180":1,"183":1,"188":1,"191":1,"194":1,"200":3,"211":1,"216":1,"217":1,"219":1,"222":2,"225":1,"229":1,"249":1,"251":1,"257":1,"267":1,"287":1,"290":1,"294":1,"295":2,"298":1,"308":1,"309":2,"310":1,"312":1,"314":1,"324":1,"325":1,"358":1,"363":3,"364":3,"365":1,"379":1,"386":1,"387":1,"389":1,"390":1,"391":2,"393":1,"394":1,"401":2,"403":2,"405":1,"406":1,"407":1,"413":1,"414":1,"415":1,"416":1,"420":1,"421":1,"427":1,"431":1,"438":1,"440":1,"444":3,"447":2,"448":1,"453":1,"458":1,"460":1,"461":1,"464":1,"467":1}}],["beautifully",{"2":{"382":1,"383":1}}],["beautify",{"2":{"163":1}}],["beauty",{"2":{"199":1}}],["beyond",{"2":{"188":1,"415":1}}],["being",{"2":{"157":1,"170":2,"171":1,"293":1,"391":1,"417":1}}],["bespoke",{"2":{"157":1}}],["best",{"2":{"8":1,"90":1,"197":1,"200":2,"212":1,"246":1,"296":1,"484":1}}],["beneficial",{"2":{"157":1}}],["benefit",{"2":{"39":1,"80":1,"131":1}}],["benefits",{"0":{"197":1},"2":{"6":1,"8":1,"199":1}}],["behalf",{"2":{"229":1,"467":1}}],["behavior",{"2":{"435":1}}],["behaviour",{"2":{"138":1,"404":1,"411":1}}],["behaves",{"2":{"222":1}}],["behind",{"2":{"39":1,"327":1}}],["becomes",{"2":{"386":1}}],["become",{"2":{"137":1}}],["because",{"2":{"136":1,"137":1,"358":1,"365":1,"402":1}}],["belong",{"2":{"440":1}}],["below",{"2":{"2":1,"4":2,"29":1,"31":1,"32":2,"33":1,"34":1,"48":1,"55":1,"56":1,"59":1,"61":1,"65":1,"67":1,"73":1,"89":1,"106":1,"107":1,"123":1,"179":1,"185":1,"201":1,"249":2,"262":1,"294":1,"295":1,"413":1,"448":1}}],["bells",{"2":{"296":1}}],["believers",{"2":{"154":1}}],["believe",{"2":{"136":1}}],["begin",{"2":{"448":1}}],["beginning",{"2":{"73":1}}],["began",{"2":{"136":1}}],["better",{"2":{"156":1,"165":2,"181":1}}],["beta",{"2":{"97":1,"166":1,"371":1}}],["between",{"0":{"193":1,"196":1},"2":{"79":1,"139":1,"200":1,"437":1}}],["before",{"2":{"73":2,"86":1,"157":1,"169":1,"180":1,"185":1,"294":2,"419":2,"460":1,"461":2}}],["been",{"2":{"36":1,"178":1,"363":1,"398":1,"447":1,"457":2,"458":1}}],["be",{"2":{"1":1,"3":4,"4":1,"8":1,"9":1,"10":1,"13":1,"29":2,"30":2,"36":4,"39":2,"43":2,"47":2,"55":1,"58":1,"63":1,"69":1,"71":2,"72":7,"78":1,"79":3,"80":2,"81":1,"83":1,"84":1,"88":1,"90":1,"97":1,"98":1,"113":1,"116":1,"117":1,"118":1,"119":3,"120":3,"121":3,"132":1,"136":3,"137":2,"138":1,"147":1,"148":1,"150":1,"151":1,"153":1,"155":1,"156":3,"161":2,"164":1,"166":1,"169":2,"170":2,"171":3,"173":3,"174":1,"178":2,"180":3,"181":1,"183":1,"185":1,"193":2,"200":1,"202":1,"204":2,"207":1,"210":1,"211":1,"213":1,"214":1,"215":1,"216":1,"217":1,"219":2,"222":2,"225":1,"229":1,"236":1,"241":2,"248":1,"254":1,"257":1,"258":1,"259":1,"263":1,"267":1,"269":1,"273":1,"280":1,"281":1,"283":1,"284":1,"287":1,"289":1,"293":1,"294":2,"295":9,"296":1,"297":1,"300":1,"305":3,"306":3,"307":1,"309":2,"311":1,"314":1,"316":1,"318":1,"320":1,"330":1,"333":1,"345":2,"346":1,"353":3,"358":1,"361":2,"362":1,"364":2,"365":3,"371":1,"372":1,"377":1,"385":3,"386":2,"388":1,"389":1,"390":5,"394":1,"395":1,"400":1,"401":1,"403":2,"405":2,"407":1,"409":1,"411":1,"413":4,"416":1,"417":1,"419":5,"420":1,"421":2,"422":2,"425":1,"426":1,"427":1,"436":1,"438":1,"439":1,"442":2,"444":1,"446":1,"447":3,"450":2,"453":1,"456":1,"458":1,"460":1,"461":4,"464":1,"467":1,"474":1,"479":2}}],["gnosis",{"2":{"360":1}}],["guestmodule",{"0":{"429":1},"2":{"430":1}}],["guess",{"2":{"337":1}}],["guarantee",{"2":{"363":1,"453":1}}],["guarantees",{"2":{"361":1}}],["guard",{"0":{"364":1,"389":1},"2":{"68":1,"364":4,"365":2,"387":2,"389":2,"390":1,"460":1}}],["gui",{"2":{"174":2,"178":3}}],["guides",{"2":{"158":1,"194":1}}],["guide",{"2":{"80":1,"81":1,"83":1,"84":1,"85":1,"103":1,"104":1,"128":1,"129":1,"183":1,"194":1,"252":1,"336":1,"380":1}}],["got",{"2":{"345":1}}],["goerli",{"2":{"259":1,"269":1}}],["goes",{"2":{"156":1}}],["good",{"2":{"129":1}}],["googlelogin",{"2":{"448":3}}],["googleoauthprovider",{"2":{"448":3}}],["googleclientid",{"2":{"183":1}}],["google",{"0":{"183":1,"448":1},"2":{"102":1,"119":1,"130":2,"141":1,"183":1,"200":1,"213":2,"215":1,"251":1,"364":1,"379":1,"390":1,"446":1,"448":8,"449":4,"453":1}}],["golang",{"2":{"99":1,"244":1,"482":1}}],["goldcardid",{"2":{"56":1}}],["going",{"2":{"39":1}}],["go",{"0":{"34":1,"53":1,"99":1,"244":1,"482":1},"2":{"29":1,"30":1,"32":2,"34":3,"38":1,"39":1,"43":1,"45":1,"47":2,"49":1,"53":3,"57":1,"59":1,"62":1,"63":2,"99":6,"100":2,"137":1,"171":1,"179":1,"226":3,"244":6,"245":2,"246":1,"328":1,"451":1,"465":3,"482":6,"483":2,"484":1}}],["greater",{"2":{"437":1}}],["great",{"2":{"147":1,"148":1,"159":1,"160":1,"196":1}}],["grin",{"2":{"67":1}}],["grantrole",{"2":{"83":1}}],["grade",{"2":{"56":1}}],["grab",{"2":{"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1}}],["groupname",{"2":{"265":1}}],["groups",{"0":{"227":1}}],["group",{"2":{"8":1}}],["geared",{"2":{"196":1}}],["genericfailure",{"2":{"178":1}}],["generated",{"2":{"81":1,"82":1,"83":2,"90":1,"229":1,"299":1,"337":1,"387":2,"390":2,"447":2,"459":1,"467":1}}],["generate",{"0":{"232":1,"470":1},"2":{"79":2,"83":2,"90":2,"183":2,"299":1,"390":1,"438":1}}],["generation",{"2":{"39":1}}],["generating",{"2":{"17":1,"83":1}}],["general",{"2":{"58":1,"137":1,"148":1,"160":1,"185":1,"296":2}}],["getelementbyid",{"2":{"448":1}}],["getetherbalance",{"2":{"38":5}}],["getimagehash",{"2":{"421":1}}],["getfunction",{"2":{"414":2,"420":1}}],["getuseractivities",{"0":{"391":1},"1":{"392":1},"2":{"391":4,"392":1}}],["getchainid",{"2":{"234":1,"472":1}}],["getcomponentinchildren",{"2":{"139":1}}],["getcontractinfo",{"2":{"49":1,"53":1,"60":1}}],["getcontractinfobatch",{"2":{"49":5,"60":1}}],["getcollection",{"2":{"4":1}}],["getprovider",{"2":{"234":1,"472":1}}],["getaddress",{"0":{"302":1},"2":{"224":1,"231":1,"232":1,"239":1,"240":1,"302":1,"310":2,"320":2,"329":2,"333":1,"401":1,"463":1,"469":1,"470":1,"477":1,"478":1}}],["getwallet",{"2":{"200":5,"224":1,"225":1,"463":1,"464":1}}],["getvalid",{"2":{"180":1}}],["getloginurl",{"2":{"173":1}}],["getlatestblock",{"2":{"7":2}}],["getsessionhash",{"2":{"446":1,"447":1,"448":2}}],["getstorageat",{"2":{"406":1}}],["getstoredcredentials",{"2":{"180":2}}],["getstoredkey",{"2":{"170":1}}],["getsigner",{"2":{"12":1,"72":2,"78":1,"79":2,"83":1,"91":1,"231":1,"237":1,"238":2,"239":2,"240":2,"241":2,"469":1,"475":1,"476":2,"477":2,"478":2,"479":2}}],["getkitconnectwallets",{"2":{"130":2}}],["getdefaultconnectors",{"2":{"106":2,"107":2,"130":1}}],["gettoporders",{"2":{"352":1}}],["gettokenrefreshstatus",{"2":{"63":5}}],["gettokenmetadatabatch",{"2":{"60":1}}],["gettokenmetadata",{"2":{"60":1,"62":6}}],["gettokensupplies",{"2":{"47":7}}],["gettokenbalances",{"2":{"29":9,"30":7,"33":1,"34":1,"38":2}}],["gettransactionhistory",{"2":{"43":7,"45":7}}],["getting",{"0":{"41":1,"95":1,"104":1,"194":1,"198":1,"369":1},"1":{"96":1,"97":1,"98":1,"105":1,"370":1,"371":1,"372":1},"2":{"103":1,"193":1,"252":1,"380":1}}],["getmetatxnreceipt",{"2":{"14":2}}],["getblocknumber",{"2":{"86":3,"91":3}}],["getblock",{"2":{"7":1}}],["get",{"0":{"340":1},"2":{"0":1,"4":1,"7":1,"28":1,"31":1,"34":1,"36":1,"37":1,"39":1,"42":1,"44":1,"46":1,"53":1,"58":3,"72":2,"78":2,"80":1,"86":4,"88":1,"91":2,"94":1,"105":1,"136":1,"156":1,"166":2,"175":1,"180":1,"185":1,"194":2,"198":2,"224":1,"307":1,"310":4,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"318":1,"319":1,"320":1,"322":1,"323":1,"324":1,"325":1,"348":1,"351":1,"368":1,"375":1,"382":1,"383":1,"446":2,"463":1}}],["g",{"2":{"12":1,"72":1,"126":1,"151":1,"153":1,"155":1,"161":1,"229":1,"259":1,"269":1,"328":1,"359":1,"363":1,"467":1}}],["git",{"2":{"81":1,"135":3}}],["github",{"2":{"29":1,"30":1,"34":2,"36":1,"38":1,"43":1,"45":1,"47":1,"49":1,"53":2,"62":1,"63":2,"67":2,"68":1,"99":1,"110":1,"135":1,"244":1,"253":1,"263":1,"273":1,"289":1,"291":1,"294":1,"295":2,"482":1}}],["githubusercontent",{"2":{"10":1}}],["gives",{"2":{"171":1}}],["give",{"0":{"7":1},"2":{"68":1,"164":2,"180":1,"193":1,"461":1}}],["given",{"2":{"3":1,"138":1,"169":1,"303":2,"304":2,"305":2,"306":2,"307":1,"310":2,"316":1,"317":1,"320":2,"321":1,"406":1,"410":1,"414":1,"416":1}}],["gain",{"2":{"365":2}}],["gather",{"2":{"337":1,"339":1}}],["gate",{"2":{"164":1}}],["gateway",{"0":{"6":1},"1":{"7":1},"2":{"6":1,"39":2,"308":1}}],["gaming",{"2":{"196":1}}],["gameobject",{"2":{"139":1,"164":1}}],["game",{"0":{"15":1,"21":1,"22":1},"2":{"32":2,"39":1,"41":1,"56":1,"80":1,"136":5,"166":2,"192":1,"193":6,"195":1,"196":4,"197":1,"198":1,"233":1,"247":1,"249":1,"342":1,"471":1}}],["games",{"2":{"0":1,"31":1,"39":3,"132":1,"154":1,"166":1,"196":2}}],["gasused",{"2":{"461":1}}],["gaslist",{"2":{"394":1}}],["gaslimit",{"0":{"419":1},"2":{"327":1,"329":1,"414":2,"419":2,"420":1,"461":1}}],["gaslimitestimator",{"2":{"327":1}}],["gasless",{"0":{"80":1},"1":{"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1},"2":{"197":1}}],["gastipcap",{"2":{"323":1}}],["gasprice",{"2":{"322":1,"327":1,"329":1}}],["gas",{"0":{"10":1,"73":1,"76":1,"77":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1},"2":{"8":7,"12":1,"13":2,"17":1,"72":3,"78":2,"80":1,"149":3,"157":1,"310":1,"317":2,"318":1,"322":1,"323":1,"327":1,"398":1,"419":1}}],["gt",{"2":{"3":2,"7":2,"9":3,"12":1,"58":10,"69":2,"72":6,"78":2,"82":2,"83":2,"86":7,"89":2,"90":4,"91":5,"106":9,"107":21,"108":6,"109":4,"111":3,"123":10,"124":4,"126":1,"129":2,"130":8,"133":3,"135":2,"137":1,"138":4,"139":1,"142":2,"143":2,"145":42,"161":1,"164":3,"169":1,"173":10,"178":1,"180":1,"181":2,"185":3,"200":1,"226":2,"247":1,"248":4,"254":1,"284":2,"294":4,"295":6,"314":2,"330":6,"331":5,"339":1,"348":3,"376":1,"377":4,"391":1,"427":1,"442":1,"448":16,"456":1,"457":1,"458":1,"465":2}}],["due",{"2":{"164":1,"185":1,"280":1,"294":1,"453":1}}],["during",{"2":{"138":1,"169":1,"185":1,"398":1,"407":1,"438":2,"444":2}}],["dropsession",{"2":{"450":1}}],["dropdown",{"2":{"3":1}}],["drawer",{"2":{"171":1}}],["drag",{"2":{"137":1,"139":1,"185":1}}],["ddos",{"0":{"86":1},"1":{"87":1,"88":1,"89":1,"90":1},"2":{"80":1}}],["d",{"2":{"10":1,"14":1,"29":2,"30":2,"32":1,"33":1,"34":1,"38":2,"43":2,"45":2,"47":1,"49":1,"56":2,"59":1,"62":1,"63":2,"89":1,"90":1,"156":1,"226":1,"246":2,"249":1,"391":1,"461":1,"465":1,"484":2}}],["digest",{"2":{"441":1,"443":1}}],["digit",{"2":{"140":1}}],["diligence",{"0":{"433":1},"2":{"431":1}}],["dive",{"2":{"103":1,"252":1,"380":1}}],["difficult",{"2":{"296":1}}],["difficulty",{"2":{"80":1}}],["differs",{"2":{"261":1,"270":1,"402":1}}],["differing",{"2":{"179":1}}],["difference",{"2":{"239":1,"240":1,"477":1,"478":1}}],["differences",{"0":{"193":1,"196":1},"2":{"65":1}}],["different",{"2":{"179":1,"200":1,"238":1,"239":1,"240":1,"249":1,"354":1,"362":1,"364":1,"476":1,"477":1,"478":1}}],["dictionary",{"2":{"68":1,"69":1}}],["dice",{"2":{"68":1}}],["die",{"2":{"68":1}}],["discuss",{"2":{"453":1}}],["discouraged",{"2":{"293":1}}],["disconnectweb3react",{"2":{"284":1}}],["disconnect",{"2":{"208":1,"222":1}}],["discord",{"2":{"102":1,"141":1,"213":1,"226":1,"251":1,"379":1,"465":1}}],["disk",{"2":{"173":1,"179":1}}],["disabled",{"2":{"139":1}}],["displayedassets",{"0":{"121":1}}],["displayed",{"2":{"119":1,"120":1,"121":4,"178":1,"222":1,"287":1,"353":1,"385":1}}],["displaying",{"2":{"104":1}}],["dispatched",{"2":{"14":1,"79":1}}],["dispatches",{"2":{"10":1}}],["dispatch",{"2":{"8":1,"10":1,"71":1,"72":2,"79":1,"237":1,"475":1}}],["dispatching",{"2":{"8":1}}],["dist",{"2":{"248":1,"377":1}}],["distribution",{"0":{"248":1,"377":1},"2":{"248":1,"377":1,"442":1}}],["district",{"2":{"67":1}}],["distractions",{"2":{"196":1}}],["distinct",{"2":{"79":2,"189":1,"451":1}}],["directive",{"2":{"295":4}}],["direct",{"2":{"201":1,"364":1,"414":1}}],["directory",{"0":{"294":1,"295":1},"2":{"36":2,"81":1,"86":1,"171":1,"293":2,"295":2}}],["directly",{"2":{"10":1,"32":1,"35":1,"39":1,"48":2,"54":1,"55":1,"61":2,"148":1,"159":1,"160":1,"229":1,"247":1,"329":1,"353":1,"364":1,"376":1,"385":1,"398":2,"422":1,"447":1,"448":1,"467":1}}],["dangerous",{"2":{"404":1,"419":1}}],["days",{"2":{"188":1}}],["dark",{"2":{"113":1,"200":1}}],["dashboard",{"2":{"81":1,"364":1}}],["damage",{"2":{"56":1,"365":1}}],["datatypes",{"2":{"330":2}}],["data2",{"2":{"238":2,"239":2,"240":2,"476":2,"477":2,"478":2}}],["data1",{"2":{"238":2,"239":2,"240":2,"476":2,"477":2,"478":2}}],["databeat",{"2":{"187":2}}],["database",{"2":{"148":2,"187":2}}],["databases",{"2":{"39":1}}],["data",{"0":{"330":1,"425":1,"426":1},"2":{"13":3,"31":1,"36":2,"39":6,"63":1,"68":1,"69":3,"72":2,"78":2,"79":2,"91":3,"145":4,"149":1,"173":1,"187":1,"188":2,"238":4,"239":4,"240":6,"241":4,"329":1,"331":1,"346":1,"352":1,"363":1,"391":1,"414":2,"420":1,"425":1,"426":2,"427":1,"460":3,"461":2,"476":4,"477":4,"478":6,"479":4}}],["dapps",{"2":{"8":1,"39":1,"201":1,"222":1,"249":1,"262":1,"383":1}}],["dapp",{"0":{"74":1,"75":1,"90":1,"200":1,"220":1,"221":1},"2":{"8":1,"32":1,"39":1,"41":1,"83":1,"89":1,"90":1,"199":3,"200":9,"202":1,"204":1,"206":1,"212":1,"220":2,"222":6,"225":2,"226":1,"246":1,"247":1,"249":3,"253":2,"263":2,"273":2,"289":2,"291":1,"295":1,"376":1,"383":1,"464":2,"465":1,"484":1}}],["daicontractaddress",{"2":{"238":3,"241":1,"476":3,"479":1}}],["daily",{"2":{"186":1}}],["dai",{"2":{"8":1,"72":1,"456":2}}],["debit",{"2":{"353":1,"385":1}}],["debugging",{"2":{"296":1}}],["deactivate",{"2":{"284":1}}],["deactivated",{"2":{"284":1}}],["deactivation",{"0":{"284":1}}],["deal",{"2":{"156":1}}],["derive",{"2":{"232":1,"470":1}}],["denoted",{"2":{"156":1}}],["deep",{"2":{"141":2,"145":3}}],["delightful",{"2":{"200":1}}],["delivering",{"2":{"196":1}}],["delivery",{"2":{"8":1}}],["del",{"2":{"173":3}}],["delegatecall",{"0":{"415":1},"2":{"414":2,"415":2,"420":1}}],["delegates",{"2":{"173":2}}],["delegate",{"2":{"171":1,"173":1,"331":1}}],["delete",{"2":{"86":1,"185":3}}],["delayed",{"2":{"156":1}}],["delayedencodedata",{"2":{"156":2,"157":1}}],["delayedencode",{"0":{"156":1},"2":{"156":4,"157":1}}],["departments",{"2":{"442":1}}],["department",{"2":{"442":2}}],["deprecated",{"2":{"385":1}}],["depth",{"2":{"258":1,"268":1}}],["depends",{"2":{"294":1}}],["depending",{"2":{"261":1,"270":1,"344":1}}],["depend",{"2":{"247":1,"293":1,"376":1}}],["dependent",{"2":{"173":1}}],["dependencies",{"2":{"105":1,"247":1,"376":1}}],["dependency",{"2":{"79":1,"247":1,"376":1}}],["dependant",{"2":{"164":1}}],["deploycontract",{"2":{"160":4}}],["deploymentresult",{"2":{"332":2}}],["deployment",{"0":{"160":1,"429":1},"2":{"81":1,"160":1,"403":1,"444":1}}],["deploying",{"0":{"332":1},"2":{"17":1,"63":1,"157":1,"160":2}}],["deployedwalletcontext",{"2":{"226":1,"465":1}}],["deployedcontractaddress",{"2":{"160":1}}],["deployed",{"2":{"8":1,"73":2,"86":2,"87":1,"328":1,"344":1,"422":2,"444":1}}],["deploy",{"0":{"15":1,"19":1,"20":1,"25":1,"81":1,"82":1,"83":1,"89":1,"342":1},"1":{"82":1,"84":1,"85":1},"2":{"4":2,"6":1,"17":1,"80":2,"81":1,"82":1,"83":1,"88":1,"89":1,"91":1,"150":1,"152":1,"154":1,"160":2,"332":2,"341":1,"342":1,"444":1}}],["defi",{"2":{"202":1}}],["defines",{"2":{"404":1,"412":1,"435":1}}],["define",{"2":{"364":1,"435":1,"447":1}}],["defined",{"2":{"69":2,"173":1,"259":1,"269":1,"298":1,"308":1,"333":1,"334":1,"393":1,"401":2,"406":1,"414":1,"415":1,"417":1}}],["definition",{"2":{"156":1}}],["defense",{"2":{"136":2,"364":1}}],["defaultabicoder",{"2":{"399":1,"406":2}}],["defaultpurchaseamount",{"0":{"218":1},"2":{"218":1}}],["defaultfundingcurrency",{"0":{"217":1},"2":{"200":2,"217":1,"219":2}}],["defaulting",{"2":{"149":1}}],["defaultnetwork",{"0":{"259":1,"269":1},"2":{"130":1,"200":1,"255":1,"265":1}}],["defaulttheme",{"0":{"113":1},"2":{"113":1}}],["defaultchainid",{"2":{"106":1,"107":1}}],["defaults",{"2":{"98":1,"164":1,"320":1,"372":1,"390":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["default",{"2":{"29":3,"30":1,"36":1,"43":1,"47":1,"71":1,"86":1,"139":1,"145":3,"161":1,"178":1,"188":1,"205":1,"209":1,"216":1,"217":1,"218":2,"219":2,"259":2,"268":1,"269":2,"277":1,"286":1,"290":1,"294":1,"295":1,"310":2,"333":1,"390":1,"448":1}}],["demand",{"0":{"429":1},"2":{"199":2,"220":1,"361":1}}],["demos",{"2":{"194":1,"198":1}}],["demo",{"0":{"93":1,"350":1,"367":1,"374":1},"2":{"93":1,"102":1,"106":1,"107":1,"136":3,"164":2,"200":2,"220":1,"249":1,"251":1,"253":1,"255":1,"262":4,"263":1,"265":1,"272":3,"273":1,"279":1,"283":1,"288":1,"289":1,"291":2,"295":1,"350":1,"367":1,"374":1,"379":1,"448":2}}],["demonstrated",{"2":{"294":1}}],["demonstrates",{"2":{"226":1,"465":1}}],["demonstrate",{"2":{"55":1}}],["demonstrating",{"2":{"4":1}}],["demystify",{"2":{"65":1}}],["desc",{"2":{"352":1}}],["described",{"2":{"70":1,"201":1,"294":1,"295":1}}],["describe",{"2":{"65":1}}],["description",{"2":{"56":3,"67":2,"68":1,"258":1,"268":1,"337":2,"338":2}}],["destinations",{"2":{"185":1}}],["desktop",{"0":{"175":1},"2":{"175":2,"178":1,"199":1}}],["desired",{"2":{"164":1}}],["design",{"2":{"157":1,"359":1}}],["designed",{"2":{"1":1,"36":1,"39":1,"187":1,"199":1}}],["decoding",{"2":{"328":1}}],["decode",{"2":{"406":2}}],["decodeproof",{"2":{"226":1,"465":1}}],["decoded",{"2":{"43":1}}],["declare",{"2":{"295":1}}],["declared",{"2":{"295":1,"419":1}}],["declaration",{"2":{"295":1}}],["decline",{"2":{"81":1}}],["decentralized",{"2":{"229":1,"467":1}}],["decrypt",{"2":{"170":1}}],["decimalnormalizer",{"2":{"149":2,"150":1,"151":1,"156":2,"157":2,"327":1,"333":2}}],["decimals",{"2":{"10":3,"56":1,"67":1,"68":1,"70":1,"149":3,"150":4}}],["determining",{"2":{"327":1}}],["determined",{"2":{"204":1}}],["determine",{"2":{"121":1,"329":1}}],["determines",{"2":{"113":1,"114":1,"118":1,"119":1,"120":1,"400":1,"436":1,"456":1}}],["detect",{"2":{"108":1}}],["detects",{"2":{"39":1}}],["detail",{"2":{"70":1}}],["details",{"0":{"16":1,"343":1},"2":{"43":1,"45":1,"47":3,"67":1,"68":1,"83":1,"129":1,"222":1,"258":1,"343":1,"346":1,"364":1}}],["devices",{"2":{"383":1,"388":1}}],["device",{"2":{"233":1,"386":1,"387":1,"450":1,"471":1}}],["deviate",{"2":{"65":1}}],["developing",{"2":{"296":1}}],["developer",{"2":{"353":1,"385":1}}],["developers",{"2":{"111":1,"122":1,"199":1,"392":1}}],["developed",{"2":{"199":1,"249":1}}],["development",{"2":{"12":1,"81":1,"192":1,"193":1,"198":1,"247":1,"364":1}}],["dev",{"2":{"0":1,"81":2,"82":1,"89":1,"90":1,"100":1,"245":1,"352":1,"391":2,"427":1,"483":1}}],["dom",{"2":{"448":1}}],["doing",{"2":{"333":1}}],["doubt",{"2":{"156":1}}],["don",{"2":{"156":1,"164":1,"165":1,"186":1,"222":1,"241":1,"329":1,"398":1,"400":1,"445":1,"453":1,"479":1}}],["done",{"2":{"3":1,"83":1,"84":1,"97":1,"147":2,"158":1,"160":1,"174":1,"175":1,"181":1,"222":1,"371":1,"387":1,"461":1}}],["do",{"0":{"294":1,"295":1},"2":{"56":1,"67":1,"70":1,"79":1,"83":2,"90":1,"135":1,"137":2,"138":1,"147":1,"148":2,"159":1,"160":2,"165":1,"170":2,"178":1,"186":1,"225":2,"226":3,"249":1,"294":1,"328":2,"338":1,"358":1,"464":2,"465":3}}],["download",{"2":{"137":1}}],["downtime",{"2":{"39":1}}],["down",{"2":{"39":1,"81":1,"119":1,"120":1,"142":1,"143":1,"328":1}}],["downside",{"2":{"36":1}}],["documented",{"2":{"158":1}}],["document",{"2":{"156":1,"448":1}}],["documentation",{"2":{"1":1,"2":1,"8":1,"39":1,"96":1,"106":1,"136":2,"149":1,"150":1,"152":1,"154":1,"309":1,"310":1,"370":1}}],["docs",{"2":{"33":1,"34":1,"50":2,"67":2,"86":1,"87":1,"139":1,"145":1,"158":1,"183":1,"184":1,"249":1}}],["doesn",{"2":{"8":1,"133":1,"145":2,"178":1,"402":1,"413":1,"414":1,"418":1,"419":1,"446":1}}],["does",{"0":{"293":1},"2":{"0":1,"141":1,"149":1,"364":1,"444":1,"452":1}}],["lv7xncqh",{"2":{"68":1}}],["len",{"2":{"425":1}}],["length",{"2":{"305":2,"306":2}}],["lemur",{"2":{"345":1}}],["left",{"2":{"111":1,"114":3,"185":2,"443":1}}],["leaf",{"2":{"439":2,"440":1,"441":1,"442":1,"443":1}}],["lead",{"2":{"404":1}}],["leading",{"2":{"102":1,"251":1,"379":1}}],["least",{"2":{"387":1}}],["leaked",{"2":{"365":1}}],["leave",{"2":{"193":1}}],["leaving",{"2":{"193":1}}],["learning",{"2":{"110":1}}],["learn",{"2":{"48":2,"51":1,"61":2,"150":1,"152":1,"154":1,"156":1,"353":1,"385":1}}],["let",{"2":{"56":2,"156":1,"399":1}}],["leverage",{"0":{"197":1},"2":{"196":1,"197":1}}],["leveraged",{"2":{"193":1}}],["leverages",{"2":{"39":1,"140":1}}],["leveraging",{"2":{"94":1,"194":1,"351":1,"368":1,"374":1}}],["levels",{"2":{"442":1}}],["level",{"0":{"50":1,"436":1},"1":{"437":1,"438":1,"439":1,"440":1,"441":1,"442":1},"2":{"4":4,"48":3,"50":1,"51":1,"56":3,"58":2,"72":1,"188":1,"199":1}}],["lsm",{"2":{"39":1}}],["loss",{"2":{"404":1}}],["lost",{"2":{"387":3,"389":1}}],["long",{"2":{"200":1,"346":1,"447":1}}],["longer",{"2":{"39":1,"391":1}}],["locking",{"2":{"219":1}}],["lockfundingcurrencytodefault",{"0":{"219":1},"2":{"200":2}}],["locate",{"2":{"138":1,"139":1,"164":1}}],["located",{"2":{"56":1,"138":1}}],["location",{"2":{"114":1}}],["localhost",{"2":{"406":1}}],["localstorage",{"2":{"232":1,"470":1}}],["locally",{"2":{"83":1}}],["local",{"2":{"81":4,"83":1,"90":1,"229":1,"232":1,"236":1,"425":1,"426":1,"467":1,"470":1,"474":1}}],["lots",{"2":{"181":2}}],["loading",{"2":{"236":1,"448":1,"474":1}}],["load",{"2":{"138":2}}],["love",{"2":{"131":1}}],["look",{"2":{"86":1,"103":1,"107":1,"156":1,"188":1,"225":1,"247":1,"252":1,"329":1,"331":1,"337":1,"338":1,"345":2,"376":1,"380":1,"464":1}}],["looking",{"2":{"69":1}}],["lookup",{"2":{"56":1}}],["low",{"2":{"39":1}}],["logic",{"2":{"358":1}}],["logically",{"2":{"297":1}}],["loginpanel",{"2":{"139":5}}],["logins",{"2":{"102":1,"196":1,"251":1,"379":1,"387":1,"447":2,"454":2}}],["login",{"0":{"201":1,"387":1,"452":1,"453":1},"1":{"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"388":1,"389":1,"390":1},"2":{"81":3,"89":1,"141":1,"147":1,"171":1,"173":5,"196":1,"197":1,"363":3,"365":1,"386":1,"387":2,"390":1,"448":5,"451":1,"454":1}}],["logging",{"2":{"212":1,"452":1,"453":1}}],["logged",{"2":{"81":1}}],["logtemp",{"2":{"173":1}}],["logs",{"2":{"14":1,"448":1,"460":3}}],["logolight",{"2":{"129":2}}],["logodark",{"2":{"129":2}}],["logouri",{"2":{"56":1}}],["logourl",{"0":{"116":1},"2":{"10":3}}],["logo",{"2":{"56":1,"116":1}}],["logos",{"2":{"10":2,"193":1}}],["log",{"2":{"7":1,"12":1,"13":1,"29":2,"30":2,"38":2,"43":2,"45":2,"47":2,"49":1,"62":1,"63":2,"72":3,"78":2,"83":1,"86":1,"126":1,"173":1,"200":2,"224":1,"226":2,"234":2,"236":2,"237":1,"238":2,"239":2,"240":2,"241":2,"391":1,"406":1,"446":1,"447":1,"448":1,"449":1,"453":1,"454":1,"457":1,"458":1,"460":1,"461":1,"463":1,"465":2,"472":2,"474":2,"475":1,"476":2,"477":2,"478":2,"479":2}}],["layout",{"0":{"394":1,"395":1},"1":{"395":1,"396":2,"397":2,"398":1,"399":1}}],["label",{"2":{"192":1,"193":3,"194":1}}],["landscape",{"2":{"178":1}}],["languages",{"0":{"246":1,"484":1}}],["language",{"2":{"32":1,"59":1,"226":1,"246":1,"465":1,"484":1}}],["launched",{"2":{"193":1}}],["launcher",{"2":{"145":2}}],["launching",{"2":{"193":1}}],["launch",{"2":{"171":1,"348":1}}],["lastest",{"2":{"262":1}}],["last",{"2":{"73":1,"81":1,"185":1,"188":1}}],["later",{"2":{"133":1,"167":1,"280":1,"329":1,"331":1,"333":1}}],["latency",{"2":{"39":1}}],["latestblock",{"2":{"7":2}}],["latest",{"2":{"7":5,"34":1,"53":1,"137":1,"248":1,"254":2,"310":3,"311":1,"314":1,"316":1,"318":1,"320":3,"377":1}}],["lt",{"0":{"260":1,"271":1},"2":{"7":2,"9":3,"58":10,"69":2,"72":2,"78":1,"82":2,"83":1,"86":4,"89":2,"90":4,"91":3,"106":8,"107":19,"108":4,"109":2,"111":3,"123":9,"124":2,"130":8,"145":38,"173":1,"181":2,"200":1,"225":4,"226":1,"247":1,"248":4,"260":1,"262":1,"271":1,"294":3,"295":5,"314":2,"331":5,"348":3,"376":1,"377":4,"440":2,"448":11,"464":4,"465":1}}],["little",{"2":{"336":1}}],["literally",{"2":{"193":1}}],["live",{"2":{"253":2,"263":2,"273":2,"289":2}}],["lives",{"2":{"136":1}}],["libs",{"2":{"430":1}}],["libraries",{"2":{"249":2,"262":1,"270":3,"272":2,"293":4,"294":1}}],["library",{"0":{"98":1,"294":1,"295":1,"372":1},"2":{"7":1,"98":1,"101":1,"132":1,"151":1,"153":1,"155":1,"246":1,"250":1,"294":1,"295":2,"296":3,"297":1,"300":1,"330":1,"372":1,"378":1,"425":1,"426":1,"484":1}}],["lib",{"2":{"248":1,"377":1}}],["limitation",{"2":{"294":2}}],["limited",{"2":{"229":1,"365":1,"442":1,"467":1}}],["limit",{"2":{"200":1,"215":1}}],["limits",{"2":{"5":2,"364":1}}],["lightweight",{"2":{"296":1}}],["light",{"2":{"111":1,"113":1,"200":1,"211":1,"438":1}}],["linux",{"2":{"143":2}}],["links",{"2":{"182":1}}],["linking",{"2":{"141":1,"145":3}}],["linked",{"2":{"83":1}}],["link",{"2":{"56":1,"73":1,"96":1,"141":1,"370":1,"461":1}}],["linear",{"2":{"442":1}}],["line",{"2":{"0":1,"63":1,"88":2,"364":1}}],["likewise",{"2":{"241":1,"479":1}}],["like",{"2":{"9":1,"29":1,"30":1,"32":1,"33":1,"34":1,"36":1,"38":1,"43":1,"45":1,"56":3,"59":1,"65":1,"81":1,"86":1,"89":1,"100":1,"102":1,"107":1,"156":1,"173":5,"197":2,"199":2,"200":2,"225":1,"226":1,"245":1,"246":2,"247":1,"251":1,"270":1,"329":1,"331":1,"337":2,"338":1,"345":1,"361":1,"376":1,"379":1,"386":1,"442":1,"453":1,"457":1,"464":1,"465":1,"483":1,"484":2}}],["listsessions",{"2":{"449":1,"450":1}}],["listing",{"2":{"391":1}}],["listen",{"0":{"45":1,"457":1},"2":{"39":1}}],["list",{"0":{"29":1,"449":1},"2":{"9":1,"10":1,"12":1,"29":1,"30":1,"32":1,"33":1,"34":1,"40":1,"43":5,"47":1,"119":1,"120":1,"121":2,"127":1,"130":1,"185":1,"216":1,"255":1,"265":1,"314":2,"393":1,"421":1,"449":1}}],["ll",{"2":{"0":1,"29":1,"32":1,"68":1,"80":1,"84":1,"88":1,"97":1,"98":1,"138":1,"147":1,"151":3,"153":3,"155":3,"160":2,"161":1,"171":2,"173":1,"174":1,"178":1,"179":1,"225":1,"310":1,"329":5,"331":3,"337":1,"371":1,"372":1,"464":1}}],["nitro",{"2":{"363":1,"447":1}}],["nil",{"2":{"12":1,"29":4,"30":3,"34":4,"38":3,"43":2,"45":2,"47":2,"63":1}}],["npx",{"2":{"295":1}}],["npm",{"2":{"33":1,"52":2,"80":1,"105":1,"123":1,"199":1,"247":2,"254":2,"260":1,"264":2,"271":1,"274":2,"281":2,"376":2}}],["n",{"2":{"68":3,"142":1,"143":1,"330":1,"425":1,"441":1,"442":2,"443":2}}],["nuget",{"2":{"137":1}}],["numbers",{"2":{"149":2}}],["number",{"2":{"49":1,"55":1,"56":1,"62":1,"63":1,"86":3,"91":3,"121":1,"186":1,"190":1,"191":1,"205":1,"207":1,"229":1,"259":1,"269":1,"286":1,"301":1,"309":1,"311":1,"313":1,"325":1,"329":1,"346":1,"364":1,"391":4,"442":1,"467":1}}],["null",{"2":{"14":1,"56":1,"67":1,"68":1,"294":1,"460":1,"461":1}}],["navigating",{"2":{"164":1}}],["navigate",{"2":{"3":1,"83":1,"138":1,"145":1,"341":1,"344":1,"448":2}}],["nametypedescription",{"2":{"405":1,"409":1,"410":1,"413":1}}],["nametyperangedescription",{"2":{"395":1}}],["nametyperangedescriptionthresholduint161",{"2":{"394":1}}],["named",{"2":{"337":1}}],["namely",{"2":{"192":1}}],["name=",{"2":{"145":14}}],["names",{"2":{"81":1,"156":2,"347":1}}],["name",{"2":{"10":3,"49":1,"56":3,"62":1,"63":1,"67":3,"68":3,"70":1,"86":1,"87":1,"117":1,"129":2,"137":1,"145":1,"156":1,"164":1,"185":1,"200":3,"202":1,"211":1,"225":1,"247":2,"258":1,"268":1,"278":1,"328":1,"337":2,"338":2,"340":1,"342":1,"348":1,"376":2,"426":4,"460":1,"461":1,"464":1}}],["nativereceipt",{"2":{"460":1}}],["native",{"0":{"37":1,"38":1,"248":1,"377":1},"1":{"38":1},"2":{"10":1,"72":1,"158":1,"196":2,"197":1,"238":1,"239":1,"240":1,"241":1,"362":1,"476":1,"477":1,"478":1,"479":1}}],["nobody",{"2":{"165":1,"363":1}}],["none",{"2":{"236":1,"310":1,"474":1}}],["non",{"2":{"132":1,"147":1,"152":1,"156":1,"166":1,"174":1,"195":1,"197":1,"361":1,"390":1,"422":3,"442":1}}],["nonce=",{"2":{"448":1}}],["nonceat",{"0":{"320":1},"2":{"320":2}}],["nonce",{"2":{"9":7,"79":4,"207":1,"320":4,"327":1,"329":1,"446":1}}],["noncespace",{"2":{"79":2}}],["nonces",{"2":{"8":1,"9":2}}],["no",{"0":{"228":1,"466":1},"2":{"39":2,"67":1,"79":1,"81":1,"121":1,"132":1,"139":1,"144":1,"156":1,"161":1,"170":1,"193":1,"196":1,"199":1,"310":1,"364":1,"391":1,"414":1,"415":1,"442":1}}],["nodeurl",{"2":{"91":4}}],["nodejs",{"0":{"72":1,"73":1,"243":1,"481":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1},"2":{"78":1,"243":1,"481":1}}],["nodes",{"2":{"7":1,"12":1,"39":2,"83":1,"91":2,"309":1}}],["node",{"0":{"6":1,"33":1,"52":1},"1":{"7":1},"2":{"6":1,"29":1,"30":1,"32":1,"33":2,"38":1,"39":4,"43":1,"45":1,"47":1,"49":1,"52":2,"57":1,"59":1,"62":1,"63":2,"81":1,"88":1,"308":1,"391":1,"443":13}}],["now",{"2":{"4":1,"28":1,"37":1,"39":1,"42":1,"44":1,"46":1,"73":1,"79":1,"86":1,"89":1,"185":1,"339":1,"344":1,"348":1}}],["normally",{"2":{"295":1}}],["normalizeasbiginteger",{"2":{"151":1,"157":1,"333":2}}],["normalize",{"2":{"149":2,"150":1,"156":2,"157":1,"327":1}}],["normal",{"2":{"3":1,"438":1}}],["notable",{"2":{"239":1,"240":1,"477":1,"478":1}}],["nothing",{"2":{"173":1,"222":1}}],["noted",{"2":{"88":1,"90":1}}],["notes",{"0":{"36":1}}],["note",{"2":{"33":1,"52":1,"67":1,"70":1,"98":1,"135":1,"136":1,"137":3,"139":1,"141":1,"145":2,"149":1,"150":1,"154":1,"164":1,"178":2,"200":1,"225":1,"236":1,"237":1,"280":1,"307":1,"309":1,"310":1,"311":1,"314":1,"316":1,"318":1,"320":1,"329":1,"372":1,"431":1,"446":1,"464":1,"474":1,"475":1}}],["notice",{"2":{"29":1,"161":1,"329":1,"427":1,"441":1}}],["not",{"2":{"0":1,"3":3,"6":1,"13":2,"36":1,"68":1,"70":1,"72":4,"73":1,"78":1,"79":1,"80":1,"90":1,"138":1,"139":1,"141":1,"149":2,"150":2,"151":1,"153":1,"155":1,"156":1,"170":1,"173":1,"178":1,"218":1,"226":1,"234":1,"296":1,"307":1,"309":1,"328":1,"333":1,"358":1,"364":2,"413":2,"419":1,"422":1,"444":1,"452":1,"456":1,"461":1,"465":1,"472":1}}],["nfts",{"2":{"39":1,"41":1,"152":1}}],["nftbalances",{"2":{"30":4}}],["nft",{"0":{"26":1,"239":1,"477":1},"2":{"2":1,"4":2,"30":1,"31":1,"39":2,"51":1,"55":1,"239":2,"344":1,"364":1,"391":1,"477":2}}],["never",{"2":{"193":1,"398":2,"443":1,"461":1}}],["nesting",{"2":{"181":1,"442":1}}],["nested",{"0":{"428":1,"442":1},"2":{"181":1,"441":2,"442":3,"443":3}}],["neon",{"2":{"67":1}}],["nethereum",{"2":{"132":1,"296":1}}],["net",{"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1,"56":4,"68":1}}],["networkid",{"0":{"319":1},"2":{"319":2}}],["networks",{"0":{"40":1},"2":{"8":1,"32":2,"39":1,"40":1,"45":1,"47":1,"56":1,"58":1,"86":1,"91":1}}],["network",{"0":{"37":1,"38":1,"277":1},"1":{"38":1},"2":{"7":2,"8":1,"10":2,"12":2,"45":2,"47":2,"56":4,"58":4,"72":2,"78":2,"83":1,"86":3,"90":1,"98":1,"149":1,"156":2,"157":1,"237":1,"258":1,"259":2,"268":1,"269":2,"275":1,"277":1,"321":1,"327":1,"341":1,"372":1,"390":2,"446":1,"447":1,"448":1,"449":1,"450":1,"460":2,"461":5,"475":1}}],["necessary",{"2":{"12":1,"105":1,"175":1}}],["nextjs",{"0":{"261":1,"270":1,"292":1,"294":1},"1":{"293":1,"294":1,"295":1},"2":{"261":2,"262":2,"270":2,"272":2,"293":3,"294":1,"295":6}}],["next",{"0":{"103":1,"252":1,"293":1,"294":1,"295":1,"380":1},"2":{"3":1,"39":1,"72":1,"81":1,"84":1,"130":1,"136":1,"138":1,"140":1,"174":1,"293":2,"295":2,"310":1,"338":1}}],["needed",{"2":{"72":1,"129":1,"137":1,"147":1,"194":1,"198":1,"229":1,"247":1,"387":1,"435":1,"436":1,"467":1}}],["needs",{"2":{"39":1,"165":1,"193":1,"222":1,"414":1,"422":1}}],["needing",{"2":{"10":1,"79":1}}],["need",{"2":{"1":1,"3":1,"39":3,"72":1,"80":1,"84":1,"97":1,"98":1,"130":1,"136":1,"138":1,"151":1,"153":1,"155":1,"156":1,"160":1,"164":1,"169":1,"171":2,"173":1,"178":1,"183":1,"184":1,"186":1,"222":1,"249":1,"296":1,"309":1,"328":1,"333":1,"337":1,"363":1,"371":1,"372":1,"386":1,"415":1,"417":1,"445":2,"447":1,"453":1}}],["newimagehash",{"2":{"414":1,"420":1}}],["newindexer",{"2":{"29":1,"30":1,"34":1,"38":1,"43":1,"45":1,"47":1}}],["newint",{"2":{"12":1}}],["newestblock",{"2":{"318":2}}],["newer",{"2":{"33":1,"52":1,"136":1}}],["newobject",{"2":{"173":1}}],["newlydeployedcontractaddress",{"2":{"160":1,"332":1}}],["newly",{"2":{"138":1,"164":1,"329":1}}],["newtonsoft",{"2":{"137":2}}],["newmetadata",{"2":{"49":1,"53":1,"62":1,"63":2}}],["newrpcrelayer",{"2":{"12":1}}],["newprovider",{"2":{"12":1}}],["newwalletsingleowner",{"2":{"12":1}}],["newwalletfrommnemonic",{"2":{"12":1}}],["new",{"0":{"75":1},"2":{"0":1,"3":1,"7":1,"10":1,"29":1,"30":1,"33":1,"38":1,"43":1,"45":1,"47":1,"49":1,"52":1,"62":1,"63":3,"72":6,"78":2,"83":3,"86":12,"91":4,"98":2,"106":1,"107":1,"132":1,"142":1,"143":1,"145":2,"147":1,"149":2,"150":2,"151":4,"152":2,"153":4,"154":4,"155":4,"156":7,"157":12,"158":1,"164":1,"166":1,"185":2,"193":1,"197":1,"199":1,"226":4,"231":1,"232":2,"236":1,"238":2,"239":2,"240":2,"241":3,"255":1,"283":1,"295":1,"299":2,"300":1,"308":1,"318":1,"328":1,"329":4,"331":2,"333":2,"340":1,"341":1,"372":2,"390":1,"405":1,"406":1,"413":1,"442":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1,"465":4,"469":1,"470":2,"474":1,"476":2,"477":2,"478":2,"479":3}}],["myetherwallet",{"2":{"357":1}}],["mypinata",{"2":{"345":1}}],["mypage",{"2":{"106":3,"107":3}}],["myapp",{"2":{"295":1}}],["mytokenaddress",{"2":{"151":2,"153":2,"155":2}}],["mytoken",{"2":{"151":3,"153":3,"155":3}}],["my",{"0":{"293":1},"2":{"129":2,"130":3,"202":1,"247":1,"275":1,"376":1}}],["mycustomlogolight",{"2":{"129":1}}],["mycustomlogodark",{"2":{"129":1}}],["mycustomconnectoroptions",{"2":{"129":1}}],["mycustomconnector",{"2":{"129":2,"130":1}}],["mycomponent",{"2":{"109":1,"124":1}}],["myreactcomponent",{"2":{"108":1}}],["mkdir",{"2":{"81":1}}],["md",{"2":{"67":2,"68":1}}],["mimics",{"2":{"411":1}}],["mitm",{"2":{"365":1}}],["might",{"2":{"348":1,"446":1,"453":1}}],["migrated",{"2":{"72":1}}],["migration",{"0":{"423":1},"2":{"72":4}}],["mistakes",{"2":{"348":1}}],["miss",{"2":{"181":1}}],["missing",{"2":{"88":1}}],["missed",{"2":{"31":1}}],["millions",{"2":{"197":1}}],["mix",{"2":{"193":1,"241":1,"479":1}}],["mixed",{"2":{"67":1}}],["middle",{"2":{"114":2}}],["middleware",{"2":{"86":1}}],["minimum",{"2":{"337":1}}],["minimize",{"2":{"193":1}}],["min",{"2":{"248":2,"377":2}}],["minor",{"2":{"132":2,"166":2}}],["minutes",{"2":{"80":1,"193":1,"455":1}}],["minted",{"2":{"347":2}}],["minter",{"0":{"20":1,"25":1},"2":{"80":1,"83":4}}],["mints",{"2":{"80":1,"344":1}}],["mint",{"0":{"21":1,"24":1,"80":1,"91":1},"1":{"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1},"2":{"80":1,"83":1,"91":4,"150":1,"151":2,"152":1,"154":1,"155":2,"156":3,"333":1,"344":1,"345":1,"346":3,"348":1}}],["minting",{"0":{"346":1},"2":{"17":1,"126":1,"348":1}}],["mined",{"2":{"8":1,"36":1}}],["mind",{"2":{"3":1}}],["much",{"2":{"136":1,"440":1}}],["mutable",{"2":{"136":1}}],["mumbai",{"2":{"98":1,"348":1,"372":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["multisignature",{"2":{"386":1}}],["multisig",{"2":{"362":1}}],["multisigs",{"2":{"362":1}}],["multi",{"2":{"39":1,"86":1,"87":1,"154":1,"439":1}}],["multiple",{"2":{"0":1,"6":1,"9":1,"72":1,"79":1,"154":2,"157":1,"164":1,"195":1,"199":1,"222":1,"238":2,"239":2,"240":2,"241":1,"359":1,"386":2,"442":1,"476":2,"477":2,"478":2,"479":1}}],["must",{"2":{"29":1,"58":1,"83":2,"119":1,"120":1,"138":1,"141":1,"148":1,"161":1,"170":2,"283":1,"293":1,"294":1,"295":1,"365":1,"401":1,"407":1,"427":1,"460":1}}],["mnemonic",{"2":{"12":6}}],["move",{"0":{"343":1},"2":{"310":1}}],["mounted",{"2":{"294":2}}],["mouth",{"2":{"67":1}}],["moonpay",{"2":{"200":2,"216":1,"353":1,"385":1}}],["mobile",{"0":{"176":1,"383":1},"2":{"178":2,"199":2,"200":1,"249":1,"383":2}}],["moments",{"2":{"185":1}}],["moment",{"2":{"166":1}}],["mocks",{"2":{"161":1}}],["mocked",{"2":{"86":3,"90":1,"91":1}}],["monobehaviour",{"2":{"139":1,"164":1}}],["mono",{"2":{"133":2}}],["monitors",{"2":{"39":1}}],["money",{"2":{"6":1}}],["more",{"0":{"165":1},"2":{"29":1,"56":2,"67":1,"70":1,"72":1,"78":1,"79":1,"96":1,"102":1,"129":1,"135":1,"137":1,"139":1,"145":2,"149":1,"165":1,"194":1,"196":1,"200":1,"222":1,"225":1,"251":1,"258":1,"261":1,"268":1,"270":1,"295":1,"353":1,"359":1,"370":1,"379":1,"385":1,"386":2,"391":2,"464":1}}],["most",{"2":{"29":1,"39":1,"57":1,"137":1,"149":2,"200":1,"301":1,"309":1,"313":1,"355":1}}],["modifier",{"2":{"405":1,"413":1}}],["modification",{"2":{"237":1,"475":1}}],["modify",{"2":{"64":1,"137":1,"333":1,"344":1,"345":1}}],["moduleauth",{"2":{"407":1}}],["module",{"2":{"123":1,"274":1,"363":1,"402":1,"403":1,"407":2,"411":1,"415":1}}],["modules",{"0":{"402":1},"1":{"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1,"412":1,"413":1,"414":1,"415":1,"416":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1},"2":{"81":1,"88":1,"402":3,"403":1,"407":1,"415":1}}],["modular",{"2":{"39":2,"105":1,"247":1}}],["modern",{"2":{"199":1,"382":1}}],["moderately",{"2":{"386":1}}],["moderate",{"2":{"5":1}}],["modes",{"2":{"178":1}}],["mode",{"2":{"137":1,"139":1,"164":1,"178":2}}],["model",{"0":{"365":1},"2":{"8":1,"365":1}}],["modals",{"2":{"114":1,"196":1}}],["modal",{"0":{"108":1,"109":1,"115":1,"124":1,"125":1},"1":{"116":1,"117":1,"118":1,"119":1,"120":1,"126":1,"127":1},"2":{"3":1,"104":1,"108":2,"113":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"124":1,"125":1}}],["march",{"2":{"434":1}}],["marked",{"2":{"419":1}}],["marketplaces",{"0":{"192":1},"1":{"193":1,"194":1},"2":{"69":1}}],["marketplace",{"0":{"1":1,"23":1,"190":1},"2":{"1":4,"126":1,"190":2,"192":3,"193":8,"194":4,"350":1,"351":1,"352":2,"391":5}}],["mail",{"2":{"426":1}}],["mainmoduleinterface",{"2":{"414":2,"420":2}}],["mainmoduleupgradable",{"2":{"411":1,"414":3,"419":1,"420":1,"421":1,"422":1,"430":1}}],["mainmoduleupgradeable",{"0":{"411":1,"423":1},"1":{"412":1,"413":1},"2":{"444":1}}],["mainmodule",{"2":{"400":1,"401":2,"402":1,"407":2,"411":1,"414":3,"430":1,"444":4}}],["maintaining",{"2":{"199":1,"229":1,"467":1}}],["main",{"2":{"121":3,"145":3,"297":1,"448":3}}],["mainnet",{"2":{"10":1,"12":1,"32":2,"33":1,"49":1,"62":1,"63":1,"67":1,"72":2,"78":2,"83":1,"106":2,"107":2,"200":1,"226":1,"259":1,"269":1,"465":1}}],["malicious",{"2":{"386":1,"389":1,"390":1}}],["max",{"2":{"323":1}}],["match",{"2":{"193":1,"241":1,"479":1}}],["material",{"2":{"157":1}}],["matic",{"0":{"37":1,"38":1},"1":{"38":1},"2":{"10":3,"38":2,"72":1,"149":3,"200":1}}],["magicvalue",{"2":{"427":1}}],["magic",{"2":{"157":1,"427":3}}],["macbook",{"2":{"446":1,"448":1,"449":2,"450":1}}],["machine",{"2":{"135":1,"358":1}}],["macos",{"0":{"143":1},"2":{"133":1,"135":1,"182":1,"185":1}}],["mac",{"2":{"133":1,"143":3,"167":1,"173":2,"185":1}}],["made",{"2":{"132":1,"136":1,"160":1,"166":1,"173":3,"187":1,"296":1}}],["major",{"2":{"132":2,"166":2}}],["mapped",{"2":{"330":1}}],["mappings",{"0":{"330":1}}],["map",{"2":{"69":2}}],["making",{"2":{"39":1,"157":1,"161":1,"173":1,"296":1,"390":1}}],["makes",{"2":{"39":2,"83":1,"363":1}}],["make",{"2":{"32":1,"33":1,"34":1,"39":1,"41":1,"45":1,"47":1,"57":1,"72":2,"81":1,"86":4,"88":1,"129":1,"137":1,"139":1,"145":1,"148":1,"150":1,"163":1,"175":1,"178":3,"180":3,"181":1,"185":1,"222":1,"309":1,"328":1,"348":1}}],["mandatory",{"2":{"196":1}}],["manifest",{"2":{"145":5}}],["manual",{"0":{"137":1},"2":{"145":1}}],["manually",{"0":{"24":1},"2":{"138":1,"455":1}}],["many",{"2":{"69":1,"150":1,"225":1,"246":1,"249":1,"435":1,"464":1,"484":1}}],["mana",{"2":{"68":1}}],["managing",{"0":{"4":1}}],["manages",{"2":{"173":1}}],["manager",{"0":{"135":1,"164":1},"1":{"136":1},"2":{"135":4,"136":1,"137":5,"164":1}}],["management",{"0":{"386":1,"445":1},"1":{"387":1,"388":1,"389":1,"390":1,"446":1,"447":1,"448":1,"449":1,"450":1},"2":{"17":1,"361":1,"363":1,"445":1}}],["managed",{"2":{"2":1,"4":1,"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1,"458":1}}],["manage",{"0":{"335":1},"1":{"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"2":1,"8":1,"102":1,"179":1,"251":1,"336":1,"379":1}}],["master",{"2":{"10":1,"67":2,"68":1,"295":1}}],["may",{"2":{"8":1,"32":1,"39":1,"45":1,"47":1,"72":1,"136":1,"156":1,"164":2,"200":1,"247":1,"249":2,"281":1,"293":1,"295":1,"296":1,"300":1,"305":1,"306":1,"333":2,"354":1,"376":1,"395":1,"404":1,"413":1,"433":1,"439":1,"457":1}}],["merkle",{"2":{"439":1,"443":1}}],["mechanism",{"2":{"436":1}}],["measures",{"2":{"199":1}}],["meaning",{"2":{"435":1}}],["meant",{"2":{"164":1,"364":1}}],["means",{"2":{"36":1,"39":2,"90":1,"199":1,"364":1,"365":1,"383":1,"387":1,"405":1,"413":1,"414":1,"445":1}}],["memory",{"2":{"181":1}}],["members",{"2":{"0":1}}],["menu",{"2":{"142":1,"143":1,"222":1}}],["mentioned",{"2":{"58":1,"86":1}}],["message",{"0":{"223":1,"233":1,"235":1,"462":1,"471":1,"473":1},"1":{"224":1,"225":1,"226":1,"463":1,"464":1,"465":1},"2":{"136":1,"159":2,"225":4,"229":1,"233":1,"235":3,"236":1,"307":4,"408":1,"425":5,"426":1,"456":1,"461":2,"464":4,"467":1,"471":1,"473":3,"474":1}}],["messages",{"0":{"159":1},"2":{"72":1,"226":1,"228":1,"229":1,"424":1,"425":1,"465":1,"466":1,"467":1}}],["media",{"2":{"84":1}}],["me",{"2":{"68":1,"265":1}}],["metric",{"2":{"188":3}}],["metrics",{"2":{"186":1,"187":1,"188":1}}],["metamask",{"2":{"102":1,"120":1,"129":1,"130":1,"197":1,"199":2,"220":1,"249":1,"251":1,"253":1,"263":1,"273":1,"357":1,"379":1}}],["metal",{"2":{"68":1}}],["metatransactionids",{"2":{"43":1}}],["metatxhash",{"2":{"460":1}}],["metatxid",{"2":{"14":2}}],["metatxnid",{"2":{"13":2}}],["meta",{"2":{"8":3,"13":1,"43":1,"145":2,"246":1,"247":1,"359":1,"364":1,"376":1,"484":1}}],["metadataclient",{"2":{"49":2,"62":2,"63":4}}],["metadatawhen",{"2":{"48":1,"61":1}}],["metadataoptions",{"2":{"29":1,"30":1,"34":3,"36":3,"43":1,"47":1}}],["metadatafield",{"2":{"4":1}}],["metadata",{"0":{"2":1,"4":1,"29":1,"30":1,"36":1,"48":1,"49":1,"50":1,"51":1,"55":1,"60":1,"61":1,"62":1,"63":1,"65":1,"66":1,"83":1,"84":1,"335":1,"337":1,"339":1,"345":1,"348":1},"1":{"3":1,"4":1,"5":1,"49":1,"50":1,"52":1,"53":1,"54":1,"56":1,"57":1,"58":1,"59":1,"60":1,"62":1,"63":1,"64":2,"65":1,"66":1,"67":2,"68":2,"69":2,"70":2,"84":1,"85":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"2":5,"3":1,"4":18,"5":1,"17":2,"29":2,"30":2,"36":3,"39":4,"41":1,"43":2,"47":3,"48":4,"49":8,"50":1,"51":5,"52":5,"53":2,"54":1,"55":9,"56":10,"57":1,"58":8,"59":4,"60":7,"61":6,"62":10,"63":21,"64":6,"65":3,"67":6,"68":4,"69":2,"70":1,"80":1,"84":1,"336":1,"337":1,"338":1,"339":1,"344":1,"345":1,"348":4}}],["methods",{"0":{"60":1,"181":1,"301":1,"309":1},"1":{"302":1,"303":1,"304":1,"305":1,"306":1,"307":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1,"320":1,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1},"2":{"36":1,"60":1,"70":1,"86":1,"91":1,"139":1,"151":1,"153":1,"155":1,"296":1,"301":1,"309":2,"334":2,"344":1,"415":1,"417":1,"459":1}}],["method",{"2":{"4":1,"29":2,"30":1,"38":1,"43":1,"45":1,"47":1,"49":1,"62":1,"63":2,"67":2,"68":2,"83":1,"86":1,"139":1,"148":1,"150":1,"151":1,"153":1,"155":1,"156":4,"159":1,"160":1,"161":1,"200":1,"226":1,"293":1,"294":1,"295":1,"307":1,"328":1,"329":2,"331":1,"391":1,"405":2,"413":2,"414":1,"420":1,"421":2,"422":1,"427":1,"451":1,"452":1,"454":1,"455":4,"465":1}}],["otp",{"2":{"364":1,"447":4}}],["otherrainbowkitwallets",{"2":{"265":1}}],["otherconnectors",{"2":{"255":1}}],["others",{"2":{"131":1,"178":1}}],["otherwise",{"2":{"83":1,"310":1,"425":1,"426":1,"427":1,"455":2}}],["other",{"0":{"246":1,"484":1},"2":{"8":1,"39":2,"105":1,"129":1,"130":1,"139":1,"142":1,"143":1,"180":1,"196":2,"219":1,"226":1,"246":1,"249":1,"255":1,"257":1,"265":1,"267":1,"283":1,"284":1,"346":1,"364":2,"402":1,"405":1,"413":1,"442":1,"465":1,"484":1}}],["oauth",{"2":{"364":1,"448":4}}],["omit",{"2":{"307":1}}],["omitted",{"2":{"36":2,"204":1}}],["older",{"0":{"260":1,"271":1},"2":{"260":1,"261":1,"262":2,"270":1,"271":1,"272":1}}],["oldsilver",{"2":{"56":1}}],["os",{"2":{"222":2}}],["occure",{"2":{"190":1}}],["oidc",{"2":{"139":1,"141":1}}],["o",{"2":{"72":2}}],["okay",{"2":{"67":1}}],["ogimage",{"2":{"56":1}}],["opcode",{"2":{"401":1}}],["operated",{"2":{"363":1}}],["operate",{"2":{"362":1}}],["operation",{"2":{"404":1,"416":1,"419":1,"438":1,"446":1}}],["operations",{"2":{"259":1,"269":1}}],["operational",{"2":{"98":1,"372":1}}],["openwithoptions",{"2":{"200":2}}],["openwalletintent",{"2":{"200":1}}],["openwallet",{"2":{"200":3}}],["opened",{"2":{"161":1,"446":1,"447":1}}],["openidauthentication",{"2":{"133":1}}],["opening",{"0":{"124":1},"2":{"136":1,"157":1,"204":1}}],["openning",{"2":{"72":2}}],["open",{"2":{"72":2,"78":1,"83":2,"100":1,"109":2,"124":1,"135":1,"139":2,"142":1,"143":1,"161":1,"185":2,"200":2,"209":1,"217":1,"245":1,"249":1,"340":1,"391":1,"447":2,"448":1,"483":1}}],["opensea",{"2":{"36":1,"50":2,"67":3,"70":1}}],["optionality",{"2":{"197":1}}],["optionally",{"2":{"43":5,"149":1,"151":1,"153":1,"155":1,"200":1,"248":1,"377":1}}],["optional",{"0":{"258":1,"259":1,"268":1,"269":1,"277":1,"278":1,"287":1},"2":{"29":5,"30":4,"43":4,"47":4,"72":2,"78":1,"107":1,"150":1,"173":1,"207":1,"307":1}}],["option",{"2":{"12":3,"13":4,"36":1,"55":1,"72":2,"90":1,"188":1,"199":2,"201":1,"214":1,"219":1,"222":1,"295":1,"333":1}}],["options",{"0":{"12":1,"111":1,"112":1,"193":1,"196":1,"201":1,"258":1,"259":1,"285":1},"1":{"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"286":1,"287":1},"2":{"7":1,"12":6,"13":1,"29":1,"30":1,"36":1,"43":1,"47":1,"72":2,"78":1,"86":1,"103":1,"111":2,"119":2,"120":2,"129":2,"192":1,"193":2,"195":1,"197":1,"200":2,"215":1,"252":1,"255":1,"258":1,"268":2,"283":2,"353":2,"380":1,"385":2,"386":1}}],["optimal",{"2":{"8":1}}],["obvious",{"2":{"156":1}}],["objectdark",{"2":{"113":1}}],["objects",{"2":{"69":1,"154":1}}],["object",{"0":{"88":1},"2":{"29":1,"30":1,"43":2,"45":1,"47":1,"68":2,"69":1,"73":1,"88":1,"91":1,"113":2,"115":1,"124":1,"125":1,"135":2,"137":1,"148":1,"151":1,"153":1,"155":1,"156":1,"159":1,"160":1,"164":3,"175":1,"201":1,"225":2,"307":1,"308":1,"328":2,"329":3,"460":2,"461":1,"464":2}}],["obtained",{"2":{"447":1,"448":1}}],["obtain",{"2":{"3":1,"139":1,"148":1,"159":1,"160":1,"447":2,"448":2}}],["obtaining",{"0":{"3":1},"2":{"2":1}}],["outlined",{"2":{"91":1}}],["out",{"2":{"86":1,"91":1,"93":1,"102":1,"103":1,"126":1,"136":2,"147":1,"148":1,"159":1,"160":1,"164":1,"165":1,"193":1,"194":1,"196":1,"198":1,"200":1,"226":1,"249":1,"251":1,"252":1,"350":1,"367":1,"374":1,"379":1,"380":1,"425":1,"426":1,"465":1}}],["outside",{"2":{"17":1,"151":1,"153":1,"155":1,"200":1}}],["ours",{"2":{"178":1}}],["our",{"2":{"2":1,"3":2,"4":1,"6":1,"7":1,"28":1,"29":1,"31":1,"36":1,"37":1,"39":2,"42":1,"44":1,"46":1,"49":1,"56":1,"62":1,"63":2,"70":1,"72":1,"93":2,"94":1,"100":1,"101":1,"102":1,"103":1,"132":1,"133":1,"136":3,"137":1,"139":2,"141":1,"150":2,"151":1,"152":2,"153":1,"154":2,"155":1,"157":1,"158":1,"164":2,"165":1,"186":1,"187":1,"192":2,"193":3,"194":2,"195":2,"196":2,"197":3,"198":2,"245":1,"249":3,"250":1,"251":1,"252":1,"295":1,"296":1,"308":1,"309":1,"328":1,"329":2,"331":2,"333":1,"350":1,"351":1,"367":2,"368":1,"374":1,"378":1,"379":1,"380":1,"391":1,"483":1}}],["ownable",{"0":{"334":1},"2":{"334":4}}],["ownership",{"2":{"72":1,"90":1}}],["owner",{"2":{"72":1,"361":1}}],["owned",{"0":{"355":1},"1":{"356":1,"357":1},"2":{"29":1,"121":1,"354":1,"355":1,"389":1}}],["own",{"2":{"6":1,"56":1,"102":1,"129":1,"132":1,"161":1,"163":1,"165":1,"171":1,"175":1,"193":2,"251":1,"296":1,"308":1,"333":1,"348":1,"379":1,"386":1,"442":2}}],["override",{"2":{"113":1,"404":1,"408":1,"412":1,"427":1}}],["overwritten",{"2":{"113":1,"137":1}}],["overview",{"0":{"122":1,"188":1,"192":1,"195":1,"362":1},"1":{"189":1,"190":1,"191":1,"193":1,"194":1,"196":1,"197":1,"198":1,"363":1,"364":1},"2":{"31":1,"188":1}}],["over",{"2":{"6":1,"171":1,"181":1,"338":1,"347":1,"389":1,"390":1}}],["orchestration",{"2":{"193":1}}],["origin",{"0":{"204":1},"2":{"86":1,"204":1}}],["originaddress",{"2":{"56":1}}],["orgs",{"2":{"71":1,"80":1}}],["organizations",{"2":{"39":1}}],["or",{"0":{"35":1,"49":1,"54":1,"62":1,"220":1},"2":{"4":4,"7":1,"8":2,"10":1,"29":1,"30":1,"32":2,"33":3,"36":1,"38":1,"39":3,"41":1,"43":1,"45":1,"47":2,"48":1,"49":4,"52":2,"55":1,"56":2,"57":1,"58":1,"59":1,"60":4,"61":2,"62":4,"63":7,"64":1,"67":1,"69":2,"72":4,"78":1,"80":2,"83":4,"84":1,"86":3,"87":1,"90":1,"103":1,"105":2,"113":1,"123":2,"126":1,"129":1,"130":1,"133":1,"135":3,"137":1,"139":1,"141":1,"145":2,"147":1,"148":1,"149":2,"156":3,"157":1,"159":1,"160":3,"165":1,"167":1,"170":1,"173":1,"175":1,"178":2,"180":1,"186":1,"193":2,"196":3,"197":1,"199":1,"200":1,"212":1,"219":1,"226":2,"228":1,"229":1,"234":1,"236":1,"241":1,"243":1,"246":2,"247":2,"249":3,"252":1,"254":1,"260":1,"261":1,"264":1,"270":3,"271":1,"274":1,"305":2,"306":2,"311":1,"314":1,"316":1,"318":1,"320":1,"327":1,"328":1,"329":2,"330":1,"331":1,"333":1,"346":1,"354":1,"361":1,"363":1,"364":1,"365":2,"376":2,"380":1,"382":1,"383":1,"386":1,"387":3,"390":3,"391":2,"392":1,"395":1,"403":1,"407":1,"422":1,"437":2,"439":1,"440":1,"442":2,"453":1,"456":2,"458":2,"459":1,"460":1,"461":1,"465":2,"466":1,"467":1,"472":1,"474":1,"479":1,"481":1,"484":2}}],["orderid",{"2":{"391":1}}],["ordering",{"2":{"9":1,"436":1}}],["orderbook",{"2":{"391":1}}],["orderbookorder",{"2":{"391":1}}],["orderbookcontractaddress",{"2":{"352":1,"391":4}}],["orderstatus",{"2":{"391":2}}],["orders",{"2":{"391":4}}],["ordersummaryitems",{"0":{"127":1},"2":{"125":1,"127":2}}],["order",{"0":{"127":1},"2":{"0":1,"2":1,"3":1,"4":1,"29":1,"39":1,"72":1,"79":1,"80":1,"81":1,"83":1,"85":1,"86":1,"119":1,"120":1,"127":1,"136":1,"141":1,"156":1,"171":1,"179":1,"183":1,"326":1,"327":1,"329":1,"362":1,"391":8,"401":1,"438":1,"446":1}}],["onvalidationrequired",{"0":{"456":1},"2":{"456":2,"457":2,"458":3}}],["onmeta",{"2":{"353":1,"385":1}}],["onmigration",{"2":{"72":1}}],["onboard",{"0":{"273":1},"1":{"274":1,"275":1,"276":1,"277":1,"278":1,"279":1},"2":{"199":1,"249":1,"273":3,"274":2,"275":3,"279":1}}],["onboarding",{"2":{"101":1,"102":1,"138":1,"169":1,"199":1,"250":1,"251":1,"378":1,"379":1}}],["onfailuretest",{"2":{"181":1}}],["onresponse",{"2":{"181":1}}],["onramp",{"0":{"27":1}}],["ondeploycontractfailedhandler",{"2":{"160":2}}],["ondeploycontractfailed",{"2":{"160":2}}],["ondeploycontractcompletehandler",{"2":{"160":2}}],["ondeploycontractcomplete",{"2":{"160":2}}],["onsessionstatechanged",{"2":{"448":2}}],["onsendtransactionfailedhandler",{"2":{"148":2}}],["onsendtransactionfailed",{"2":{"148":2,"160":1}}],["onsendtransactioncompletehandler",{"2":{"148":2}}],["onsendtransactioncomplete",{"2":{"148":2,"160":1}}],["onsuccess=",{"2":{"448":1}}],["onsuccess",{"2":{"178":1}}],["onsignmessagecompletehandler",{"2":{"159":2}}],["onsignmessagecomplete",{"2":{"159":2}}],["onwaaswalletcreatedhander",{"2":{"148":1,"159":1,"160":1}}],["onwaaswalletcreatedhandler",{"2":{"147":3}}],["onwaaswalletcreated",{"2":{"147":2}}],["onclick=",{"2":{"108":1,"109":1,"124":1}}],["onclick",{"2":{"108":2,"109":2,"124":2,"200":1}}],["onchainreader",{"2":{"226":1,"465":1}}],["onchain",{"2":{"17":1,"64":1}}],["once",{"2":{"3":1,"13":1,"72":1,"81":1,"91":1,"97":1,"108":1,"140":1,"141":1,"147":1,"171":2,"178":1,"180":1,"185":1,"193":1,"200":1,"222":1,"294":1,"300":1,"305":1,"306":1,"343":1,"371":1,"387":1,"420":1,"447":1,"455":1}}],["onlyself",{"2":{"404":1,"405":1,"412":1,"413":1}}],["only",{"0":{"295":1},"2":{"10":1,"12":1,"29":1,"30":1,"43":1,"47":1,"83":2,"97":1,"105":1,"121":1,"133":2,"137":2,"147":1,"157":1,"166":1,"173":1,"213":1,"219":1,"236":1,"237":2,"239":1,"240":1,"247":1,"293":1,"294":1,"305":1,"306":1,"328":1,"333":1,"353":1,"361":1,"364":3,"371":1,"376":1,"385":1,"386":2,"390":1,"403":1,"405":1,"407":1,"413":1,"437":1,"442":1,"449":1,"461":1,"474":1,"475":2,"477":1,"478":1}}],["on",{"0":{"25":1,"26":1,"27":1,"36":1,"38":4,"175":1,"176":1,"338":1,"341":1,"353":1,"385":1,"429":1},"2":{"3":2,"8":1,"10":1,"13":1,"29":2,"30":2,"31":1,"32":2,"36":2,"38":2,"39":3,"43":2,"45":4,"47":3,"49":1,"55":1,"56":2,"61":1,"67":3,"68":2,"70":1,"72":1,"79":1,"80":1,"81":1,"89":1,"90":1,"96":1,"101":1,"114":1,"129":2,"130":1,"133":1,"135":5,"136":2,"137":1,"138":1,"139":1,"140":2,"141":1,"149":1,"150":1,"156":5,"161":1,"163":1,"164":1,"166":1,"170":1,"173":2,"179":4,"181":1,"185":7,"188":1,"193":1,"196":2,"197":1,"199":5,"200":3,"202":1,"219":1,"220":1,"226":4,"229":1,"234":1,"236":1,"238":1,"239":1,"240":1,"243":1,"246":1,"247":2,"249":1,"250":1,"260":1,"261":3,"270":3,"271":1,"293":4,"294":2,"295":1,"296":2,"310":3,"333":1,"334":1,"337":1,"339":1,"340":2,"341":2,"342":1,"343":1,"344":2,"345":1,"353":5,"355":1,"361":1,"363":1,"365":1,"370":1,"376":2,"378":1,"382":1,"383":2,"385":5,"386":2,"391":1,"398":1,"402":1,"406":1,"407":1,"415":1,"417":1,"419":1,"427":1,"442":1,"451":1,"461":2,"465":4,"467":1,"472":1,"474":1,"476":1,"477":1,"478":1,"481":1,"484":1}}],["ones",{"2":{"193":1}}],["one",{"0":{"452":1},"2":{"0":1,"4":1,"29":1,"36":1,"39":2,"56":1,"58":1,"72":3,"78":1,"81":1,"83":3,"145":1,"149":1,"157":1,"160":1,"178":1,"181":1,"185":1,"188":1,"211":1,"222":1,"238":1,"239":1,"240":1,"249":1,"294":1,"295":1,"305":1,"306":1,"344":1,"362":1,"386":1,"387":1,"403":1,"408":1,"421":1,"447":1,"452":1,"453":1,"476":1,"477":1,"478":1}}],["official",{"2":{"119":1,"120":1,"128":1,"129":1,"294":1}}],["off",{"2":{"68":1}}],["offered",{"2":{"158":1}}],["offer",{"2":{"57":1,"193":1,"199":1,"249":1,"363":1,"391":1}}],["offers",{"2":{"1":1,"2":1,"8":1,"32":1,"51":1,"55":1,"59":1,"195":1,"361":1}}],["often",{"2":{"65":1,"154":1}}],["of",{"0":{"9":1,"17":1,"29":1,"30":1,"49":1,"197":1,"241":1,"260":1,"271":1,"294":1,"397":1,"479":1},"2":{"0":3,"4":3,"6":1,"8":7,"9":3,"10":1,"12":2,"14":1,"29":4,"30":5,"32":3,"33":2,"34":2,"35":1,"36":3,"38":1,"39":6,"40":1,"41":2,"43":7,"45":5,"47":5,"49":3,"54":1,"55":2,"56":4,"58":3,"59":2,"60":6,"62":3,"63":2,"67":4,"68":1,"69":3,"70":1,"72":3,"78":1,"79":2,"80":1,"81":1,"83":2,"86":2,"90":1,"93":1,"98":1,"99":2,"100":2,"101":2,"102":2,"114":1,"116":1,"117":1,"119":1,"120":1,"121":1,"127":1,"129":2,"130":2,"131":1,"136":4,"137":1,"138":1,"148":2,"149":4,"151":3,"152":1,"153":3,"154":1,"155":3,"156":4,"157":4,"158":3,"160":1,"161":2,"162":1,"164":1,"165":1,"171":1,"173":4,"175":1,"178":1,"179":3,"180":2,"181":4,"186":1,"188":1,"189":1,"190":1,"191":1,"192":2,"193":1,"194":2,"196":2,"197":3,"199":7,"200":1,"202":1,"204":1,"211":2,"212":1,"216":1,"217":1,"220":1,"222":1,"225":1,"229":1,"238":1,"239":1,"240":1,"244":2,"245":2,"247":2,"249":3,"250":2,"251":2,"254":2,"255":1,"258":1,"260":3,"261":1,"262":3,"265":1,"268":2,"270":1,"271":3,"278":1,"279":2,"280":1,"287":1,"293":1,"294":3,"295":5,"297":1,"298":2,"300":1,"301":2,"305":2,"306":2,"307":1,"308":1,"309":3,"310":2,"317":1,"325":1,"328":1,"329":2,"331":1,"333":5,"338":1,"340":2,"341":1,"344":3,"346":1,"355":2,"358":2,"361":3,"362":4,"364":4,"365":3,"367":1,"372":1,"376":1,"378":2,"379":2,"386":3,"387":2,"388":1,"389":1,"390":2,"391":12,"392":1,"393":1,"394":2,"395":3,"396":1,"397":4,"398":2,"399":1,"400":2,"401":2,"402":3,"404":3,"405":2,"406":1,"407":5,"408":1,"409":1,"411":1,"413":5,"414":2,"418":1,"419":3,"421":1,"422":1,"424":1,"425":1,"426":1,"431":1,"435":4,"437":2,"439":1,"441":2,"442":4,"443":1,"444":8,"445":1,"446":1,"449":1,"450":1,"453":1,"454":1,"460":2,"464":1,"467":1,"476":1,"477":1,"478":1,"482":2,"483":2}}],["i32",{"2":{"391":2}}],["ignored",{"2":{"200":1,"213":1,"214":1,"215":1,"397":1}}],["iwallet",{"2":{"161":1,"298":2,"299":2,"300":2,"301":1}}],["iindexer",{"2":{"158":2}}],["icon",{"2":{"135":1,"137":1,"185":1}}],["icons",{"2":{"10":1,"56":1}}],["ipfs",{"2":{"67":2,"336":1,"337":1,"338":3,"345":1}}],["ios",{"0":{"142":1,"184":1},"2":{"133":1,"135":1,"142":2,"167":1,"182":1,"184":1,"185":1}}],["io",{"2":{"50":1,"67":1,"226":1,"248":1,"377":1,"465":1}}],["identifier",{"2":{"338":1,"461":1}}],["identity",{"2":{"225":1,"226":1,"364":1,"365":1,"452":1,"453":1,"464":1,"465":1}}],["ideas",{"2":{"165":2}}],["ideal",{"2":{"137":1,"193":2}}],["idea",{"2":{"8":1}}],["idtokenin",{"2":{"173":1,"175":1}}],["idtoken",{"2":{"139":1,"140":1,"141":1,"147":1,"446":2,"447":6,"448":2,"449":1,"450":1,"460":1,"461":1}}],["ids",{"0":{"30":1},"2":{"43":1,"56":2,"62":1,"63":1,"154":1,"391":2}}],["idsyou",{"2":{"29":1}}],["id",{"2":{"12":1,"13":1,"14":1,"49":1,"56":3,"58":1,"62":1,"63":3,"64":1,"67":1,"68":2,"70":1,"72":1,"78":1,"106":2,"107":2,"119":1,"120":1,"129":2,"130":1,"173":1,"175":2,"183":6,"240":2,"241":1,"258":1,"268":1,"286":1,"307":3,"315":1,"319":1,"337":1,"344":1,"345":2,"346":1,"348":1,"364":1,"391":1,"448":1,"449":2,"450":2,"460":1,"478":2,"479":1}}],["iethclient",{"2":{"308":2,"309":1}}],["ierc20",{"2":{"13":1}}],["ie",{"0":{"37":1},"1":{"38":1},"2":{"4":1,"8":1,"49":1,"62":1,"63":1,"208":1}}],["i",{"0":{"197":1,"294":1,"295":1},"2":{"4":1,"68":2,"78":1,"145":1}}],["imperative",{"2":{"419":1}}],["improved",{"2":{"386":1}}],["improperly",{"2":{"296":1}}],["implicit",{"2":{"141":1}}],["implementing",{"2":{"334":1}}],["implemented",{"2":{"80":1,"151":1,"153":1,"155":1,"170":1,"173":1,"309":1,"354":1,"358":1,"407":1,"444":1}}],["implements",{"2":{"78":1,"171":1}}],["implementationaddressaddress",{"2":{"405":1}}],["implementations",{"2":{"298":1}}],["implementation",{"0":{"392":1,"403":1,"406":1},"1":{"404":1,"405":1,"406":1},"2":{"32":1,"59":1,"80":1,"91":1,"158":1,"170":1,"175":2,"402":1,"404":4,"405":1,"406":4,"414":1,"444":3}}],["implement",{"0":{"88":1},"2":{"32":1,"59":1,"91":1,"139":1,"356":1,"358":2,"407":1,"445":1}}],["important",{"0":{"297":1},"2":{"138":1,"139":1,"162":1,"301":1,"330":1}}],["importantly",{"2":{"3":1}}],["imported",{"2":{"138":2,"164":1,"255":1,"265":1,"295":1}}],["importing",{"2":{"136":1}}],["import",{"2":{"7":2,"12":2,"29":2,"30":2,"33":1,"34":1,"38":2,"43":2,"45":2,"47":2,"49":2,"52":1,"53":1,"62":2,"63":4,"72":2,"78":1,"83":2,"86":2,"91":2,"98":1,"106":6,"107":8,"108":2,"109":1,"123":1,"124":1,"130":1,"135":4,"136":2,"137":3,"200":2,"225":1,"226":5,"231":2,"255":1,"265":2,"275":1,"283":1,"284":2,"294":2,"295":2,"372":1,"391":1,"406":1,"425":1,"426":2,"446":1,"447":1,"448":8,"449":1,"450":1,"460":1,"461":1,"464":1,"465":5,"469":2}}],["immediately",{"2":{"13":1,"79":1}}],["imagehashbytes32hash",{"2":{"409":1,"413":1}}],["imagehash",{"0":{"398":1,"443":1},"1":{"399":1,"401":1},"2":{"398":2,"399":1,"400":1,"401":1,"408":3,"410":1,"412":2,"413":3,"419":3,"422":4,"442":1,"443":3,"444":4}}],["images",{"0":{"337":1},"2":{"17":1,"56":1,"337":1,"338":1,"347":1}}],["image",{"0":{"399":1},"2":{"4":7,"56":1,"67":1,"68":1,"200":2,"212":3,"337":1,"338":1}}],["iterate",{"2":{"425":2,"426":2,"427":1}}],["items",{"2":{"30":1,"336":1}}],["item",{"0":{"335":1},"1":{"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"29":1,"185":2,"337":1,"342":1}}],["itself",{"2":{"239":1,"240":1,"390":1,"405":1,"406":1,"413":1,"417":2,"447":1,"477":1,"478":1}}],["its",{"2":{"130":1,"154":1,"200":1,"225":1,"295":1,"442":2,"464":1}}],["it",{"0":{"7":1,"162":1,"187":1},"2":{"3":3,"10":1,"31":1,"36":2,"39":10,"55":1,"56":1,"67":2,"68":1,"72":3,"83":2,"86":2,"88":1,"89":1,"90":3,"98":1,"100":1,"130":1,"136":3,"137":3,"138":1,"139":3,"145":3,"147":1,"150":1,"156":5,"157":1,"161":1,"163":2,"164":2,"171":5,"173":1,"174":2,"178":2,"181":1,"185":2,"187":1,"199":1,"200":1,"225":1,"228":1,"232":1,"245":1,"247":1,"249":1,"253":1,"259":1,"261":1,"263":1,"269":1,"270":1,"273":1,"289":1,"295":1,"297":1,"300":1,"303":1,"304":1,"310":1,"327":1,"328":3,"329":1,"330":1,"331":2,"333":1,"338":2,"343":1,"344":1,"345":3,"346":3,"348":1,"358":1,"363":2,"364":5,"365":3,"372":1,"382":1,"383":1,"391":2,"395":1,"402":3,"403":1,"405":1,"413":2,"416":1,"419":3,"420":1,"421":1,"437":1,"442":3,"444":1,"446":1,"455":2,"456":2,"460":1,"461":2,"464":1,"466":1,"470":1,"483":1}}],["isthis",{"2":{"449":2}}],["issenttransactionresponse",{"2":{"460":3,"461":2}}],["issessionvalid",{"2":{"454":2}}],["issignedin",{"2":{"448":1}}],["issignerleaf",{"2":{"443":1}}],["issubdigestleaf",{"2":{"443":1}}],["issued",{"2":{"461":1}}],["issuer",{"2":{"449":2}}],["issue",{"2":{"293":1}}],["islisting",{"2":{"352":1,"391":1}}],["ismounted",{"2":{"294":2}}],["isbound",{"2":{"173":1}}],["isnestedleaf",{"2":{"443":1}}],["isn",{"2":{"137":1,"164":1}}],["isconnected",{"2":{"108":2}}],["isvalidsignature",{"2":{"427":3}}],["isvalidbooltrue",{"2":{"410":1}}],["isvalidimage",{"0":{"408":1},"1":{"409":1,"410":1},"2":{"408":1}}],["isvalidmessagesignature",{"2":{"234":1,"472":1}}],["isvalidethauthproof",{"2":{"86":1}}],["isvalid",{"2":{"86":2,"234":2,"408":1,"427":2,"454":2,"472":2}}],["isfeerequired",{"2":{"10":1}}],["is",{"2":{"1":1,"2":1,"3":3,"4":4,"5":1,"8":1,"9":1,"12":2,"14":1,"28":1,"29":1,"30":1,"31":2,"32":3,"35":1,"36":3,"37":1,"39":8,"41":2,"42":1,"43":1,"44":1,"45":1,"46":1,"47":2,"54":1,"55":2,"56":2,"57":1,"58":1,"67":5,"68":2,"69":5,"72":2,"78":2,"79":2,"80":1,"81":1,"83":2,"86":6,"90":2,"97":2,"98":1,"99":4,"100":1,"101":1,"105":1,"106":1,"115":1,"129":1,"136":4,"137":2,"138":2,"139":3,"141":1,"145":1,"147":2,"148":3,"149":4,"150":3,"152":1,"154":1,"156":2,"157":2,"158":3,"159":2,"160":4,"161":3,"162":1,"163":1,"164":1,"166":1,"171":1,"173":9,"174":2,"179":1,"180":2,"181":1,"185":2,"193":3,"196":3,"199":6,"200":2,"205":2,"207":1,"209":1,"213":1,"214":1,"215":1,"218":1,"222":6,"225":3,"226":3,"228":2,"238":1,"239":3,"240":3,"241":1,"243":1,"244":4,"245":1,"246":2,"247":2,"249":1,"250":1,"253":1,"254":1,"255":1,"257":1,"258":1,"260":1,"262":3,"263":1,"264":1,"265":1,"267":1,"268":1,"271":1,"272":3,"273":1,"274":1,"279":1,"280":1,"288":1,"289":1,"290":2,"291":1,"293":4,"294":5,"295":5,"296":2,"298":1,"299":2,"300":2,"305":5,"306":5,"307":1,"308":1,"310":4,"315":1,"319":1,"327":1,"328":3,"330":1,"333":2,"343":1,"344":1,"346":2,"348":1,"354":1,"363":3,"364":2,"365":4,"371":2,"372":1,"376":1,"378":1,"386":2,"387":3,"389":1,"390":3,"391":4,"397":1,"398":4,"402":1,"406":1,"407":2,"408":2,"411":1,"412":1,"413":4,"414":4,"415":2,"416":1,"417":1,"418":2,"419":4,"420":1,"421":1,"422":3,"425":2,"426":2,"427":5,"435":1,"437":2,"438":2,"439":1,"440":2,"441":4,"442":7,"443":6,"444":1,"446":1,"447":3,"448":7,"452":1,"454":1,"455":1,"456":4,"458":1,"460":1,"461":3,"464":3,"465":3,"466":2,"476":1,"477":3,"478":3,"479":1,"481":1,"482":4,"483":1,"484":2}}],["iframe",{"2":{"17":1}}],["if",{"2":{"0":1,"4":1,"5":1,"12":1,"13":3,"29":1,"30":1,"32":1,"33":1,"36":1,"43":1,"47":1,"52":1,"56":1,"59":1,"68":1,"69":1,"72":7,"73":1,"78":3,"79":2,"86":9,"88":1,"89":1,"91":1,"103":1,"121":1,"129":2,"135":2,"136":1,"137":4,"138":1,"145":2,"147":2,"148":2,"150":2,"151":1,"153":1,"155":1,"156":3,"159":2,"160":2,"171":2,"173":2,"180":1,"181":2,"185":1,"193":1,"197":1,"199":3,"200":4,"213":1,"214":1,"215":1,"218":1,"219":1,"222":2,"226":3,"229":1,"234":1,"236":2,"237":1,"246":3,"247":1,"249":2,"252":1,"254":1,"260":1,"271":1,"294":1,"305":4,"306":4,"307":2,"308":1,"310":1,"328":1,"329":2,"330":2,"331":2,"332":1,"345":1,"348":1,"358":1,"365":1,"376":1,"380":1,"386":1,"387":2,"389":2,"390":2,"391":3,"405":1,"408":1,"410":1,"413":1,"416":1,"419":1,"421":1,"422":1,"425":1,"426":1,"427":3,"437":1,"441":1,"442":1,"443":3,"444":1,"446":1,"448":1,"453":1,"455":2,"456":2,"460":2,"461":2,"465":3,"467":1,"472":1,"474":2,"475":1,"484":3}}],["inaccessible",{"2":{"442":1}}],["inactive",{"2":{"365":1}}],["inner",{"2":{"442":1}}],["individual",{"2":{"386":1}}],["indicating",{"2":{"295":1}}],["indexing",{"2":{"39":1}}],["indexeddb",{"2":{"388":2}}],["indexeable",{"2":{"63":1}}],["indexes",{"2":{"39":1}}],["indexer",{"0":{"31":1,"39":1},"1":{"32":1,"33":1,"34":1,"35":1,"40":1,"41":1},"2":{"28":1,"29":12,"30":12,"31":4,"32":9,"33":6,"34":5,"35":1,"36":3,"37":1,"38":12,"39":10,"42":1,"43":13,"44":1,"45":15,"46":1,"47":14,"48":2,"55":1,"61":2,"63":1,"132":1,"158":3,"166":1}}],["index",{"2":{"14":1,"39":1,"86":1,"460":1}}],["independently",{"2":{"363":1,"364":1,"365":1}}],["independent",{"2":{"8":1,"9":2,"79":1,"386":2,"431":1,"438":1}}],["inherit",{"2":{"294":1,"334":1}}],["inherits",{"2":{"171":1}}],["incorrect",{"2":{"413":1}}],["increase",{"2":{"199":1}}],["increment",{"2":{"132":3,"166":3}}],["including",{"0":{"47":1},"2":{"41":2,"130":1,"154":1,"258":1,"268":1,"327":1,"391":1}}],["includes",{"2":{"43":1,"72":1,"199":1,"449":1,"460":1}}],["includecollectiontokens",{"2":{"29":1}}],["includecontracts",{"2":{"29":1,"30":1,"36":1,"43":1,"47":1}}],["includedpaymentproviders",{"0":{"216":1},"2":{"200":2,"216":1}}],["included",{"2":{"29":2,"30":2,"39":1,"43":2,"47":2,"309":1,"460":1}}],["includemetadata",{"2":{"29":3,"30":3,"34":2,"38":1,"43":3,"45":2,"47":3,"48":1,"61":1}}],["include",{"2":{"4":1,"10":1,"36":1,"56":1,"65":1,"73":1,"113":1,"114":1,"149":1,"150":1,"157":1,"329":1,"413":1}}],["input",{"2":{"118":1,"149":1,"178":1,"413":1}}],["inputted",{"2":{"83":1}}],["inline",{"2":{"118":1}}],["involve",{"2":{"459":1}}],["involves",{"2":{"160":1}}],["invoking",{"0":{"109":1}}],["invoke",{"2":{"108":1}}],["invalid",{"2":{"89":1,"236":1,"397":1,"404":1,"437":1,"474":1}}],["investigate",{"2":{"0":1}}],["initiateauth",{"2":{"447":1}}],["initiated",{"2":{"222":1}}],["initiating",{"2":{"287":1}}],["initialization",{"0":{"283":1},"2":{"444":2}}],["initializes",{"2":{"295":1}}],["initialized",{"2":{"129":1,"283":1,"284":1,"295":1}}],["initialize",{"0":{"231":1,"469":1},"2":{"72":1,"81":2,"414":1}}],["initial",{"0":{"400":1,"444":1},"1":{"401":1},"2":{"178":1,"193":1,"400":1,"402":1,"403":1,"438":1,"444":5}}],["initwallet",{"2":{"200":2}}],["init",{"2":{"81":3}}],["infinity",{"2":{"441":2}}],["infura",{"2":{"226":2,"465":2}}],["infer",{"2":{"70":1}}],["informed",{"2":{"390":1}}],["informs",{"2":{"295":1}}],["information",{"2":{"29":1,"32":1,"39":2,"56":1,"67":1,"70":1,"96":1,"170":3,"194":1,"295":1,"370":1,"389":1}}],["info",{"2":{"49":1,"67":1,"71":1,"73":1,"80":1,"81":1,"145":2,"200":1,"390":1,"407":1}}],["infrastructure",{"2":{"6":2,"39":1,"99":1,"196":1,"244":1,"482":1}}],["insightful",{"2":{"187":1}}],["insights",{"2":{"186":1}}],["inside",{"2":{"8":1,"35":1,"54":1}}],["insecurely",{"2":{"170":1}}],["inspector",{"2":{"164":2}}],["instead",{"2":{"67":1,"130":1,"145":1,"225":1,"260":1,"271":1,"308":1,"329":1,"386":1,"398":2,"414":1,"443":1,"445":1,"464":1}}],["instructions",{"0":{"64":1},"2":{"31":1,"183":1}}],["instantiating",{"2":{"200":1}}],["instantiate",{"2":{"91":1}}],["instances",{"2":{"457":1}}],["instance",{"2":{"29":1,"98":1,"158":1,"200":2,"372":1,"447":2}}],["installing",{"0":{"105":1},"2":{"104":1,"137":1}}],["installed",{"2":{"81":1,"135":1,"199":1,"248":1,"254":2,"264":1,"281":1,"377":1}}],["installation",{"0":{"31":1,"32":1,"33":1,"34":1,"35":1,"52":1,"53":1,"54":1,"96":1,"134":1,"168":1,"254":1,"264":1,"274":1,"281":1,"370":1},"1":{"32":1,"33":2,"34":2,"35":2,"135":1,"136":1,"137":1,"169":1,"170":1},"2":{"52":1}}],["install",{"0":{"247":1,"376":1},"1":{"248":1,"377":1},"2":{"7":2,"33":2,"52":2,"81":1,"86":2,"91":2,"96":2,"105":5,"107":1,"123":3,"136":1,"199":1,"200":2,"221":1,"247":2,"254":1,"260":2,"264":1,"271":2,"274":1,"281":1,"370":2,"376":2,"384":1}}],["int256",{"2":{"330":1}}],["int",{"2":{"150":1,"318":1,"330":1}}],["introduction",{"0":{"132":1,"166":1,"296":1,"336":1},"1":{"133":1,"167":1,"297":1}}],["introduced",{"2":{"36":1}}],["introducing",{"2":{"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1}}],["into",{"0":{"250":1,"378":1},"1":{"251":1,"379":1},"2":{"6":1,"10":1,"31":1,"81":1,"82":1,"86":1,"101":1,"103":2,"136":1,"137":1,"145":1,"156":1,"157":1,"160":1,"171":2,"178":1,"179":1,"195":1,"196":1,"212":1,"247":1,"250":1,"252":2,"261":1,"270":1,"295":1,"305":1,"306":1,"310":1,"330":1,"339":1,"376":1,"378":1,"380":2,"443":2}}],["intend",{"2":{"390":1}}],["intent",{"2":{"145":19,"200":3,"364":1}}],["integers",{"2":{"330":1}}],["integer",{"2":{"218":1,"319":1,"330":2}}],["integrity",{"2":{"204":1,"225":1,"464":1}}],["integration",{"0":{"123":1,"173":1,"177":1,"293":1},"1":{"124":1,"125":1,"126":1,"127":1,"178":1,"179":1,"180":1,"181":1},"2":{"102":1,"131":1,"132":1,"166":1,"194":1,"196":1,"198":1,"201":1,"251":1,"279":1,"379":1}}],["integrations",{"2":{"29":1,"49":1,"57":1,"62":1,"63":2,"197":1,"391":1}}],["integrating",{"2":{"8":1,"101":1,"200":1,"250":1,"353":1,"378":1,"385":1}}],["integrates",{"2":{"197":1}}],["integrated",{"2":{"35":1,"54":1,"55":1,"132":1,"216":1,"217":1}}],["integrate",{"0":{"18":1,"23":1,"26":1,"27":1,"250":1,"378":1},"1":{"251":1,"379":1},"2":{"0":1,"31":1,"32":1,"59":1,"102":1,"103":1,"123":1,"128":1,"195":1,"246":1,"251":1,"252":1,"361":1,"379":1,"380":1,"383":1,"484":1}}],["intelligently",{"2":{"39":1}}],["interchangeably",{"2":{"300":1}}],["intercepted",{"2":{"178":1}}],["interpret",{"2":{"229":1,"467":1}}],["interoperability",{"2":{"199":1}}],["internally",{"2":{"408":1,"443":1}}],["internal",{"2":{"187":1,"363":1,"408":1,"442":3}}],["intermediate",{"2":{"185":1}}],["interfacing",{"2":{"105":1}}],["interfaces",{"2":{"392":1}}],["interface",{"2":{"8":1,"57":2,"59":1,"72":1,"78":1,"86":1,"91":2,"158":1,"222":1,"238":2,"239":2,"240":2,"241":3,"298":2,"300":1,"301":1,"308":1,"309":1,"334":1,"407":3,"476":2,"477":2,"478":2,"479":3}}],["interested",{"2":{"10":1}}],["interacting",{"2":{"126":1,"149":1,"156":1,"330":1,"333":1,"442":1}}],["interactions",{"0":{"151":1,"153":1,"155":1},"2":{"151":1,"153":1,"155":1,"229":1,"467":1}}],["interaction",{"2":{"80":1,"235":1,"473":1}}],["interact",{"2":{"1":1,"10":1,"90":1,"98":1,"334":1,"363":1,"372":1,"445":1}}],["in",{"0":{"15":1,"21":1,"22":1,"29":1,"46":1,"47":1,"88":1,"115":1,"128":1,"140":1,"141":1,"186":1,"335":1,"446":1,"447":1},"1":{"47":1,"116":1,"117":1,"118":1,"119":1,"120":1,"129":1,"142":1,"143":1,"144":1,"145":1,"146":1,"187":1,"188":1,"189":1,"190":1,"191":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"447":1,"448":1},"2":{"0":3,"2":1,"3":5,"4":6,"8":3,"9":1,"10":3,"12":1,"29":6,"30":3,"31":1,"32":1,"34":1,"36":2,"38":3,"39":8,"41":3,"43":4,"45":3,"47":5,"49":2,"52":1,"53":1,"55":1,"56":3,"58":1,"62":2,"63":6,"65":3,"67":3,"69":5,"70":2,"72":2,"73":1,"79":5,"80":2,"81":7,"82":1,"83":6,"85":1,"86":6,"87":2,"91":1,"99":3,"101":1,"104":2,"108":2,"113":1,"115":1,"116":2,"117":2,"118":2,"119":4,"120":3,"121":4,"123":1,"127":1,"129":1,"130":1,"132":1,"133":3,"135":4,"136":2,"137":6,"138":5,"139":1,"140":2,"141":5,"142":2,"143":2,"145":7,"147":3,"148":1,"149":2,"150":1,"152":1,"154":4,"156":6,"157":2,"159":1,"160":4,"161":3,"164":7,"166":4,"169":2,"170":3,"171":6,"173":6,"174":1,"178":2,"179":2,"181":1,"183":2,"185":5,"186":1,"187":4,"188":2,"192":1,"193":5,"195":1,"196":1,"197":3,"198":1,"200":2,"205":2,"210":2,"213":2,"214":2,"215":2,"216":1,"217":1,"222":1,"225":3,"226":3,"228":1,"229":2,"232":1,"236":1,"238":1,"239":2,"240":2,"241":1,"243":1,"244":3,"246":2,"249":1,"250":1,"258":1,"268":1,"278":1,"290":1,"293":2,"294":4,"295":7,"296":7,"298":2,"305":1,"306":1,"307":1,"308":2,"309":2,"310":2,"311":1,"313":1,"314":2,"315":1,"316":2,"318":1,"319":1,"320":1,"325":1,"326":1,"327":1,"328":1,"329":3,"330":1,"336":1,"337":1,"338":1,"341":1,"346":1,"348":1,"350":1,"353":1,"356":1,"362":1,"363":1,"364":1,"365":4,"378":1,"385":1,"387":1,"388":2,"389":1,"390":1,"391":5,"392":1,"401":1,"404":1,"407":1,"408":1,"413":1,"415":1,"416":1,"422":2,"426":1,"431":1,"435":1,"438":1,"442":1,"446":3,"447":2,"448":1,"452":1,"453":2,"460":1,"464":3,"465":3,"466":1,"467":2,"470":1,"474":1,"476":1,"477":2,"478":2,"479":1,"481":1,"482":3,"484":2}}],["ffailurecallback",{"2":{"181":1}}],["fsequenceerror",{"2":{"181":2}}],["fstoredcredentials",{"2":{"180":1}}],["fstring",{"2":{"173":4,"174":1,"175":1,"180":1,"181":2}}],["fscriptdelegate",{"2":{"173":1}}],["fcredentials",{"2":{"171":1,"173":2,"180":2}}],["fly",{"2":{"337":1}}],["flexible",{"2":{"199":1,"359":1}}],["flexibility",{"2":{"137":1}}],["flagged",{"2":{"416":1}}],["flag",{"2":{"180":1,"208":1}}],["floating",{"2":{"149":1}}],["flows",{"2":{"451":1}}],["flow",{"2":{"141":1,"222":1}}],["fmt",{"2":{"12":1,"13":2,"29":1,"30":1,"38":1,"43":1,"45":1,"47":1}}],["feb",{"2":{"432":1}}],["few",{"2":{"41":1,"102":1,"136":1,"162":1,"164":1,"179":1,"185":1,"251":1,"379":1}}],["feehistoryresult",{"2":{"318":2}}],["feehistory",{"0":{"318":1},"2":{"318":2}}],["feeoption",{"2":{"72":1,"78":1}}],["feeoptions",{"2":{"12":1}}],["feel",{"2":{"56":1,"131":1,"137":1,"139":1,"161":1,"196":1,"249":1}}],["feetokens",{"2":{"10":2}}],["fee",{"0":{"12":1},"2":{"10":3,"12":4,"13":1,"72":1,"73":1,"323":1}}],["fees",{"0":{"10":1},"2":{"10":1,"72":3,"78":1,"318":1,"359":1}}],["fetches",{"0":{"29":1},"2":{"43":1,"47":1}}],["fetching",{"0":{"12":1,"14":1},"2":{"29":1,"61":1,"161":1}}],["fetch",{"0":{"17":1,"30":1,"38":1,"43":1,"45":1,"47":1,"49":1,"62":1},"2":{"7":2,"14":1,"29":1,"39":1,"41":4,"48":1,"58":2,"60":4,"61":1,"62":1,"63":1,"64":2,"86":1,"391":3}}],["feature",{"2":{"6":1,"123":1,"293":1,"295":2,"339":1}}],["features",{"0":{"102":1,"251":1,"379":1},"2":{"1":1,"8":1,"39":1,"132":1,"136":1,"166":1,"246":2,"484":2}}],["fashion",{"2":{"426":1}}],["fast",{"2":{"1":1,"2":1,"8":1,"39":3,"51":1,"55":1}}],["fauthenticatorconfig",{"2":{"183":1}}],["familiar",{"2":{"103":1,"156":1,"199":1,"252":1,"361":1,"380":1}}],["facet",{"2":{"362":1}}],["facebook",{"2":{"102":1,"119":1,"130":1,"141":1,"213":1,"251":1,"379":1,"446":1,"453":1}}],["facilitate",{"2":{"122":1}}],["factual",{"2":{"401":1,"407":1,"422":1}}],["factory",{"2":{"400":1,"401":2,"402":1,"403":1,"407":1,"414":2,"430":1,"444":1}}],["fact",{"2":{"39":1,"67":1,"99":1,"244":1,"386":1,"482":1}}],["fall",{"2":{"68":1}}],["false",{"0":{"415":1},"2":{"29":1,"30":1,"43":1,"47":1,"200":2,"219":1,"391":1,"414":2,"420":1,"448":1,"449":1,"454":1,"455":2,"456":1,"458":1,"461":1}}],["fate",{"2":{"68":1}}],["fatal",{"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1}}],["failing",{"2":{"461":1}}],["fails",{"2":{"185":1,"305":1,"306":1,"416":1,"461":2}}],["failedtransactionresponse",{"2":{"461":1}}],["failedtransactionreturn",{"2":{"148":1}}],["failed",{"0":{"461":1},"2":{"459":2,"460":1}}],["failedcontractdeploymentreturn",{"2":{"160":1}}],["failure",{"2":{"138":1,"170":1,"328":1}}],["failures",{"2":{"39":1}}],["fail",{"2":{"6":1,"157":1,"185":1,"296":1,"305":1,"306":1}}],["friendlyname",{"2":{"449":2}}],["freshly",{"2":{"344":1}}],["frequent",{"2":{"229":1,"467":1}}],["free",{"2":{"5":1,"8":1,"10":3,"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1,"56":2,"131":1,"139":1,"161":1,"249":1}}],["framework",{"2":{"166":1,"196":1}}],["frommnemonic",{"2":{"12":1}}],["from",{"0":{"158":1,"227":1},"2":{"0":1,"1":1,"3":1,"4":1,"6":1,"7":2,"12":2,"14":1,"17":1,"29":4,"30":1,"32":1,"33":3,"36":2,"38":1,"39":5,"41":1,"43":1,"45":1,"47":1,"49":2,"52":3,"60":2,"62":2,"63":4,"65":1,"67":1,"72":3,"78":2,"79":2,"80":1,"81":1,"83":5,"86":5,"87":1,"89":1,"90":2,"91":5,"98":1,"106":6,"107":8,"108":3,"109":1,"121":1,"123":1,"124":1,"130":1,"131":1,"135":3,"140":1,"145":1,"147":1,"148":2,"150":1,"154":1,"156":2,"158":1,"159":2,"160":3,"169":1,"171":1,"173":1,"174":4,"180":2,"185":1,"187":1,"199":1,"200":2,"219":1,"222":4,"225":3,"226":5,"229":2,"231":2,"237":1,"239":2,"240":2,"241":2,"246":2,"255":1,"265":2,"275":1,"283":1,"284":3,"294":2,"295":1,"307":1,"308":1,"314":1,"329":1,"331":1,"334":1,"336":1,"337":1,"338":1,"345":1,"362":1,"363":1,"364":2,"365":1,"372":1,"382":1,"383":1,"386":1,"388":1,"389":1,"391":1,"402":1,"405":1,"406":1,"413":1,"425":1,"426":2,"446":1,"447":2,"448":10,"449":1,"450":2,"458":1,"460":1,"461":1,"464":3,"465":5,"467":2,"469":2,"475":1,"477":2,"478":2,"479":2,"484":2}}],["frontend",{"2":{"8":1,"365":2}}],["front",{"2":{"0":1}}],["fiat",{"0":{"353":1,"385":1}}],["fixedbyte",{"2":{"330":1}}],["fixed",{"2":{"330":1,"407":1}}],["fixing",{"2":{"293":1}}],["fit",{"2":{"137":2,"193":1,"297":1}}],["fields",{"2":{"69":2,"129":1,"460":1}}],["field",{"2":{"67":1,"69":2,"126":1,"127":1,"130":1,"142":1,"143":1,"183":1}}],["fill",{"2":{"138":1,"346":1}}],["filter",{"2":{"43":6,"45":5,"47":1,"145":9,"188":1,"391":1}}],["files",{"0":{"339":1},"2":{"136":2,"337":1,"338":3,"339":1,"340":1,"344":1}}],["file",{"2":{"4":1,"88":1,"137":1,"145":2,"169":1,"183":1,"185":2,"337":1,"338":1,"346":1,"448":1}}],["firm",{"2":{"154":1}}],["fires",{"2":{"180":1}}],["fired",{"2":{"173":1,"187":1}}],["fire",{"2":{"8":1,"174":2,"175":1}}],["first",{"0":{"414":1},"1":{"415":1,"416":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1},"2":{"3":1,"56":1,"81":1,"83":2,"90":1,"130":1,"133":1,"145":1,"151":1,"153":1,"155":1,"160":1,"185":1,"200":1,"337":2,"387":1,"414":1,"419":2}}],["finishvalidatesession",{"2":{"455":2}}],["finishes",{"2":{"419":2}}],["finished",{"2":{"185":1,"222":1}}],["finalizeauth",{"2":{"447":1}}],["finalize",{"0":{"347":1}}],["finally",{"2":{"4":1,"69":1,"70":1,"82":1,"85":1,"90":1,"91":1,"174":1,"346":1}}],["fingerprints",{"2":{"183":1}}],["fine",{"2":{"69":1}}],["findobjectoftype",{"2":{"139":1}}],["finding",{"2":{"136":1}}],["findsupportednetwork",{"2":{"86":2,"91":4}}],["find",{"2":{"4":1,"12":1,"32":1,"72":5,"78":1,"83":1,"171":1,"225":1,"421":1,"422":1,"464":1}}],["fom",{"2":{"391":1}}],["focused",{"2":{"196":1,"197":1}}],["focus",{"2":{"193":1,"196":1,"344":1}}],["fonts",{"2":{"193":1}}],["folder",{"0":{"340":1},"2":{"81":2,"82":1,"135":2,"136":2,"138":4,"171":7,"185":2,"293":3,"295":2,"339":4,"340":2,"345":1,"346":1}}],["follows",{"2":{"91":1,"132":1,"166":1,"222":1,"425":1,"440":1,"441":1,"442":1,"443":2}}],["followed",{"2":{"9":1}}],["following",{"2":{"4":1,"7":1,"72":1,"73":1,"78":1,"80":2,"83":2,"84":1,"88":1,"91":1,"145":1,"147":1,"164":1,"169":1,"178":1,"179":1,"182":1,"183":1,"184":1,"185":2,"226":1,"254":1,"260":1,"271":1,"336":1,"365":1,"419":1,"436":1,"442":1,"444":1,"445":1,"465":1}}],["follow",{"2":{"2":1,"32":1,"59":1,"73":1,"81":1,"83":1,"85":1,"89":1,"106":1,"123":1,"212":1,"392":1}}],["found",{"2":{"72":9,"136":1,"138":1,"161":2,"169":1,"171":1,"236":1,"294":1,"295":2,"309":1,"474":1}}],["force",{"2":{"208":1}}],["forward",{"2":{"171":2,"175":1}}],["forwarder",{"2":{"171":1}}],["formerly",{"2":{"431":1}}],["forms",{"2":{"354":1}}],["form",{"2":{"149":1,"161":1,"355":1}}],["formats",{"2":{"61":1,"65":1}}],["format",{"2":{"58":1,"65":1,"67":1,"69":2,"140":1,"149":1,"150":2,"156":4,"307":2,"310":2,"311":1,"313":1,"314":1,"315":1,"316":2,"318":1,"319":1,"320":1,"348":1}}],["forum",{"2":{"145":1}}],["foreach",{"2":{"106":1,"107":1}}],["forget",{"2":{"8":1,"164":1}}],["for",{"0":{"43":1,"45":1,"62":1,"83":1,"224":1,"246":1,"457":1,"463":1,"484":1},"1":{"84":1,"85":1},"2":{"0":1,"2":1,"3":1,"4":4,"5":1,"6":2,"8":4,"9":1,"10":5,"12":1,"13":2,"14":1,"29":4,"30":2,"32":3,"33":3,"34":3,"36":1,"38":1,"39":5,"41":2,"43":4,"45":2,"47":3,"48":3,"49":2,"51":1,"55":4,"56":3,"57":3,"59":1,"61":5,"62":1,"63":3,"65":1,"67":5,"68":2,"69":1,"71":1,"72":7,"73":2,"78":3,"79":4,"80":1,"81":1,"83":1,"84":1,"86":1,"87":2,"91":1,"96":2,"99":1,"100":2,"101":1,"105":2,"106":3,"110":1,"113":2,"119":1,"120":1,"126":1,"129":3,"132":2,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"145":2,"147":1,"148":3,"149":2,"151":3,"153":3,"154":1,"155":3,"156":1,"157":2,"159":2,"160":2,"161":2,"166":1,"171":2,"173":2,"178":2,"182":1,"183":2,"184":1,"187":2,"188":3,"189":1,"192":1,"193":4,"194":3,"196":5,"197":3,"198":1,"199":4,"200":1,"203":1,"204":1,"205":1,"207":1,"218":1,"220":1,"222":2,"225":1,"226":3,"229":3,"243":1,"244":1,"245":2,"246":2,"247":2,"249":4,"250":1,"259":2,"261":2,"262":4,"268":1,"269":2,"270":2,"272":5,"280":1,"288":1,"291":1,"293":4,"295":1,"296":2,"299":1,"301":1,"302":1,"304":1,"306":1,"308":1,"309":1,"310":1,"315":1,"316":1,"317":1,"318":1,"319":1,"320":1,"323":1,"326":1,"327":2,"328":2,"329":1,"330":2,"333":2,"334":3,"336":2,"337":1,"338":2,"339":1,"344":2,"345":2,"346":1,"348":1,"358":1,"361":1,"364":1,"370":2,"378":1,"386":1,"387":3,"390":2,"391":5,"394":1,"399":1,"401":1,"407":1,"413":3,"419":2,"421":1,"422":1,"425":1,"426":1,"427":1,"436":3,"441":2,"443":1,"446":1,"447":1,"449":1,"452":1,"454":2,"457":2,"458":1,"460":1,"464":1,"465":3,"467":3,"481":1,"482":1,"483":2,"484":2}}],["future",{"2":{"72":1}}],["fungible",{"2":{"150":1,"152":1,"154":1}}],["funding",{"2":{"218":1,"219":1}}],["funds",{"2":{"200":1,"404":1,"418":1}}],["fund",{"2":{"73":1}}],["funded",{"2":{"72":1}}],["func",{"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1}}],["functionnameasstring",{"2":{"156":2,"157":1}}],["functions",{"0":{"329":1},"2":{"148":1,"151":1,"153":1,"155":1,"160":1,"178":1,"234":1,"247":1,"261":1,"270":1,"472":1}}],["function",{"2":{"7":3,"72":1,"78":1,"86":1,"91":1,"106":1,"107":1,"129":1,"130":1,"147":1,"149":1,"156":5,"159":1,"170":2,"171":2,"225":1,"238":2,"239":2,"240":2,"241":3,"246":1,"295":1,"328":3,"329":1,"404":1,"408":2,"412":1,"414":1,"427":1,"443":4,"444":1,"448":5,"449":1,"464":1,"476":2,"477":2,"478":2,"479":3,"484":1}}],["functionality",{"2":{"158":1,"179":1,"222":1,"238":1,"239":1,"240":1,"249":1,"354":1,"358":1,"415":1,"476":1,"477":1,"478":1}}],["functional",{"2":{"1":1,"361":1,"448":1}}],["fur",{"2":{"67":1}}],["further",{"2":{"0":1,"200":1}}],["full",{"2":{"32":1,"40":1,"56":1,"59":1,"68":1,"79":1,"91":1,"119":1,"120":1,"132":1,"166":1,"208":1,"220":1,"294":1,"295":1,"460":1,"461":1}}],["fully",{"2":{"1":1,"158":1,"290":1,"328":1,"361":1,"442":1}}],["wyre",{"2":{"385":1}}],["w3c",{"2":{"199":1}}],["won",{"2":{"363":1}}],["wooden",{"2":{"345":1}}],["wouldn",{"2":{"365":1}}],["would",{"2":{"86":1,"91":1,"156":1,"160":1,"200":1,"257":1,"267":1,"329":1,"331":1,"389":1,"390":1}}],["world",{"2":{"81":1,"82":1,"101":1,"250":1,"378":1,"425":1}}],["worried",{"2":{"71":1,"80":1}}],["workflow",{"2":{"225":1,"464":1}}],["working",{"2":{"83":1,"147":1,"148":1,"159":1,"160":1,"294":1,"296":1,"297":1,"307":1}}],["works",{"0":{"162":1,"187":1},"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1,"49":1,"62":1,"63":2,"139":2,"156":1,"199":1,"200":3,"212":1,"243":1,"382":1,"383":1,"391":1,"442":1,"481":1}}],["workers",{"0":{"25":1},"2":{"82":1,"89":1,"90":1}}],["worker",{"2":{"17":1,"80":1,"81":1,"86":1,"89":1,"90":1}}],["work",{"2":{"4":1,"36":1,"56":1,"131":1,"133":1,"137":1,"138":1,"141":1,"161":1,"186":1,"199":4,"249":2,"310":1,"346":1,"447":1}}],["w",{"2":{"72":2}}],["wuelppex0pttvjabl8biuxpaaaaaaaaaa",{"2":{"63":2}}],["www",{"2":{"56":1,"68":1}}],["writing",{"2":{"181":1}}],["written",{"2":{"99":1,"197":1,"226":1,"243":1,"244":1,"246":1,"465":1,"481":1,"482":1,"484":1}}],["write",{"0":{"148":1},"1":{"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1},"2":{"3":2,"83":2,"137":1,"148":1,"344":1,"345":1,"347":1}}],["wrong",{"2":{"86":2,"219":2}}],["wrapping",{"2":{"180":1,"296":2}}],["wrappers",{"2":{"129":1,"137":1,"333":3}}],["wrapper",{"0":{"106":1,"107":1},"2":{"106":2,"107":1,"111":1,"151":1,"153":1,"155":1,"158":1,"160":1,"295":6,"333":1,"334":1}}],["wrapped",{"2":{"10":1}}],["wrap",{"2":{"106":1,"295":2}}],["wrangler=",{"2":{"81":1}}],["wrangler",{"0":{"81":1,"88":1},"1":{"82":1},"2":{"80":2,"81":8,"82":1,"87":1,"88":1,"89":1}}],["why",{"0":{"293":1,"354":1},"1":{"355":1,"356":1,"357":1,"358":1,"359":1,"360":1}}],["whose",{"2":{"391":1}}],["who",{"2":{"199":1,"365":1,"435":1,"453":1}}],["whole",{"2":{"149":1,"157":1,"305":1,"306":1,"416":1,"442":1,"443":1}}],["whistles",{"2":{"296":1}}],["white",{"2":{"192":1,"193":3,"194":1}}],["whitespace",{"2":{"156":1}}],["while",{"2":{"132":1,"160":1,"165":1,"166":1,"193":3,"199":1,"210":1,"222":1,"225":1,"229":1,"293":1,"296":1,"305":1,"306":1,"328":1,"361":1,"363":1,"383":1,"390":1,"414":1,"444":1,"464":1,"467":1}}],["which",{"2":{"4":1,"8":2,"29":1,"30":1,"36":3,"39":1,"43":1,"47":1,"67":2,"68":2,"72":1,"79":1,"82":1,"83":1,"84":1,"100":1,"119":1,"120":1,"121":1,"148":1,"158":1,"159":1,"160":2,"164":2,"171":1,"175":1,"178":1,"195":1,"197":1,"199":1,"202":1,"220":1,"222":1,"225":2,"238":1,"239":1,"240":1,"243":1,"245":1,"247":1,"260":1,"261":2,"270":2,"271":1,"272":2,"278":1,"294":1,"295":4,"301":1,"305":1,"306":1,"327":1,"329":1,"334":1,"353":2,"354":1,"362":1,"383":1,"385":2,"405":1,"408":1,"413":1,"421":1,"441":1,"444":1,"464":2,"476":1,"477":1,"478":1,"481":1,"483":1}}],["whatever",{"2":{"175":1}}],["what",{"0":{"193":1,"196":1,"197":1},"2":{"41":2,"83":1,"295":1,"344":1,"358":1,"364":1,"415":1}}],["whether",{"2":{"118":1,"210":1,"219":1,"261":1,"270":1,"427":1,"453":1,"456":1}}],["where",{"2":{"58":1,"67":1,"83":1,"147":1,"149":1,"156":1,"160":1,"173":1,"178":1,"180":2,"181":2,"196":1,"212":1,"228":1,"246":1,"296":1,"330":1,"344":1,"439":1,"466":1,"484":1}}],["whereby",{"2":{"8":1}}],["whenever",{"2":{"334":1,"445":1}}],["when",{"0":{"293":1},"2":{"36":1,"63":1,"67":1,"68":1,"90":1,"130":1,"133":1,"136":2,"137":1,"138":1,"139":1,"148":1,"149":1,"151":1,"153":1,"155":1,"156":2,"157":1,"159":1,"160":1,"174":1,"180":1,"185":1,"186":1,"187":1,"200":2,"201":1,"212":1,"217":1,"225":1,"261":1,"270":1,"287":1,"294":1,"295":2,"296":4,"297":1,"310":1,"328":2,"329":1,"330":1,"333":1,"364":1,"387":1,"391":1,"414":1,"419":2,"427":1,"448":2,"453":1,"456":2,"458":1,"464":1}}],["warning",{"2":{"404":1,"419":1}}],["wagmiclient",{"2":{"295":2}}],["wagmiconfig",{"2":{"106":3,"107":4,"123":2,"130":3,"255":1,"295":2}}],["wagmiwrapper",{"2":{"295":6}}],["wagmiprovider",{"2":{"106":1,"107":1,"295":1}}],["wagmi",{"0":{"253":1,"260":1,"271":1},"1":{"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1},"2":{"101":1,"105":4,"106":5,"107":2,"108":2,"119":1,"120":1,"129":3,"130":1,"249":1,"250":1,"253":3,"254":5,"255":2,"260":4,"261":3,"262":5,"270":5,"271":4,"272":4,"293":2,"294":5,"295":4,"378":1}}],["waasadapter",{"2":{"300":1}}],["waastowalletadapter",{"2":{"300":3,"305":2,"306":2}}],["waastenantkey",{"2":{"169":1}}],["waaswallet",{"2":{"147":4,"148":5,"149":1,"159":4,"160":9,"161":1,"300":3}}],["waaslogin",{"2":{"147":1}}],["waasconfigkey",{"2":{"98":1,"372":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["waas",{"0":{"18":1,"147":1},"2":{"96":1,"98":4,"136":1,"138":2,"139":1,"140":1,"147":2,"148":1,"149":1,"150":1,"151":3,"152":1,"153":3,"154":1,"155":3,"156":2,"157":1,"169":1,"370":1,"372":4,"445":1,"446":6,"447":6,"448":5,"449":5,"450":6,"454":1,"455":2,"456":1,"457":2,"458":1,"460":5,"461":5}}],["was",{"2":{"14":1,"72":2,"78":1,"136":2,"390":1,"391":2,"427":1,"431":1,"460":2}}],["waitfortransactionreceipt",{"0":{"326":1},"2":{"326":1}}],["wait",{"2":{"13":3,"14":2,"79":1,"185":1,"294":2,"326":1,"329":1}}],["waits",{"2":{"13":1,"304":1,"306":1}}],["wants",{"2":{"389":1}}],["want",{"2":{"10":1,"73":1,"79":1,"91":1,"136":1,"137":1,"147":1,"151":1,"153":1,"155":1,"156":3,"173":1,"185":1,"193":1,"197":1,"199":1,"210":1,"225":1,"237":1,"249":1,"310":2,"329":3,"332":1,"344":1,"348":1,"464":1,"475":1}}],["walletinterface",{"2":{"414":2}}],["walletcontext",{"2":{"430":1}}],["walletcontractbytecode",{"2":{"401":1}}],["walletconnectprojectid",{"2":{"106":1,"107":1}}],["walletconnect",{"0":{"222":1},"2":{"102":1,"199":1,"220":1,"222":4,"251":1,"379":1}}],["walletproxybytecode",{"2":{"401":1}}],["walletpanel",{"2":{"161":1}}],["walletauthoptions",{"0":{"120":1},"2":{"130":2}}],["walletaddress",{"2":{"86":2,"448":2}}],["walleteoa",{"2":{"72":4,"78":2,"83":2,"91":2}}],["wallet",{"0":{"17":1,"29":1,"42":1,"43":1,"91":1,"107":1,"109":1,"161":1,"199":1,"201":1,"221":1,"224":1,"225":1,"226":1,"228":1,"231":1,"249":1,"293":1,"294":1,"295":1,"361":1,"382":1,"383":1,"384":1,"393":1,"400":1,"401":1,"402":1,"403":1,"407":1,"417":1,"422":1,"430":1,"435":1,"463":1,"464":1,"465":1,"466":1,"469":1},"1":{"43":1,"162":1,"163":1,"164":1,"165":1,"200":1,"201":1,"202":2,"203":2,"204":2,"205":2,"206":2,"207":2,"208":2,"209":2,"210":2,"211":2,"212":2,"213":2,"214":2,"215":2,"216":2,"217":2,"218":2,"219":2,"220":1,"221":1,"222":1,"362":1,"363":1,"364":1,"365":1,"394":1,"395":1,"396":1,"397":1,"398":1,"399":1,"400":1,"401":2,"403":1,"404":2,"405":2,"406":2,"407":1,"408":2,"409":2,"410":2,"411":1,"412":1,"413":1,"414":1,"415":1,"416":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"436":1,"437":1,"438":1,"439":1,"440":1,"441":1,"442":1,"443":1,"444":1},"2":{"12":5,"13":2,"29":2,"30":1,"38":2,"39":2,"41":3,"43":4,"71":1,"72":17,"73":1,"78":3,"79":1,"80":1,"83":12,"86":3,"87":1,"89":2,"90":3,"91":2,"93":1,"94":1,"96":2,"97":3,"98":2,"102":3,"104":1,"105":3,"106":1,"107":4,"109":3,"120":3,"121":1,"132":2,"139":3,"147":2,"148":3,"149":2,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":2,"157":3,"159":3,"160":4,"161":2,"166":2,"189":1,"195":3,"196":3,"197":4,"199":12,"200":19,"201":2,"202":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":3,"210":2,"211":2,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"222":2,"224":3,"225":6,"226":1,"228":1,"229":5,"231":6,"232":1,"233":1,"234":3,"235":1,"237":2,"238":3,"239":3,"240":3,"241":2,"246":1,"247":1,"249":2,"251":3,"253":2,"263":2,"268":1,"273":2,"277":1,"286":1,"287":1,"289":2,"290":3,"291":1,"293":3,"295":2,"298":1,"299":2,"302":2,"303":1,"304":1,"305":5,"306":5,"307":3,"310":3,"320":2,"327":2,"329":6,"332":1,"333":3,"346":1,"353":2,"354":1,"355":1,"361":5,"362":1,"363":2,"367":1,"368":1,"370":2,"371":3,"372":2,"374":1,"379":3,"383":2,"385":2,"386":8,"387":3,"390":1,"393":1,"395":1,"398":2,"400":4,"401":5,"402":1,"403":1,"404":3,"405":3,"406":5,"407":3,"408":3,"409":1,"410":1,"411":1,"412":2,"413":6,"414":6,"415":1,"416":2,"417":2,"419":3,"420":2,"421":3,"422":5,"425":6,"426":7,"427":2,"431":3,"435":3,"436":2,"438":2,"440":1,"442":2,"444":5,"445":1,"446":1,"447":1,"451":1,"461":3,"463":3,"464":6,"465":1,"466":1,"467":5,"469":6,"470":1,"471":1,"472":3,"473":1,"475":2,"476":3,"477":3,"478":3,"479":2,"484":1}}],["wallets",{"0":{"189":1,"195":1,"250":1,"298":1,"354":1,"358":1,"378":1,"387":1},"1":{"196":1,"197":1,"198":1,"251":1,"299":1,"300":1,"301":1,"302":1,"303":1,"304":1,"305":1,"306":1,"307":1,"355":1,"356":1,"357":1,"358":1,"359":2,"360":1,"379":1,"388":1,"389":1,"390":1},"2":{"9":2,"10":1,"39":2,"72":3,"100":1,"101":1,"102":1,"106":1,"119":1,"120":1,"128":1,"186":1,"189":1,"191":1,"197":1,"198":3,"199":1,"245":1,"249":1,"250":1,"251":1,"257":1,"265":2,"267":1,"275":1,"300":1,"354":2,"358":3,"361":3,"362":1,"363":1,"364":1,"365":5,"378":1,"379":1,"390":1,"398":1,"402":2,"403":1,"404":1,"407":1,"413":1,"414":1,"422":1,"424":1,"435":1,"438":1,"439":1,"442":2,"444":2,"483":1}}],["walk",{"2":{"4":1,"104":1,"128":1,"194":1}}],["ways",{"2":{"199":1,"364":1}}],["way",{"2":{"1":1,"72":3,"79":1,"131":1,"164":2,"229":1,"363":1,"407":1,"414":1,"442":2,"467":1}}],["width=",{"2":{"448":1}}],["width",{"2":{"178":1}}],["wip",{"2":{"173":2,"176":1}}],["wish",{"2":{"136":1,"148":1,"156":1,"159":1,"160":1,"171":2,"180":1,"331":1,"334":1,"453":1}}],["windows",{"2":{"143":2,"173":2,"182":1}}],["window",{"0":{"88":1},"2":{"88":1,"135":2,"137":2,"142":1,"143":1,"145":1,"200":1,"209":1}}],["will",{"2":{"3":3,"4":4,"8":2,"29":2,"36":4,"39":1,"56":1,"67":1,"68":2,"69":1,"71":1,"72":9,"78":2,"80":1,"81":1,"83":2,"97":1,"102":1,"104":1,"107":1,"108":1,"118":1,"119":2,"120":2,"121":2,"128":1,"132":3,"135":3,"136":2,"137":5,"138":4,"139":2,"140":1,"147":1,"149":1,"156":1,"157":1,"158":1,"161":2,"166":3,"169":1,"170":2,"171":1,"174":2,"175":1,"178":4,"183":1,"185":1,"188":3,"196":1,"198":1,"199":3,"200":2,"202":1,"204":1,"206":1,"208":1,"209":1,"210":2,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"219":1,"222":1,"225":3,"237":1,"249":1,"251":1,"258":1,"259":1,"268":1,"269":1,"277":1,"278":1,"286":1,"287":1,"293":1,"294":1,"295":2,"299":1,"305":4,"306":4,"308":1,"309":1,"310":2,"327":2,"328":3,"329":1,"330":1,"340":1,"342":1,"345":4,"346":2,"353":2,"364":3,"371":1,"379":1,"383":1,"385":2,"390":2,"404":1,"405":1,"413":2,"416":1,"419":1,"425":2,"426":2,"427":1,"441":1,"442":1,"444":1,"447":3,"455":1,"459":1,"460":1,"461":4,"464":3,"475":1}}],["without",{"2":{"10":1,"39":2,"71":1,"73":1,"78":1,"79":2,"80":1,"136":1,"148":1,"157":1,"159":1,"160":1,"199":1,"200":2,"228":1,"229":1,"235":2,"296":1,"413":1,"420":1,"459":1,"466":1,"467":1,"473":2}}],["within",{"2":{"4":1,"102":1,"106":1,"136":2,"148":1,"159":1,"160":1,"171":1,"185":1,"196":1,"199":1,"251":1,"358":1,"364":1,"379":1,"441":1,"442":1,"455":1}}],["with",{"0":{"18":1,"73":1,"81":1,"83":1,"104":1,"147":1,"200":1,"220":1,"221":1,"223":1,"227":1,"230":1,"235":1,"242":1,"293":1,"294":1,"295":1,"462":1,"468":1,"473":1,"480":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1,"82":1,"84":1,"85":1,"105":1,"224":1,"225":1,"226":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"243":1,"244":1,"245":1,"246":1,"463":1,"464":1,"465":1,"469":1,"470":1,"471":1,"472":1,"473":1,"474":1,"481":1,"482":1,"483":1,"484":1},"2":{"0":2,"1":1,"4":2,"5":1,"6":1,"7":2,"8":2,"10":1,"12":1,"17":1,"28":1,"29":1,"31":1,"32":4,"36":4,"37":1,"39":5,"42":1,"44":1,"46":1,"49":1,"55":1,"57":1,"59":1,"62":1,"63":3,"65":1,"71":1,"72":2,"73":2,"79":1,"80":4,"81":2,"83":3,"84":1,"86":1,"89":1,"90":5,"91":1,"94":1,"96":1,"97":1,"98":1,"99":1,"101":2,"102":3,"103":1,"105":1,"106":1,"113":1,"126":2,"128":1,"129":1,"131":1,"132":1,"135":3,"136":4,"137":2,"138":3,"139":4,"140":2,"141":1,"145":4,"147":5,"148":3,"149":2,"151":5,"153":5,"155":5,"156":4,"159":2,"160":3,"164":2,"165":1,"166":1,"173":2,"174":2,"175":3,"178":2,"181":1,"187":1,"191":1,"193":2,"194":1,"196":4,"197":2,"198":1,"199":4,"200":1,"201":1,"211":1,"213":2,"214":2,"225":2,"226":2,"229":1,"233":1,"238":1,"239":1,"240":1,"244":1,"246":2,"247":1,"249":4,"250":2,"251":3,"252":1,"253":2,"254":1,"261":4,"262":2,"263":1,"270":4,"272":2,"273":1,"280":1,"289":2,"290":2,"293":2,"294":2,"295":6,"296":2,"297":1,"300":2,"307":1,"309":1,"310":1,"311":1,"329":1,"330":1,"333":2,"334":2,"336":1,"338":1,"345":1,"347":1,"348":1,"351":1,"353":1,"361":2,"363":2,"364":3,"365":2,"368":1,"370":1,"371":1,"372":1,"375":1,"376":1,"378":2,"379":3,"380":1,"382":1,"383":1,"385":1,"386":1,"387":3,"388":1,"391":2,"392":1,"393":1,"394":1,"395":1,"397":1,"404":1,"425":1,"427":2,"431":1,"438":1,"442":1,"444":1,"445":1,"446":2,"447":3,"448":1,"450":1,"451":1,"452":1,"455":2,"464":2,"465":2,"467":1,"471":1,"476":1,"477":1,"478":1,"482":1,"484":2}}],["weight",{"2":{"394":2,"395":2,"396":4,"397":4,"399":4,"413":1,"436":1,"440":3,"441":3,"442":10,"443":2}}],["weights",{"2":{"393":1,"408":1,"412":1,"436":1,"437":1,"439":1}}],["weighted",{"2":{"68":1}}],["weeds",{"2":{"310":1}}],["week",{"2":{"205":1}}],["were",{"2":{"229":1,"330":1,"365":1,"467":1}}],["went",{"2":{"86":2}}],["websocketprovider",{"2":{"295":1}}],["websocketpublicclient",{"2":{"255":1}}],["web2",{"2":{"197":2,"199":1}}],["webgl",{"0":{"146":1},"2":{"133":1,"141":1}}],["web",{"0":{"26":1,"27":1,"33":1,"52":1,"382":1},"2":{"32":1,"57":1,"59":1,"175":1,"183":3,"193":2,"199":3,"363":1,"382":1,"383":1}}],["webapps",{"2":{"31":1}}],["webapp",{"2":{"17":1,"29":1,"30":1,"32":1,"38":1,"43":1,"45":1,"47":1,"49":1,"56":2,"62":1,"63":2,"68":1,"391":1}}],["web3modal",{"0":{"289":1},"1":{"290":1,"291":1},"2":{"200":1,"220":1,"249":1,"289":3,"290":1,"291":2}}],["web3",{"0":{"220":1,"250":1,"273":1,"280":1,"378":1},"1":{"251":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1,"379":1},"2":{"0":1,"39":1,"88":1,"101":2,"102":2,"106":1,"120":1,"196":1,"197":1,"199":6,"247":1,"249":3,"250":2,"251":2,"273":3,"274":2,"275":1,"279":1,"280":3,"281":1,"283":2,"284":1,"288":1,"342":1,"378":2,"379":2,"383":1}}],["weth",{"2":{"10":1,"72":1}}],["we",{"2":{"0":1,"32":1,"33":1,"36":2,"39":1,"45":2,"47":2,"52":1,"55":2,"57":2,"59":1,"65":2,"67":1,"69":2,"70":1,"73":1,"86":4,"91":1,"96":1,"104":1,"132":1,"136":3,"137":3,"138":1,"139":2,"141":2,"147":1,"151":1,"153":1,"154":1,"155":1,"156":2,"158":1,"160":2,"161":2,"163":1,"164":2,"165":2,"166":1,"173":1,"179":1,"181":3,"194":1,"195":1,"196":1,"197":1,"199":1,"225":1,"294":2,"295":3,"296":1,"309":1,"329":2,"331":2,"333":1,"334":2,"363":1,"370":1,"390":1,"453":3,"464":1}}],["well",{"2":{"0":1,"32":1,"55":1,"56":1,"59":1,"65":1,"86":1,"156":1,"183":1,"192":1,"193":1,"196":1,"237":1,"246":1,"329":2,"331":2,"334":1,"390":1,"425":1,"426":1,"475":1,"484":1}}],["turn",{"2":{"295":1}}],["turned",{"2":{"293":1}}],["tfunction",{"2":{"181":2}}],["tfunctions",{"2":{"181":2}}],["typically",{"2":{"148":1,"225":1,"229":1,"464":1,"467":1}}],["typical",{"2":{"148":1}}],["typeddata",{"2":{"426":2}}],["typed",{"2":{"426":1}}],["typedefault",{"2":{"121":1}}],["typedefaultbooleantrue",{"2":{"118":1}}],["typedefaultstringundefined",{"2":{"116":1,"117":1}}],["typedefaultstringcenter",{"2":{"114":1}}],["typedefaultstring",{"2":{"113":1,"119":1,"120":1}}],["typescript",{"2":{"32":2,"59":1,"81":1,"96":2,"196":2,"197":1,"226":1,"243":1,"370":2,"465":1,"481":1}}],["types",{"2":{"4":1,"148":1,"328":1,"439":1}}],["type",{"0":{"330":1},"2":{"4":1,"10":4,"14":1,"29":2,"30":2,"38":2,"43":2,"45":2,"47":2,"49":2,"56":2,"62":2,"63":4,"67":8,"68":2,"69":2,"86":2,"89":1,"90":1,"157":2,"173":1,"178":1,"180":1,"200":1,"331":1,"352":1,"391":3,"426":3,"460":1,"461":1}}],["tmp",{"2":{"135":1,"137":1,"399":4}}],["twitter",{"2":{"446":1}}],["twitch",{"2":{"119":1,"213":1}}],["two",{"2":{"97":1,"139":1,"238":1,"239":1,"240":1,"310":1,"344":1,"354":1,"364":1,"371":1,"387":2,"431":1,"451":1,"476":1,"477":1,"478":1}}],["tweaking",{"2":{"56":1}}],["tsx",{"2":{"295":1,"448":1}}],["tsuccesscallback",{"2":{"181":1}}],["ts",{"2":{"86":1,"448":1,"461":1}}],["tnqwlujz",{"2":{"56":1}}],["times",{"2":{"68":1,"81":1,"164":1}}],["time",{"0":{"346":1,"452":1},"2":{"36":2,"39":2,"56":1,"80":1,"91":1,"132":1,"164":1,"166":1,"187":2,"188":1,"189":1,"193":1,"225":1,"228":1,"229":1,"329":1,"331":1,"346":1,"365":1,"387":1,"391":1,"398":1,"403":1,"419":1,"447":1,"452":1,"453":1,"464":1,"466":1,"467":1}}],["timezones",{"2":{"0":1}}],["tips",{"0":{"36":1},"2":{"390":1}}],["tip",{"2":{"29":1,"48":1,"55":1,"61":1,"200":1,"253":1,"263":1,"273":1,"289":1}}],["tx",{"2":{"456":1,"458":1,"460":3,"461":4}}],["txs",{"2":{"72":1,"78":1}}],["txns",{"2":{"79":1}}],["txn2",{"2":{"79":2}}],["txn1",{"2":{"79":2}}],["txnreceipt",{"2":{"72":4,"78":2}}],["txnresponse",{"2":{"72":2,"78":1,"237":2,"238":4,"239":4,"240":4,"475":2,"476":4,"477":4,"478":4}}],["txn",{"2":{"72":2,"78":2,"91":2}}],["txnhash",{"2":{"14":1}}],["tx5drvi",{"2":{"56":1}}],["txhash",{"2":{"13":1,"460":2}}],["t",{"2":{"8":1,"12":1,"98":1,"130":1,"133":1,"135":1,"137":2,"145":2,"156":1,"164":2,"165":1,"178":2,"186":1,"222":1,"241":1,"329":1,"331":3,"363":2,"365":1,"372":1,"398":1,"400":1,"402":1,"407":1,"413":1,"414":1,"418":1,"419":1,"422":1,"445":1,"446":1,"453":1,"479":1}}],["tries",{"2":{"456":1}}],["triggered",{"2":{"126":1,"200":1,"456":3,"457":2,"458":1}}],["triggertransaction",{"2":{"126":1}}],["triggercheckout",{"2":{"124":2}}],["triggering",{"0":{"108":1},"2":{"104":1}}],["trigger",{"0":{"455":1},"1":{"456":1},"2":{"72":1,"455":1}}],["triggers",{"2":{"72":1}}],["trust",{"2":{"226":1,"357":1,"363":1,"465":1}}],["trusted",{"2":{"86":1,"452":1,"453":1,"454":1}}],["true",{"0":{"416":1},"2":{"10":1,"13":1,"29":4,"30":3,"34":2,"36":2,"38":1,"43":3,"45":2,"47":3,"48":1,"61":1,"88":1,"91":2,"108":1,"109":1,"145":3,"200":1,"206":1,"208":1,"209":1,"210":1,"219":1,"225":2,"255":1,"293":1,"295":1,"352":1,"391":1,"414":2,"419":1,"420":1,"449":1,"454":2,"455":4,"456":2,"458":2,"461":1,"464":2}}],["trees",{"2":{"441":1}}],["tree",{"0":{"439":1},"1":{"440":1,"441":1,"442":1},"2":{"39":1,"436":1,"439":3,"441":1,"442":3,"443":4}}],["trades",{"2":{"391":1}}],["tradeoff",{"2":{"390":1}}],["traditional",{"2":{"196":1,"363":1,"386":1}}],["trading",{"2":{"56":1,"391":1}}],["tranfereth",{"2":{"327":1}}],["transports",{"2":{"106":3,"107":3,"130":1}}],["transact",{"2":{"10":1}}],["transactionfailed",{"2":{"461":1}}],["transactioncreator",{"2":{"329":4,"333":2}}],["transactioncount",{"0":{"325":1},"2":{"325":2}}],["transactioncall",{"2":{"317":2}}],["transactionbyhash",{"0":{"324":1},"2":{"324":1}}],["transaction2",{"2":{"238":2,"239":2,"240":2,"241":2,"476":2,"477":2,"478":2,"479":2}}],["transaction1",{"2":{"238":2,"239":2,"240":2,"241":2,"476":2,"477":2,"478":2,"479":2}}],["transactionreceipt",{"2":{"304":2,"306":4,"326":2,"327":1,"329":4,"333":2,"460":1}}],["transactionreturn",{"2":{"148":1}}],["transactionresponse",{"2":{"86":1,"91":1}}],["transactionhash",{"2":{"303":1,"321":1,"324":1,"326":1}}],["transactionhashes",{"2":{"43":1,"305":1}}],["transactionhistoryfilter",{"2":{"43":1,"45":1,"47":1}}],["transactionhistory",{"2":{"43":2,"45":2}}],["transaction",{"0":{"9":1,"14":1,"42":1,"43":1,"45":1,"191":1,"428":1,"459":1,"460":1,"461":1},"1":{"43":1,"460":1,"461":1},"2":{"8":3,"9":2,"10":2,"12":1,"13":6,"14":2,"41":2,"43":7,"45":4,"71":1,"72":5,"73":2,"78":5,"80":2,"83":1,"91":2,"126":1,"148":3,"149":4,"150":2,"151":1,"152":2,"153":1,"154":4,"155":1,"156":4,"157":6,"160":1,"161":1,"186":1,"191":1,"196":1,"237":4,"238":4,"239":4,"240":4,"241":1,"246":1,"303":1,"304":1,"305":3,"306":2,"317":1,"321":3,"324":4,"326":1,"327":1,"329":4,"333":3,"343":1,"347":1,"405":1,"408":1,"413":1,"416":2,"418":3,"419":4,"420":1,"437":1,"456":1,"457":1,"459":3,"460":8,"461":4,"475":4,"476":4,"477":4,"478":4,"479":1,"484":1}}],["transactions",{"0":{"13":1,"79":1,"157":1,"190":1,"237":1,"241":1,"475":1,"479":1},"2":{"8":10,"9":2,"10":4,"12":4,"13":5,"39":2,"71":3,"72":2,"73":2,"79":8,"148":1,"157":5,"190":1,"191":1,"197":1,"238":1,"239":1,"240":1,"241":4,"305":3,"306":3,"325":1,"359":1,"364":2,"414":1,"419":2,"420":1,"424":1,"435":1,"446":1,"459":1,"460":1,"461":3,"476":1,"477":1,"478":1,"479":4}}],["transferring",{"2":{"418":1}}],["transfereth",{"2":{"327":1}}],["transfertransaction",{"2":{"327":2}}],["transfers",{"0":{"327":1},"2":{"151":1,"153":1,"155":1,"238":2,"239":2,"240":2,"476":2,"477":2,"478":2}}],["transfer",{"2":{"10":1,"13":1,"72":1,"79":2,"238":7,"239":1,"240":1,"241":2,"327":1,"328":2,"329":4,"333":1,"476":7,"477":1,"478":1,"479":2}}],["trait",{"2":{"67":8}}],["tracking",{"2":{"392":1}}],["trackers",{"2":{"226":2,"465":2}}],["tracked",{"2":{"81":1}}],["track",{"2":{"36":1,"45":1}}],["trying",{"2":{"102":1,"196":1,"251":1,"379":1}}],["try",{"0":{"7":1,"93":1,"350":1,"352":1,"367":1,"374":1},"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"56":1,"86":3,"88":1,"93":1,"185":1,"226":1,"253":2,"263":2,"273":2,"289":2,"296":2,"367":1,"374":1,"382":1,"383":1,"448":1,"461":2,"465":1}}],["troubles",{"2":{"0":1}}],["technique",{"2":{"261":1,"270":1}}],["technically",{"2":{"67":1}}],["technical",{"2":{"33":1,"34":1,"69":1}}],["text",{"2":{"173":1,"225":1,"464":1}}],["textmeshpro",{"2":{"135":1,"137":1}}],["templates",{"2":{"194":1,"198":1}}],["template",{"0":{"88":1,"94":1,"351":1,"368":1,"375":1},"2":{"94":1,"136":3,"194":1,"351":1,"368":1,"375":1}}],["tested",{"2":{"296":1}}],["test",{"0":{"81":1,"82":1},"1":{"82":1},"2":{"80":1,"89":1,"91":1,"98":1,"178":1,"372":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["testing",{"0":{"64":1,"89":1},"2":{"1":1,"39":1,"81":2,"110":1,"133":1}}],["terms",{"2":{"69":1,"390":1}}],["team",{"2":{"0":3,"5":1,"29":1,"49":1,"62":1,"63":2,"97":1,"100":1,"138":1,"166":1,"169":1,"245":1,"249":1,"363":1,"371":1,"391":1,"483":1}}],["tampered",{"2":{"363":1}}],["tailored",{"2":{"247":1}}],["taking",{"2":{"222":1}}],["takes",{"2":{"200":1,"444":1,"455":1}}],["taken",{"2":{"78":1,"419":1}}],["take",{"2":{"70":1,"103":1,"148":1,"159":1,"160":1,"164":1,"185":2,"196":1,"252":1,"261":1,"270":1,"328":1,"354":1,"364":1,"380":1,"386":1}}],["tag",{"2":{"217":1}}],["tanstack",{"2":{"105":3,"106":1,"107":1}}],["tank",{"0":{"76":1},"2":{"78":2}}],["tablet",{"2":{"382":1,"383":1}}],["tab",{"2":{"83":1,"185":3,"188":1,"340":1}}],["tasks",{"2":{"296":1}}],["task",{"2":{"63":1,"148":2,"159":2,"160":2,"329":1}}],["taskid",{"2":{"63":3}}],["targets",{"2":{"139":1}}],["target",{"2":{"29":1,"32":1,"49":1,"56":1,"59":1,"62":1,"63":2,"391":1}}],["talking",{"2":{"0":1}}],["tackle",{"2":{"0":1}}],["than",{"2":{"165":1,"226":1,"246":1,"465":1,"484":1}}],["that",{"2":{"0":1,"3":1,"4":3,"6":1,"8":1,"9":1,"10":5,"14":1,"29":1,"32":1,"36":1,"39":7,"65":1,"67":2,"68":2,"69":2,"72":1,"78":2,"79":3,"81":2,"83":1,"86":4,"98":1,"110":1,"121":1,"132":1,"135":1,"136":3,"137":3,"138":1,"139":1,"148":1,"149":1,"150":1,"151":2,"153":2,"155":2,"156":2,"157":1,"160":1,"161":1,"164":1,"170":1,"171":1,"178":1,"180":1,"185":4,"188":2,"190":1,"196":1,"197":1,"199":2,"200":1,"205":1,"213":1,"222":2,"229":2,"237":1,"247":1,"258":1,"261":1,"270":1,"277":1,"280":1,"286":1,"295":3,"296":3,"300":2,"305":1,"306":1,"309":1,"328":1,"329":1,"330":1,"346":1,"348":1,"353":1,"358":2,"361":1,"363":1,"364":3,"365":1,"372":1,"376":1,"385":1,"386":3,"387":1,"389":1,"390":2,"394":1,"398":1,"404":1,"405":1,"406":1,"411":1,"412":1,"413":2,"414":1,"416":1,"419":1,"427":2,"435":1,"437":1,"438":1,"441":1,"442":1,"443":1,"447":2,"448":2,"449":1,"452":1,"455":1,"456":1,"459":1,"460":2,"467":2,"475":1}}],["thought",{"2":{"148":1}}],["those",{"2":{"10":1,"171":1,"247":1,"376":1}}],["third",{"2":{"136":1,"363":1}}],["think",{"2":{"100":1,"199":1,"245":1,"247":1,"483":1}}],["thing",{"2":{"90":1,"181":1}}],["things",{"2":{"9":1,"36":1,"181":1,"310":1,"337":1,"442":2}}],["this",{"2":{"3":5,"4":2,"12":1,"13":2,"29":2,"33":1,"36":3,"39":2,"45":2,"47":2,"49":1,"52":1,"62":1,"67":2,"69":1,"72":5,"73":1,"78":2,"79":1,"80":1,"81":2,"82":1,"83":5,"84":1,"85":1,"86":1,"88":3,"89":1,"90":3,"91":2,"97":1,"104":1,"107":1,"121":1,"128":1,"131":1,"132":1,"135":5,"136":4,"137":3,"138":3,"139":5,"141":1,"145":3,"147":3,"148":1,"149":3,"150":2,"151":1,"152":1,"153":1,"154":1,"155":1,"156":7,"158":1,"159":1,"160":2,"161":2,"164":2,"166":1,"169":3,"170":1,"171":4,"173":16,"174":3,"178":3,"183":1,"185":2,"198":1,"199":5,"200":1,"204":1,"225":7,"228":1,"233":2,"247":1,"249":1,"257":1,"259":1,"261":2,"267":1,"269":1,"270":2,"293":2,"294":3,"295":5,"298":1,"299":1,"308":2,"310":1,"327":1,"328":1,"334":1,"336":1,"337":2,"338":2,"339":1,"340":2,"344":3,"345":3,"346":3,"348":1,"358":1,"363":3,"364":3,"365":4,"371":1,"376":1,"383":1,"387":1,"389":3,"390":1,"396":1,"398":1,"401":1,"404":1,"405":2,"407":2,"408":1,"412":1,"413":3,"414":2,"415":1,"416":1,"419":1,"421":1,"422":2,"425":1,"426":1,"427":1,"441":2,"442":3,"443":1,"445":1,"447":2,"449":1,"452":1,"453":1,"454":1,"455":1,"456":1,"458":1,"460":1,"461":5,"464":7,"466":1,"471":2}}],["threshold",{"0":{"437":1},"2":{"390":1,"393":1,"396":2,"397":2,"399":2,"407":1,"408":1,"412":1,"413":1,"425":1,"426":1,"427":1,"436":1,"437":2,"440":1,"442":5,"443":2}}],["threat",{"0":{"365":1}}],["threats",{"2":{"362":1}}],["threads",{"2":{"145":1}}],["three",{"2":{"9":1,"387":3}}],["throwing",{"2":{"296":1}}],["throw",{"2":{"72":2,"296":2}}],["throughout",{"2":{"300":1}}],["throughput",{"2":{"71":1,"80":1}}],["through",{"2":{"2":1,"4":1,"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1,"80":1,"104":1,"128":1,"139":1,"156":1,"173":2,"178":1,"179":1,"194":1,"199":1,"229":1,"253":1,"263":1,"273":1,"274":1,"293":1,"295":1,"425":2,"426":2,"427":1,"451":1,"467":1}}],["thus",{"2":{"8":1}}],["these",{"0":{"193":1,"196":1},"2":{"91":1,"106":1,"111":1,"123":1,"133":1,"136":2,"137":1,"138":1,"157":1,"161":1,"164":1,"169":1,"173":2,"181":1,"183":2,"184":1,"193":2,"195":1,"309":2,"333":2,"337":2,"358":1,"361":1,"364":1,"365":1,"390":1,"401":1,"405":1,"413":1,"431":1}}],["then",{"2":{"34":1,"36":1,"52":1,"53":1,"83":1,"86":1,"87":1,"90":2,"107":1,"142":2,"143":2,"169":1,"171":3,"179":1,"185":1,"193":1,"199":1,"208":1,"225":3,"226":1,"229":1,"246":1,"255":1,"265":1,"295":2,"304":1,"306":1,"339":1,"348":1,"414":1,"438":1,"446":1,"447":1,"464":3,"465":1,"467":1,"484":1}}],["theme=",{"2":{"145":2}}],["theme",{"0":{"211":1},"2":{"113":1,"200":2,"211":2}}],["themselves",{"2":{"70":1,"363":1,"390":1,"415":1}}],["them",{"0":{"197":1},"2":{"8":1,"10":1,"68":1,"79":3,"102":1,"147":1,"152":1,"161":1,"171":1,"179":1,"196":1,"229":1,"251":1,"296":1,"305":1,"306":1,"309":1,"362":1,"379":1,"390":1,"467":1}}],["their",{"2":{"8":1,"67":1,"70":1,"102":1,"141":1,"156":1,"170":1,"199":3,"200":1,"222":2,"225":3,"228":1,"229":3,"251":1,"294":1,"295":1,"333":1,"347":1,"353":1,"364":1,"379":1,"385":1,"386":3,"387":5,"388":3,"389":1,"390":4,"393":1,"394":1,"436":1,"441":1,"452":1,"453":1,"464":3,"466":1,"467":3}}],["they",{"2":{"8":1,"10":1,"36":1,"67":1,"69":1,"70":1,"79":1,"119":1,"120":1,"137":1,"156":1,"180":1,"193":1,"200":1,"210":2,"222":1,"225":1,"229":3,"296":1,"297":1,"329":1,"358":1,"387":1,"401":1,"442":2,"461":1,"464":1,"467":3}}],["therefore",{"2":{"160":1,"290":1,"293":1,"398":1}}],["there",{"2":{"4":1,"67":1,"79":1,"136":2,"137":1,"141":1,"160":1,"164":1,"185":1,"261":1,"270":1,"295":1,"298":1,"309":1,"310":1,"391":1,"414":1,"415":1}}],["the",{"0":{"43":1,"45":1,"89":1,"90":1,"106":1,"107":1,"108":1,"109":1,"124":1,"125":1,"193":1,"196":1,"197":1,"221":1,"224":1,"294":1,"295":1,"340":1,"345":1,"397":1,"421":1,"422":1,"463":1},"1":{"126":1,"127":1,"422":1},"2":{"0":6,"1":3,"2":4,"3":7,"4":13,"5":2,"6":1,"7":8,"8":9,"9":1,"10":9,"12":2,"13":8,"14":6,"28":2,"29":8,"30":5,"31":4,"32":12,"33":2,"34":2,"35":2,"36":11,"37":2,"38":2,"39":23,"40":1,"41":5,"42":2,"43":4,"44":2,"45":6,"46":2,"47":8,"48":1,"49":1,"51":2,"54":2,"55":8,"56":14,"57":4,"58":5,"59":8,"61":1,"62":2,"63":6,"65":5,"67":7,"68":6,"69":8,"70":3,"72":20,"73":5,"78":8,"79":2,"80":5,"81":14,"82":4,"83":16,"84":1,"85":1,"86":10,"87":2,"88":3,"89":1,"90":9,"91":8,"96":4,"97":2,"98":2,"99":1,"100":1,"101":3,"102":2,"103":2,"104":2,"105":5,"106":4,"107":4,"108":6,"109":2,"110":1,"111":3,"113":5,"114":4,"115":2,"116":2,"117":2,"118":2,"119":7,"120":7,"121":5,"122":1,"123":4,"124":2,"125":2,"126":1,"127":3,"128":1,"129":3,"130":4,"131":2,"132":1,"135":3,"136":16,"137":11,"138":13,"139":7,"140":8,"141":4,"142":5,"143":5,"145":10,"147":4,"148":5,"149":6,"150":5,"151":4,"152":1,"153":4,"154":4,"155":4,"156":24,"157":5,"158":5,"159":4,"160":7,"161":5,"162":1,"163":1,"164":16,"165":1,"166":3,"169":3,"170":1,"171":15,"173":10,"174":4,"175":3,"178":14,"179":4,"180":11,"182":1,"183":4,"185":29,"186":1,"187":3,"188":8,"189":2,"190":2,"191":2,"193":8,"194":4,"196":3,"197":1,"198":2,"199":7,"200":11,"201":1,"202":1,"204":2,"206":2,"209":3,"210":1,"211":2,"212":1,"213":1,"214":1,"215":1,"217":5,"218":2,"219":6,"220":1,"222":25,"224":1,"225":12,"226":8,"229":4,"232":1,"233":2,"234":2,"235":1,"236":4,"237":6,"238":2,"239":4,"240":4,"241":2,"243":1,"244":1,"245":1,"246":5,"247":3,"249":5,"250":3,"251":2,"252":2,"253":2,"254":6,"255":3,"257":1,"258":1,"259":1,"260":3,"261":11,"262":3,"263":2,"264":2,"265":3,"267":1,"268":5,"269":1,"270":9,"271":3,"272":2,"273":2,"274":1,"277":2,"278":2,"280":2,"281":2,"283":1,"284":2,"286":2,"287":2,"289":1,"290":3,"291":1,"293":7,"294":13,"295":24,"296":4,"297":2,"298":3,"300":3,"301":2,"302":2,"303":2,"304":3,"305":8,"306":9,"307":8,"308":4,"309":2,"310":13,"311":1,"312":1,"313":1,"314":1,"315":3,"316":1,"317":2,"319":3,"320":1,"321":2,"323":1,"325":1,"326":1,"327":4,"328":4,"329":12,"330":2,"331":6,"332":1,"333":5,"334":2,"337":1,"338":3,"339":2,"340":2,"341":2,"343":2,"344":4,"345":5,"346":5,"347":2,"348":4,"353":5,"354":2,"355":1,"358":3,"361":5,"362":4,"363":1,"364":11,"365":11,"370":4,"371":2,"372":2,"374":1,"376":2,"378":3,"379":2,"380":2,"383":1,"385":5,"386":7,"387":9,"388":1,"389":3,"390":9,"391":29,"392":2,"395":2,"397":2,"398":11,"400":8,"401":11,"402":8,"403":2,"404":8,"405":4,"406":5,"407":11,"408":6,"410":2,"411":3,"412":3,"413":17,"414":16,"415":4,"416":3,"417":4,"418":3,"419":14,"420":3,"421":6,"422":8,"425":7,"426":8,"427":13,"435":6,"436":4,"437":6,"438":4,"439":3,"440":5,"441":5,"442":14,"443":8,"444":23,"445":2,"446":4,"447":16,"448":18,"449":1,"450":2,"451":1,"453":1,"454":3,"455":9,"456":5,"457":1,"458":3,"459":1,"460":13,"461":8,"463":1,"464":12,"465":8,"467":4,"470":1,"471":2,"472":2,"473":1,"474":4,"475":6,"476":2,"477":4,"478":4,"479":2,"481":1,"482":1,"483":1,"484":5}}],["torus",{"0":{"390":1},"2":{"387":3,"390":7}}],["towards",{"2":{"196":1}}],["tower",{"2":{"136":2}}],["touch",{"2":{"166":1}}],["toutf8bytes",{"2":{"83":1}}],["toggling",{"2":{"188":1}}],["toggle",{"2":{"29":2,"30":1,"43":1,"47":1}}],["together",{"2":{"156":1,"157":2,"179":1,"297":1,"305":1,"306":1,"442":2}}],["toaddress",{"2":{"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":4,"329":4,"333":2}}],["toying",{"2":{"113":1}}],["toml",{"2":{"87":1,"88":1}}],["took",{"2":{"389":1}}],["too",{"2":{"55":1,"199":2,"200":1,"249":1,"253":1,"263":1,"273":1,"289":1}}],["toolkit",{"2":{"100":1,"101":1,"245":1,"250":1,"378":1,"483":1}}],["tools=",{"2":{"145":2}}],["tools",{"0":{"165":1},"2":{"100":1,"101":1,"145":2,"165":1,"245":1,"249":1,"250":1,"378":1,"483":1}}],["tool",{"2":{"39":1}}],["total",{"0":{"47":1},"2":{"41":3,"47":1,"188":1,"190":1,"191":1,"394":1,"441":1,"442":2}}],["topics",{"2":{"460":2}}],["top",{"0":{"436":1},"1":{"437":1,"438":1,"439":1,"440":1,"441":1,"442":1},"2":{"39":1,"111":1,"114":3,"138":1,"164":1,"185":1,"188":1}}],["tokenresponse",{"2":{"448":2}}],["tokenbaseuri",{"2":{"345":2}}],["tokenbalances",{"2":{"29":4,"33":1,"34":1,"38":3}}],["token4id",{"2":{"241":1,"479":1}}],["token2id",{"2":{"240":1,"478":1}}],["token1id",{"2":{"240":1,"478":1}}],["tokencontract",{"2":{"79":2,"391":1}}],["tokenuri",{"2":{"67":2}}],["tokenmetadata",{"2":{"62":2,"63":1}}],["tokendetails",{"2":{"47":4}}],["tokenidasstring",{"2":{"152":1,"154":1,"157":2}}],["tokenids",{"2":{"62":3,"63":3,"352":1,"391":3}}],["tokenid",{"2":{"4":4,"10":3,"56":1,"58":3,"67":1,"68":1,"72":1,"78":1,"86":3,"89":1,"90":1,"91":3,"127":1,"155":1,"239":4,"240":1,"241":1,"346":2,"391":2,"477":4,"478":1,"479":1}}],["tokens",{"0":{"4":1,"21":1,"22":1,"24":1,"28":1,"29":1,"46":1,"47":1,"238":1,"239":1,"240":1,"333":1,"476":1,"477":1,"478":1},"1":{"29":1,"30":1,"47":1},"2":{"4":8,"8":1,"10":6,"29":3,"36":1,"38":1,"39":4,"41":3,"47":1,"48":1,"56":4,"58":6,"60":1,"61":1,"62":1,"67":2,"68":1,"70":3,"72":1,"150":1,"151":1,"152":1,"153":1,"154":2,"155":1,"219":1,"333":1,"334":1,"344":1,"346":1,"347":2,"348":4,"359":1,"391":2}}],["token",{"0":{"3":1,"17":1,"30":1,"44":1,"61":1,"62":1,"63":1,"65":1,"337":1},"1":{"45":1,"62":1,"63":1,"64":2,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1},"2":{"2":3,"3":4,"4":6,"10":4,"12":1,"13":2,"29":5,"30":1,"31":1,"36":2,"39":7,"41":4,"43":4,"45":4,"47":8,"48":2,"51":2,"55":4,"56":7,"58":1,"60":3,"61":6,"62":2,"63":2,"64":7,"65":2,"67":3,"68":3,"69":1,"70":3,"72":1,"149":1,"150":4,"152":2,"154":4,"173":1,"175":2,"238":4,"239":3,"240":3,"241":2,"336":1,"337":5,"338":4,"345":2,"346":2,"347":1,"348":2,"353":1,"364":1,"385":1,"391":4,"456":1,"476":4,"477":3,"478":3,"479":2}}],["todotodoplease",{"2":{"62":1}}],["todo",{"0":{"227":1},"2":{"1":1,"96":1,"370":1,"461":1}}],["today",{"2":{"0":1,"12":1,"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1}}],["to",{"0":{"45":1,"86":1,"91":1,"148":1,"221":1,"335":1,"343":1,"417":1},"1":{"87":1,"88":1,"89":1,"90":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"0":5,"1":5,"2":3,"3":8,"4":10,"6":2,"7":5,"8":4,"9":2,"10":7,"12":1,"13":6,"14":1,"17":2,"28":1,"29":7,"30":3,"31":3,"32":3,"33":1,"34":1,"36":11,"37":1,"39":17,"41":1,"42":1,"43":4,"44":1,"45":2,"46":1,"47":6,"48":4,"49":1,"51":3,"55":4,"56":13,"59":2,"61":4,"62":2,"63":4,"65":4,"67":1,"68":2,"69":5,"71":2,"72":16,"73":3,"78":2,"79":8,"80":6,"81":11,"82":1,"83":6,"84":1,"85":2,"86":6,"88":4,"89":1,"90":3,"91":4,"96":1,"97":2,"98":3,"102":1,"103":1,"105":2,"106":3,"107":1,"108":1,"111":1,"115":1,"116":1,"117":1,"119":2,"120":2,"121":1,"122":1,"123":1,"124":1,"128":1,"129":6,"130":3,"131":1,"135":2,"136":10,"137":8,"138":6,"139":7,"140":3,"141":5,"142":2,"143":2,"145":6,"147":2,"148":5,"149":5,"150":5,"151":4,"152":1,"153":4,"154":2,"155":4,"156":16,"157":3,"158":1,"159":3,"160":6,"161":7,"163":2,"164":10,"165":4,"166":1,"169":2,"170":3,"171":14,"173":11,"174":3,"175":3,"178":5,"179":2,"180":4,"181":5,"182":2,"183":6,"184":1,"185":9,"186":3,"187":1,"188":2,"192":1,"193":7,"194":3,"195":1,"196":1,"197":2,"198":4,"199":9,"200":10,"202":1,"206":1,"207":1,"209":1,"210":3,"213":1,"214":1,"215":1,"216":1,"217":2,"218":1,"219":5,"222":7,"224":1,"225":11,"226":4,"228":1,"229":3,"233":2,"235":1,"237":5,"238":7,"239":7,"240":7,"241":11,"246":2,"247":5,"249":6,"251":1,"252":1,"255":1,"257":1,"258":1,"259":3,"260":1,"261":2,"263":1,"265":1,"267":1,"268":1,"269":3,"270":2,"271":1,"277":2,"278":1,"280":1,"283":1,"284":1,"286":2,"290":1,"293":1,"294":3,"295":2,"296":2,"297":1,"300":1,"305":1,"306":1,"307":2,"308":1,"309":2,"310":5,"311":1,"312":1,"313":1,"314":1,"315":2,"316":1,"319":2,"320":2,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1,"327":2,"328":5,"329":7,"330":3,"331":4,"332":1,"333":4,"334":3,"338":2,"339":1,"341":1,"343":1,"344":5,"345":4,"346":6,"347":2,"348":3,"350":1,"353":5,"354":1,"356":3,"358":2,"361":1,"362":2,"363":6,"364":1,"365":5,"370":1,"371":2,"372":3,"376":3,"379":1,"380":1,"382":1,"383":2,"385":5,"386":4,"387":2,"388":1,"389":1,"390":7,"391":2,"392":1,"394":1,"398":1,"401":2,"402":1,"403":2,"404":2,"405":1,"406":1,"407":3,"408":2,"409":1,"410":1,"411":1,"413":4,"414":8,"415":2,"416":1,"417":2,"419":2,"420":2,"421":3,"422":3,"424":1,"425":1,"427":2,"435":1,"436":1,"437":1,"438":2,"439":1,"440":2,"441":2,"442":4,"445":2,"446":2,"447":9,"448":7,"452":1,"453":4,"454":1,"455":1,"456":2,"457":2,"458":1,"460":3,"461":7,"463":1,"464":11,"465":4,"466":1,"467":3,"471":2,"473":1,"475":5,"476":7,"477":7,"478":7,"479":11,"484":2}}],["azure",{"2":{"345":1}}],["awesome",{"2":{"199":1}}],["aware",{"2":{"181":1,"226":1,"465":1}}],["away",{"2":{"156":1}}],["await",{"2":{"7":1,"12":1,"13":2,"14":1,"29":1,"30":1,"33":1,"38":1,"43":1,"45":1,"47":1,"49":1,"62":1,"63":2,"72":4,"78":2,"79":2,"83":1,"86":6,"91":3,"148":2,"159":2,"160":2,"200":2,"201":1,"202":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"225":1,"226":2,"231":1,"232":1,"233":1,"234":2,"235":1,"237":1,"238":2,"239":3,"240":3,"241":2,"303":1,"304":1,"305":1,"306":1,"307":2,"310":2,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1,"320":2,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1,"327":2,"329":6,"331":3,"332":1,"333":5,"391":2,"406":1,"425":1,"426":1,"446":2,"447":4,"448":3,"449":2,"450":3,"454":1,"455":2,"456":1,"457":1,"458":1,"460":2,"461":2,"464":1,"465":2,"469":1,"470":1,"471":1,"472":2,"473":1,"475":1,"476":2,"477":3,"478":3,"479":2}}],["ayourclass",{"2":{"173":2}}],["avoid",{"2":{"129":1,"181":1,"200":1}}],["availability",{"2":{"39":1}}],["available",{"0":{"112":1},"1":{"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1},"2":{"5":1,"39":2,"55":2,"57":1,"72":1,"97":1,"99":1,"103":1,"129":1,"140":1,"141":1,"166":1,"199":1,"200":1,"211":1,"215":1,"243":1,"244":1,"252":1,"253":1,"258":1,"262":3,"263":1,"268":1,"272":1,"273":1,"274":1,"279":1,"280":1,"288":1,"289":1,"291":1,"293":2,"308":1,"353":1,"358":1,"363":1,"371":1,"380":1,"385":1,"448":1,"481":1,"482":1}}],["avalanche",{"0":{"38":1}}],["avax",{"0":{"38":1}}],["among",{"2":{"442":1}}],["amountasbiginteger",{"2":{"329":4}}],["amountasstring",{"2":{"150":1,"154":1,"157":2}}],["amount4",{"2":{"241":1,"479":1}}],["amount3",{"2":{"241":1,"479":1}}],["amountrequiredraw",{"2":{"126":1}}],["amount",{"2":{"91":1,"150":1,"151":1,"155":1,"156":1,"157":1,"218":2,"238":2,"240":1,"317":1,"346":1,"419":1,"476":2,"478":1}}],["amount2",{"2":{"79":1,"238":1,"239":1,"240":1,"241":1,"476":1,"477":1,"478":1,"479":1}}],["amount1",{"2":{"79":1,"238":1,"239":1,"240":1,"476":1,"477":1,"478":1}}],["amazon",{"2":{"140":2,"363":1,"452":1}}],["amp",{"0":{"3":1,"5":1,"36":1,"40":1,"55":1,"402":1,"423":1},"1":{"56":1,"57":1,"58":1,"59":1,"60":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1,"412":1,"413":1,"414":1,"415":1,"416":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1},"2":{"2":3,"3":1,"12":1,"13":1,"17":2,"29":2,"30":3,"34":3,"38":2,"41":1,"43":3,"45":3,"47":3,"51":3,"55":1,"73":1,"80":1,"108":2,"173":10,"174":1,"175":1,"181":2,"193":2,"397":3,"448":2}}],["admire",{"0":{"347":1}}],["adapter",{"2":{"300":1}}],["advanced",{"0":{"296":1},"1":{"297":1},"2":{"106":1,"137":1,"149":1,"296":1}}],["advantages",{"2":{"197":1}}],["advantage",{"2":{"70":1,"328":1}}],["adhere",{"2":{"36":1}}],["addr",{"2":{"440":1}}],["address",{"0":{"43":1,"49":1,"78":1,"224":1,"401":1,"463":1},"2":{"29":3,"30":4,"34":1,"36":1,"38":3,"41":2,"43":6,"45":5,"47":4,"56":4,"60":1,"62":1,"63":1,"70":1,"72":6,"73":1,"78":4,"79":2,"80":1,"83":9,"86":10,"87":2,"89":4,"90":4,"91":5,"140":1,"149":1,"151":1,"153":1,"155":1,"156":1,"160":1,"173":1,"200":1,"214":1,"224":3,"225":3,"226":3,"232":1,"238":2,"239":8,"240":8,"241":7,"246":1,"302":3,"316":1,"320":1,"328":1,"330":2,"331":2,"333":2,"338":1,"344":1,"346":4,"348":1,"391":5,"395":3,"396":4,"398":1,"399":5,"400":3,"401":4,"404":1,"406":10,"414":1,"417":1,"422":2,"426":1,"440":2,"443":2,"444":2,"447":1,"448":1,"449":2,"453":1,"460":2,"461":1,"463":3,"464":3,"465":3,"470":1,"476":2,"477":8,"478":8,"479":7,"484":1}}],["addresses",{"2":{"10":2,"29":1,"30":1,"43":2,"47":1,"49":2,"60":1,"189":1,"391":1,"405":2,"413":3}}],["adds",{"2":{"386":1}}],["adddynamic",{"2":{"173":2}}],["added",{"2":{"50":1,"164":1,"255":1,"263":1,"265":1,"273":1,"390":1,"442":1}}],["addition",{"2":{"56":1,"65":1,"136":1,"160":1,"249":1,"295":1}}],["additionally",{"2":{"32":1,"50":1,"59":1,"67":1,"70":1,"105":1,"149":1,"194":1,"249":1}}],["additional",{"2":{"10":1,"29":1,"30":1,"43":1,"47":1,"67":1,"68":1,"128":1,"144":1,"186":1,"196":1,"199":1,"249":1,"354":1,"389":2,"397":1,"420":1,"452":1,"453":2}}],["adding",{"2":{"10":1}}],["add",{"0":{"77":1,"78":1,"87":1},"2":{"1":1,"3":2,"7":1,"33":1,"86":1,"88":2,"96":1,"105":1,"107":1,"123":1,"135":2,"137":3,"142":1,"143":1,"145":2,"160":1,"161":2,"169":1,"173":1,"185":1,"200":1,"247":4,"254":1,"260":1,"264":1,"271":1,"274":1,"363":1,"370":1,"376":4,"390":2}}],["ai",{"2":{"17":1}}],["absolute",{"2":{"225":1,"464":1}}],["abstracted",{"2":{"156":1}}],["abstraction",{"2":{"8":1,"197":1}}],["abis",{"2":{"156":1,"333":1}}],["abi",{"2":{"72":1,"91":1,"151":1,"153":1,"155":1,"156":5,"328":3,"329":1,"330":1,"333":1,"334":1,"399":4,"427":1,"441":1,"442":1,"443":2}}],["ability",{"2":{"72":1,"390":1}}],["about",{"2":{"48":1,"56":1,"61":1,"70":1,"71":1,"79":1,"80":1,"186":1,"200":1,"295":1,"348":1}}],["above",{"0":{"295":1},"2":{"4":2,"36":1,"49":1,"56":3,"58":1,"78":1,"135":1,"149":2,"150":1,"156":1,"200":1,"225":1,"226":1,"293":1,"294":1,"295":2,"311":1,"314":1,"316":1,"318":1,"320":1,"397":1,"425":1,"426":1,"464":1,"465":1}}],["able",{"2":{"36":1,"55":1,"72":1,"137":1,"183":1,"199":3,"216":1,"219":1,"222":1,"365":2,"390":1,"425":1}}],["audits",{"0":{"431":1},"1":{"432":1,"433":1,"434":1},"2":{"431":1}}],["audited",{"2":{"363":1}}],["audio",{"2":{"4":2}}],["auto",{"2":{"387":1}}],["autoconnect",{"2":{"255":1,"295":2}}],["automatic",{"0":{"458":1},"2":{"80":1,"458":1}}],["automatically",{"2":{"8":1,"39":3,"55":1,"108":1,"133":1,"135":2,"137":1,"139":1,"179":1,"204":1,"209":1,"213":1,"214":1,"225":3,"249":1,"342":1,"383":1,"441":1,"444":1,"446":1,"464":3}}],["authorizationmessage",{"2":{"233":2,"234":1,"471":2,"472":1}}],["authorization",{"0":{"233":1,"234":1,"471":1,"472":1},"2":{"226":1,"465":1}}],["authorized",{"2":{"234":2,"472":2}}],["authorizenonce",{"0":{"207":1},"2":{"207":2}}],["authorize",{"0":{"206":1},"2":{"200":1,"206":2,"225":2,"229":2,"233":1,"464":2,"467":2,"471":1}}],["authfailure",{"2":{"173":2}}],["authsuccess",{"2":{"173":3,"174":1,"175":1,"180":1}}],["authrequirescode",{"2":{"173":3,"174":1}}],["authenticating",{"2":{"364":1}}],["authentication",{"0":{"139":1,"172":1,"174":1,"175":1,"176":1},"1":{"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"173":1,"174":1,"175":1,"176":1},"2":{"96":1,"119":1,"120":1,"139":4,"173":1,"174":1,"175":1,"178":1,"196":1,"229":1,"370":1,"387":1,"445":1,"453":1,"467":1}}],["authenticator",{"2":{"173":3,"174":1}}],["authenticates",{"2":{"365":1}}],["authenticated",{"2":{"98":1,"372":1}}],["authenticate",{"0":{"223":1,"225":1,"226":1,"462":1,"464":1,"465":1},"1":{"224":1,"225":1,"226":1,"463":1,"464":1,"465":1},"2":{"7":1,"225":2,"226":1,"364":1,"445":1,"464":2,"465":1}}],["auth",{"0":{"363":1,"448":1},"2":{"12":1,"72":2,"78":1,"83":1,"91":2,"171":1,"173":1,"174":1,"179":1,"180":2,"183":1,"203":1,"213":1,"226":1,"363":1,"364":1,"365":2,"445":2,"446":1,"448":4,"451":1,"453":1,"465":1}}],["achieves",{"2":{"364":1}}],["achievement",{"0":{"21":1,"22":1}}],["act",{"2":{"229":1,"467":1}}],["actor",{"2":{"171":2,"178":1,"386":1,"389":1,"390":1}}],["acting",{"2":{"386":1}}],["active",{"2":{"450":1}}],["activities",{"2":{"391":2}}],["activity",{"2":{"145":4,"222":1,"389":1,"391":1}}],["activate",{"2":{"284":2}}],["activated",{"2":{"284":1}}],["activation",{"0":{"284":1}}],["actions",{"2":{"229":1,"364":1,"458":1,"467":1}}],["action",{"2":{"145":8,"200":1,"229":1,"235":1,"350":1,"364":1,"456":2,"458":1,"467":1,"473":1}}],["actually",{"2":{"237":1,"475":1}}],["actual",{"2":{"7":1,"89":1,"200":1,"225":1,"247":1,"376":1,"464":1}}],["across",{"2":{"32":1,"39":1,"65":1}}],["acquire",{"2":{"7":1,"89":1,"97":1,"169":1,"371":1}}],["acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",{"2":{"460":2}}],["accurately",{"2":{"39":1}}],["accelerate",{"2":{"192":1,"198":1}}],["accepts",{"2":{"149":1,"329":1}}],["accepting",{"2":{"81":1,"147":1}}],["accepted",{"2":{"10":1,"200":1}}],["accessing",{"2":{"460":1}}],["accessible",{"2":{"4":2,"57":1,"387":1}}],["accessed",{"2":{"308":1,"361":1}}],["access",{"2":{"3":3,"7":2,"12":2,"17":1,"28":1,"29":3,"30":1,"31":1,"33":1,"36":1,"37":1,"38":2,"39":1,"42":1,"43":2,"44":1,"45":1,"46":1,"47":1,"49":2,"52":2,"62":2,"63":3,"72":2,"78":1,"83":2,"86":8,"87":1,"91":1,"97":1,"98":1,"106":1,"107":1,"130":1,"138":1,"139":1,"151":1,"153":1,"155":1,"166":1,"169":1,"199":3,"200":2,"216":2,"363":3,"365":3,"371":1,"372":1,"388":2,"390":1,"435":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["accountaddresses",{"2":{"43":1}}],["accountaddress",{"2":{"29":7,"30":6,"34":2,"38":6,"43":4,"45":2}}],["accounts",{"0":{"355":1},"1":{"356":1,"357":1},"2":{"9":2,"141":1,"354":1,"355":2,"449":4}}],["account",{"0":{"3":1},"2":{"2":2,"3":2,"12":2,"13":1,"14":1,"29":5,"30":4,"34":1,"38":4,"43":5,"72":3,"78":2,"79":2,"81":1,"82":1,"83":4,"91":1,"147":1,"197":1,"200":1,"225":1,"246":1,"261":1,"270":1,"338":1,"341":1,"363":1,"387":3,"390":1,"445":1,"446":1,"464":1,"484":1}}],["aggregating",{"2":{"6":1}}],["against",{"2":{"9":1,"68":1,"365":2,"390":1,"398":2,"414":1,"422":1}}],["again",{"2":{"3":1,"185":2,"208":1,"345":1,"387":1}}],["aka",{"0":{"38":1},"2":{"4":1}}],["atomic",{"2":{"416":1}}],["attested",{"2":{"363":1}}],["attempts",{"2":{"293":1}}],["attempting",{"2":{"180":1}}],["attempt",{"2":{"135":1,"137":1,"268":1,"277":1,"278":1,"286":1}}],["attributes",{"0":{"69":1,"344":1},"2":{"56":1,"67":6,"68":1,"69":6,"337":1,"344":1}}],["attacker",{"2":{"365":2,"388":1}}],["attackers",{"2":{"363":1}}],["attacks",{"2":{"9":1,"448":1}}],["attached",{"2":{"139":1,"164":1}}],["attach",{"2":{"56":1,"171":1}}],["at",{"2":{"4":1,"29":1,"39":1,"56":2,"72":1,"73":1,"81":1,"93":1,"103":1,"132":1,"138":2,"166":2,"170":1,"185":2,"188":1,"196":1,"225":1,"252":1,"305":1,"306":1,"310":4,"316":2,"320":2,"329":1,"331":1,"337":1,"365":1,"367":1,"374":1,"380":1,"382":1,"383":1,"387":1,"402":1,"403":1,"464":1}}],["alpha",{"2":{"164":1}}],["alias",{"2":{"81":2}}],["alternatively",{"2":{"193":1,"198":1,"222":2,"329":1,"331":1}}],["alternative",{"2":{"51":1}}],["alongside",{"2":{"255":1,"265":1}}],["along",{"2":{"32":1,"345":1}}],["always",{"2":{"29":1,"30":1,"39":1,"43":1,"47":1,"132":1,"166":1,"222":1,"226":1,"348":1,"364":1,"418":1,"419":1,"444":1,"461":1,"465":1}}],["already",{"2":{"12":1,"73":1,"103":1,"135":1,"137":2,"145":2,"171":1,"200":1,"213":1,"214":1,"215":1,"222":2,"252":1,"328":1,"346":1,"380":1,"446":1}}],["also",{"2":{"4":1,"10":1,"31":1,"36":2,"48":1,"55":1,"56":1,"61":1,"72":3,"79":1,"80":1,"99":1,"100":1,"128":1,"129":1,"135":1,"136":1,"161":1,"173":1,"183":1,"184":1,"188":1,"194":1,"200":2,"219":1,"222":1,"243":1,"244":1,"245":1,"247":1,"249":3,"259":1,"269":1,"333":2,"334":1,"353":1,"358":1,"364":1,"365":1,"376":1,"385":1,"414":1,"422":1,"426":1,"448":1,"481":1,"482":1,"483":1}}],["ally",{"2":{"68":1}}],["allowed",{"2":{"364":1,"415":1}}],["allowlists",{"2":{"364":1}}],["allows",{"2":{"39":1,"55":1,"79":1,"156":1,"157":2,"199":1,"225":3,"295":2,"300":1,"344":1,"353":1,"354":1,"358":1,"385":1,"389":1,"398":1,"404":1,"407":1,"411":1,"464":3}}],["allowing",{"2":{"9":1,"105":1,"156":1,"199":1}}],["allow",{"2":{"8":3,"86":3,"141":1,"151":1,"153":1,"155":1,"171":1,"199":1,"214":1,"219":1,"361":1,"424":1}}],["all",{"0":{"47":1,"294":1},"2":{"1":1,"3":1,"29":2,"30":1,"36":2,"39":7,"41":4,"43":1,"45":2,"47":2,"79":1,"99":1,"102":1,"121":1,"140":1,"141":1,"151":1,"153":1,"155":1,"156":1,"157":3,"158":1,"179":2,"193":1,"197":2,"198":1,"199":1,"216":1,"226":1,"244":1,"249":2,"251":1,"259":1,"269":1,"293":1,"294":1,"295":2,"296":1,"305":1,"306":1,"334":1,"337":1,"339":1,"340":1,"363":1,"379":1,"382":1,"383":1,"387":1,"390":1,"404":1,"407":1,"414":1,"419":1,"444":1,"465":1,"482":1}}],["arcadeum",{"2":{"431":2}}],["architectures",{"2":{"185":1}}],["architecture",{"0":{"362":1},"1":{"363":1,"364":1},"2":{"4":1}}],["argent",{"2":{"360":1}}],["argument",{"2":{"161":1,"455":1}}],["arguments",{"2":{"36":1,"139":1,"329":2}}],["arrive",{"2":{"90":1}}],["array",{"2":{"43":4,"49":1,"62":2,"63":2,"67":1,"69":1,"119":1,"120":1,"157":1,"391":2,"427":1}}],["arbitrum",{"2":{"72":1,"78":1,"352":1,"391":2}}],["arbitrary",{"2":{"10":1,"14":1,"68":1,"69":1,"156":1,"329":1,"334":1,"358":1}}],["artstation",{"2":{"68":1}}],["artist",{"2":{"68":1}}],["artists",{"2":{"68":1}}],["armor",{"2":{"68":1}}],["areas",{"2":{"69":1}}],["aren",{"2":{"12":1}}],["are",{"0":{"193":1,"196":1,"197":1,"397":1},"2":{"3":1,"8":3,"10":2,"29":1,"30":1,"31":1,"36":5,"39":1,"41":1,"43":1,"47":1,"55":1,"65":1,"69":1,"70":2,"83":1,"86":1,"91":1,"119":1,"120":1,"121":2,"129":1,"138":1,"139":1,"141":1,"149":2,"151":1,"153":1,"154":1,"155":1,"156":3,"157":1,"160":1,"161":1,"173":2,"174":1,"180":3,"181":1,"187":3,"195":1,"197":1,"199":2,"200":1,"201":1,"229":2,"246":2,"249":1,"254":1,"260":1,"261":1,"262":1,"270":1,"271":1,"295":1,"298":1,"301":1,"307":1,"309":2,"310":1,"329":1,"330":1,"344":1,"348":1,"353":1,"355":2,"358":3,"362":2,"364":1,"365":3,"385":1,"387":3,"388":1,"390":1,"391":2,"397":1,"398":1,"401":1,"402":1,"405":1,"413":3,"414":1,"415":1,"417":1,"425":2,"426":1,"431":1,"435":1,"437":1,"438":1,"439":1,"440":1,"442":1,"444":1,"446":1,"448":1,"449":1,"458":1,"459":1,"460":1,"461":1,"467":2,"484":2}}],["arise",{"2":{"0":1}}],["after",{"2":{"3":1,"81":1,"86":1,"132":1,"145":1,"164":1,"166":1,"173":3,"175":1,"178":1,"185":1,"200":1,"209":2,"338":1,"391":1,"403":1}}],["apk",{"2":{"145":2}}],["ape",{"2":{"67":2}}],["appprops",{"2":{"295":1}}],["appprotocol",{"0":{"203":1}}],["appropriate",{"2":{"138":1,"156":1,"164":1,"260":1,"271":1,"327":1,"329":1}}],["approach",{"2":{"72":1,"148":1,"159":1,"160":1,"181":1}}],["applied",{"2":{"438":1}}],["applicable",{"2":{"272":2}}],["application",{"2":{"6":1,"10":1,"14":1,"29":2,"30":2,"38":2,"43":2,"45":2,"47":2,"49":2,"55":1,"62":2,"63":4,"81":1,"89":1,"90":1,"102":1,"103":1,"104":1,"106":1,"138":1,"141":2,"145":4,"160":1,"178":1,"183":4,"186":1,"228":1,"229":1,"236":1,"251":1,"252":1,"261":1,"270":1,"294":4,"295":1,"352":1,"361":1,"379":1,"380":1,"391":3,"445":1,"448":2,"466":1,"467":1,"474":1}}],["applications",{"0":{"250":1,"378":1},"1":{"251":1,"379":1},"2":{"0":1,"36":1,"101":1,"187":1,"225":1,"226":1,"229":2,"250":1,"296":1,"363":1,"378":1,"464":1,"465":1,"467":2}}],["apply",{"2":{"164":3}}],["appleid",{"2":{"390":1}}],["applevision",{"2":{"185":1}}],["apple",{"0":{"448":1},"2":{"119":1,"141":1,"213":1,"215":1,"447":1,"448":1}}],["appname",{"0":{"278":1,"287":1},"2":{"106":1,"107":1,"130":1,"275":1,"283":3,"287":1}}],["app`",{"2":{"91":1}}],["appear",{"2":{"156":1}}],["appears",{"2":{"67":1,"129":1,"156":1}}],["appended",{"2":{"345":1}}],["append",{"2":{"7":1,"13":1,"401":1}}],["apps",{"2":{"39":2,"161":1,"184":1}}],["app",{"0":{"202":1,"295":1},"2":{"4":8,"7":1,"10":1,"12":2,"14":1,"29":3,"30":3,"32":2,"33":1,"34":2,"38":3,"43":3,"45":3,"47":3,"49":2,"52":2,"53":1,"56":4,"58":6,"60":1,"62":2,"63":4,"67":2,"68":1,"80":1,"82":1,"83":1,"86":1,"90":1,"91":2,"106":4,"107":3,"110":1,"111":1,"123":2,"130":4,"145":1,"163":1,"185":2,"199":1,"200":2,"202":3,"225":1,"226":1,"249":1,"255":2,"257":1,"258":1,"261":5,"262":5,"265":2,"267":1,"268":1,"270":5,"272":4,"275":1,"278":1,"283":1,"288":1,"293":2,"294":1,"295":3,"296":1,"348":2,"352":1,"363":1,"365":1,"382":1,"383":1,"391":2,"448":1,"464":1,"465":1}}],["apis",{"2":{"86":1,"90":1,"136":1,"187":1,"192":1,"193":3,"194":2,"361":1}}],["api",{"0":{"1":1,"2":1,"8":1,"11":1,"28":1,"55":1,"177":1,"178":1,"179":1,"181":1,"352":1},"1":{"3":1,"4":1,"5":1,"9":1,"10":1,"11":1,"12":2,"13":2,"14":2,"29":1,"30":1,"56":1,"57":1,"58":1,"59":1,"60":1,"178":1,"179":1,"180":1,"181":1},"2":{"1":3,"2":4,"3":6,"4":1,"8":1,"28":1,"29":2,"31":3,"32":4,"33":1,"37":1,"38":1,"39":7,"42":1,"43":1,"44":1,"46":1,"49":1,"51":5,"52":2,"55":3,"57":1,"59":1,"60":1,"62":1,"80":2,"81":1,"86":5,"97":1,"132":1,"136":1,"138":2,"140":1,"166":1,"169":1,"171":1,"178":5,"180":1,"190":1,"194":1,"308":1,"351":1,"352":1,"371":1,"391":3,"392":1,"447":1,"461":1}}],["announced",{"2":{"202":1}}],["anonymizes",{"2":{"187":1}}],["another",{"2":{"29":1,"32":1,"49":1,"56":1,"59":1,"62":1,"63":2,"67":1,"364":1,"387":1,"391":1,"395":1}}],["analytics",{"0":{"186":1},"1":{"187":1,"188":1,"189":1,"190":1,"191":1},"2":{"187":2}}],["anatomy",{"0":{"9":1}}],["animation",{"2":{"4":2}}],["an",{"0":{"15":1,"23":1,"83":1,"293":1,"352":1},"1":{"84":1,"85":1},"2":{"4":5,"10":1,"14":1,"29":2,"30":1,"33":1,"36":1,"38":1,"41":1,"43":1,"45":1,"47":1,"49":2,"52":1,"55":1,"60":1,"62":2,"63":1,"67":2,"68":3,"69":2,"72":1,"79":2,"80":1,"81":2,"83":2,"90":1,"91":1,"100":1,"110":1,"129":4,"135":1,"139":1,"140":1,"141":1,"148":2,"149":1,"150":3,"151":2,"152":3,"153":2,"154":3,"155":2,"156":4,"158":1,"159":2,"160":2,"161":2,"164":1,"170":1,"171":2,"174":1,"181":1,"183":1,"193":1,"197":1,"199":2,"206":1,"207":1,"214":1,"218":1,"222":1,"225":2,"226":1,"228":1,"238":1,"239":2,"240":2,"245":1,"249":1,"260":1,"261":2,"270":2,"271":1,"278":1,"279":2,"291":1,"293":1,"295":3,"299":1,"300":2,"305":2,"306":2,"307":1,"328":1,"329":2,"330":3,"331":1,"333":2,"334":1,"338":1,"344":1,"361":2,"364":1,"365":2,"387":1,"388":1,"391":4,"395":1,"404":1,"413":1,"414":1,"419":1,"439":1,"440":2,"444":1,"445":1,"446":1,"447":6,"450":1,"452":1,"455":1,"456":1,"461":3,"464":2,"465":1,"466":1,"476":1,"477":2,"478":2,"483":1}}],["android=",{"2":{"145":2}}],["androidmanifest",{"2":{"145":1}}],["android",{"0":{"145":1},"2":{"133":1,"145":41,"167":1,"182":1,"183":3}}],["and",{"0":{"4":1,"10":1,"29":2,"30":2,"81":1,"83":1,"185":1,"197":1,"201":1,"231":1,"294":1,"295":2,"337":1,"347":1,"429":1,"469":1},"1":{"82":1,"84":1,"85":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1},"2":{"0":1,"1":3,"2":4,"3":5,"4":6,"6":1,"7":3,"8":4,"9":1,"10":1,"13":1,"30":1,"31":2,"32":5,"35":1,"36":5,"39":14,"43":1,"47":1,"48":1,"51":1,"54":1,"55":3,"56":6,"57":1,"59":1,"61":2,"65":3,"67":1,"68":1,"69":8,"70":2,"71":1,"73":1,"79":1,"80":5,"81":4,"82":1,"83":3,"86":6,"89":4,"90":5,"91":6,"96":1,"97":1,"99":1,"100":1,"101":1,"102":3,"104":1,"105":2,"110":1,"119":1,"120":1,"124":1,"128":1,"129":1,"130":1,"131":1,"132":2,"135":2,"136":3,"137":4,"138":4,"139":3,"140":2,"142":1,"143":1,"145":4,"147":1,"148":4,"149":4,"150":1,"151":2,"152":1,"153":2,"154":1,"155":2,"156":4,"157":1,"159":1,"160":4,"161":3,"163":1,"164":3,"165":1,"166":2,"170":1,"171":1,"173":1,"174":1,"175":1,"178":2,"181":1,"182":1,"183":3,"185":4,"187":3,"188":1,"190":1,"192":1,"193":5,"194":2,"195":1,"196":3,"197":1,"198":3,"199":6,"200":5,"204":2,"206":1,"210":1,"220":1,"222":2,"225":3,"226":1,"229":3,"232":1,"236":1,"241":1,"244":1,"245":1,"247":1,"249":2,"250":1,"251":3,"255":1,"262":1,"265":1,"268":1,"284":1,"290":1,"293":4,"294":2,"295":7,"296":1,"297":1,"303":1,"304":1,"305":2,"306":2,"307":1,"308":1,"309":1,"310":1,"311":1,"314":1,"316":1,"318":1,"320":1,"321":1,"326":1,"327":1,"328":2,"329":3,"331":2,"333":2,"334":2,"337":1,"338":2,"341":1,"342":1,"344":1,"345":2,"346":1,"347":2,"348":1,"353":1,"354":1,"358":1,"361":3,"363":4,"364":5,"370":1,"371":1,"378":1,"379":3,"385":1,"387":3,"389":1,"390":5,"391":1,"392":1,"393":1,"396":1,"398":3,"400":1,"408":2,"414":1,"418":1,"419":1,"422":1,"424":1,"425":2,"426":1,"427":2,"431":1,"435":1,"436":2,"437":1,"439":2,"440":1,"442":5,"446":1,"448":4,"449":1,"454":2,"461":1,"464":3,"465":1,"467":3,"470":1,"474":1,"479":1,"482":1,"483":1}}],["anywhere",{"2":{"148":1,"159":1,"160":1}}],["anyway",{"2":{"78":1}}],["anyone",{"2":{"90":1,"363":1}}],["anything",{"2":{"36":1,"200":1}}],["any",{"0":{"29":1,"43":1,"45":1,"49":1,"62":1,"221":1},"2":{"0":1,"8":2,"10":3,"29":1,"30":1,"31":1,"36":1,"38":1,"39":1,"41":3,"43":3,"45":4,"47":4,"48":2,"55":1,"56":2,"61":4,"69":2,"72":3,"73":1,"78":1,"79":1,"81":1,"86":6,"98":1,"132":1,"136":1,"137":1,"139":1,"151":1,"153":1,"155":1,"156":1,"157":1,"165":1,"166":1,"173":1,"178":2,"186":1,"199":3,"200":1,"222":1,"226":1,"330":1,"333":1,"334":1,"345":1,"346":1,"365":1,"372":1,"382":1,"383":1,"397":2,"413":2,"420":1,"431":1,"437":1,"439":1,"441":1,"442":1,"444":1,"448":1,"450":2,"459":1,"460":1,"461":1,"465":1}}],["answered",{"2":{"81":1}}],["answer",{"2":{"0":2,"447":2}}],["asking",{"2":{"225":1,"453":1,"464":1}}],["ask",{"0":{"224":1,"463":1},"2":{"210":1,"238":1,"476":1}}],["askforemail",{"0":{"210":1},"2":{"210":2}}],["asks",{"2":{"136":1}}],["aspects",{"2":{"445":1}}],["aspect",{"2":{"200":2,"212":1}}],["asequencebackendmanager",{"2":{"173":1}}],["assigned",{"2":{"403":2}}],["assistance",{"2":{"29":1,"49":1,"62":1,"63":2,"391":1}}],["assured",{"2":{"363":1}}],["assuming",{"2":{"178":1}}],["assumes",{"2":{"200":1}}],["assume",{"2":{"73":1}}],["assembled",{"2":{"329":1}}],["assets",{"2":{"4":1,"56":3,"68":1,"84":1,"121":5,"135":1,"136":2,"138":2,"145":1,"164":1,"193":3,"196":1}}],["assetid",{"2":{"4":2}}],["assetidorassettype",{"2":{"4":1}}],["assettype",{"2":{"4":3}}],["asset",{"2":{"4":6,"67":1,"68":1}}],["asstring",{"2":{"307":2}}],["associated",{"2":{"191":1,"232":1,"427":1,"470":1}}],["association",{"2":{"139":1}}],["asynchronous",{"2":{"148":1,"159":1,"160":1,"296":1}}],["async",{"2":{"7":1,"12":1,"72":2,"78":1,"83":1,"86":5,"91":2,"126":1,"148":1,"159":1,"160":1,"284":2,"296":1,"329":1,"391":1,"448":3}}],["as",{"0":{"248":1,"377":1},"2":{"0":2,"3":3,"4":2,"8":1,"9":1,"29":1,"32":3,"36":2,"39":1,"49":1,"55":2,"56":2,"58":1,"59":2,"62":1,"63":1,"67":1,"68":1,"69":4,"70":1,"78":1,"81":2,"86":4,"90":1,"91":1,"97":1,"98":1,"100":1,"102":1,"105":1,"106":1,"107":1,"119":1,"120":1,"129":2,"136":2,"137":2,"139":1,"141":1,"147":2,"148":1,"149":5,"150":1,"152":1,"154":2,"156":4,"157":1,"160":1,"161":4,"164":1,"166":1,"174":1,"178":1,"183":2,"186":1,"192":2,"193":4,"196":3,"197":1,"207":1,"218":1,"222":2,"225":1,"226":2,"229":2,"237":1,"238":2,"239":2,"240":2,"241":1,"245":1,"246":1,"248":1,"251":1,"257":1,"267":1,"284":1,"286":1,"293":1,"300":1,"305":1,"306":1,"308":1,"309":1,"310":1,"311":1,"314":1,"316":1,"318":1,"319":1,"320":1,"328":2,"329":2,"331":3,"333":1,"334":1,"337":1,"338":1,"346":2,"353":1,"354":1,"358":1,"361":1,"362":1,"371":1,"372":1,"377":1,"379":1,"385":1,"390":1,"391":1,"398":1,"401":1,"406":1,"407":1,"425":4,"426":3,"427":1,"431":1,"436":1,"440":1,"441":1,"442":1,"443":3,"444":2,"446":1,"447":4,"455":1,"456":1,"464":1,"465":2,"467":2,"475":1,"476":2,"477":2,"478":2,"479":1,"483":1,"484":1}}],["a",{"0":{"3":1,"7":1,"9":1,"17":1,"19":1,"20":1,"25":1,"46":1,"47":1,"71":1,"74":1,"80":1,"81":1,"91":1,"93":1,"129":1,"232":1,"241":1,"294":1,"295":1,"350":1,"367":1,"374":1,"470":1,"479":1},"1":{"47":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"81":1,"82":2,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1},"2":{"0":1,"1":2,"2":3,"3":4,"6":1,"7":4,"8":6,"9":7,"10":3,"14":1,"17":2,"29":3,"30":2,"31":1,"32":2,"36":1,"38":2,"39":10,"41":4,"43":7,"45":3,"47":3,"49":2,"51":1,"55":2,"56":6,"57":2,"60":3,"61":1,"62":2,"63":5,"67":2,"68":3,"70":3,"71":1,"72":16,"73":4,"78":5,"79":2,"80":7,"81":4,"82":2,"83":5,"85":1,"86":9,"88":1,"89":2,"90":2,"91":4,"94":1,"97":1,"98":2,"99":1,"101":2,"102":3,"103":1,"106":1,"113":2,"119":2,"120":2,"121":1,"124":1,"126":1,"129":5,"130":1,"131":1,"132":3,"135":4,"136":8,"137":3,"138":5,"139":4,"140":2,"141":2,"145":3,"147":3,"148":6,"149":11,"150":1,"151":4,"153":4,"154":1,"155":4,"156":8,"157":5,"158":1,"159":2,"160":8,"161":6,"162":1,"164":3,"165":1,"166":4,"170":2,"171":6,"173":4,"174":2,"178":2,"179":3,"180":1,"181":1,"183":1,"185":5,"187":1,"192":1,"193":4,"194":4,"196":4,"197":2,"198":1,"199":6,"200":4,"201":1,"208":1,"212":2,"213":1,"218":1,"220":2,"222":1,"225":6,"226":2,"228":1,"229":7,"232":1,"233":1,"235":1,"236":1,"237":2,"238":4,"239":3,"240":3,"241":1,"244":1,"246":4,"247":3,"248":1,"249":2,"250":2,"251":3,"252":1,"253":1,"258":1,"259":1,"262":4,"263":1,"268":1,"269":1,"272":3,"273":1,"287":1,"288":1,"289":1,"294":3,"295":10,"296":1,"298":1,"299":4,"300":3,"301":1,"305":5,"306":5,"307":2,"308":7,"309":2,"310":3,"311":1,"312":1,"314":2,"316":3,"317":1,"318":1,"320":2,"321":2,"322":1,"324":1,"325":1,"326":1,"327":1,"328":6,"329":7,"330":1,"331":4,"332":1,"333":3,"334":1,"336":1,"337":2,"339":1,"340":1,"346":1,"347":1,"350":1,"351":1,"353":1,"354":1,"355":1,"361":1,"362":2,"363":6,"364":2,"365":1,"368":1,"371":1,"372":2,"375":1,"376":2,"377":1,"378":2,"379":3,"380":1,"385":1,"386":7,"387":5,"389":3,"390":6,"391":4,"393":3,"394":1,"396":1,"397":1,"398":1,"403":2,"405":1,"406":1,"407":1,"408":1,"411":1,"413":2,"414":1,"416":2,"418":1,"419":1,"421":1,"422":3,"425":1,"426":2,"435":1,"436":2,"437":1,"438":2,"439":3,"440":2,"441":2,"442":4,"443":4,"445":1,"446":3,"447":3,"448":6,"449":1,"450":1,"452":2,"453":2,"455":2,"456":4,"460":2,"461":2,"464":6,"465":2,"466":1,"467":7,"470":1,"471":1,"473":1,"474":1,"475":2,"476":4,"477":3,"478":3,"479":1,"482":1,"484":4}}],["swapping",{"2":{"181":1}}],["switches",{"2":{"178":1}}],["switch",{"2":{"178":1}}],["switching",{"2":{"139":1}}],["sso",{"0":{"183":1},"2":{"173":1,"175":2}}],["ssssssssssssssssssssssssssssssssssssssssnnnnnnnnnnnnnnnnnnnnnnnn",{"2":{"9":1}}],["sqnc",{"2":{"171":1}}],["sfts",{"2":{"154":1}}],["smooth",{"2":{"101":1,"102":1,"250":1,"251":1,"378":1,"379":1}}],["smart",{"0":{"329":1,"354":1,"358":1},"1":{"355":1,"356":1,"357":1,"358":1,"359":2,"360":1},"2":{"71":1,"73":2,"147":1,"151":1,"153":1,"155":1,"156":3,"157":3,"160":4,"197":1,"226":1,"247":1,"316":1,"329":2,"330":1,"331":2,"354":2,"358":2,"362":1,"363":1,"395":1,"413":1,"465":1}}],["small",{"2":{"67":1,"237":1,"475":1}}],["sync",{"2":{"438":1}}],["synonymous",{"2":{"431":1}}],["systems",{"2":{"170":1,"178":1}}],["system",{"2":{"96":1,"133":2,"136":1,"137":1,"163":1,"182":1,"187":1,"354":1,"361":1,"370":1,"445":1}}],["symbol",{"2":{"10":3,"12":1,"13":1,"56":1,"333":2}}],["skipfetchsetup",{"2":{"91":2}}],["skywvr",{"2":{"56":1}}],["skyweavercover",{"2":{"56":1}}],["skyweaver",{"2":{"45":3,"47":3,"56":10,"68":3}}],["shape=",{"2":{"448":1}}],["sha",{"2":{"183":1}}],["share",{"0":{"131":1},"2":{"90":1,"131":1,"210":1}}],["showing",{"2":{"340":1}}],["showcase",{"2":{"193":1}}],["showcases",{"2":{"136":1}}],["shows",{"2":{"178":1,"190":1}}],["show",{"2":{"178":1,"188":2,"217":1,"278":1}}],["showauthsuccessdelegate",{"2":{"173":3}}],["showemailinput",{"0":{"118":1}}],["shown",{"2":{"116":1,"117":1,"118":1,"119":1,"120":1,"127":1}}],["should",{"2":{"3":2,"63":1,"69":1,"72":2,"81":1,"82":1,"88":1,"89":1,"90":3,"91":1,"129":1,"135":1,"137":1,"212":1,"236":1,"247":1,"296":2,"311":1,"314":1,"316":1,"318":1,"320":1,"333":1,"337":1,"338":1,"344":1,"345":1,"376":1,"388":1,"416":1,"419":4,"421":1,"444":1,"456":1,"474":1}}],["src=",{"2":{"248":2,"377":2}}],["src",{"2":{"86":1}}],["snippets",{"2":{"198":1}}],["snippet",{"2":{"83":1,"147":1,"149":1,"150":1,"152":1,"154":1,"156":1,"160":1,"226":1,"308":1,"465":1}}],["slot",{"2":{"406":5}}],["sleepy",{"2":{"67":1}}],["slightly",{"2":{"65":1}}],["sdk",{"0":{"96":1,"101":1,"370":1},"1":{"102":1},"2":{"63":1,"72":1,"96":3,"98":1,"99":1,"132":2,"136":4,"137":6,"138":2,"139":1,"140":1,"145":5,"147":1,"151":1,"153":1,"155":1,"157":1,"158":1,"161":2,"166":3,"179":1,"196":1,"226":1,"244":1,"247":2,"249":1,"298":1,"370":3,"372":1,"376":2,"445":1,"447":3,"448":2,"461":1,"465":1,"482":1}}],["sdks",{"2":{"32":1,"35":1,"39":1,"54":1,"59":1,"96":1,"97":1,"186":1,"187":1,"189":1,"198":1,"249":1,"370":1,"371":1,"442":1}}],["salt",{"2":{"398":1,"401":1,"402":1,"414":1,"436":1,"444":2}}],["sale",{"2":{"391":1}}],["sardine",{"2":{"353":1,"385":1}}],["savings",{"2":{"157":1}}],["saves",{"2":{"164":1}}],["save",{"2":{"6":1,"81":1,"136":1}}],["safeguarding",{"2":{"388":1}}],["safeguards",{"2":{"365":1}}],["safe",{"2":{"360":1,"365":1}}],["safety",{"2":{"334":1}}],["safetransferfrom",{"2":{"72":2,"78":2,"239":5,"240":5,"241":4,"477":5,"478":5,"479":4}}],["safemint",{"2":{"153":2}}],["safer",{"2":{"137":1}}],["say",{"2":{"56":1}}],["same",{"2":{"32":1,"56":1,"69":1,"72":1,"78":1,"154":1,"225":1,"241":1,"257":1,"267":1,"300":1,"419":1,"438":1,"446":1,"464":1,"479":1}}],["samples",{"0":{"136":1},"2":{"135":2,"136":3}}],["sample",{"2":{"32":1,"136":8,"138":1,"162":1,"448":1}}],["sociallogin",{"2":{"173":1,"175":1}}],["socialauthoptions",{"0":{"119":1},"2":{"130":2}}],["social",{"0":{"141":1,"175":1,"176":1,"387":1,"453":1},"1":{"142":1,"143":1,"144":1,"145":1,"146":1,"388":1,"389":1,"390":1},"2":{"102":1,"119":1,"133":2,"135":1,"138":1,"141":2,"147":1,"196":1,"197":1,"251":1,"359":1,"363":1,"379":1,"386":1,"387":3,"390":2,"392":1,"446":1,"447":1,"448":1,"453":1,"454":1}}],["soliditykeccak256",{"2":{"443":3}}],["soliditypack",{"2":{"399":1,"401":2,"443":1}}],["solidity",{"2":{"83":1}}],["solutions",{"2":{"1":1,"33":1,"34":1}}],["sourced",{"2":{"249":1}}],["sources",{"2":{"36":2}}],["source",{"2":{"32":1,"59":1,"86":1,"100":1,"136":1,"156":2,"169":1,"200":1,"245":1,"248":1,"253":1,"263":1,"273":1,"289":1,"363":1,"377":1,"483":1}}],["soon",{"0":{"26":1,"165":1},"2":{"146":1}}],["so",{"2":{"10":4,"36":1,"39":1,"70":1,"80":1,"83":2,"129":1,"138":1,"139":2,"156":2,"165":1,"170":1,"173":4,"193":1,"196":1,"226":1,"294":1,"300":1,"328":2,"333":2,"345":1,"358":1,"363":1,"415":1,"417":1,"465":1}}],["someone",{"2":{"90":1}}],["sometimes",{"2":{"69":1,"185":1}}],["something",{"2":{"50":1,"147":1,"148":2,"159":1,"160":2,"181":1,"247":1,"337":1,"345":1,"376":1}}],["some",{"2":{"8":1,"49":1,"62":1,"65":1,"69":1,"70":1,"89":2,"90":4,"133":1,"136":3,"137":1,"141":1,"156":1,"160":1,"161":3,"164":1,"181":1,"200":1,"246":1,"293":1,"297":1,"356":1,"446":1,"484":1}}],["spec",{"2":{"171":1}}],["spectator",{"2":{"171":3}}],["special",{"2":{"160":1,"200":1,"261":1,"270":1,"310":1,"311":1,"314":1,"316":1,"318":1,"320":1}}],["specifying",{"2":{"130":1}}],["specify",{"2":{"43":5,"56":1,"200":1,"201":1,"213":1,"214":1,"215":1,"218":1,"353":1,"385":1}}],["specifies",{"2":{"126":1,"127":1}}],["specified",{"2":{"29":1,"218":1,"219":1,"238":1,"312":1,"314":1,"316":1,"476":1}}],["specifics",{"0":{"185":1}}],["specific",{"2":{"8":1,"29":1,"30":1,"39":1,"43":1,"47":1,"67":1,"68":1,"72":5,"78":1,"83":1,"90":1,"113":1,"141":1,"222":1,"229":1,"247":1,"311":1,"348":1,"376":1,"391":2,"467":1}}],["specs",{"2":{"80":1}}],["speed",{"2":{"71":1,"80":1}}],["spell",{"2":{"68":1}}],["spam",{"0":{"36":1},"2":{"29":1,"30":1,"36":2,"43":1,"47":1}}],["spaces",{"2":{"79":3}}],["space",{"2":{"9":3,"79":1,"359":1}}],["sprintf",{"2":{"12":1}}],["spothq",{"2":{"10":1}}],["sponsoring",{"0":{"73":1,"85":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1},"2":{"10":1,"72":1,"73":1}}],["sponsorship",{"0":{"10":1},"2":{"12":1,"13":2}}],["sponsor",{"0":{"83":1},"1":{"84":1,"85":1},"2":{"8":1,"10":1,"17":1,"80":1,"85":2}}],["sponsored",{"0":{"78":1},"2":{"8":1,"10":1,"73":1,"83":1,"91":1}}],["scenario",{"2":{"365":5}}],["scenarios",{"2":{"356":1,"365":1,"442":1}}],["scene",{"2":{"135":1,"136":2,"137":1,"139":1,"161":1,"164":3}}],["scenes",{"2":{"39":1,"327":1}}],["scope",{"2":{"229":1,"425":1,"426":1,"447":1,"467":1}}],["scheme=",{"2":{"145":2}}],["scheme",{"0":{"164":1},"2":{"138":1,"141":2,"142":1,"143":1,"145":3,"164":3}}],["schemes",{"2":{"133":1,"142":1,"143":1}}],["schemas",{"2":{"145":4}}],["schema",{"2":{"32":1,"67":1,"68":1}}],["scan",{"2":{"222":1,"290":1}}],["scanned",{"2":{"222":2}}],["scaffold",{"2":{"86":1}}],["scaling",{"2":{"80":1}}],["scaled",{"2":{"139":1}}],["scaler",{"2":{"139":1}}],["scale",{"2":{"6":1,"139":2}}],["scroll",{"2":{"142":1,"143":1,"345":1,"346":1}}],["scripts",{"2":{"136":1,"160":1}}],["scripting",{"2":{"136":1}}],["script",{"2":{"135":1,"136":1,"164":1,"185":5,"248":5,"377":5}}],["scriptableobject",{"2":{"138":3}}],["scriptable",{"2":{"135":1,"164":3,"308":1}}],["scratch",{"2":{"81":1}}],["screen",{"2":{"3":1,"114":1,"139":1,"202":1,"343":1}}],["s",{"2":{"4":1,"10":1,"12":1,"13":2,"14":1,"36":1,"55":1,"56":3,"67":1,"68":1,"79":1,"86":2,"99":1,"108":1,"111":1,"119":1,"120":1,"129":2,"132":1,"136":1,"147":1,"156":1,"163":1,"171":1,"175":1,"181":1,"200":1,"204":1,"207":1,"222":1,"224":1,"226":1,"229":2,"233":1,"244":1,"246":1,"278":1,"295":1,"339":1,"346":1,"358":2,"363":1,"364":3,"365":1,"386":1,"388":1,"390":1,"391":2,"394":1,"404":1,"407":1,"408":1,"415":1,"419":1,"421":1,"427":1,"447":1,"453":1,"455":1,"463":1,"465":1,"467":2,"471":1,"482":1,"484":1}}],["sum",{"2":{"436":1,"437":1}}],["summarize",{"2":{"179":1}}],["summary",{"0":{"127":1},"2":{"29":1,"127":1}}],["suspicious",{"2":{"389":1}}],["sufficient",{"2":{"453":1}}],["sufficiently",{"2":{"72":1}}],["suffix",{"2":{"345":1}}],["suggestgastipcap",{"0":{"323":1},"2":{"323":1}}],["suggestgasprice",{"0":{"322":1},"2":{"322":1}}],["suggested",{"2":{"322":1,"323":1}}],["suggesting",{"2":{"67":1}}],["surf",{"2":{"199":1}}],["sure",{"2":{"32":1,"39":1,"45":1,"47":1,"81":1,"86":4,"129":1,"145":1,"150":2,"171":1,"173":1}}],["subject",{"2":{"449":2}}],["subdigests",{"2":{"441":1}}],["subdigest",{"0":{"441":1},"2":{"441":3,"443":1}}],["subdomain",{"2":{"89":1,"90":1}}],["subtree",{"0":{"442":1},"2":{"439":1,"442":1}}],["subtle",{"2":{"65":1}}],["sub",{"2":{"247":3,"376":3}}],["submits",{"2":{"303":1,"304":1,"305":1,"306":1}}],["submit",{"2":{"161":1,"165":1,"321":1}}],["submitted",{"2":{"157":1,"305":3,"306":3}}],["subsequent",{"0":{"420":1},"2":{"400":1}}],["subscribe",{"2":{"147":1}}],["substitute",{"2":{"145":2}}],["suite",{"2":{"192":1}}],["suit",{"2":{"69":1,"163":1}}],["super",{"2":{"39":2}}],["supplied",{"2":{"178":1}}],["supplies",{"0":{"47":1},"2":{"41":1,"45":1,"47":3}}],["supplement",{"2":{"136":1}}],["supplying",{"2":{"174":1}}],["supply",{"2":{"9":1,"41":2}}],["supports",{"2":{"61":1,"100":1,"220":1,"222":2,"245":1,"353":1,"385":1,"483":1}}],["supported",{"0":{"40":1},"2":{"32":1,"40":1,"45":1,"47":1,"55":1,"56":1,"58":1,"65":1,"142":1,"143":1,"185":1,"213":2,"217":1,"257":1,"267":1,"358":1,"386":1,"447":1,"448":1}}],["support",{"0":{"0":1,"246":1,"484":1},"2":{"0":3,"29":1,"33":1,"34":1,"39":3,"49":1,"62":1,"63":2,"67":1,"86":1,"87":1,"128":1,"149":1,"196":2,"199":1,"249":1,"353":1,"359":1,"363":1,"383":1,"385":1,"395":1,"413":1,"424":1,"453":1}}],["success",{"2":{"89":1,"171":1}}],["successfulcontractdeploymentreturn",{"2":{"160":1}}],["successfultransactionreturn",{"2":{"148":1}}],["successfully",{"2":{"140":1,"141":1,"448":1,"460":1}}],["successful",{"0":{"460":1},"2":{"72":2,"78":1,"179":3,"459":1}}],["succeeded",{"2":{"14":1,"222":1,"460":2,"461":1}}],["such",{"2":{"4":2,"56":1,"70":1,"89":1,"102":1,"105":1,"129":1,"186":1,"193":2,"196":1,"197":1,"225":1,"251":1,"261":1,"270":1,"293":1,"295":1,"365":1,"379":1,"390":2,"456":1,"457":1,"464":1}}],["storage",{"2":{"229":1,"232":1,"236":1,"398":1,"402":1,"406":2,"444":2,"467":1,"470":1,"474":1}}],["stores",{"2":{"179":1,"187":1}}],["storedcredentials",{"2":{"180":1}}],["storedcredentialsvalid",{"2":{"173":1}}],["stored",{"2":{"3":1,"170":4,"229":1,"236":1,"386":1,"388":1,"398":1,"406":1,"443":1,"467":1,"474":1}}],["store",{"2":{"3":1,"39":1,"69":2,"192":1,"193":2,"232":1,"398":1,"402":1,"470":1}}],["style",{"2":{"145":2}}],["styling",{"2":{"113":1}}],["still",{"2":{"132":1,"137":1,"160":1,"161":2,"166":1,"229":1,"246":1,"365":1,"414":1,"449":1,"467":1,"484":1}}],["straightforward",{"2":{"328":1}}],["streamlines",{"2":{"247":1}}],["streamlining",{"2":{"229":1,"467":1}}],["strength",{"2":{"68":1}}],["strictmode",{"2":{"448":2}}],["strictly",{"2":{"328":1}}],["stripe",{"2":{"199":1}}],["strings",{"2":{"49":1,"62":2,"63":2}}],["string",{"2":{"29":3,"30":4,"38":2,"43":8,"45":2,"47":3,"49":2,"62":3,"63":3,"67":3,"68":1,"69":2,"72":1,"83":1,"86":9,"89":1,"90":1,"91":2,"121":1,"138":1,"149":1,"151":1,"153":1,"155":1,"156":1,"159":1,"160":2,"225":1,"303":1,"305":3,"307":2,"308":1,"310":3,"312":1,"313":1,"315":1,"316":1,"319":2,"321":2,"328":2,"330":5,"332":1,"333":1,"391":15,"413":1,"425":1,"426":2,"443":3,"464":1}}],["stringify",{"2":{"12":1,"13":1,"86":3,"391":1}}],["structured",{"0":{"426":1},"2":{"426":1}}],["structure",{"2":{"261":2,"262":2,"270":2,"272":2,"293":3,"295":2}}],["structures",{"2":{"67":1}}],["structs",{"2":{"180":1}}],["struct",{"2":{"174":1}}],["stunt",{"2":{"67":1}}],["stud",{"2":{"67":1}}],["step",{"0":{"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"4":1,"73":1,"81":3,"86":1,"90":1,"91":1,"138":1,"194":2,"446":1}}],["steps",{"0":{"103":1,"252":1,"380":1},"2":{"4":2,"73":1,"80":2,"83":1,"89":1,"91":2,"106":1,"123":1,"144":1,"185":1}}],["stay",{"2":{"196":1}}],["stays",{"2":{"39":1}}],["standalone",{"2":{"133":2,"167":2}}],["standardized",{"2":{"86":1,"87":1}}],["standard",{"2":{"65":1,"67":1,"69":1,"150":1,"151":1,"152":1,"153":1,"154":2,"155":1,"226":1,"239":1,"240":1,"241":1,"246":2,"249":1,"299":1,"333":1,"383":1,"424":1,"465":1,"477":1,"478":1,"479":1,"484":2}}],["standards",{"0":{"50":1,"65":1,"66":1},"1":{"67":1,"68":1,"69":1,"70":1},"2":{"36":1,"51":2,"61":1,"65":4,"67":1,"199":1}}],["static",{"2":{"158":1,"439":1,"441":3,"443":1}}],["status",{"0":{"454":1},"1":{"455":1,"456":1,"457":1},"2":{"14":2,"63":1,"72":6,"78":3,"86":10,"108":1,"391":1,"454":1,"460":3}}],["state",{"2":{"3":1,"137":1,"422":1,"438":1,"448":1}}],["startingblocknumber",{"2":{"314":1}}],["starting",{"2":{"129":1,"136":1}}],["starter",{"2":{"81":1}}],["started",{"0":{"41":1,"95":1,"104":1,"194":1,"198":1,"369":1},"1":{"96":1,"97":1,"98":1,"105":1,"370":1,"371":1,"372":1},"2":{"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1,"94":1,"103":1,"105":1,"193":1,"194":2,"198":2,"252":1,"351":1,"368":1,"375":1,"380":1,"382":1,"383":1}}],["start",{"2":{"0":1,"10":1,"97":1,"98":1,"173":1,"174":2,"175":1,"181":1,"193":1,"371":1,"372":1}}],["stack",{"2":{"0":1,"6":1,"247":2}}],["situations",{"2":{"293":1}}],["situation",{"2":{"246":1,"484":1}}],["site",{"2":{"81":1}}],["size",{"2":{"139":1,"142":1,"143":1}}],["side",{"0":{"226":1,"465":1},"2":{"72":1,"173":1,"185":1,"226":1,"229":1,"234":1,"235":1,"236":1,"246":1,"261":1,"270":1,"365":1,"465":1,"467":1,"472":1,"473":1,"474":1,"484":1}}],["six",{"2":{"68":1}}],["simulation",{"2":{"461":1}}],["simulations",{"2":{"460":1,"461":1}}],["simulating",{"2":{"461":1}}],["similarly",{"2":{"173":1,"283":1,"284":1,"305":1,"306":1,"447":1}}],["similar",{"2":{"65":1,"139":1,"148":1,"171":1,"181":1,"239":1,"240":1,"247":1,"334":1,"426":1,"477":1,"478":1}}],["simply",{"2":{"4":2,"32":1,"55":1,"56":1,"59":1,"136":1,"157":1,"196":1,"329":1,"331":1,"338":1}}],["simpler",{"2":{"225":1,"464":1}}],["simple",{"2":{"1":1,"2":1,"8":1,"31":1,"39":2,"51":1,"55":1,"57":1,"178":1,"199":1,"225":1,"346":1,"356":1,"363":1,"448":1,"464":1}}],["silently",{"2":{"296":1,"457":1}}],["silence",{"2":{"56":1}}],["silvercardid",{"2":{"56":1}}],["silver",{"2":{"56":1,"67":1,"68":3}}],["sign+verify",{"2":{"225":1,"464":1}}],["signmessagereturn",{"2":{"159":1}}],["signmessage",{"0":{"307":1},"2":{"159":3,"233":1,"235":1,"307":2,"425":1,"426":1,"471":1,"473":1}}],["signinwithemail",{"0":{"214":1},"2":{"214":2}}],["signinwith",{"0":{"213":1},"2":{"213":2}}],["signinoptions",{"0":{"215":1},"2":{"200":2,"215":2}}],["signingin",{"2":{"448":1}}],["signing",{"2":{"138":1,"139":1,"159":1,"185":1,"196":1,"206":1,"222":1,"225":1,"229":1,"237":1,"424":1,"425":1,"426":1,"446":2,"456":1,"464":1,"467":1,"475":1}}],["signin",{"0":{"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"175":1,"176":1},"1":{"116":1,"117":1,"118":1,"119":1,"120":1},"2":{"115":1,"130":1,"173":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["signs",{"2":{"108":1,"141":1,"303":1,"304":1,"305":1,"306":1}}],["signals",{"2":{"79":1}}],["signaturevalidation",{"2":{"427":1}}],["signatures",{"0":{"228":1,"426":1,"466":1},"2":{"246":1,"398":1,"407":1,"408":1,"414":1,"425":1,"426":1,"427":5,"435":1,"437":1,"484":1}}],["signature",{"0":{"223":1,"234":1,"236":1,"424":1,"462":1,"472":1,"474":1},"1":{"224":1,"225":1,"226":1,"425":1,"426":1,"427":1,"463":1,"464":1,"465":1},"2":{"9":1,"80":1,"156":2,"159":1,"225":1,"226":1,"233":1,"234":2,"236":3,"307":1,"328":1,"329":1,"394":1,"395":1,"398":1,"424":1,"425":2,"426":2,"427":8,"436":1,"439":2,"441":3,"442":1,"444":1,"464":1,"465":1,"471":1,"472":2,"474":3}}],["signup",{"2":{"17":1}}],["signtransactions",{"2":{"13":1,"237":1,"475":1}}],["signedtransactionstring",{"2":{"321":1}}],["signedmessage",{"2":{"307":2}}],["signed",{"0":{"425":1},"2":{"13":2,"200":2,"213":1,"214":1,"215":1,"225":3,"226":1,"229":1,"237":1,"321":1,"425":3,"426":1,"427":1,"437":1,"464":3,"465":1,"467":1,"475":1}}],["signer2",{"2":{"79":2}}],["signer1",{"2":{"79":2}}],["signerssigner",{"2":{"394":1}}],["signers",{"0":{"397":1},"2":{"79":1,"362":1,"393":1,"394":2,"396":2,"397":2,"399":1,"402":1,"405":1,"407":1,"408":1,"412":1,"413":4,"425":1,"426":1,"436":1,"437":1,"439":1,"440":1,"442":2}}],["signer",{"0":{"363":1,"364":1,"395":1,"440":1},"1":{"396":1,"397":1},"2":{"12":4,"72":7,"78":4,"83":3,"91":4,"231":2,"233":1,"237":2,"238":4,"239":4,"240":4,"241":4,"395":2,"399":6,"407":1,"439":1,"440":2,"469":2,"471":1,"475":2,"476":4,"477":4,"478":4,"479":4}}],["sign",{"0":{"115":1,"140":1,"141":1,"159":1,"233":1,"235":1,"446":2,"447":2,"471":1,"473":1},"1":{"116":1,"117":1,"118":1,"119":1,"120":1,"142":1,"143":1,"144":1,"145":1,"146":1,"447":2,"448":2},"2":{"10":1,"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1,"72":1,"83":1,"108":1,"115":1,"116":1,"117":1,"118":1,"119":1,"133":2,"135":1,"138":1,"140":1,"141":2,"147":1,"159":1,"200":1,"210":1,"213":1,"214":1,"215":1,"225":2,"228":1,"233":1,"235":1,"307":1,"343":1,"345":1,"347":1,"362":1,"364":1,"435":1,"442":1,"446":1,"447":1,"464":2,"466":1,"471":1,"473":1}}],["singlesigner",{"2":{"12":1,"72":2,"78":1,"83":1,"91":1}}],["single",{"2":{"6":1,"8":1,"29":1,"56":1,"60":1,"70":1,"91":1,"154":1,"157":1,"238":3,"239":2,"240":2,"241":1,"247":1,"305":1,"306":1,"339":1,"355":1,"376":1,"386":1,"443":2,"476":3,"477":2,"478":2,"479":1}}],["since",{"2":{"3":1,"136":1,"157":1,"173":1,"318":1,"333":1,"388":1,"418":1,"419":1}}],["sepolia",{"2":{"352":1,"391":2}}],["separated",{"2":{"56":1}}],["separate",{"2":{"39":1,"338":1}}],["several",{"2":{"247":1,"376":1}}],["self",{"2":{"405":1,"413":1,"418":1}}],["selling",{"2":{"193":2}}],["sell",{"2":{"190":1}}],["selector",{"2":{"427":1}}],["selects",{"2":{"222":1}}],["selected",{"2":{"189":1}}],["selectedoption",{"2":{"13":5}}],["selecting",{"2":{"83":1,"295":1}}],["selection",{"2":{"12":1}}],["selectwallet",{"2":{"72":1}}],["select",{"2":{"12":1,"13":1,"72":1,"83":1,"90":1,"142":2,"143":2,"185":1,"198":1,"342":1}}],["selectfee",{"2":{"12":1,"72":1,"78":1}}],["series",{"2":{"173":1,"188":1}}],["serves",{"2":{"136":1}}],["servers",{"2":{"147":1,"389":1}}],["serverprivatekey",{"2":{"72":2,"78":1}}],["serverless",{"0":{"25":1,"80":1},"1":{"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1},"2":{"80":1,"348":1}}],["server",{"0":{"71":1,"72":1,"73":1,"226":1,"465":1},"1":{"72":1,"73":1,"74":2,"75":2,"76":2,"77":2,"78":2,"79":1},"2":{"4":2,"32":1,"39":1,"71":1,"72":6,"78":3,"83":2,"226":2,"234":1,"236":1,"246":1,"261":1,"270":1,"293":2,"295":1,"465":2,"472":1,"474":1,"484":1}}],["services",{"2":{"36":2,"69":1,"246":1,"484":1}}],["service",{"0":{"3":1},"2":{"1":1,"2":4,"3":2,"4":1,"8":1,"17":1,"28":1,"31":1,"36":1,"37":1,"39":2,"42":1,"44":1,"46":1,"51":2,"55":3,"57":1,"59":2,"61":1,"63":1,"65":1,"161":1,"308":1,"361":1,"363":1,"364":1}}],["semi",{"2":{"154":1,"438":1}}],["semantic",{"2":{"132":1,"166":1}}],["seamless",{"2":{"80":1,"93":1,"131":1,"193":1,"197":1,"225":1,"364":1,"367":1,"464":1}}],["seamlessly",{"0":{"250":1,"378":1},"1":{"251":1,"379":1},"2":{"39":1,"102":1,"251":1,"379":1}}],["seaman",{"2":{"67":1}}],["senttransactionresponse",{"2":{"460":1}}],["sent",{"2":{"187":1,"191":1,"241":1,"346":1,"460":1,"461":2,"479":1}}],["sensical",{"2":{"65":1}}],["sendquery",{"2":{"331":3}}],["sendrawtransaction",{"0":{"321":1},"2":{"321":1}}],["senderc1155values",{"2":{"154":3,"157":2}}],["senderc1155",{"0":{"154":1},"1":{"155":1},"2":{"154":1,"157":1}}],["senderc721",{"0":{"152":1},"1":{"153":1},"2":{"152":1,"157":1}}],["senderc20",{"0":{"150":1},"1":{"151":1},"2":{"150":1,"157":1,"456":1}}],["senderaddress",{"2":{"72":1,"78":1}}],["sendmetatxn",{"2":{"14":1}}],["sendtransactionmethod",{"2":{"329":1}}],["sendtransactionmethodandwaitforreceipt",{"2":{"329":2,"333":1}}],["sendtransactionandwaitforreceipt",{"0":{"304":1},"2":{"304":1,"306":1,"327":1,"329":2,"333":1}}],["sendtransactionbatchandwaitforreceipts",{"0":{"306":1}}],["sendtransactionbatch",{"0":{"305":1},"2":{"239":1,"240":1,"305":1,"477":1,"478":1}}],["sendtransaction",{"0":{"303":1},"2":{"13":2,"72":1,"78":1,"79":3,"91":1,"148":2,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":2,"157":2,"160":1,"237":2,"238":2,"239":1,"240":1,"241":2,"303":1,"457":1,"458":1,"460":1,"461":2,"475":2,"476":2,"477":1,"478":1,"479":2}}],["sends",{"2":{"13":1,"344":1,"452":1,"457":1}}],["sending",{"0":{"13":1,"237":1,"238":1,"239":1,"240":1,"241":1,"475":1,"476":1,"477":1,"478":1,"479":1},"2":{"79":1,"148":1,"157":2,"160":1,"239":2,"240":2,"333":1,"446":1,"456":1,"459":1,"461":1,"477":2,"478":2}}],["send",{"2":{"8":1,"10":2,"13":1,"72":2,"73":1,"78":1,"79":2,"149":2,"150":1,"151":1,"152":1,"153":1,"154":2,"155":1,"156":1,"174":1,"238":3,"239":2,"240":2,"329":1,"331":1,"333":1,"447":2,"453":1,"455":1,"476":3,"477":2,"478":2}}],["sequentially",{"2":{"71":1,"305":1,"306":1}}],["sequentual",{"2":{"71":1}}],["sequenceonboard",{"2":{"275":2}}],["sequenceoptions",{"2":{"275":1}}],["sequencemodule",{"2":{"275":2}}],["sequencemetadata",{"2":{"49":2,"52":2,"62":2,"63":4}}],["sequencewallet",{"2":{"265":2}}],["sequencewaas",{"2":{"98":2,"372":2,"446":2,"447":2,"448":2,"449":2,"450":2,"460":1,"461":1}}],["sequenceutils",{"2":{"430":1}}],["sequenceunreal",{"2":{"185":2}}],["sequenceui",{"2":{"171":1}}],["sequencebackendmanager",{"2":{"173":3}}],["sequenceplugin",{"2":{"169":2,"171":4}}],["sequencecontext",{"2":{"430":1}}],["sequenceconnector",{"2":{"255":2,"283":2,"284":3}}],["sequenceconfig",{"2":{"135":1,"138":4,"142":1,"143":1,"145":1,"308":1}}],["sequencecanvas",{"2":{"164":1}}],["sequencesdk",{"2":{"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":2,"157":1}}],["sequenceethclient",{"2":{"308":2,"309":1}}],["sequenceethereum",{"2":{"132":1,"151":1,"153":1,"155":1,"296":3,"297":1,"298":1,"300":1,"308":1,"330":1}}],["sequenceencryptor",{"2":{"170":1}}],["sequenceexamples",{"2":{"139":1,"161":2}}],["sequenceapiclient",{"2":{"86":1}}],["sequenceindexer",{"2":{"29":2,"30":2,"33":2,"38":2,"43":2,"45":2,"47":2}}],["sequencekit",{"0":{"18":1,"101":1},"1":{"102":1},"2":{"197":1,"374":1,"375":1}}],["sequence",{"0":{"9":1,"73":1,"104":1,"105":1,"128":1,"178":1,"179":1,"181":1,"195":1,"221":1,"230":1,"231":1,"242":1,"250":1,"335":1,"341":1,"361":1,"363":1,"364":1,"378":1,"468":1,"469":1,"480":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1,"105":1,"129":1,"196":1,"197":1,"198":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"243":1,"244":1,"245":1,"246":1,"251":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"362":1,"363":1,"364":1,"365":1,"379":1,"469":1,"470":1,"471":1,"472":1,"473":1,"474":1,"481":1,"482":1,"483":1,"484":1},"2":{"0":2,"1":2,"2":2,"4":8,"5":2,"6":1,"7":1,"8":5,"9":7,"10":4,"12":7,"13":5,"14":1,"17":1,"28":3,"29":7,"30":6,"31":5,"32":5,"33":3,"34":4,"35":3,"36":6,"37":3,"38":6,"39":8,"42":3,"43":6,"44":3,"45":7,"46":3,"47":6,"48":2,"49":5,"51":2,"52":2,"53":2,"54":3,"55":3,"56":4,"58":6,"60":1,"61":3,"62":5,"63":10,"65":1,"67":4,"68":1,"71":2,"72":10,"73":1,"78":4,"80":2,"83":6,"86":9,"87":2,"91":4,"97":2,"98":1,"99":5,"100":1,"101":1,"102":1,"103":2,"104":1,"105":1,"110":1,"111":1,"113":2,"120":1,"123":1,"128":2,"129":2,"130":2,"131":1,"132":2,"135":1,"136":1,"137":1,"138":2,"145":5,"157":2,"158":2,"162":1,"164":1,"166":4,"169":3,"171":3,"173":1,"178":6,"179":1,"185":3,"186":2,"187":1,"189":1,"190":1,"192":1,"195":1,"198":1,"199":10,"200":9,"201":1,"211":2,"216":1,"217":1,"220":1,"221":1,"222":6,"224":2,"225":3,"226":4,"228":1,"229":1,"233":1,"234":1,"244":5,"245":1,"246":5,"247":3,"249":6,"250":1,"251":1,"252":2,"253":2,"258":1,"259":1,"263":2,"268":1,"269":1,"273":2,"274":3,"275":1,"277":1,"278":1,"279":1,"283":1,"284":2,"286":1,"287":1,"289":2,"290":2,"291":1,"336":1,"341":1,"342":1,"346":1,"348":3,"352":1,"353":4,"354":1,"360":1,"361":2,"362":1,"363":2,"364":4,"365":4,"371":2,"372":1,"376":1,"378":1,"379":1,"380":2,"382":3,"383":4,"384":1,"385":4,"386":2,"387":3,"390":1,"391":2,"393":1,"402":2,"403":1,"407":1,"414":1,"424":1,"425":1,"426":1,"431":3,"435":1,"436":1,"441":1,"442":1,"443":2,"444":1,"445":1,"446":1,"447":1,"448":8,"453":1,"460":1,"461":1,"463":2,"464":3,"465":4,"466":1,"467":1,"471":1,"472":1,"482":5,"483":1,"484":5}}],["seqmetadata",{"2":{"49":2,"53":2,"62":2,"63":4}}],["seqindexer",{"2":{"29":1,"30":1,"34":2,"38":1,"43":1,"45":1,"47":1}}],["sessionid",{"2":{"446":1,"450":1}}],["sessionhash",{"2":{"446":3,"447":2,"448":6}}],["sessionaddress",{"2":{"232":1,"236":1,"470":1,"474":1}}],["sessionwallet",{"2":{"232":2,"235":1,"470":2,"473":1}}],["sessionprivatekey",{"2":{"232":4,"470":4}}],["sessionsignature",{"2":{"235":1,"236":1,"473":1,"474":1}}],["sessions",{"0":{"449":1},"2":{"226":2,"446":1,"449":4,"450":2,"465":2}}],["sessionsettings",{"2":{"91":2}}],["session",{"0":{"229":1,"230":1,"232":1,"235":1,"236":1,"388":1,"445":1,"450":1,"455":1,"457":1,"458":1,"467":1,"468":1,"470":1,"473":1,"474":1},"1":{"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"446":1,"447":1,"448":1,"449":1,"450":1,"456":1,"469":1,"470":1,"471":1,"472":1,"473":1,"474":1},"2":{"12":4,"14":1,"72":14,"78":6,"79":2,"81":1,"83":5,"91":5,"139":1,"140":1,"179":2,"180":1,"222":1,"228":1,"229":4,"233":1,"234":2,"235":1,"236":5,"363":2,"387":4,"388":2,"389":1,"445":1,"447":3,"448":5,"450":4,"454":1,"455":2,"456":3,"457":3,"458":2,"460":1,"461":1,"466":1,"467":4,"471":1,"472":2,"473":1,"474":5}}],["seterror",{"2":{"448":3}}],["setbasemetadatauri",{"2":{"344":1,"345":1}}],["setitem",{"2":{"232":1,"470":1}}],["setopenwalletmodal",{"2":{"109":2}}],["setopenconnectmodal",{"2":{"108":2}}],["setting",{"0":{"106":1,"107":1},"2":{"293":1,"295":1}}],["settings",{"0":{"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1},"2":{"3":1,"36":1,"91":3,"124":1,"126":1,"138":1,"142":4,"143":4,"145":2,"169":1,"171":1,"185":2,"200":8,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1}}],["setupcredentials",{"2":{"171":1}}],["setup",{"0":{"81":1,"97":1,"98":1,"138":1,"171":1,"183":1,"371":1,"372":1},"1":{"82":1},"2":{"80":1,"135":3,"136":1,"138":1,"148":1,"159":1,"160":1,"171":2,"173":1,"178":2,"184":1,"294":1,"390":1}}],["setrelayer",{"2":{"12":1}}],["setprovider",{"2":{"12":1}}],["setsigningin",{"2":{"448":1}}],["setsessionhash",{"2":{"448":3}}],["sets",{"2":{"4":1,"178":1,"448":1}}],["set",{"0":{"338":1,"341":1,"345":1},"2":{"3":1,"4":1,"36":1,"67":1,"81":1,"86":4,"141":1,"145":3,"164":3,"182":1,"219":1,"341":1,"344":1,"345":1,"402":1,"407":1,"419":1,"435":1,"441":1}}],["seemlessly",{"2":{"157":1}}],["seen",{"2":{"65":1,"69":1,"362":1}}],["see",{"2":{"3":1,"29":1,"31":1,"33":2,"34":2,"40":1,"48":1,"55":1,"56":3,"61":1,"67":3,"68":2,"69":1,"72":1,"78":1,"86":1,"87":1,"91":1,"119":1,"120":1,"133":1,"137":2,"139":1,"145":2,"147":1,"149":1,"156":1,"186":2,"187":1,"188":1,"200":1,"212":1,"220":1,"226":1,"246":1,"249":3,"261":4,"270":4,"293":2,"347":1,"350":1,"353":1,"382":1,"383":1,"385":1,"422":1,"446":1,"448":3,"460":1,"461":1,"465":1,"484":1}}],["security",{"0":{"170":1},"2":{"199":2,"354":1,"363":1,"386":1,"390":2}}],["secured",{"2":{"387":1}}],["secure",{"2":{"17":1,"80":1,"101":1,"102":1,"187":1,"229":2,"250":1,"251":1,"363":1,"378":1,"379":1,"386":2,"467":2}}],["securely",{"2":{"3":2,"170":2,"348":1}}],["seconds",{"2":{"164":1,"205":2}}],["second",{"2":{"56":1,"136":1,"149":1,"446":1}}],["secret",{"2":{"3":3,"4":1}}],["section",{"2":{"2":1,"4":1,"29":1,"67":1,"70":1,"72":1,"87":1,"142":1,"143":1,"145":1,"149":1,"261":2,"270":2,"341":1,"344":1,"347":1,"425":1,"426":1,"460":1,"461":1}}]],"serializationVersion":2} diff --git a/.vocs/search-index-b8370438.json b/.vocs/search-index-b8370438.json deleted file mode 100644 index 20192eaf36e..00000000000 --- a/.vocs/search-index-b8370438.json +++ /dev/null @@ -1 +0,0 @@ -{"documentCount":485,"nextId":485,"documentIds":{"0":"docs/pages/support.mdx#support","1":"docs/pages/api/marketplace.mdx#marketplace-api","2":"docs/pages/api/metadata.mdx#metadata-api","3":"docs/pages/api/metadata.mdx#obtaining-a-service-account--token","4":"docs/pages/api/metadata.mdx#creating-collections-tokens-and-managing-metadata","5":"docs/pages/api/metadata.mdx#pricing--usage","6":"docs/pages/api/node-gateway.mdx#node-gateway","7":"docs/pages/api/node-gateway.mdx#give-it-a-try","8":"docs/pages/api/relayer.mdx#relayer-api","9":"docs/pages/api/relayer.mdx#anatomy-of-a-sequence-transaction-bundle","10":"docs/pages/api/relayer.mdx#gas-sponsorship-and-fees","11":"docs/pages/api/relayer.mdx#api","12":"docs/pages/api/relayer.mdx#fetching-fee-options","13":"docs/pages/api/relayer.mdx#sending-transactions","14":"docs/pages/api/relayer.mdx#fetching-transaction-receipts","15":"docs/pages/guides/lootbox.mdx#deploy-an-in-game-collectibles-contract","16":"docs/pages/guides/lootbox.mdx#query-contract-details","17":"docs/pages/guides/lootbox.mdx#fetch-token-balances-of-a-wallet","18":"docs/pages/guides/unity-guide.mdx#integrate-sequencekit-with-waas","19":"docs/pages/guides/unity-guide.mdx#deploy-a-collectibles-contract","20":"docs/pages/guides/unity-guide.mdx#deploy-a-remote-minter","21":"docs/pages/guides/unity-guide.mdx#mint-in-game-achievement-tokens","22":"docs/pages/guides/unity-guide.mdx#burn-in-game-achievement-tokens","23":"docs/pages/guides/unity-guide.mdx#integrate-an-embedded-marketplace","24":"docs/pages/solutions/minter.mdx#mint-tokens-using-builder-manually","25":"docs/pages/solutions/minter.mdx#deploy-a-serverless-minter-on-cloudflare-workers","26":"docs/pages/solutions/nft-checkout.mdx#integrate-nft-checkout-on-web-coming-soon","27":"docs/pages/solutions/onramps.mdx#integrate-onramp-on-web","28":"docs/pages/api/indexer/fetch-tokens.mdx#tokens-api","29":"docs/pages/api/indexer/fetch-tokens.mdx#fetches-list-of-erc20-erc721-and-erc1155-tokens-and-metadata-in-any-wallet","30":"docs/pages/api/indexer/fetch-tokens.mdx#fetch-token-ids-balances-and-metadata-of-erc721-and-erc1155-collections","31":"docs/pages/api/indexer/installation.mdx#indexer-installation","32":"docs/pages/api/indexer/installation.mdx#installation","33":"docs/pages/api/indexer/installation.mdx#web--nodejs-installation","34":"docs/pages/api/indexer/installation.mdx#go-installation","35":"docs/pages/api/indexer/installation.mdx#unity-or-unreal-installation","36":"docs/pages/api/indexer/metadata-tips.mdx#metadata-tips--notes-on-spam","37":"docs/pages/api/indexer/native-network-balance.mdx#native-network-balances-ie-eth-matic-etc","38":"docs/pages/api/indexer/native-network-balance.mdx#fetch-native-network-balance-aka-eth-on-ethereum-matic-on-polygon-avax-on-avalanche-bnb-on-bsc-etc","39":"docs/pages/api/indexer/overview.mdx#indexer","40":"docs/pages/api/indexer/overview.mdx#supported-networks--endpoints","41":"docs/pages/api/indexer/overview.mdx#getting-started","42":"docs/pages/api/indexer/transaction-history.mdx#wallet-transaction-history","43":"docs/pages/api/indexer/transaction-history.mdx#fetch-the-transaction-history-for-any-wallet-address","44":"docs/pages/api/indexer/transation-history-token-contract.mdx#contract-token-history","45":"docs/pages/api/indexer/transation-history-token-contract.mdx#fetch--listen-to-the-transaction-history-for-any-erc20-erc721-erc1155-contract","46":"docs/pages/api/indexer/unique-tokens.mdx#tokens-in-a-contract","47":"docs/pages/api/indexer/unique-tokens.mdx#fetch-all-unique-tokens-in-a-particular-erc207211155-contract-including-total-supplies","48":"docs/pages/api/metadata/contract-metadata.mdx#contract-metadata","49":"docs/pages/api/metadata/contract-metadata.mdx#fetch-contract-metadata-of-any-erc20-erc721-or-erc1155-contract-address","50":"docs/pages/api/metadata/contract-metadata.mdx#contract-level-metadata-standards","51":"docs/pages/api/metadata/overview.mdx#metadata","52":"docs/pages/api/metadata/overview.mdx#web--nodejs-installation","53":"docs/pages/api/metadata/overview.mdx#go-installation","54":"docs/pages/api/metadata/overview.mdx#unity-or-unreal-installation","55":"docs/pages/api/metadata/rest-api.mdx#metadata-rest-api-reference--usage","56":"docs/pages/api/metadata/rest-api.mdx#example","57":"docs/pages/api/metadata/rest-api.mdx#usage","58":"docs/pages/api/metadata/rest-api.mdx#rest-endpoints","59":"docs/pages/api/metadata/rest-api.mdx#rpc-client","60":"docs/pages/api/metadata/rest-api.mdx#metadata-rpc-methods","61":"docs/pages/api/metadata/token-metadata.mdx#token-metadata","62":"docs/pages/api/metadata/token-metadata.mdx#fetch-token-metadata-for-any-erc721-or-erc1155-contract","63":"docs/pages/api/metadata/token-metadata.mdx#refreshing-token-metadata","64":"docs/pages/api/metadata/token-metadata.mdx#testing-instructions","65":"docs/pages/api/metadata/token-metadata.mdx#token-metadata-standards","66":"docs/pages/api/metadata/token-metadata.mdx#metadata-standards","67":"docs/pages/api/metadata/token-metadata.mdx#erc721","68":"docs/pages/api/metadata/token-metadata.mdx#erc1155","69":"docs/pages/api/metadata/token-metadata.mdx#attributes-vs-properties","70":"docs/pages/api/metadata/token-metadata.mdx#erc20","71":"docs/pages/guides/templates/02-building-relaying-server.mdx#building-a-relaying-server","72":"docs/pages/guides/templates/02-building-relaying-server.mdx#nodejs-server","73":"docs/pages/guides/templates/02-building-relaying-server.mdx#nodejs-server-with-gas-sponsoring-using-sequence-builder","74":"docs/pages/guides/templates/02-building-relaying-server.mdx#a-create-dapp","75":"docs/pages/guides/templates/02-building-relaying-server.mdx#b-new-dapp","76":"docs/pages/guides/templates/02-building-relaying-server.mdx#c1-gas-tank","77":"docs/pages/guides/templates/02-building-relaying-server.mdx#c2-add-gas","78":"docs/pages/guides/templates/02-building-relaying-server.mdx#c3-add-sponsored-address","79":"docs/pages/guides/templates/02-building-relaying-server.mdx#parallel-transactions","80":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#mint-collectibles-using-a-gasless-serverless-relayer","81":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#1-setup-cloudflare-environment-with-wrangler-cli-and-deploy-a-test","82":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#deploy-test","83":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#2-deploy-sponsor-and-update-metadata-for-an-erc1155-contract-with-builder","84":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#update-metadata","85":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#contract-sponsoring","86":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#3-use-ethauthproof-to-prevent-eoa-ddos","87":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#add-cloudflare-environment-variables","88":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#implement-window-object-in-wrangler-template","89":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#testing-the-deploy","90":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#using-the-ethauthproof-viewer-dapp","91":"docs/pages/guides/templates/03-mint-collectibles-serverless.mdx#4-mint-a-collectible-to-wallet","92":"docs/pages/guides/templates/template-embedded-wallet.mdx#quickstart","93":"docs/pages/guides/templates/template-embedded-wallet.mdx#try-a-demo","94":"docs/pages/guides/templates/template-embedded-wallet.mdx#template","95":"docs/pages/guides/templates/template-embedded-wallet.mdx#getting-started","96":"docs/pages/guides/templates/template-embedded-wallet.mdx#sdk-installation","97":"docs/pages/guides/templates/template-embedded-wallet.mdx#project-setup","98":"docs/pages/guides/templates/template-embedded-wallet.mdx#library-setup","99":"docs/pages/sdk/go/overview.mdx#go","100":"docs/pages/sdk/go/overview.mdx#ethkit","101":"docs/pages/sdk/sequence-kit/01-overview.mdx#sequencekit-sdk","102":"docs/pages/sdk/sequence-kit/01-overview.mdx#key-features","103":"docs/pages/sdk/sequence-kit/01-overview.mdx#next-steps","104":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#getting-started-with-sequence-kit","105":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#installing-sequence-kit-packages","106":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#setting-up-the-kit-wrapper","107":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#setting-up-the-embedded-wallet-wrapper","108":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#triggering-the-connect-modal","109":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#invoking-the-embedded-wallet-modal","110":"docs/pages/sdk/sequence-kit/02-getting-started.mdx#react-example","111":"docs/pages/sdk/sequence-kit/03-configuration.mdx#configuration-options","112":"docs/pages/sdk/sequence-kit/03-configuration.mdx#available-options","113":"docs/pages/sdk/sequence-kit/03-configuration.mdx#defaulttheme","114":"docs/pages/sdk/sequence-kit/03-configuration.mdx#position","115":"docs/pages/sdk/sequence-kit/03-configuration.mdx#sign-in-modal-configuration-signin","116":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinlogourl","117":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinprojectname","118":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinshowemailinput","119":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinsocialauthoptions","120":"docs/pages/sdk/sequence-kit/03-configuration.mdx#signinwalletauthoptions","121":"docs/pages/sdk/sequence-kit/03-configuration.mdx#displayedassets","122":"docs/pages/sdk/sequence-kit/04-checkout.mdx#overview","123":"docs/pages/sdk/sequence-kit/04-checkout.mdx#integration","124":"docs/pages/sdk/sequence-kit/04-checkout.mdx#opening-the-checkout-modal","125":"docs/pages/sdk/sequence-kit/04-checkout.mdx#configuring-the-checkout-modal","126":"docs/pages/sdk/sequence-kit/04-checkout.mdx#crypto-checkout-configuration-cryptocheckout","127":"docs/pages/sdk/sequence-kit/04-checkout.mdx#order-summary-configuration-ordersummaryitems","128":"docs/pages/sdk/sequence-kit/05-custom-connectors.mdx#custom-connectors-in-sequence-kit","129":"docs/pages/sdk/sequence-kit/05-custom-connectors.mdx#creating-a-custom-connector","130":"docs/pages/sdk/sequence-kit/05-custom-connectors.mdx#using-custom-connectors","131":"docs/pages/sdk/sequence-kit/05-custom-connectors.mdx#share-your-custom-connectors","132":"docs/pages/sdk/unity/01-overview.mdx#introduction","133":"docs/pages/sdk/unity/01-overview.mdx#requirements","134":"docs/pages/sdk/unity/02-installation.mdx#installation","135":"docs/pages/sdk/unity/02-installation.mdx#package-manager---recommended","136":"docs/pages/sdk/unity/02-installation.mdx#samples","137":"docs/pages/sdk/unity/02-installation.mdx#manual","138":"docs/pages/sdk/unity/03-setup.mdx#setup","139":"docs/pages/sdk/unity/04-authentication.mdx#authentication","140":"docs/pages/sdk/unity/04-authentication.mdx#1-email-sign-in","141":"docs/pages/sdk/unity/04-authentication.mdx#2-social-sign-in","142":"docs/pages/sdk/unity/04-authentication.mdx#ios","143":"docs/pages/sdk/unity/04-authentication.mdx#macos","144":"docs/pages/sdk/unity/04-authentication.mdx#pc","145":"docs/pages/sdk/unity/04-authentication.mdx#android","146":"docs/pages/sdk/unity/04-authentication.mdx#webgl","147":"docs/pages/sdk/unity/04-authentication.mdx#connecting-with-waas","148":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#write-to-blockchain","149":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#rawtransaction","150":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#senderc20","151":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#complex-erc20-interactions","152":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#senderc721","153":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#complex-erc721-interactions","154":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#senderc1155","155":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#complex-erc1155-interactions","156":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#delayedencode","157":"docs/pages/sdk/unity/05-write-to-blockchain.mdx#batch-transactions","158":"docs/pages/sdk/unity/06-read-from-blockchain.mdx#read-from-blockchain","159":"docs/pages/sdk/unity/07-sign-messages.mdx#sign-messages","160":"docs/pages/sdk/unity/08-deploy-contracts.mdx#contract-deployment","161":"docs/pages/sdk/unity/09-wallet-ui.mdx#wallet-ui","162":"docs/pages/sdk/unity/09-wallet-ui.mdx#how-it-works","163":"docs/pages/sdk/unity/09-wallet-ui.mdx#ui-customizability","164":"docs/pages/sdk/unity/09-wallet-ui.mdx#color-scheme-manager","165":"docs/pages/sdk/unity/09-wallet-ui.mdx#more-customization-tools-coming-soon","166":"docs/pages/sdk/unreal/01-overview.mdx#introduction","167":"docs/pages/sdk/unreal/01-overview.mdx#requirements","168":"docs/pages/sdk/unreal/02-installation.mdx#installation","169":"docs/pages/sdk/unreal/02-installation.mdx#credentials","170":"docs/pages/sdk/unreal/02-installation.mdx#security","171":"docs/pages/sdk/unreal/03-setup.mdx#setup","172":"docs/pages/sdk/unreal/04-authentication.mdx#authentication","173":"docs/pages/sdk/unreal/04-authentication.mdx#custom-ui-integration","174":"docs/pages/sdk/unreal/04-authentication.mdx#email-based-authentication","175":"docs/pages/sdk/unreal/04-authentication.mdx#social-signin-based-authentication-on-desktop","176":"docs/pages/sdk/unreal/04-authentication.mdx#social-signin-based-authentication-on-mobile","177":"docs/pages/sdk/unreal/05-api-integration.mdx#api-integration","178":"docs/pages/sdk/unreal/05-api-integration.mdx#sequence-api","179":"docs/pages/sdk/unreal/05-api-integration.mdx#sequence-unreal-api","180":"docs/pages/sdk/unreal/05-api-integration.mdx#usequencewallet","181":"docs/pages/sdk/unreal/05-api-integration.mdx#sequence-api-methods","182":"docs/pages/sdk/unreal/06-packaging.mdx#packaging","183":"docs/pages/sdk/unreal/06-packaging.mdx#google-sso-setup","184":"docs/pages/sdk/unreal/06-packaging.mdx#ios","185":"docs/pages/sdk/unreal/06-packaging.mdx#unreal-and-xcode-specifics","186":"docs/pages/solutions/builder/analytics.mdx#analytics-in-builder","187":"docs/pages/solutions/builder/analytics.mdx#how-it-works","188":"docs/pages/solutions/builder/analytics.mdx#overview","189":"docs/pages/solutions/builder/analytics.mdx#wallets-connected","190":"docs/pages/solutions/builder/analytics.mdx#marketplace-transactions","191":"docs/pages/solutions/builder/analytics.mdx#transaction-requests","192":"docs/pages/solutions/marketplaces/overview.mdx#marketplaces-overview","193":"docs/pages/solutions/marketplaces/overview.mdx#what-are-the-differences-between-these-options","194":"docs/pages/solutions/marketplaces/overview.mdx#getting-started","195":"docs/pages/solutions/wallets/overview.mdx#sequence-wallets-overview","196":"docs/pages/solutions/wallets/overview.mdx#what-are-the-differences-between-these-options","197":"docs/pages/solutions/wallets/overview.mdx#what-are-the-benefits-of-each-and-how-can-i-leverage-them","198":"docs/pages/solutions/wallets/overview.mdx#getting-started","199":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connect-wallet","200":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connecting-your-dapp-with-0xsequence","201":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#wallet-login-and-connect-options","202":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#app","203":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#appprotocol","204":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#origin","205":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#expiry","206":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#authorize","207":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#authorizenonce","208":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#refresh","209":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#keepwalletopened","210":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#askforemail","211":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingstheme","212":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingsbannerurl","213":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingssigninwith","214":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingssigninwithemail","215":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingssigninoptions","216":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingsincludedpaymentproviders","217":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingsdefaultfundingcurrency","218":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingsdefaultpurchaseamount","219":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#settingslockfundingcurrencytodefault","220":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connecting-your-dapp-with-web3js-or-ethersjs","221":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connecting-to-any-ethereum-dapp-with-the-sequence-wallet-chrome-extension","222":"docs/pages/sdk/typescript/03-guides/01-connect-wallet.mdx#connecting-via-walletconnect","223":"docs/pages/sdk/typescript/03-guides/02-auth-address.mdx#authenticate-users-with-message-signature","224":"docs/pages/sdk/typescript/03-guides/02-auth-address.mdx#ask-for-the-wallet-address","225":"docs/pages/sdk/typescript/03-guides/02-auth-address.mdx#authenticate-wallet","226":"docs/pages/sdk/typescript/03-guides/02-auth-address.mdx#authenticate-wallet-server-side","227":"docs/pages/sdk/typescript/03-guides/03-sign-message.mdx#todo---replace-with-code-groups-from-vocs","228":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#no-wallet-confirmation-signatures","229":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#session-keys","230":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#using-session-keys-with-sequence","231":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#1-initialize-sequence-wallet-and-connect","232":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#2-generate-a-session-key","233":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#3-sign-authorization-message","234":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#4-verify-authorization-signature","235":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#5-sign-message-with-session-key","236":"docs/pages/sdk/typescript/03-guides/04-session-keys.mdx#6-verify-session-signature","237":"docs/pages/sdk/typescript/03-guides/05-send-transaction.mdx#sending-transactions","238":"docs/pages/sdk/typescript/03-guides/06-send-erc20.mdx#sending-erc-20-tokens","239":"docs/pages/sdk/typescript/03-guides/07-send-erc721.mdx#sending-erc-721-nft-tokens","240":"docs/pages/sdk/typescript/03-guides/08-send-erc1155.mdx#sending-erc-1155-collectible-tokens","241":"docs/pages/sdk/typescript/03-guides/09-send-batch-transactions.mdx#sending-a-batch-of-transactions","242":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#building-backends-with-sequence","243":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#nodejs","244":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#go","245":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#ethkit","246":"docs/pages/sdk/typescript/03-guides/10-building-backends.mdx#support-for-other-backend-languages","247":"docs/pages/sdk/typescript/03-guides/overview.mdx#install","248":"docs/pages/sdk/typescript/03-guides/overview.mdx#cdn-distribution-as-native-js","249":"docs/pages/sdk/typescript/connectors/01-overview.mdx#wallet-connectors","250":"docs/pages/sdk/typescript/connectors/02-sequence-kit.mdx#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","251":"docs/pages/sdk/typescript/connectors/02-sequence-kit.mdx#key-features","252":"docs/pages/sdk/typescript/connectors/02-sequence-kit.mdx#next-steps","253":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#using-wagmi","254":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#installation","255":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#usage","256":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#parameters","257":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#chains","258":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#optionsconnect-optional","259":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#optionsdefaultnetwork-optional","260":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#using-older-versions-of-wagmi--012x","261":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#using-nextjs","262":"docs/pages/sdk/typescript/connectors/03-wagmi.mdx#examples","263":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#using-rainbowkit","264":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#installation","265":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#usage","266":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#parameters","267":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#chains","268":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#connect-optional","269":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#defaultnetwork-optional","270":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#using-nextjs","271":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#using-older-versions-of-wagmi--012x","272":"docs/pages/sdk/typescript/connectors/04-rainbow-kit.mdx#examples","273":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#using-web3-onboard","274":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#installation","275":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#usage","276":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#parameters","277":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#network-optional","278":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#appname-optional","279":"docs/pages/sdk/typescript/connectors/05-web3-onboard.mdx#example","280":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#using-web3-react-v6","281":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#installation","282":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#usage","283":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#initialization","284":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#activationdeactivation","285":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#options","286":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#chainid","287":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#appname-optional","288":"docs/pages/sdk/typescript/connectors/06-web3-react-v6.mdx#example","289":"docs/pages/sdk/typescript/connectors/07-web3modal.mdx#using-web3modal","290":"docs/pages/sdk/typescript/connectors/07-web3modal.mdx#usage","291":"docs/pages/sdk/typescript/connectors/07-web3modal.mdx#example","292":"docs/pages/sdk/typescript/connectors/08-FAQ.mdx#nextjs","293":"docs/pages/sdk/typescript/connectors/08-FAQ.mdx#why-does-my-wallet-integration-produce-an-error-when-used-with-nextjs","294":"docs/pages/sdk/typescript/connectors/08-FAQ.mdx#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-pages-directory-all-versions-of-nextjs","295":"docs/pages/sdk/typescript/connectors/08-FAQ.mdx#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-app-directory-version-13-and-above-only","296":"docs/pages/sdk/unity/Advanced/01-introduction.mdx#advanced---introduction","297":"docs/pages/sdk/unity/Advanced/01-introduction.mdx#important-components","298":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#wallets","299":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#1-ethwallet","300":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#2-waastowalletadapter","301":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#methods","302":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#getaddress","303":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#sendtransaction","304":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#sendtransactionandwaitforreceipt","305":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#sendtransactionbatch","306":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#sendtransactionbatchandwaitforreceipts","307":"docs/pages/sdk/unity/Advanced/02-wallets.mdx#signmessage","308":"docs/pages/sdk/unity/Advanced/03-clients.mdx#clients","309":"docs/pages/sdk/unity/Advanced/03-clients.mdx#methods","310":"docs/pages/sdk/unity/Advanced/03-clients.mdx#balanceat","311":"docs/pages/sdk/unity/Advanced/03-clients.mdx#blockbynumber","312":"docs/pages/sdk/unity/Advanced/03-clients.mdx#blockbyhash","313":"docs/pages/sdk/unity/Advanced/03-clients.mdx#blocknumber","314":"docs/pages/sdk/unity/Advanced/03-clients.mdx#blockrange","315":"docs/pages/sdk/unity/Advanced/03-clients.mdx#chainid","316":"docs/pages/sdk/unity/Advanced/03-clients.mdx#codeat","317":"docs/pages/sdk/unity/Advanced/03-clients.mdx#estimategas","318":"docs/pages/sdk/unity/Advanced/03-clients.mdx#feehistory","319":"docs/pages/sdk/unity/Advanced/03-clients.mdx#networkid","320":"docs/pages/sdk/unity/Advanced/03-clients.mdx#nonceat","321":"docs/pages/sdk/unity/Advanced/03-clients.mdx#sendrawtransaction","322":"docs/pages/sdk/unity/Advanced/03-clients.mdx#suggestgasprice","323":"docs/pages/sdk/unity/Advanced/03-clients.mdx#suggestgastipcap","324":"docs/pages/sdk/unity/Advanced/03-clients.mdx#transactionbyhash","325":"docs/pages/sdk/unity/Advanced/03-clients.mdx#transactioncount","326":"docs/pages/sdk/unity/Advanced/03-clients.mdx#waitfortransactionreceipt","327":"docs/pages/sdk/unity/Advanced/04-transfers.mdx#transfers","328":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#contracts","329":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#calling-smart-contract-functions","330":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#understanding-data-type-mappings","331":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#querying-contracts","332":"docs/pages/sdk/unity/Advanced/05-contracts.mdx#deploying-contracts","333":"docs/pages/sdk/unity/Advanced/06-tokens.mdx#tokens","334":"docs/pages/sdk/unity/Advanced/06-tokens.mdx#bonus-ownable","335":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#how-to-manage-item-metadata-in-sequence-builder","336":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#introduction","337":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-1-prepare-your-token-images-and-metadata","338":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-2-set-up-on-pinatacloud","339":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-3-upload-your-metadata-files","340":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-4-get-the-folder-url","341":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-5-set-up-on-sequence-builder","342":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-6-deploy-your-contract","343":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-7-move-to-contract-details","344":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-8-update-contract-attributes","345":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-9-set-the-base-metadata-uri","346":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-10-minting-time","347":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-11-finalize-and-admire","348":"docs/pages/solutions/collectibles/metadata/800-manage-metadata-builder.mdx#step-12-updating-metadata","349":"docs/pages/solutions/marketplaces/orderbook/02-quickstart.mdx#quickstart","350":"docs/pages/solutions/marketplaces/orderbook/02-quickstart.mdx#try-a-demo","351":"docs/pages/solutions/marketplaces/orderbook/02-quickstart.mdx#template","352":"docs/pages/solutions/marketplaces/orderbook/02-quickstart.mdx#try-an-api-call","353":"docs/pages/solutions/payments/onramps/01-fiat-on-ramps.mdx#fiat-on-ramps","354":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#why-smart-contracts-wallets","355":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#externally-owned-accounts","356":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#pros","357":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#popular-examples","358":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#smart-contract-wallets","359":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#pros-1","360":"docs/pages/solutions/technical-references/wallet-contracts/01-why.mdx#examples","361":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#sequence-embedded-wallet","362":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#architecture-overview","363":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#signer-1-sequence-auth","364":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#signer-2-sequence-guard","365":"docs/pages/solutions/wallets/embedded-wallet/01-overview.mdx#threat-model","366":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#quickstart","367":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#try-a-demo","368":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#template","369":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#getting-started","370":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#sdk-installation","371":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#project-setup","372":"docs/pages/solutions/wallets/embedded-wallet/02-quickstart.mdx#library-setup","373":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#quickstart","374":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#try-a-demo","375":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#template","376":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#install","377":"docs/pages/solutions/wallets/universal-wallet/02-quickstart.mdx#cdn-distribution-as-native-js","378":"docs/pages/solutions/wallets/universal-wallet/04-sequence-kit.mdx#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","379":"docs/pages/solutions/wallets/universal-wallet/04-sequence-kit.mdx#key-features","380":"docs/pages/solutions/wallets/universal-wallet/04-sequence-kit.mdx#next-steps","381":"docs/pages/solutions/wallets/universal-wallet/05-platforms.mdx#platforms","382":"docs/pages/solutions/wallets/universal-wallet/05-platforms.mdx#web-wallet","383":"docs/pages/solutions/wallets/universal-wallet/05-platforms.mdx#mobile-wallet","384":"docs/pages/solutions/wallets/universal-wallet/05-platforms.mdx#browser-extension-wallet","385":"docs/pages/solutions/wallets/universal-wallet/06-fiat-on-ramps.mdx#fiat-on-ramps","386":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#key-management","387":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#social-login-wallets","388":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#session-keys","389":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#guard-key","390":"docs/pages/solutions/wallets/universal-wallet/07-key-management.mdx#torus-key","391":"docs/pages/solutions/marketplaces/orderbook/examples/05-get-user-activities.mdx#getuseractivities","392":"docs/pages/solutions/marketplaces/orderbook/examples/05-get-user-activities.mdx#example-implementation","393":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#wallet-configuration","394":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#configuration-layout","395":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#signer-layout","396":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#example","397":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#the-valid-combinations-of-signers-are","398":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#configuration-hash---imagehash","399":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#compute-image-hash","400":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#initial-wallet-configuration","401":"docs/pages/solutions/technical-references/internals/v1/04-wallet-configuration.mdx#compute-wallet-address","402":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#modules--wallet-update","403":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#wallet-implementation","404":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#_updateconfiguration","405":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#parameters","406":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#reading-current-implementation","407":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#wallet-configuration-validation","408":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#_isvalidimage","409":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#parameters-1","410":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#return-values","411":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#mainmoduleupgradeable","412":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#updateimagehash","413":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#parameters-2","414":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#first-configuration-update","415":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#delegatecall-false","416":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#revertonerror-true","417":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#to-wallet","418":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#value-ethersconstantszero","419":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#gaslimit-ethersconstantszero","420":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#subsequent-configuration-updates","421":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#retrieving-the-current-configuration","422":"docs/pages/solutions/technical-references/internals/v1/05-modules-and-updates.mdx#retrieving-the-wallet-configuration","423":"docs/pages/solutions/technical-references/internals/v1/06-main-module-upgradeable.mdx#mainmoduleupgradeable--configuration-migration","424":"docs/pages/solutions/technical-references/internals/v1/08-signature-encoding.mdx#signature-encoding","425":"docs/pages/solutions/technical-references/internals/v1/08-signature-encoding.mdx#erc-191-ethereum-signed-data","426":"docs/pages/solutions/technical-references/internals/v1/08-signature-encoding.mdx#erc-712-structured-data-signatures","427":"docs/pages/solutions/technical-references/internals/v1/08-signature-encoding.mdx#verification","428":"docs/pages/solutions/technical-references/internals/v1/09-nested-transaction-batching.mdx#nested-transaction-batching","429":"docs/pages/solutions/technical-references/internals/v1/10-guest-module.mdx#guestmodule-and-on-demand-deployment","430":"docs/pages/solutions/technical-references/internals/v1/11-wallet-context.mdx#wallet-context","431":"docs/pages/solutions/technical-references/internals/v1/12-contract-audits.mdx#contract-audits","432":"docs/pages/solutions/technical-references/internals/v1/12-contract-audits.mdx#quantstamp","433":"docs/pages/solutions/technical-references/internals/v1/12-contract-audits.mdx#consensys-diligence","434":"docs/pages/solutions/technical-references/internals/v1/12-contract-audits.mdx#zellic","435":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#wallet-configuration","436":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#top-level-properties","437":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#threshold","438":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#checkpoint","439":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#tree","440":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#signer","441":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#subdigest","442":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#subtree-nested-configuration","443":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#imagehash","444":"docs/pages/solutions/technical-references/internals/v2/04-configuration.mdx#initial-configuration","445":"docs/pages/solutions/wallets/embedded-wallet/examples/03-manage-sessions.mdx#session-management","446":"docs/pages/solutions/wallets/embedded-wallet/examples/03-manage-sessions.mdx#sign-in--sign-up","447":"docs/pages/solutions/wallets/embedded-wallet/examples/03-manage-sessions.mdx#email-sign-in--sign-up","448":"docs/pages/solutions/wallets/embedded-wallet/examples/03-manage-sessions.mdx#google--apple-auth","449":"docs/pages/solutions/wallets/embedded-wallet/examples/03-manage-sessions.mdx#list-sessions","450":"docs/pages/solutions/wallets/embedded-wallet/examples/03-manage-sessions.mdx#close-session","451":"docs/pages/solutions/wallets/embedded-wallet/examples/05-validation.mdx#validation","452":"docs/pages/solutions/wallets/embedded-wallet/examples/05-validation.mdx#email-login-one-time-code","453":"docs/pages/solutions/wallets/embedded-wallet/examples/05-validation.mdx#social-login","454":"docs/pages/solutions/wallets/embedded-wallet/examples/05-validation.mdx#validation-status","455":"docs/pages/solutions/wallets/embedded-wallet/examples/05-validation.mdx#trigger-session-validation","456":"docs/pages/solutions/wallets/embedded-wallet/examples/05-validation.mdx#onvalidationrequired-callback","457":"docs/pages/solutions/wallets/embedded-wallet/examples/05-validation.mdx#listen-for-session-validations","458":"docs/pages/solutions/wallets/embedded-wallet/examples/05-validation.mdx#automatic-session-validation","459":"docs/pages/solutions/wallets/embedded-wallet/examples/06-transaction-receipts.mdx#transaction-receipts","460":"docs/pages/solutions/wallets/embedded-wallet/examples/06-transaction-receipts.mdx#successful-transaction-response","461":"docs/pages/solutions/wallets/embedded-wallet/examples/06-transaction-receipts.mdx#failed-transaction-response","462":"docs/pages/solutions/wallets/universal-wallet/examples/02-auth-address.mdx#authenticate-users-with-message-signature","463":"docs/pages/solutions/wallets/universal-wallet/examples/02-auth-address.mdx#ask-for-the-wallet-address","464":"docs/pages/solutions/wallets/universal-wallet/examples/02-auth-address.mdx#authenticate-wallet","465":"docs/pages/solutions/wallets/universal-wallet/examples/02-auth-address.mdx#authenticate-wallet-server-side","466":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#no-wallet-confirmation-signatures","467":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#session-keys","468":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#using-session-keys-with-sequence","469":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#1-initialize-sequence-wallet-and-connect","470":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#2-generate-a-session-key","471":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#3-sign-authorization-message","472":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#4-verify-authorization-signature","473":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#5-sign-message-with-session-key","474":"docs/pages/solutions/wallets/universal-wallet/examples/04-session-keys.mdx#6-verify-session-signature","475":"docs/pages/solutions/wallets/universal-wallet/examples/05-send-transaction.mdx#sending-transactions","476":"docs/pages/solutions/wallets/universal-wallet/examples/06-send-erc20.mdx#sending-erc-20-tokens","477":"docs/pages/solutions/wallets/universal-wallet/examples/07-send-erc721.mdx#sending-erc-721-nft-tokens","478":"docs/pages/solutions/wallets/universal-wallet/examples/08-send-erc1155.mdx#sending-erc-1155-collectible-tokens","479":"docs/pages/solutions/wallets/universal-wallet/examples/09-send-batch-transactions.mdx#sending-a-batch-of-transactions","480":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#building-backends-with-sequence","481":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#nodejs","482":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#go","483":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#ethkit","484":"docs/pages/solutions/wallets/universal-wallet/examples/10-building-backends.mdx#support-for-other-backend-languages"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,58],"1":[2,1,39],"2":[2,1,48],"3":[6,2,100],"4":[6,2,147],"5":[3,2,22],"6":[2,1,46],"7":[4,2,76],"8":[2,1,114],"9":[6,2,61],"10":[4,2,144],"11":[1,2,1],"12":[3,2,125],"13":[2,2,92],"14":[3,2,65],"15":[6,1,1],"16":[3,1,1],"17":[6,1,41],"18":[4,1,1],"19":[4,1,1],"20":[4,1,1],"21":[5,1,1],"22":[5,1,1],"23":[4,1,1],"24":[5,1,1],"25":[7,1,1],"26":[8,1,1],"27":[4,1,1],"28":[2,1,29],"29":[13,3,179],"30":[11,3,142],"31":[2,1,56],"32":[1,2,105],"33":[4,2,69],"34":[2,2,63],"35":[4,2,15],"36":[6,1,144],"37":[8,1,29],"38":[16,8,101],"39":[1,1,129],"40":[4,1,11],"41":[2,1,47],"42":[3,1,29],"43":[8,3,160],"44":[3,1,29],"45":[13,4,130],"46":[4,1,29],"47":[14,5,158],"48":[2,1,37],"49":[10,2,115],"50":[4,2,14],"51":[1,1,35],"52":[4,2,41],"53":[2,2,28],"54":[4,2,15],"55":[6,1,81],"56":[1,6,176],"57":[1,6,35],"58":[2,6,45],"59":[2,6,49],"60":[3,6,31],"61":[2,1,44],"62":[9,2,111],"63":[3,2,142],"64":[3,5,19],"65":[3,2,57],"66":[2,2,1],"67":[1,3,164],"68":[1,3,144],"69":[3,3,82],"70":[1,3,55],"71":[4,1,37],"72":[2,4,226],"73":[8,4,62],"74":[3,11,1],"75":[3,11,1],"76":[4,11,1],"77":[4,11,1],"78":[5,11,131],"79":[2,4,121],"80":[7,1,114],"81":[11,7,123],"82":[2,18,37],"83":[12,7,171],"84":[2,20,25],"85":[2,20,12],"86":[7,7,212],"87":[4,15,47],"88":[6,15,39],"89":[3,15,67],"90":[5,15,94],"91":[6,7,175],"92":[1,1,1],"93":[3,1,11],"94":[1,1,11],"95":[2,1,1],"96":[2,3,32],"97":[2,3,41],"98":[2,3,62],"99":[1,1,33],"100":[1,1,36],"101":[2,1,40],"102":[2,2,78],"103":[2,1,33],"104":[5,1,23],"105":[4,5,48],"106":[5,1,83],"107":[6,1,72],"108":[4,1,46],"109":[5,1,26],"110":[2,1,18],"111":[2,1,38],"112":[2,1,1],"113":[1,2,40],"114":[1,2,22],"115":[6,2,12],"116":[2,8,12],"117":[2,8,12],"118":[2,8,14],"119":[2,8,48],"120":[2,8,48],"121":[1,2,39],"122":[1,1,11],"123":[1,1,46],"124":[4,1,30],"125":[4,1,12],"126":[5,5,39],"127":[5,5,22],"128":[5,1,30],"129":[4,5,89],"130":[3,1,85],"131":[4,1,34],"132":[1,1,67],"133":[1,1,48],"134":[1,1,1],"135":[3,1,95],"136":[1,4,145],"137":[1,1,137],"138":[1,1,102],"139":[1,1,112],"140":[4,1,46],"141":[4,1,70],"142":[1,5,41],"143":[1,5,43],"144":[1,5,5],"145":[1,5,155],"146":[1,5,3],"147":[3,1,91],"148":[3,1,104],"149":[1,3,103],"150":[1,3,87],"151":[3,4,94],"152":[1,3,53],"153":[3,4,92],"154":[1,3,76],"155":[3,4,93],"156":[1,3,190],"157":[2,3,119],"158":[3,1,54],"159":[2,1,76],"160":[2,1,139],"161":[2,1,93],"162":[3,2,12],"163":[2,2,25],"164":[3,3,118],"165":[5,3,46],"166":[1,1,71],"167":[1,1,11],"168":[1,1,1],"169":[1,1,46],"170":[1,1,47],"171":[1,1,113],"172":[1,1,1],"173":[3,2,160],"174":[3,2,67],"175":[6,2,50],"176":[6,2,2],"177":[2,1,1],"178":[2,3,135],"179":[3,3,51],"180":[1,3,72],"181":[3,3,83],"182":[1,1,19],"183":[3,2,55],"184":[1,2,13],"185":[4,2,140],"186":[3,1,42],"187":[3,4,47],"188":[1,3,53],"189":[2,5,17],"190":[2,5,17],"191":[2,5,15],"192":[2,1,26],"193":[8,3,111],"194":[2,3,50],"195":[3,1,27],"196":[8,4,101],"197":[13,4,80],"198":[2,4,44],"199":[2,1,145],"200":[5,2,205],"201":[5,2,26],"202":[1,6,22],"203":[1,6,8],"204":[1,6,23],"205":[1,6,20],"206":[1,6,19],"207":[1,6,23],"208":[1,6,17],"209":[1,6,20],"210":[1,6,26],"211":[2,6,21],"212":[2,6,38],"213":[2,6,36],"214":[2,6,29],"215":[2,6,28],"216":[2,6,27],"217":[2,6,31],"218":[2,6,27],"219":[2,6,40],"220":[8,2,25],"221":[11,2,5],"222":[3,2,106],"223":[5,1,1],"224":[5,5,17],"225":[2,5,121],"226":[4,5,139],"227":[7,1,1],"228":[4,1,28],"229":[2,1,95],"230":[5,1,1],"231":[6,6,17],"232":[5,6,33],"233":[4,6,28],"234":[4,6,35],"235":[6,6,25],"236":[4,6,49],"237":[2,1,42],"238":[4,1,72],"239":[5,1,85],"240":[5,1,93],"241":[5,1,82],"242":[4,1,1],"243":[1,5,22],"244":[1,5,33],"245":[1,5,36],"246":[5,5,72],"247":[1,1,93],"248":[5,2,32],"249":[2,1,105],"250":[9,1,40],"251":[2,9,78],"252":[2,1,33],"253":[2,1,34],"254":[1,2,32],"255":[1,2,38],"256":[1,2,1],"257":[1,3,18],"258":[4,3,29],"259":[4,3,27],"260":[11,2,37],"261":[2,2,51],"262":[1,2,34],"263":[2,1,38],"264":[1,2,17],"265":[1,2,38],"266":[1,2,1],"267":[1,3,18],"268":[3,3,28],"269":[3,3,27],"270":[2,2,54],"271":[11,2,37],"272":[1,2,23],"273":[3,1,39],"274":[1,3,17],"275":[1,3,21],"276":[1,3,1],"277":[3,4,12],"278":[3,4,20],"279":[1,3,14],"280":[4,1,26],"281":[1,4,16],"282":[1,4,1],"283":[1,5,31],"284":[2,5,33],"285":[1,4,1],"286":[1,5,15],"287":[3,5,16],"288":[1,4,11],"289":[2,1,33],"290":[1,2,23],"291":[1,2,18],"292":[1,1,1],"293":[14,2,75],"294":[21,2,88],"295":[21,2,159],"296":[2,1,90],"297":[2,2,24],"298":[1,1,21],"299":[2,1,29],"300":[2,1,41],"301":[1,1,15],"302":[1,2,9],"303":[1,2,17],"304":[1,2,20],"305":[1,2,62],"306":[1,2,64],"307":[1,2,48],"308":[1,1,64],"309":[1,1,50],"310":[1,2,73],"311":[1,2,31],"312":[1,2,17],"313":[1,2,18],"314":[1,2,39],"315":[1,2,19],"316":[1,2,37],"317":[1,2,18],"318":[1,2,35],"319":[1,2,20],"320":[1,2,38],"321":[1,2,19],"322":[1,2,14],"323":[1,2,17],"324":[1,2,14],"325":[1,2,20],"326":[1,2,20],"327":[1,1,51],"328":[1,1,79],"329":[4,1,107],"330":[4,1,64],"331":[2,1,69],"332":[2,1,24],"333":[1,1,107],"334":[2,1,47],"335":[8,1,1],"336":[1,8,25],"337":[8,8,61],"338":[7,8,54],"339":[6,8,31],"340":[6,8,25],"341":[7,8,25],"342":[5,8,20],"343":[6,8,17],"344":[5,8,58],"345":[7,8,66],"346":[4,8,65],"347":[5,8,28],"348":[4,8,62],"349":[1,1,1],"350":[3,1,12],"351":[1,1,11],"352":[4,1,41],"353":[3,1,63],"354":[5,1,35],"355":[3,5,20],"356":[1,7,11],"357":[2,7,5],"358":[3,5,46],"359":[1,6,23],"360":[1,5,5],"361":[3,1,57],"362":[2,3,38],"363":[4,5,109],"364":[4,5,116],"365":[2,3,86],"366":[1,1,1],"367":[3,1,11],"368":[1,1,11],"369":[2,1,1],"370":[2,3,32],"371":[2,3,41],"372":[2,3,63],"373":[1,1,1],"374":[3,1,11],"375":[1,1,9],"376":[1,1,68],"377":[5,3,32],"378":[9,1,40],"379":[2,9,78],"380":[2,1,33],"381":[1,1,1],"382":[2,1,27],"383":[2,1,48],"384":[3,1,5],"385":[3,1,65],"386":[2,1,69],"387":[3,2,76],"388":[2,5,32],"389":[2,5,45],"390":[2,5,102],"391":[1,1,158],"392":[2,2,24],"393":[2,1,18],"394":[2,2,26],"395":[2,3,26],"396":[1,4,21],"397":[7,4,31],"398":[3,3,51],"399":[3,5,28],"400":[3,2,23],"401":[3,7,65],"402":[4,1,40],"403":[2,4,25],"404":[2,6,44],"405":[2,7,42],"406":[3,6,53],"407":[3,4,58],"408":[2,7,42],"409":[2,8,9],"410":[3,8,12],"411":[1,4,18],"412":[1,5,20],"413":[2,6,88],"414":[3,4,82],"415":[2,7,31],"416":[2,7,32],"417":[2,7,19],"418":[4,7,20],"419":[4,7,73],"420":[3,6,37],"421":[4,6,35],"422":[4,9,49],"423":[4,1,1],"424":[2,1,17],"425":[5,2,72],"426":[5,2,96],"427":[1,2,87],"428":[3,1,1],"429":[5,1,1],"430":[2,1,20],"431":[2,1,30],"432":[1,2,7],"433":[2,2,3],"434":[1,2,3],"435":[2,1,35],"436":[3,2,37],"437":[1,5,34],"438":[1,5,41],"439":[1,5,37],"440":[1,6,41],"441":[1,6,49],"442":[4,6,127],"443":[1,2,69],"444":[2,2,68],"445":[2,1,40],"446":[3,2,102],"447":[4,5,107],"448":[3,5,173],"449":[2,2,94],"450":[2,2,51],"451":[1,1,17],"452":[6,2,29],"453":[2,2,68],"454":[2,1,34],"455":[3,2,49],"456":[2,5,60],"457":[4,2,35],"458":[3,1,51],"459":[2,1,21],"460":[3,2,124],"461":[3,2,133],"462":[5,1,1],"463":[5,5,17],"464":[2,5,121],"465":[4,5,139],"466":[4,1,28],"467":[2,1,95],"468":[5,1,1],"469":[6,6,17],"470":[5,6,33],"471":[4,6,28],"472":[4,6,35],"473":[6,6,25],"474":[4,6,49],"475":[2,1,42],"476":[4,1,72],"477":[5,1,85],"478":[5,1,93],"479":[5,1,82],"480":[4,1,1],"481":[1,5,22],"482":[1,5,33],"483":[1,5,36],"484":[5,5,72]},"averageFieldLength":[3.0989690721649485,3.251546391752577,49.14432989690721],"storedFields":{"0":{"href":"/support#support","html":"\n

Sequence has a front line Support Team in multiple timezones to tackle problems that arise with the Stack, as well as answer any question for new projects in order to integrate web3 experiences in games and applications.

\n

If one of the members of the team does not know the answer, we'll further investigate (with backup support from the Sequence dev team) to get to the bottom of your troubles.

\n

Start talking to support today

","isPage":true,"text":"\nSequence has a front line Support Team in multiple timezones to tackle problems that arise with the Stack, as well as answer any question for new projects in order to integrate web3 experiences in games and applications.\nIf one of the members of the team does not know the answer, we'll further investigate (with backup support from the Sequence dev team) to get to the bottom of your troubles.\nStart talking to support today","title":"Support","titles":[]},"1":{"href":"/api/marketplace#marketplace-api","html":"\n\n

The Sequence Marketplace API service offers a simple and fast way to interact with sequence marketplace protocols. The API is designed to be easy to use and to have all the features you need to build a fully functional marketplace.

\n

#TODO add example from solutions

","isPage":true,"text":"\nMarketplace API documentation and testing\nThe Sequence Marketplace API service offers a simple and fast way to interact with sequence marketplace protocols. The API is designed to be easy to use and to have all the features you need to build a fully functional marketplace.\n#TODO add example from solutions","title":"Marketplace API","titles":[]},"2":{"href":"/api/metadata#metadata-api","html":"\n\n

The Sequence Metadata API service offers a simple and fast API to query, manage, and update collections, token & NFT metadata for Ethereum-compatible chains.

\n\n","isPage":true,"text":"\nMetadata API documentation and endpoints\nThe Sequence Metadata API service offers a simple and fast API to query, manage, and update collections, token & NFT metadata for Ethereum-compatible chains.\nOur Metadata service is managed through Sequence Builder and requires a Service Account & Token in order to call the corresponding endpoints. Please follow the [section](/api/metadata#Obtaining a Service Account & Token) below prior to calling the endpoints\n","title":"Metadata API","titles":[]},"3":{"href":"/api/metadata#obtaining-a-service-account--token","html":"\n

Since the Metadata API requires write access in order to update on-chain state, you will need to first obtain a Service Account & Token to call this from your backend. Importantly, this is a secret key and should not be exposed publicly.

\n
    \n
  1. Create a New Project using our Builder. Navigate to Settings > API Keys > Add Service Account.
  2. \n
  3. In the modal that pops up, click the dropdown for Permission and change to Write. After completed click Add.
  4. \n
  5. On the next screen, you will be given your Secret API Token. Copy the key and store it securely as it is not possible to see it again. Once this is done, click Confirm and you are all set to utilize the API.
  6. \n
\n

Keep in mind, in contrast to our Public API Access key - this Secret API Token should be stored securely and not be used publicly. You will pass this token as a normal JWT in the Request Headers as X-Access-Key

\n","isPage":false,"text":"\nSince the Metadata API requires write access in order to update on-chain state, you will need to first obtain a Service Account & Token to call this from your backend. Importantly, this is a secret key and should not be exposed publicly.\n\nCreate a New Project using our Builder. Navigate to Settings > API Keys > Add Service Account.\nIn the modal that pops up, click the dropdown for Permission and change to Write. After completed click Add.\nOn the next screen, you will be given your Secret API Token. Copy the key and store it securely as it is not possible to see it again. Once this is done, click Confirm and you are all set to utilize the API.\n\nKeep in mind, in contrast to our Public API Access key - this Secret API Token should be stored securely and not be used publicly. You will pass this token as a normal JWT in the Request Headers as X-Access-Key\n","title":"Obtaining a Service Account & Token","titles":["Metadata API"]},"4":{"href":"/api/metadata#creating-collections-tokens-and-managing-metadata","html":"\n

The below steps walk through an end to end example utilizing our Metadata API in order to deploy an NFT collection, create tokens within that collection, and deploy asset metadata to such as an image to that token.

\n
    \n
  1. \n

    Call CreateCollection endpoint - ensure you pass in the Secret Service Token created in the prior section.

    \n
  2. \n
  3. \n

    CreateToken - use returned collectionId from previous request

    \n
  4. \n
  5. \n

    CreateAsset - use collectionId and your tokenId

    \n
      \n
    • set metadataField (assetType) to one of the following\n
        \n
      • image
      • \n
      • animation_url
      • \n
      • audio
      • \n
      • video
      • \n
      \n
    • \n
    \n
  6. \n
  7. \n

    Upload file with PUT method to this endpoint PUT {metadata-server}/projects/{projectId}/collections/{collectionId}/tokens/{tokenId}/upload/{assetIdOrAssetType}- use assetId that is returned in step 3 OR, you can pass assetType, such as "image"

    \n
  8. \n
\n\n
    \n
  1. \n

    Asset is now privately accessible with JWT token at GET {metadata-server}/projects/{projectID}/collections/{collectionID}/tokens/{tokenID}/asset/{assetType}

    \n\n
  2. \n
  3. \n

    PublishCollection -- this sets the collection to be accessible by the public

    \n
  4. \n
  5. \n

    GetCollection -- will return both baseURIs for contract and token level metadata.

    \n
  6. \n
\n\n
    \n
  1. Finally, to use the metadata in your contract, simply update your contract's metadata base URIs to the values above, and everything will simply work.
  2. \n
\n

Below is an architecture demonstrating the steps above of how an NFT collection (ERC721 or ERC1155) is created and managed.\n\"Sequence

\n","isPage":false,"text":"\nThe below steps walk through an end to end example utilizing our Metadata API in order to deploy an NFT collection, create tokens within that collection, and deploy asset metadata to such as an image to that token.\n\n\nCall CreateCollection endpoint - ensure you pass in the Secret Service Token created in the prior section.\n\n\nCreateToken - use returned collectionId from previous request\n\n\nCreateAsset - use collectionId and your tokenId\n\nset metadataField (assetType) to one of the following\n\nimage\nanimation_url\naudio\nvideo\n\n\n\n\n\nUpload file with PUT method to this endpoint PUT {metadata-server}/projects/{projectId}/collections/{collectionId}/tokens/{tokenId}/upload/{assetIdOrAssetType}- use assetId that is returned in step 3 OR, you can pass assetType, such as "image"\n\n\n\nFor example you can upload to https://metadata.sequence.app/projects/486/collections/1/tokens/1/upload/image which will find the asset of the type "image" for the token, and will upload there.\n\nYou can also pass in the assetId if you prefer, i.e., PUT https://metadata.sequence.app/projects/486/collections/1/assets/1/upload\n\n\nAsset types include: image, audio, video, animation_url\n\n\n\nAsset is now privately accessible with JWT token at GET {metadata-server}/projects/{projectID}/collections/{collectionID}/tokens/{tokenID}/asset/{assetType}\n\nfor example: https://metadata.sequence.app/projects/486/collections/1/tokens/1/asset/image\n\n\n\nPublishCollection -- this sets the collection to be accessible by the public\n\n\nGetCollection -- will return both baseURIs for contract and token level metadata.\n\n\n\nCollection-level metadata (aka contract-level) metadata: https://metadata.sequence.app/projects/486/collections/1 or https://metadata.sequence.app/projects/486/collections/1.json\nToken-level metadata: https://metadata.sequence.app/projects/486/collections/1/tokens/{tokenId}\n\nie. https://metadata.sequence.app/projects/486/collections/1/tokens/1 or https://metadata.sequence.app/projects/486/collections/1/tokens/1.json\n\n\n\n\nFinally, to use the metadata in your contract, simply update your contract's metadata base URIs to the values above, and everything will simply work.\n\nBelow is an architecture demonstrating the steps above of how an NFT collection (ERC721 or ERC1155) is created and managed.\n\n","title":"Creating Collections, Tokens, and Managing Metadata","titles":["Metadata API"]},"5":{"href":"/api/metadata#pricing--usage","html":"\n

The Sequence Metadata is available for free with moderate request limits, but if your project requires higher limits, please contact the Sequence team.

","isPage":false,"text":"\nThe Sequence Metadata is available for free with moderate request limits, but if your project requires higher limits, please contact the Sequence team.","title":"Pricing & Usage","titles":["Metadata API"]},"6":{"href":"/api/node-gateway#node-gateway","html":"\n

Sequence Node gateway infrastructure enables you to have fail-over resilient RPC endpoints that can scale with your application.

\n

By using our infrastructure, you save money for not having to deploy your own stack, and benefits from the feature of aggregating multiple public RPC providers into a single endpoint for use.

\n","isPage":true,"text":"\nSequence Node gateway infrastructure enables you to have fail-over resilient RPC endpoints that can scale with your application.\nBy using our infrastructure, you save money for not having to deploy your own stack, and benefits from the feature of aggregating multiple public RPC providers into a single endpoint for use.\n","title":"Node Gateway","titles":[]},"7":{"href":"/api/node-gateway#give-it-a-try","html":"\n

Install ethers with pnpm install ethers or yarn add ethers

\n

Ensure to choose a network handle from our network options

\n

And acquire a Builder access key to authenticate your connection and append to the endpoint

\n
// Import the ethers library\nimport { ethers } from "ethers";\n \n// Function to create a provider and fetch the latest block\nasync function getLatestBlock() {\n  // Replace the following URL with your actual RPC endpoint\n  const rpcUrl =\n    "https://nodes.sequence.app/<chain_handle>/<project_access_key>";\n \n  // Create a provider using the RPC URL\n  const provider = new ethers.providers.JsonRpcProvider(rpcUrl);\n \n  // Fetch the latest block\n  const latestBlock = await provider.getBlock("latest");\n \n  console.log("Latest Block:", latestBlock);\n}\n \n// Call the function to get the latest block\ngetLatestBlock().catch(console.error);
","isPage":false,"text":"\nInstall ethers with pnpm install ethers or yarn add ethers\nEnsure to choose a network handle from our network options\nAnd acquire a Builder access key to authenticate your connection and append to the endpoint\n// Import the ethers library\nimport { ethers } from "ethers";\n \n// Function to create a provider and fetch the latest block\nasync function getLatestBlock() {\n // Replace the following URL with your actual RPC endpoint\n const rpcUrl =\n "https://nodes.sequence.app/<chain_handle>/<project_access_key>";\n \n // Create a provider using the RPC URL\n const provider = new ethers.providers.JsonRpcProvider(rpcUrl);\n \n // Fetch the latest block\n const latestBlock = await provider.getBlock("latest");\n \n console.log("Latest Block:", latestBlock);\n}\n \n// Call the function to get the latest block\ngetLatestBlock().catch(console.error);","title":"Give it a try","titles":["Node Gateway"]},"8":{"href":"/api/relayer#relayer-api","html":"\n\n

The Sequence Relayer service offers a simple interface for dispatching meta-transactions on Ethereum-compatible networks.

\n

Meta-transactions are the idea of a transaction inside of a transaction. The benefits of Sequence meta-transactions are that they allow:

\n\n

The best part: transactions with Sequence Relayer are compatible with any existing/deployed Ethereum contract, and thus, integrating the Sequence Relayer doesn't require any changes to your contracts or dapp.

\n

The Sequence Relayer is usable by frontend dapps, or even in your backends.

\n","isPage":true,"text":"\nRelayer API documentation and endpoints\nThe Sequence Relayer service offers a simple interface for dispatching meta-transactions on Ethereum-compatible networks.\nMeta-transactions are the idea of a transaction inside of a transaction. The benefits of Sequence meta-transactions are that they allow:\n\nGas abstraction -- whereby users can pay for network gas in a variety of tokens (ie. USDC, DAI, etc.)\nSponsored gas -- projects may sponsor the gas of specific contracts to allow free gas for their users\nBatched transactions -- group a bunch of independent transactions and allow them to be mined as a single transaction\nParallel transactions -- parallelize the dispatch of transactions in some cases\nFire + forget model -- easily send transactions to the relayer which will automatically manage nonces, bump gas, and other features which will ensure fast delivery\nOptimal gas pricing for transactions\n\nThe best part: transactions with Sequence Relayer are compatible with any existing/deployed Ethereum contract, and thus, integrating the Sequence Relayer doesn't require any changes to your contracts or dapp.\nThe Sequence Relayer is usable by frontend dapps, or even in your backends.\n","title":"Relayer API","titles":[]},"9":{"href":"/api/relayer#anatomy-of-a-sequence-transaction-bundle","html":"\n

A Sequence transaction bundle consists of three things:

\n
    \n
  1. A list of Sequence transactions
  2. \n
  3. A Sequence nonce
  4. \n
  5. A Sequence signature
  6. \n
\n

Like Ethereum accounts, Sequence wallets use nonces to enforce transaction ordering and protect against replay attacks.\nUnlike Ethereum accounts, Sequence wallets have a virtually unlimited supply of independent nonces, allowing multiple independent transactions to be executed in parallel.\nA Sequence nonce is encoded as a 160-bit nonce space followed by the 96-bit nonce for that nonce space, big-endian.

\n
|<------------------------- uint256 -------------------------->|\n|<------ nonce space (160 bits) ------>||<- nonce (96 bits) -->|\nssssssssssssssssssssssssssssssssssssssssnnnnnnnnnnnnnnnnnnnnnnnn
\n","isPage":false,"text":"\nA Sequence transaction bundle consists of three things:\n\nA list of Sequence transactions\nA Sequence nonce\nA Sequence signature\n\nLike Ethereum accounts, Sequence wallets use nonces to enforce transaction ordering and protect against replay attacks.\nUnlike Ethereum accounts, Sequence wallets have a virtually unlimited supply of independent nonces, allowing multiple independent transactions to be executed in parallel.\nA Sequence nonce is encoded as a 160-bit nonce space followed by the 96-bit nonce for that nonce space, big-endian.\n|<------------------------- uint256 -------------------------->|\n|<------ nonce space (160 bits) ------>||<- nonce (96 bits) -->|\nssssssssssssssssssssssssssssssssssssssssnnnnnnnnnnnnnnnnnnnnnnnn\n","title":"Anatomy of a Sequence transaction bundle","titles":["Relayer API"]},"10":{"href":"/api/relayer#gas-sponsorship-and-fees","html":"\n

The relayer only dispatches transactions that either:

\n
    \n
  1. Are sponsored in a project via the Sequence Builder, or
  2. \n
  3. Include a fee payment transaction to the relayer.
  4. \n
\n

You can sponsor:

\n
    \n
  1. Sequence wallets, so that they can send transactions without needing to pay fees,
  2. \n
  3. Token addresses, so that any user can send those tokens for free,
  4. \n
  5. Contracts, so that any user can interact with them for free,
  6. \n
  7. Arbitrary addresses, so that any user can transfer native tokens to it for free.
  8. \n
\n

To start sponsoring transactions, sign into https://sequence.build, and create a new project for the network you want to transact on.

\n

You can also pay the relayer directly to dispatch your transactions by adding an additional fee payment transaction to the relayer in your bundle.\nThe list of accepted fee tokens can be retrieved by calling the /FeeTokens endpoint for the network you are interested in:

\n
$ curl -s -X POST -H 'Content-Type: application/json' -d '{}' \\\n  https://mainnet-relayer.sequence.app/rpc/Relayer/FeeTokens | jq\n \n{\n  "isFeeRequired": true,\n  "tokens": [\n    {\n      "chainId": 1,\n      "name": "Matic",\n      "symbol": "MATIC",\n      "type": "ERC20_TOKEN",\n      "decimals": 18,\n      "logoURL": "https://raw.githubusercontent.com/spothq/cryptocurrency-icons/master/128/color/matic.png",\n      "contractAddress": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0",\n      "tokenID": "0"\n    },\n    {\n      "chainId": 1,\n      "name": "USDC",\n      "symbol": "USDC",\n      "type": "ERC20_TOKEN",\n      "decimals": 6,\n      "logoURL": "https://logos.covalenthq.com/tokens/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.png",\n      "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",\n      "tokenID": "0"\n    },\n    {\n      "chainId": 1,\n      "name": "Wrapped Ether",\n      "symbol": "WETH",\n      "type": "ERC20_TOKEN",\n      "decimals": 18,\n      "logoURL": "https://logos.covalenthq.com/tokens/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.png",\n      "contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",\n      "tokenID": "0"\n    }\n  ]\n}
\n","isPage":false,"text":"\nThe relayer only dispatches transactions that either:\n\nAre sponsored in a project via the Sequence Builder, or\nInclude a fee payment transaction to the relayer.\n\nYou can sponsor:\n\nSequence wallets, so that they can send transactions without needing to pay fees,\nToken addresses, so that any user can send those tokens for free,\nContracts, so that any user can interact with them for free,\nArbitrary addresses, so that any user can transfer native tokens to it for free.\n\nTo start sponsoring transactions, sign into https://sequence.build, and create a new project for the network you want to transact on.\nYou can also pay the relayer directly to dispatch your transactions by adding an additional fee payment transaction to the relayer in your bundle.\nThe list of accepted fee tokens can be retrieved by calling the /FeeTokens endpoint for the network you are interested in:\n$ curl -s -X POST -H 'Content-Type: application/json' -d '{}' \\\n https://mainnet-relayer.sequence.app/rpc/Relayer/FeeTokens | jq\n \n{\n "isFeeRequired": true,\n "tokens": [\n {\n "chainId": 1,\n "name": "Matic",\n "symbol": "MATIC",\n "type": "ERC20_TOKEN",\n "decimals": 18,\n "logoURL": "https://raw.githubusercontent.com/spothq/cryptocurrency-icons/master/128/color/matic.png",\n "contractAddress": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0",\n "tokenID": "0"\n },\n {\n "chainId": 1,\n "name": "USDC",\n "symbol": "USDC",\n "type": "ERC20_TOKEN",\n "decimals": 6,\n "logoURL": "https://logos.covalenthq.com/tokens/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.png",\n "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",\n "tokenID": "0"\n },\n {\n "chainId": 1,\n "name": "Wrapped Ether",\n "symbol": "WETH",\n "type": "ERC20_TOKEN",\n "decimals": 18,\n "logoURL": "https://logos.covalenthq.com/tokens/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.png",\n "contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",\n "tokenID": "0"\n }\n ]\n}\n","title":"Gas sponsorship and fees","titles":["Relayer API"]},"11":{"href":"/api/relayer#api","html":"\n","isPage":false,"text":"\n","title":"API","titles":["Relayer API"]},"12":{"href":"/api/relayer#fetching-fee-options","html":"\n\n
import { Session } from '@0xsequence/auth'\nimport { ethers } from 'ethers'\n \nconst config = {\n  mnemonic: 'YOUR MNEMONIC',\n  projectAccessKey: 'YOUR PROJECT ACCESS KEY',\n  chainId: ChainId.YOUR_CHAIN_ID // e.g. ChainId.MAINNET, ChainId.POLYGON, etc.\n}\n \nconst signer = ethers.Wallet.fromMnemonic(config.mnemonic)\n \nconst session = await Session.singleSigner({ signer, projectAccessKey: config.projectAccessKey })\n \nconst account = session.account.getSigner(config.chainId, {\n  async selectFee(_transactions, options) {\n    // This callback is called with the list of candidate fee options.\n \n    console.log('Fee options:', JSON.stringify(options, undefined, 2))\n \n    // Select the USDC fee option.\n    return options.find(option => option.token.symbol === 'USDC')\n  }\n})
\n
mnemonic := "YOUR MNEMONIC"\nprojectAccessKey := "YOUR PROJECT ACCESS KEY"\nrpcURL := fmt.Sprintf("https://nodes.sequence.app/YOUR-NETWORK/%v", projectAccessKey)\nrelayerURL := "https://YOUR-NETWORK-relayer.sequence.app"\n \nsigner, _ := ethwallet.NewWalletFromMnemonic(mnemonic)\n \nwallet, _ := sequence.NewWalletSingleOwner(signer)\n \nprovider, _ := ethrpc.NewProvider(rpcURL)\nwallet.SetProvider(provider)\n \nrelayer, _ := relayer.NewRpcRelayer(relayerURL, projectAccessKey, provider, nil)\nwallet.SetRelayer(relayer)\n \ntransactions := sequence.Transactions{\n  &sequence.Transaction{\n    To:    common.HexToAddress("0x468E8e29F6cfb0F6b7ff10ec6A1AB516ec849c04"),\n    Value: big.NewInt(1000000000000000000),\n  },\n}\n \noptions, quote, _ := wallet.FeeOptions(ctx, transactions)
\n","isPage":false,"text":"\nFee selection is only necessary if you aren't already using Sequence Builder's gas sponsorship capabilities!\nCreate your project in Sequence Builder for ease of development today!\nimport { Session } from '@0xsequence/auth'\nimport { ethers } from 'ethers'\n \nconst config = {\n mnemonic: 'YOUR MNEMONIC',\n projectAccessKey: 'YOUR PROJECT ACCESS KEY',\n chainId: ChainId.YOUR_CHAIN_ID // e.g. ChainId.MAINNET, ChainId.POLYGON, etc.\n}\n \nconst signer = ethers.Wallet.fromMnemonic(config.mnemonic)\n \nconst session = await Session.singleSigner({ signer, projectAccessKey: config.projectAccessKey })\n \nconst account = session.account.getSigner(config.chainId, {\n async selectFee(_transactions, options) {\n // This callback is called with the list of candidate fee options.\n \n console.log('Fee options:', JSON.stringify(options, undefined, 2))\n \n // Select the USDC fee option.\n return options.find(option => option.token.symbol === 'USDC')\n }\n})\nmnemonic := "YOUR MNEMONIC"\nprojectAccessKey := "YOUR PROJECT ACCESS KEY"\nrpcURL := fmt.Sprintf("https://nodes.sequence.app/YOUR-NETWORK/%v", projectAccessKey)\nrelayerURL := "https://YOUR-NETWORK-relayer.sequence.app"\n \nsigner, _ := ethwallet.NewWalletFromMnemonic(mnemonic)\n \nwallet, _ := sequence.NewWalletSingleOwner(signer)\n \nprovider, _ := ethrpc.NewProvider(rpcURL)\nwallet.SetProvider(provider)\n \nrelayer, _ := relayer.NewRpcRelayer(relayerURL, projectAccessKey, provider, nil)\nwallet.SetRelayer(relayer)\n \ntransactions := sequence.Transactions{\n &sequence.Transaction{\n To: common.HexToAddress("0x468E8e29F6cfb0F6b7ff10ec6A1AB516ec849c04"),\n Value: big.NewInt(1000000000000000000),\n },\n}\n \noptions, quote, _ := wallet.FeeOptions(ctx, transactions)\n","title":"Fetching fee options","titles":["Relayer API","API"]},"13":{"href":"/api/relayer#sending-transactions","html":"\n
const transactions = [\n  {\n    to: '0x468E8e29F6cfb0F6b7ff10ec6A1AB516ec849c04',\n    value: '1000000000000000000'\n  }\n]\n \n// This sends the transaction to the relayer, and returns immediately once the relayer responds.\nconst response = await account.sendTransaction(transactions)\n \n// This waits for the transaction to be confirmed on-chain.\nconst receipt = await response.wait()\n \nconsole.log(JSON.stringify(receipt, undefined, 2))
\n
// Select the USDC fee option.\n// Not required if using Sequence Builder's gas sponsorship capabilities!\nvar selectedOption *sequence.RelayerFeeOption\nfor _, option := range options {\n  if option.Token.Symbol == "USDC" {\n    selectedOption = option\n    break\n  }\n}\n \n// Pay the relayer.\n// Not required if using Sequence Builder's gas sponsorship capabilities!\ndata, _ := contracts.IERC20.Encode("transfer", selectedOption.To, selectedOption.Value)\ntransactions.Append(sequence.Transactions{&sequence.Transaction{\n  To:            *selectedOption.Token.ContractAddress,\n  Data:          data,\n  RevertOnError: true,\n}})\n \nsigned, _ := wallet.SignTransactions(ctx, transactions)\n \n// Send the transaction to the relayer.\nmetaTxnID, _, wait, _ := wallet.SendTransaction(ctx, signed, quote)\n \nfmt.Println("meta-transaction ID", metaTxnID)\n \nreceipt, _ := wait(ctx)\n \nfmt.Println("transaction hash", receipt.TxHash)
\n","isPage":false,"text":"\nconst transactions = [\n {\n to: '0x468E8e29F6cfb0F6b7ff10ec6A1AB516ec849c04',\n value: '1000000000000000000'\n }\n]\n \n// This sends the transaction to the relayer, and returns immediately once the relayer responds.\nconst response = await account.sendTransaction(transactions)\n \n// This waits for the transaction to be confirmed on-chain.\nconst receipt = await response.wait()\n \nconsole.log(JSON.stringify(receipt, undefined, 2))\n// Select the USDC fee option.\n// Not required if using Sequence Builder's gas sponsorship capabilities!\nvar selectedOption *sequence.RelayerFeeOption\nfor _, option := range options {\n if option.Token.Symbol == "USDC" {\n selectedOption = option\n break\n }\n}\n \n// Pay the relayer.\n// Not required if using Sequence Builder's gas sponsorship capabilities!\ndata, _ := contracts.IERC20.Encode("transfer", selectedOption.To, selectedOption.Value)\ntransactions.Append(sequence.Transactions{&sequence.Transaction{\n To: *selectedOption.Token.ContractAddress,\n Data: data,\n RevertOnError: true,\n}})\n \nsigned, _ := wallet.SignTransactions(ctx, transactions)\n \n// Send the transaction to the relayer.\nmetaTxnID, _, wait, _ := wallet.SendTransaction(ctx, signed, quote)\n \nfmt.Println("meta-transaction ID", metaTxnID)\n \nreceipt, _ := wait(ctx)\n \nfmt.Println("transaction hash", receipt.TxHash)\n","title":"Sending transactions","titles":["Relayer API","API"]},"14":{"href":"/api/relayer#fetching-transaction-receipts","html":"\n

To fetch a transaction receipt for an arbitrary transaction that was dispatched via the relayer, call the /GetMetaTxnReceipt endpoint.\nThe metaTxID is the txnHash from the response of the /SendMetaTxn endpoint.

\n
curl -s -X POST -H 'Content-Type: application/json' \\\n  -d '{"metaTxID":"462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b"}' \\\n  https://polygon-relayer.sequence.app/rpc/Relayer/GetMetaTxnReceipt | jq\n \n{\n  "receipt": {\n    "id": "462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b",\n    "status": "SUCCEEDED",\n    "revertReason": null,\n    "index": 0,\n    "logs": [\n \n...
\n
const { receipt } = await session.account.relayer(config.chainId).wait('462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b')
\n
status, receipt, _ := relayer.Wait(ctx, "462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b")
","isPage":false,"text":"\nTo fetch a transaction receipt for an arbitrary transaction that was dispatched via the relayer, call the /GetMetaTxnReceipt endpoint.\nThe metaTxID is the txnHash from the response of the /SendMetaTxn endpoint.\ncurl -s -X POST -H 'Content-Type: application/json' \\\n -d '{"metaTxID":"462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b"}' \\\n https://polygon-relayer.sequence.app/rpc/Relayer/GetMetaTxnReceipt | jq\n \n{\n "receipt": {\n "id": "462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b",\n "status": "SUCCEEDED",\n "revertReason": null,\n "index": 0,\n "logs": [\n \n...\nconst { receipt } = await session.account.relayer(config.chainId).wait('462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b')\nstatus, receipt, _ := relayer.Wait(ctx, "462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b")","title":"Fetching transaction receipts","titles":["Relayer API","API"]},"15":{"href":"/guides/lootbox#deploy-an-in-game-collectibles-contract","html":"\n","isPage":true,"text":"\n","title":"Deploy an in-game collectibles contract","titles":[null]},"16":{"href":"/guides/lootbox#query-contract-details","html":"\n","isPage":false,"text":"\n","title":"Query contract details","titles":[null]},"17":{"href":"/guides/lootbox#fetch-token-balances-of-a-wallet","html":"\n
    \n
  1. \n

    Builder Signup & Project Creation

    \n
  2. \n
  3. \n

    Access Key Management

    \n
  4. \n
  5. \n

    Deploy a Contract

    \n
  6. \n
  7. \n

    Sponsor contract gas

    \n
  8. \n
  9. \n

    Deploying a cloudflare worker

    \n
  10. \n
  11. \n

    Generating AI Prompts & Images

    \n
  12. \n
  13. \n

    Uploading metadata to Sequence Metadata Service

    \n
  14. \n
  15. \n

    Minting Onchain with Relayer

    \n
  16. \n
  17. \n

    iframe-to-Webapp Communication

    \n
  18. \n
  19. \n

    Secure your cloudflare relayer from outside requests

    \n
  20. \n
","isPage":false,"text":"\n\n\nBuilder Signup & Project Creation\n\n\nAccess Key Management\n\n\nDeploy a Contract\n\n\nSponsor contract gas\n\n\nDeploying a cloudflare worker\n\n\nGenerating AI Prompts & Images\n\n\nUploading metadata to Sequence Metadata Service\n\n\nMinting Onchain with Relayer\n\n\niframe-to-Webapp Communication\n\n\nSecure your cloudflare relayer from outside requests\n\n","title":"Fetch token balances of a wallet","titles":[null]},"18":{"href":"/guides/unity-guide#integrate-sequencekit-with-waas","html":"\n","isPage":true,"text":"\n","title":"Integrate SequenceKit with WaaS","titles":[null]},"19":{"href":"/guides/unity-guide#deploy-a-collectibles-contract","html":"\n","isPage":false,"text":"\n","title":"Deploy a collectibles contract","titles":[null]},"20":{"href":"/guides/unity-guide#deploy-a-remote-minter","html":"\n","isPage":false,"text":"\n","title":"Deploy a remote minter","titles":[null]},"21":{"href":"/guides/unity-guide#mint-in-game-achievement-tokens","html":"\n","isPage":false,"text":"\n","title":"Mint in-game achievement tokens","titles":[null]},"22":{"href":"/guides/unity-guide#burn-in-game-achievement-tokens","html":"\n","isPage":false,"text":"\n","title":"Burn in-game achievement tokens","titles":[null]},"23":{"href":"/guides/unity-guide#integrate-an-embedded-marketplace","html":"\n","isPage":false,"text":"\n","title":"Integrate an embedded marketplace","titles":[null]},"24":{"href":"/solutions/minter#mint-tokens-using-builder-manually","html":"\n","isPage":true,"text":"\n","title":"Mint tokens using Builder manually","titles":[null]},"25":{"href":"/solutions/minter#deploy-a-serverless-minter-on-cloudflare-workers","html":"\n","isPage":false,"text":"\n","title":"Deploy a serverless minter on Cloudflare Workers","titles":[null]},"26":{"href":"/solutions/nft-checkout#integrate-nft-checkout-on-web-coming-soon","html":"\n","isPage":true,"text":"\n","title":"Integrate NFT Checkout on web (coming soon)","titles":[null]},"27":{"href":"/solutions/onramps#integrate-onramp-on-web","html":"\n","isPage":true,"text":"\n","title":"Integrate onramp on web","titles":[null]},"28":{"href":"/api/indexer/fetch-tokens#tokens-api","html":"\n\n","isPage":true,"text":"\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is now managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\n","title":"Tokens API","titles":[]},"29":{"href":"/api/indexer/fetch-tokens#fetches-list-of-erc20-erc721-and-erc1155-tokens-and-metadata-in-any-wallet","html":"\n

Sequence Indexer GetTokenBalances Method:

\n\n
\nExample: GetTokenBalances of a wallet account address on Polygon using an API_Access_Key\n\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for all token balances of the account on Polygon\nconst tokenBalances = await indexer.getTokenBalances({\n\taccountAddress: accountAddress,\n\tincludeMetadata: true\n})\nconsole.log('tokens in your account:', tokenBalances)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\ttokenBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, &includeMetadata, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("tokenBalances:", tokenBalances)\n}
Please [contact our team](/support) for assistance with integrations to another target.
\n
\n\n","isPage":false,"text":"\nSequence Indexer GetTokenBalances Method:\n\nRequest: POST /rpc/Indexer/GetTokenBalances\nContent-Type: application/json\nBody (in JSON):\n\naccountAddress (string) -- the wallet account address\nincludeMetadata (boolean - optional - default: false) -- toggle token metadata to be included in the response\nmetadataOptions (object - optional) -- additional options for metadata\n\nverifiedOnly (boolean - optional) -- return only contracts which are 'verified' to help reduce spam\nincludeContracts ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled.\n\n\n\n\n\n\nExample: GetTokenBalances of a wallet account address on Polygon using an API_Access_Key\nThis code requires an API Access Key from Sequence Builder.\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for all token balances of the account on Polygon\nconst tokenBalances = await indexer.getTokenBalances({\n\taccountAddress: accountAddress,\n\tincludeMetadata: true\n})\nconsole.log('tokens in your account:', tokenBalances)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\ttokenBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, &includeMetadata, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("tokenBalances:", tokenBalances)\n}Please [contact our team](/support) for assistance with integrations to another target.\n\nPRO TIP: fetching ERC721/1155 token IDsYou'll notice that, by default, GetTokenBalances will return at most one token instance from each contract.\nIn order to fetch ERC721/1155 token balances, you must pass the contractAddress to the GetTokenBalances method.\nThis will return all of the tokens owned by accountAddress from the specified contractAddress.\nSee section below for more information.\n","title":"Fetches list of ERC20, ERC721 and ERC1155 tokens and metadata in any wallet.","titles":["Tokens API",null]},"30":{"href":"/api/indexer/fetch-tokens#fetch-token-ids-balances-and-metadata-of-erc721-and-erc1155-collections","html":"\n

Sequence Indexer GetTokenBalances Method:

\n\n
\nExample: GetTokenBalances of a contract + account address on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any contract and account address you'd like :)\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for all nft balances of the account on Polygon\nconst nftBalances = await indexer.getTokenBalances({\n\tcontractAddress: contractAddress,\n\taccountAddress: accountAddress,\n\tincludeMetadata: true\n})\n \nconsole.log('collection of items:', nftBalances)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(contractAddress, accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\tnftBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, &contractAddress, &includeMetadata, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("nftBalances:", nftBalances)\n}
","isPage":false,"text":"\nSequence Indexer GetTokenBalances Method:\n\nRequest: POST /rpc/Indexer/GetTokenBalances\nContent-Type: application/json\nBody (in JSON):\n\naccountAddress (string) -- the wallet account address\ncontractAddress (string) -- the contract address of the ERC721 / ERC1155 collection\nincludeMetadata (boolean - optional - default: false) -- toggle token metadata to be included in the response\nmetadataOptions (object - optional) -- additional options for metadata\n\nverifiedOnly (boolean - optional) -- return only contracts which are 'verified' to help reduce spam\nincludeContracts ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled.\n\n\n\n\n\n\nExample: GetTokenBalances of a contract + account address on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any contract and account address you'd like :)\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for all nft balances of the account on Polygon\nconst nftBalances = await indexer.getTokenBalances({\n\tcontractAddress: contractAddress,\n\taccountAddress: accountAddress,\n\tincludeMetadata: true\n})\n \nconsole.log('collection of items:', nftBalances)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(contractAddress, accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\tnftBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, &contractAddress, &includeMetadata, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("nftBalances:", nftBalances)\n}","title":"Fetch token IDs, balances and metadata of ERC721 and ERC1155 collections.","titles":["Tokens API",null]},"31":{"href":"/api/indexer/installation#indexer-installation","html":"\n\n

Sequence Indexer is a simple API to query any blockchain token and NFT data. Below are instructions\non how to integrate the Sequence Indexer API into your Webapps, Games, and backends. In case you missed\nit, please also see the Indexer Overview.

\n","isPage":true,"text":"\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\nSequence Indexer is a simple API to query any blockchain token and NFT data. Below are instructions\non how to integrate the Sequence Indexer API into your Webapps, Games, and backends. In case you missed\nit, please also see the Indexer Overview.\n","title":"Indexer Installation","titles":[]},"32":{"href":"/api/indexer/installation#installation","html":"\n

The Sequence Indexer is built as a HTTP API with RPC endpoints that you may call directly\nfrom your Webapp, Game or server backend. Below you'll find information on the RPC endpoint\nschema with sample curl commands, along with examples in both Javascript/Typescript and Go.

\n

We provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Indexer with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Indexer API client as well.

\n\n
\n","isPage":false,"text":"\nThe Sequence Indexer is built as a HTTP API with RPC endpoints that you may call directly\nfrom your Webapp, Game or server backend. Below you'll find information on the RPC endpoint\nschema with sample curl commands, along with examples in both Javascript/Typescript and Go.\nWe provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Indexer with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Indexer API client as well.\nSequence Indexer offers the same API across a variety of EVM networks. Make sure to check the Indexer endpoints\nand use the corresponding host for your dapp/game. For example, on Ethereum mainnet the Sequence Indexer endpoint is\nhttps://mainnet-indexer.sequence.app and Polygon is https://polygon-indexer.sequence.app.🌄 View the full list of supported networks and Indexer endpoints here\n\n","title":"Installation","titles":["Indexer Installation"]},"33":{"href":"/api/indexer/installation#web--nodejs-installation","html":"\n
npm install 0xsequence ethers
\n

or

\n
pnpm install 0xsequence ethers
\n

or

\n
yarn add 0xsequence ethers
\n\n
import { SequenceIndexer } from '@0xsequence/indexer'\n \n// see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of\n// indexer hosts for the chain you'd like to query\nconst indexer = new SequenceIndexer('https://mainnet-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// see examples below for the kinds of queries you can make\nconst tokenBalances = await indexer.getTokenBalances(...)
\n

NOTE: if you're using @0xsequence/indexer from node.js, we recommend using node v18.x or newer.

\n
\n","isPage":false,"text":"\nnpm install 0xsequence ethers\nor\npnpm install 0xsequence ethers\nor\nyarn add 0xsequence ethers\nThis code requires an API Access Key from Sequence Builder.\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \n// see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of\n// indexer hosts for the chain you'd like to query\nconst indexer = new SequenceIndexer('https://mainnet-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// see examples below for the kinds of queries you can make\nconst tokenBalances = await indexer.getTokenBalances(...)\nNOTE: if you're using @0xsequence/indexer from node.js, we recommend using node v18.x or newer.\n\n","title":"Web / node.js Installation","titles":["Indexer Installation","Installation"]},"34":{"href":"/api/indexer/installation#go-installation","html":"\n
go get -u github.com/0xsequence/go-sequence@latest
\n

then in your app,

\n
import (\n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \n// see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of\n// indexer hosts for the chain you'd like to query\nseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n// see examples below for the kinds of queries you can make\naccountAddress := "ACCOUNT_ADDRESS"\nincludeMetadata := true\nmetadataOptions := indexer.MetadataOptions{\n\tVerifiedOnly: true,\n}\n \n_, tokenBalances, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, nil, &includeMetadata, &metadataOptions, nil)
\n
\n","isPage":false,"text":"\ngo get -u github.com/0xsequence/go-sequence@latest\nthen in your app,\nimport (\n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \n// see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of\n// indexer hosts for the chain you'd like to query\nseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n// see examples below for the kinds of queries you can make\naccountAddress := "ACCOUNT_ADDRESS"\nincludeMetadata := true\nmetadataOptions := indexer.MetadataOptions{\n\tVerifiedOnly: true,\n}\n \n_, tokenBalances, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, nil, &includeMetadata, &metadataOptions, nil)\n\n","title":"Go Installation","titles":["Indexer Installation","Installation"]},"35":{"href":"/api/indexer/installation#unity-or-unreal-installation","html":"\n

The Sequence Indexer is integrated directly inside of the respective Sequence Unity and Sequence Unreal SDKs.

\n
","isPage":false,"text":"\nThe Sequence Indexer is integrated directly inside of the respective Sequence Unity and Sequence Unreal SDKs.\n","title":"Unity or Unreal Installation","titles":["Indexer Installation","Installation"]},"36":{"href":"/api/indexer/metadata-tips#metadata-tips--notes-on-spam","html":"\n

The Sequence Indexer and Sequence Metadata services will pick up everything and anything\nthat is published on a blockchain. Our services are designed to provide data in real-time\nas blocks are mined, and adhere to all popular ERC20, ERC721 and ERC1155 metadata\nstandards so things just work.

\n

This is very helpful for your applications to be able to have access to the complete set of data\non-chain, but it also means it will include spam tokens when querying with default settings.

\n

To combat spam, we introduced metadataOptions arguments which can be passed to Indexer RPC\ncalls to control the results returned.

\n

The Sequence Metadata service keeps track of contracts which are "verified" by checking popular\nsources like Coingecko, OpenSea, Sequence Builder (https://sequence.build) and the Sequence Token\nDirectory (https://github.com/0xsequence/token-directory). By calling the Indexer RPC methods with\n"metadataOptions": { "verifiedOnly": true }, any contract address which has not been verified, will\nbe omitted from the results. We recommend using this option all the time, but, the downside is\nif your project's contracts are unverified, then they will also be omitted from the results. To help\nwith this, your options are to get verified with one of the sources above, or in your RPC calls to pass\n"metadataOptions": { "verifiedOnly": true, "includeContracts": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "0x8bb759bb68995343ff1e9d57ac85ff5c5fb79334"] }\nas an example.

","isPage":true,"text":"\nThe Sequence Indexer and Sequence Metadata services will pick up everything and anything\nthat is published on a blockchain. Our services are designed to provide data in real-time\nas blocks are mined, and adhere to all popular ERC20, ERC721 and ERC1155 metadata\nstandards so things just work.\nThis is very helpful for your applications to be able to have access to the complete set of data\non-chain, but it also means it will include spam tokens when querying with default settings.\nTo combat spam, we introduced metadataOptions arguments which can be passed to Indexer RPC\ncalls to control the results returned.\nThe Sequence Metadata service keeps track of contracts which are "verified" by checking popular\nsources like Coingecko, OpenSea, Sequence Builder (https://sequence.build) and the Sequence Token\nDirectory (https://github.com/0xsequence/token-directory). By calling the Indexer RPC methods with\n"metadataOptions": { "verifiedOnly": true }, any contract address which has not been verified, will\nbe omitted from the results. We recommend using this option all the time, but, the downside is\nif your project's contracts are unverified, then they will also be omitted from the results. To help\nwith this, your options are to get verified with one of the sources above, or in your RPC calls to pass\n"metadataOptions": { "verifiedOnly": true, "includeContracts": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "0x8bb759bb68995343ff1e9d57ac85ff5c5fb79334"] }\nas an example.","title":"Metadata Tips & Notes on Spam","titles":[]},"37":{"href":"/api/indexer/native-network-balance#native-network-balances-ie-eth-matic-etc","html":"\n\n","isPage":true,"text":"\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is now managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\n","title":"Native network balances (ie. ETH, MATIC, etc.)","titles":[]},"38":{"href":"/api/indexer/native-network-balance#fetch-native-network-balance-aka-eth-on-ethereum-matic-on-polygon-avax-on-avalanche-bnb-on-bsc-etc","html":"\n

Sequence Indexer GetEtherBalance Method:

\n\n
\nExample: GetEtherBalance MATIC balance of a wallet account address on Polygon using an API_Access_Key\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetEtherBalance -d '{ "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9" }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for the MATIC balance on Polygon\nconst balance = await indexer.getEtherBalance({\n\taccountAddress: accountAddress,\n})\n\t\nconsole.log('tokens in your account:', tokenBalances)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\ttokenBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, &includeMetadata, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("tokenBalances:", tokenBalances)\n}
","isPage":false,"text":"\nSequence Indexer GetEtherBalance Method:\n\nRequest: POST /rpc/Indexer/GetEtherBalance\nContent-Type: application/json\nBody (in JSON):\n\naccountAddress (string) -- the wallet account address\n\n\n\n\nExample: GetEtherBalance MATIC balance of a wallet account address on Polygon using an API_Access_Key\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetEtherBalance -d '{ "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9" }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for the MATIC balance on Polygon\nconst balance = await indexer.getEtherBalance({\n\taccountAddress: accountAddress,\n})\n\t\nconsole.log('tokens in your account:', tokenBalances)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\ttokenBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, &includeMetadata, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("tokenBalances:", tokenBalances)\n}","title":"Fetch native network balance (aka ETH on Ethereum, MATIC on Polygon, AVAX on Avalanche, BNB on BSC, etc.)","titles":["Native network balances (ie. ETH, MATIC, etc.)",null]},"39":{"href":"/api/indexer/overview#indexer","html":"\n\n

The Sequence Indexer is a modular web3 service that makes it easy to query blockchain token and NFT data from Ethereum-compatible networks. The Indexer automatically indexes every ERC20, ERC721 and ERC1155 token from Ethereum-compatible chains.

\n\n

The Sequence Indexer is a modular web3 service that makes it easy to query blockchain token\nand NFT data from Ethereum-compatible networks. The Indexer automatically indexes every\nERC20, ERC721 and ERC1155 token from Ethereum-compatible chains.

\n

In fact, the Sequence Wallet uses the Indexer behind the scenes so it can seamlessly\nrender all token information in any wallet. But of course, the Indexer is a modular piece\nof infrastructure, and you may use it directly from your dapp, game, or even from\na server.

\nFeatures:\n\n","isPage":true,"text":"\nIndexer API documentation and testing\nThe Sequence Indexer is a modular web3 service that makes it easy to query blockchain token and NFT data from Ethereum-compatible networks. The Indexer automatically indexes every ERC20, ERC721 and ERC1155 token from Ethereum-compatible chains.\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is now managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\nThe Sequence Indexer is a modular web3 service that makes it easy to query blockchain token\nand NFT data from Ethereum-compatible networks. The Indexer automatically indexes every\nERC20, ERC721 and ERC1155 token from Ethereum-compatible chains.\nIn fact, the Sequence Wallet uses the Indexer behind the scenes so it can seamlessly\nrender all token information in any wallet. But of course, the Indexer is a modular piece\nof infrastructure, and you may use it directly from your dapp, game, or even from\na server.\nFeatures:\n\nSuper-fast API to query all token balances, history, metadata and NFTs with multi-chain support\nReal-time indexing of ERC20, ERC721 and ERC1155 transactions across EVM-compatible chains\nAutomatically detects all tokens on the chain, without the need for a contract registry\nResilient to node failures and chain re-organizations\nEasily listen for specific events and transactions on-chain accurately with a simple API\nBuilt-in token / nft metadata support to easily render tokens in your apps / games\nHigh uptime and availability\n\n","title":"Indexer","titles":[]},"40":{"href":"/api/indexer/overview#supported-networks--endpoints","html":"\n

You can see the full list of supported networks here.

\n","isPage":false,"text":"\nYou can see the full list of supported networks here.\n","title":"Supported Networks & Endpoints","titles":["Indexer"]},"41":{"href":"/api/indexer/overview#getting-started","html":"\n

Here are a few example queries you can make to a blockchain from your dapp, game, or wallet:

\n","isPage":false,"text":"\nHere are a few example queries you can make to a blockchain from your dapp, game, or wallet:\n\nFetch all tokens & NFTS in any wallet including all metadata\nFetch the transaction history for any wallet address\nFetch all unique tokens in a particular ERC20/721/1155 contract, including total supplies\nWhat is the total token supply of an ERC20 token? What is the total token supply of\nall the ERC1155 tokens in a particular contract?\nFetch the transaction history for any token contract address\n","title":"Getting Started","titles":["Indexer"]},"42":{"href":"/api/indexer/transaction-history#wallet-transaction-history","html":"\n\n","isPage":true,"text":"\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is now managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\n","title":"Wallet transaction history","titles":[]},"43":{"href":"/api/indexer/transaction-history#fetch-the-transaction-history-for-any-wallet-address","html":"\n

Fetches the transaction / token history for any wallet address of any ERC20, ERC721 and ERC1155 token.\nThe response includes decoded transaction details for easy consumption / rendering.

\n

Sequence Indexer GetTransactionHistory Method:

\n\n
\nExample: GetTransactionHistory of a wallet account address on Polygon using an API_Access_Key\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTransactionHistory -d '{ "filter": { "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9" }, "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst filter = {\n\taccountAddress: "0xabc..."\n}\n \n// query Sequence Indexer for all token transaction history on Polygon\nconst transactionHistory = await indexer.getTransactionHistory({\n\tfilter: filter,\n\tincludeMetadata: true\n})\n\t\nconsole.log('transaction history in account:', transactionHistory)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tAccountAddress: &accountAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, history, err := seqIndexer.GetTransactionHistory(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("transaction history:", history)\n}
","isPage":false,"text":"\nFetches the transaction / token history for any wallet address of any ERC20, ERC721 and ERC1155 token.\nThe response includes decoded transaction details for easy consumption / rendering.\nSequence Indexer GetTransactionHistory Method:\n\nRequest: POST /rpc/Indexer/GetTransactionHistory\nContent-Type: application/json\nBody (in JSON):\n\nfilter (object)\n\naccountAddress (string) -- the wallet account address\ncontractAddress (string) -- optionally specify a contract address to filter\naccountAddresses (string array) -- optionally specify a list of wallet account addresses\ncontractAddresses (string array) -- optionally specify a list of contract address\ntransactionHashes (string array) -- optionally specify a list of transaction hashes\nmetaTransactionIDs (string array) -- optionally specify a list of meta transaction IDs\n\n\nincludeMetadata (boolean - optional - default: false) -- toggle token metadata to be included in the response\nmetadataOptions (object - optional) -- additional options for metadata\n\nverifiedOnly (boolean - optional) -- return only contracts which are 'verified' to help reduce spam\nincludeContracts ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled.\n\n\n\n\n\n\nExample: GetTransactionHistory of a wallet account address on Polygon using an API_Access_Key\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTransactionHistory -d '{ "filter": { "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9" }, "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst filter = {\n\taccountAddress: "0xabc..."\n}\n \n// query Sequence Indexer for all token transaction history on Polygon\nconst transactionHistory = await indexer.getTransactionHistory({\n\tfilter: filter,\n\tincludeMetadata: true\n})\n\t\nconsole.log('transaction history in account:', transactionHistory)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tAccountAddress: &accountAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, history, err := seqIndexer.GetTransactionHistory(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("transaction history:", history)\n}","title":"Fetch the transaction history for any wallet address","titles":["Wallet transaction history"]},"44":{"href":"/api/indexer/transation-history-token-contract#contract-token-history","html":"\n\n","isPage":true,"text":"\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is now managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\n","title":"Contract token history","titles":[]},"45":{"href":"/api/indexer/transation-history-token-contract#fetch--listen-to-the-transaction-history-for-any-erc20-erc721-erc1155-contract","html":"\n

This query is helpful to track transaction history of a particular token contract.\nIn this example, we use the Skyweaver token contract address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. You may query any contract address on any of the supported networks (but make\nsure to query the indexer of the corresponding network).

\n

Sequence Indexer GetTransactionHistory Method:

\n\n
\nExample: GetTransactionHistory of Skyweaver contract on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTransactionHistory -d '{ "filter": { "accountAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E" }, "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// here we query the Skyweaver contract address, but you can use any\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\n \n// query Sequence Indexer for all token details / supplies\n// try any contract address you'd like :)\nconst filter = {\n\tcontractAddress: contractAddress\n}\n \n// query Sequence Indexer for all token transaction history on Polygon\nconst transactionHistory = await indexer.getTransactionHistory({\n\tfilter: filter\n})\n\t\nconsole.log('transaction history of contract:', transactionHistory)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tContractAddress: &contractAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, history, err := seqIndexer.GetTransactionHistory(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("transaction history:", history)\n}
","isPage":false,"text":"\nThis query is helpful to track transaction history of a particular token contract.\nIn this example, we use the Skyweaver token contract address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. You may query any contract address on any of the supported networks (but make\nsure to query the indexer of the corresponding network).\nSequence Indexer GetTransactionHistory Method:\n\nRequest: POST /rpc/Indexer/GetTransactionHistory\nContent-Type: application/json\nBody (in JSON):\n\nfilter (object)\n\ncontractAddress (string) -- a ERC20 / ERC721 / ERC1155 contract address\n\n\n\n\n\n\nExample: GetTransactionHistory of Skyweaver contract on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTransactionHistory -d '{ "filter": { "accountAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E" }, "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// here we query the Skyweaver contract address, but you can use any\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\n \n// query Sequence Indexer for all token details / supplies\n// try any contract address you'd like :)\nconst filter = {\n\tcontractAddress: contractAddress\n}\n \n// query Sequence Indexer for all token transaction history on Polygon\nconst transactionHistory = await indexer.getTransactionHistory({\n\tfilter: filter\n})\n\t\nconsole.log('transaction history of contract:', transactionHistory)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tContractAddress: &contractAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, history, err := seqIndexer.GetTransactionHistory(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("transaction history:", history)\n}","title":"Fetch / listen to the transaction history for any ERC20, ERC721, ERC1155 contract.","titles":["Contract token history",null]},"46":{"href":"/api/indexer/unique-tokens#tokens-in-a-contract","html":"\n\n","isPage":true,"text":"\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is now managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\n","title":"Tokens in a contract","titles":[]},"47":{"href":"/api/indexer/unique-tokens#fetch-all-unique-tokens-in-a-particular-erc207211155-contract-including-total-supplies","html":"\nFetches token supplies and metadata for any ERC20, ERC721, ERC1155 contract.\n

This query is helpful to render all tokens in a token contract, or to query the total token supplies.\nIn this example, we use the Skyweaver token contract address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. You may query any contract address on any of the supported networks (but make\nsure to query the indexer of the corresponding network).

\n

Sequence Indexer GetTokenSupplies Method:

\n\n
\nExample: GetTokenSupplies of Skyweaver contract on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenSupplies -d '{ "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// here we query the Skyweaver contract address, but you can use any\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\n \n// query Sequence Indexer for all token details / supplies\nconst tokenDetails = await indexer.getTokenSupplies({\n\tcontractAddress: contractAddress,\n\tincludeMetadata: true\n})\nconsole.log('token details of contract:', tokenDetails)
go\nimport (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenSupplies(contractAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tContractAddress: &contractAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, tokenDetails, err := seqIndexer.GetTokenSupplies(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("token details:", tokenDetails)\n}
","isPage":false,"text":"\nFetches token supplies and metadata for any ERC20, ERC721, ERC1155 contract.\nThis query is helpful to render all tokens in a token contract, or to query the total token supplies.\nIn this example, we use the Skyweaver token contract address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. You may query any contract address on any of the supported networks (but make\nsure to query the indexer of the corresponding network).\nSequence Indexer GetTokenSupplies Method:\n\nRequest: POST /rpc/Indexer/GetTokenSupplies\nContent-Type: application/json\nBody (in JSON):\n\ncontractAddress (string) -- a ERC20 / ERC721 / ERC1155 contract address\nincludeMetadata (boolean - optional - default: false) -- toggle token metadata to be included in the response\nmetadataOptions (object - optional) -- additional options for metadata\n\nverifiedOnly (boolean - optional) -- return only contracts which are 'verified' to help reduce spam\nincludeContracts ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled.\n\n\n\n\n\n\nExample: GetTokenSupplies of Skyweaver contract on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenSupplies -d '{ "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// here we query the Skyweaver contract address, but you can use any\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\n \n// query Sequence Indexer for all token details / supplies\nconst tokenDetails = await indexer.getTokenSupplies({\n\tcontractAddress: contractAddress,\n\tincludeMetadata: true\n})\nconsole.log('token details of contract:', tokenDetails)go\nimport (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenSupplies(contractAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tContractAddress: &contractAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, tokenDetails, err := seqIndexer.GetTokenSupplies(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("token details:", tokenDetails)\n}","title":"Fetch all unique tokens in a particular ERC20/721/1155 contract, including total supplies","titles":["Tokens in a contract",null]},"48":{"href":"/api/metadata/contract-metadata#contract-metadata","html":"\n\n\n","isPage":true,"text":"\n\nLearn how to query contract-level metadata directly for any contract\nLearn about contract-level metadata for ERC20, ERC721 and ERC1155 tokens\n\nPRO TIP: Sequence Indexer also returns token metadataWhen using the Sequence Indexer, pass "includeMetadata": true to your request to\nquery token metadata for any ERC20, ERC721 or ERC1155 contract. See below how to fetch\ncontract-level metadata directly.\n","title":"Contract Metadata","titles":[]},"49":{"href":"/api/metadata/contract-metadata#fetch-contract-metadata-of-any-erc20-erc721-or-erc1155-contract-address","html":"\n

Sequence Metadata GetContractInfoBatch Method:

\n\n
\nExample: GetContractInfoBatch of some contracts on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetContractInfoBatch -d '{ "chainID": "polygon", "contractAddresses": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "0x17b66009af459dc8ebf37acf8a8b355379be2fe5", "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", "0x2953399124f0cbb46d2cbacd8a89cf0599974963", "0x7227e371540cf7b8e512544ba6871472031f3335", "0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d", "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", "0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4"] }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst contractMetadata = await metadataClient.getContractInfoBatch({\n  chainID: 'polygon',\n  contractAddresses: [\n    '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n    '0x17b66009af459dc8ebf37acf8a8b355379be2fe5',\n    '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n    '0x2953399124f0cbb46d2cbacd8a89cf0599974963',\n    '0x7227e371540cf7b8e512544ba6871472031f3335',\n    '0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d',\n    '0x8f3cf7ad23cd3cadbd9735aff958023239c6a063',\n    '0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4'\n  ]\n})\n \nconsole.log('Contract info for above addresses:', contractMetadata)
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncontractInfo, err := seqMetadata.GetContractInfo(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E")
Please [contact our team](/support) for assistance with integrations to another target.
\n
\n","isPage":false,"text":"\nSequence Metadata GetContractInfoBatch Method:\n\nRequest: POST /rpc/Metadata/GetContractInfoBatch\nContent-Type: application/json\nBody (in JSON):\n\nchainID (string) -- the chain id, as a name or number (ie. "1" or "mainnet", "137" or "polygon", etc.)\ncontractAddresses (string of strings) -- array of contract addresses\n\n\n\n\nExample: GetContractInfoBatch of some contracts on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\nThis code requires an API Access Key from Sequence Builder.\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetContractInfoBatch -d '{ "chainID": "polygon", "contractAddresses": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "0x17b66009af459dc8ebf37acf8a8b355379be2fe5", "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", "0x2953399124f0cbb46d2cbacd8a89cf0599974963", "0x7227e371540cf7b8e512544ba6871472031f3335", "0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d", "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", "0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4"] }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst contractMetadata = await metadataClient.getContractInfoBatch({\n chainID: 'polygon',\n contractAddresses: [\n '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n '0x17b66009af459dc8ebf37acf8a8b355379be2fe5',\n '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n '0x2953399124f0cbb46d2cbacd8a89cf0599974963',\n '0x7227e371540cf7b8e512544ba6871472031f3335',\n '0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d',\n '0x8f3cf7ad23cd3cadbd9735aff958023239c6a063',\n '0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4'\n ]\n})\n \nconsole.log('Contract info for above addresses:', contractMetadata)import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncontractInfo, err := seqMetadata.GetContractInfo(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E")Please [contact our team](/support) for assistance with integrations to another target.\n\n","title":"Fetch contract metadata of any ERC20, ERC721 or ERC1155 contract address","titles":["Contract Metadata"]},"50":{"href":"/api/metadata/contract-metadata#contract-level-metadata-standards","html":"\n

Additionally, OpenSea added something called contractURI (https://docs.opensea.io/docs/contract-level-metadata).

","isPage":false,"text":"\nAdditionally, OpenSea added something called contractURI (https://docs.opensea.io/docs/contract-level-metadata).","title":"Contract-level Metadata Standards","titles":["Contract Metadata"]},"51":{"href":"/api/metadata/overview#metadata","html":"\n

The Sequence Metadata API service offers a simple and fast API to query token & NFT metadata\nfor Ethereum-compatible chains.

\n

To learn how to use the Sequence Metadata service, please read:

\n\n
\n","isPage":true,"text":"\nThe Sequence Metadata API service offers a simple and fast API to query token & NFT metadata\nfor Ethereum-compatible chains.\nTo learn how to use the Sequence Metadata service, please read:\n\nToken metadata API & standards\nContract-level metadata API & standards\nAlternative, REST API Usage\n\n\n","title":"Metadata","titles":[]},"52":{"href":"/api/metadata/overview#web--nodejs-installation","html":"\n
npm install 0xsequence
\n

or

\n
npm install @0xsequence/metadata
\n\n

then in your app (using your API Access Key),

\n
import { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadata = new SequenceMetadata('https://metadata.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')
\n

NOTE: if you're using @0xsequence/metadata from node.js, we recommend using node v18.x or newer.

\n","isPage":false,"text":"\nnpm install 0xsequence\nor\nnpm install @0xsequence/metadata\nThis installation requires an API Access Key from Sequence Builder.\nthen in your app (using your API Access Key),\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadata = new SequenceMetadata('https://metadata.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\nNOTE: if you're using @0xsequence/metadata from node.js, we recommend using node v18.x or newer.\n","title":"Web / node.js Installation","titles":["Metadata",null]},"53":{"href":"/api/metadata/overview#go-installation","html":"\n
go get -u github.com/0xsequence/go-sequence@latest
\n

then in your app,

\n
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncontractInfo, err := seqMetadata.GetContractInfo(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E")
\n
\n","isPage":false,"text":"\ngo get -u github.com/0xsequence/go-sequence@latest\nthen in your app,\nimport (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncontractInfo, err := seqMetadata.GetContractInfo(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E")\n\n","title":"Go Installation","titles":["Metadata",null]},"54":{"href":"/api/metadata/overview#unity-or-unreal-installation","html":"\n

The Sequence Metadata is integrated directly inside of the respective Sequence Unity and Sequence Unreal SDKs.

\n
","isPage":false,"text":"\nThe Sequence Metadata is integrated directly inside of the respective Sequence Unity and Sequence Unreal SDKs.\n","title":"Unity or Unreal Installation","titles":["Metadata",null]},"55":{"href":"/api/metadata/rest-api#metadata-rest-api-reference--usage","html":"\n

The Sequence Metadata API service offers a simple and fast API to query token & NFT metadata\nfor Ethereum-compatible chains.

\n

Quite simply, the Metadata API allows you to query the token metadata of any ERC20, ERC721 or ERC1155\ncontract on a number of supported Ethereum chains.

\n

As well, the Sequence Metadata service is automatically integrated in the Sequence Indexer.\nBut as we demonstrate below, it's also useful to be able to query the token/contract metadata directly too :)

\n\n","isPage":true,"text":"\nThe Sequence Metadata API service offers a simple and fast API to query token & NFT metadata\nfor Ethereum-compatible chains.\nQuite simply, the Metadata API allows you to query the token metadata of any ERC20, ERC721 or ERC1155\ncontract on a number of supported Ethereum chains.\nAs well, the Sequence Metadata service is automatically integrated in the Sequence Indexer.\nBut as we demonstrate below, it's also useful to be able to query the token/contract metadata directly too :)\nPRO TIP: RPC vs REST endpointsSequence Metadata service is available with both RPC and REST endpoints. We recommend the RPC endpoints\nfor your application, but the REST endpoints are an available option for convenience.For RPC endpoint see Token metadata RPC and Contract metadata RPC.\n","title":"Metadata REST API Reference & Usage","titles":[]},"56":{"href":"/api/metadata/rest-api#example","html":"\n

Let's say you'd like to query the metadata of a Skyweaver 1155 card on the Polygon network. Of course, the\nbelow example will work for any network / contract / token combination as well.

\n

First, the Skyweaver 1155 assets contract is located at address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. Second, let's build the metadata lookup endpoint to query Skyweaver's contract\nfor token ID 20:

\n

Request:\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20

\nResponse:\n
[\n  {\n    "tokenId": "20",\n    "contractAddress": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n    "name": "Unstoppable Chop",\n    "description": "Attach Silence to target unit. Do 4 damage to it.",\n    "image": "https://assets.skyweaver.net/TNqWLuJZ/webapp/cards/full-cards/6x/20-silver.png",\n    "decimals": 2,\n    "properties": {\n      "baseCardId": 20,\n      "goldCardId": 131092,\n      "grade": "oldSilver",\n      "id": 20,\n      "silverCardId": 65556\n    },\n    "attributes": null\n  }\n]
\n

If you'd like to query a number of tokens at the same time, you can include more token ids comma-separated:\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20,21,22 -- click\nto see the JSON response to query token ids 20, 21, and 22 in a single batched request.

\n

Feel free to try tweaking the metadata.sequence.app URL above for your own contract, or another popular\nproject to see how the responses come back. You can change the network to one of our supported networks\nand specify any contract and/or token id.

\n

In addition to easily querying token-level metadata like in the above example, you can also query contract-level metadata.\nContract-level metadata provides you more information about a contract address such as a name, contract type, logo, and description.\nSimply change the metadata URL above to just query the contract address: https://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E

\n

and see result:

\n
{\n  "chainId": 137,\n  "address": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n  "name": "Skyweaver",\n  "type": "ERC1155",\n  "symbol": "SKYWVR",\n  "logoURI": "https://assets.skyweaver.net/_tX5dRVi/webapp/icons/skyweaver-token.png",\n  "extensions": {\n    "link": "https://www.skyweaver.net/",\n    "description": "Skyweaver is a Free-to-Play, trading card game powered by Polygon and Ethereum.",\n    "ogImage": "https://skyweaver.net/images/skyweavercover.jpg",\n    "originAddress": "0x631998e91476da5b870d741192fc5cbc55f5a52e"\n  }\n}
\n
\n","isPage":false,"text":"\nLet's say you'd like to query the metadata of a Skyweaver 1155 card on the Polygon network. Of course, the\nbelow example will work for any network / contract / token combination as well.\nFirst, the Skyweaver 1155 assets contract is located at address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. Second, let's build the metadata lookup endpoint to query Skyweaver's contract\nfor token ID 20:\nRequest:\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20\nResponse:\n[\n {\n "tokenId": "20",\n "contractAddress": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n "name": "Unstoppable Chop",\n "description": "Attach Silence to target unit. Do 4 damage to it.",\n "image": "https://assets.skyweaver.net/TNqWLuJZ/webapp/cards/full-cards/6x/20-silver.png",\n "decimals": 2,\n "properties": {\n "baseCardId": 20,\n "goldCardId": 131092,\n "grade": "oldSilver",\n "id": 20,\n "silverCardId": 65556\n },\n "attributes": null\n }\n]\nIf you'd like to query a number of tokens at the same time, you can include more token ids comma-separated:\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20,21,22 -- click\nto see the JSON response to query token ids 20, 21, and 22 in a single batched request.\nFeel free to try tweaking the metadata.sequence.app URL above for your own contract, or another popular\nproject to see how the responses come back. You can change the network to one of our supported networks\nand specify any contract and/or token id.\nIn addition to easily querying token-level metadata like in the above example, you can also query contract-level metadata.\nContract-level metadata provides you more information about a contract address such as a name, contract type, logo, and description.\nSimply change the metadata URL above to just query the contract address: https://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E\nand see result:\n{\n "chainId": 137,\n "address": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n "name": "Skyweaver",\n "type": "ERC1155",\n "symbol": "SKYWVR",\n "logoURI": "https://assets.skyweaver.net/_tX5dRVi/webapp/icons/skyweaver-token.png",\n "extensions": {\n "link": "https://www.skyweaver.net/",\n "description": "Skyweaver is a Free-to-Play, trading card game powered by Polygon and Ethereum.",\n "ogImage": "https://skyweaver.net/images/skyweavercover.jpg",\n "originAddress": "0x631998e91476da5b870d741192fc5cbc55f5a52e"\n }\n}\n\n","title":"Example","titles":["Metadata REST API Reference & Usage"]},"57":{"href":"/api/metadata/rest-api#usage","html":"\n

The Metadata API service is accessible either with a simple REST interface, or a RPC client.\nFor the RPC client, we offer Web browser, node and Go clients. We recommend the RPC client for most integrations, but\nmake the REST interface available for convenience.

\n
\n","isPage":false,"text":"\nThe Metadata API service is accessible either with a simple REST interface, or a RPC client.\nFor the RPC client, we offer Web browser, node and Go clients. We recommend the RPC client for most integrations, but\nmake the REST interface available for convenience.\n\n","title":"Usage","titles":["Metadata REST API Reference & Usage"]},"58":{"href":"/api/metadata/rest-api#rest-endpoints","html":"\n

As mentioned in the example above. The general format of the REST endpoint is:

\n
GET https://metadata.sequence.app/tokens/<network>/<contractAddress>[/<tokenID>]
\n

Where <network> must be one of the Chain ID or Chain Handle of the supported networks.

\n
\nFetch contract-level metadata:\n
GET https://metadata.sequence.app/tokens/<network>/<contractAddress>
\n

Example: https://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E

\n
\nFetch token-level metadata:\n
GET https://metadata.sequence.app/tokens/<network>/<contractAddress>/<tokenID>[,<tokenID>,...]
\n

Examples:

\n\n
\n","isPage":false,"text":"\nAs mentioned in the example above. The general format of the REST endpoint is:\nGET https://metadata.sequence.app/tokens/<network>/<contractAddress>[/<tokenID>]\nWhere <network> must be one of the Chain ID or Chain Handle of the supported networks.\n\nFetch contract-level metadata:\nGET https://metadata.sequence.app/tokens/<network>/<contractAddress>\nExample: https://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E\n\nFetch token-level metadata:\nGET https://metadata.sequence.app/tokens/<network>/<contractAddress>/<tokenID>[,<tokenID>,...]\nExamples:\n\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20,21\n\n\n","title":"REST endpoints","titles":["Metadata REST API Reference & Usage"]},"59":{"href":"/api/metadata/rest-api#rpc-client","html":"\n

The Metadata RPC interface offers the full capabilities of the Metadata service.

\n

We provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Metadata service with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Metadata RPC client as well.

\n","isPage":false,"text":"\nThe Metadata RPC interface offers the full capabilities of the Metadata service.\nWe provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Metadata service with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Metadata RPC client as well.\n","title":"RPC Client","titles":["Metadata REST API Reference & Usage"]},"60":{"href":"/api/metadata/rest-api#metadata-rpc-methods","html":"\n

Metadata API endpoint: https://metadata.sequence.app

\nMetadata RPC methods:\n","isPage":false,"text":"\nMetadata API endpoint: https://metadata.sequence.app\nMetadata RPC methods:\n\nGetTokenMetadata - fetch token metadata of ERC721 or ERC1155 tokens from a single contract\nGetTokenMetadataBatch - fetch token metadata of ERC721 or ERC1155 token from a batch of contracts\nGetContractInfo - fetch contract metadata of an ERC20, ERC721 or ERC1155 contract address\nGetContractInfoBatch - fetch contract metadata of a batch of ERC20, ERC721 or ERC1155 contract addresses\n","title":"Metadata RPC Methods","titles":["Metadata REST API Reference & Usage"]},"61":{"href":"/api/metadata/token-metadata#token-metadata","html":"\n

Sequence provides a metadata service for fetching token metadata for any ERC721 or ERC1155 contract, on any EVM chain.

\n\n\n","isPage":true,"text":"\nSequence provides a metadata service for fetching token metadata for any ERC721 or ERC1155 contract, on any EVM chain.\n\nLearn how to query token metadata directly for any contract\nLearn about token metadata standards and formats for ERC721 and ERC1155 tokens\n\nPRO TIP: Sequence Indexer also supports token metadataWhen using the Sequence Indexer, pass "includeMetadata": true to your request to\nquery token metadata for any ERC721 or ERC1155 contract. See below how to fetch\ntoken metadata directly.\n","title":"Token Metadata","titles":[]},"62":{"href":"/api/metadata/token-metadata#fetch-token-metadata-for-any-erc721-or-erc1155-contract","html":"\n

Sequence Metadata GetTokenMetadata Method:

\n\n
\nExample: GetTokenMetadata of some tokens using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetTokenMetadata -d '{"chainID":"polygon", "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "tokenIDs": ["65537", "65538", "65539"] }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst tokenMetadata = await metadataClient.getTokenMetadata({\n  chainID: 'polygon',\n  contractAddress: '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n  tokenIDs: ['65537', '65538', '65539']\n})\n \nconsole.log('token metadata: ', tokenMetadata)
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncollectibleInfo, err := seqMetadata.GetTokenMetadata(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", []string{"1", "2"})
TODO
TODO
Please [contact our team](/support) for assistance with integrations to another target.
\n","isPage":false,"text":"\nSequence Metadata GetTokenMetadata Method:\n\nRequest: POST /rpc/Metadata/GetTokenMetadata\nContent-Type: application/json\nBody (in JSON):\n\nchainID (string) -- the chain id, as a name or number (ie. "1" or "mainnet", "137" or "polygon", etc.)\ncontractAddress (string) -- the contract address\ntokenIDs (array of strings) -- array of strings containing token ids to fetch metadata\n\n\n\n\nExample: GetTokenMetadata of some tokens using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\nThis code requires an API Access Key from Sequence Builder.\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetTokenMetadata -d '{"chainID":"polygon", "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "tokenIDs": ["65537", "65538", "65539"] }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst tokenMetadata = await metadataClient.getTokenMetadata({\n chainID: 'polygon',\n contractAddress: '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n tokenIDs: ['65537', '65538', '65539']\n})\n \nconsole.log('token metadata: ', tokenMetadata)import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncollectibleInfo, err := seqMetadata.GetTokenMetadata(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", []string{"1", "2"})TODOTODOPlease [contact our team](/support) for assistance with integrations to another target.\n","title":"Fetch token metadata for any ERC721 or ERC1155 contract","titles":["Token Metadata"]},"63":{"href":"/api/metadata/token-metadata#refreshing-token-metadata","html":"\n

When deploying new contracts or metadata updates the refresh token metadata url should be called with an access key from (the Sequence Builder) via a HTTPS POST request by command line or via metadata SDK in a program for data to indexeable in the Sequence Indexer metadata service.

\n

Sequence Metadata enqueueTokensForRefresh Method:

\n\n
curl -v -X POST -H "Content-type: application/json" -H "X-Access-Key: wuELppeX0pttvJABl8bIuxPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/EnqueueTokensForRefresh -d '{"chainID":"polygon", "contractAddress":"0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "tokenIDs": ["1","2"]}'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst jobID = await metadataClient.enqueueTokensForRefresh({\n    chainID: 'polygon',\n    contractAddress: '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n    tokenIDs: ['65537', '65538', '65539']\n})\n \nconsole.log('refresh job id: ', tokenMetadata)
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nrefreshJob, err := seqMetadata.EnqueueTokensForRefresh(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", []string{"1", "2"}, nil)
Please [contact our team](/support) for assistance with integrations to another target.
\n

Sequence Metadata getTokenRefreshStatus Method:

\n\n
curl -v -X POST -H "Content-type: application/json" -H "X-Access-Key: wuELppeX0pttvJABl8bIuxPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetTokenRefreshStatus -d '{"taskId": 1234}'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst refreshJobStatus = await metadataClient.getTokenRefreshStatus({\n    taskId: 1234\n})\n \nconsole.log('refresh job status: ', refreshJobStatus)
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nrefreshJobStatus, err := seqMetadata.GetTokenRefreshStatus(context.Background(), uint64(1234))
Please [contact our team](/support) for assistance with integrations to another target.
\n","isPage":false,"text":"\nWhen deploying new contracts or metadata updates the refresh token metadata url should be called with an access key from (the Sequence Builder) via a HTTPS POST request by command line or via metadata SDK in a program for data to indexeable in the Sequence Indexer metadata service.\nSequence Metadata enqueueTokensForRefresh Method:\n\nRequest: POST /rpc/Metadata/EnqueueTokensForRefresh\nContent-Type: application/json\nBody (in JSON):\n\nchainID (string) -- the chain id, as a name or number (ie. "1" or "mainnet", "137" or "polygon", etc.)\ncontractAddress (string) -- the contract address\ntokenIDs (array of strings) -- array of strings containing token ids to fetch metadata\n\n\n\ncurl -v -X POST -H "Content-type: application/json" -H "X-Access-Key: wuELppeX0pttvJABl8bIuxPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/EnqueueTokensForRefresh -d '{"chainID":"polygon", "contractAddress":"0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "tokenIDs": ["1","2"]}'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst jobID = await metadataClient.enqueueTokensForRefresh({\n chainID: 'polygon',\n contractAddress: '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n tokenIDs: ['65537', '65538', '65539']\n})\n \nconsole.log('refresh job id: ', tokenMetadata)import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nrefreshJob, err := seqMetadata.EnqueueTokensForRefresh(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", []string{"1", "2"}, nil)Please [contact our team](/support) for assistance with integrations to another target.\nSequence Metadata getTokenRefreshStatus Method:\n\nRequest: POST /rpc/Metadata/GetTokenRefreshStatus\nContent-Type: application/json\nBody (in JSON):\n\ntaskId (uint) -- the task id returned from enqueueTokensForRefresh\n\n\n\ncurl -v -X POST -H "Content-type: application/json" -H "X-Access-Key: wuELppeX0pttvJABl8bIuxPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetTokenRefreshStatus -d '{"taskId": 1234}'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst refreshJobStatus = await metadataClient.getTokenRefreshStatus({\n taskId: 1234\n})\n \nconsole.log('refresh job status: ', refreshJobStatus)import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nrefreshJobStatus, err := seqMetadata.GetTokenRefreshStatus(context.Background(), uint64(1234))Please [contact our team](/support) for assistance with integrations to another target.\n","title":"Refreshing token metadata","titles":["Token Metadata"]},"64":{"href":"/api/metadata/token-metadata#testing-instructions","html":"\n
    \n
  1. Check current token metadata using token metadata fetch
  2. \n
  3. Modify token metadata content either onchain or via token baseURI
  4. \n
  5. Call refresh token ID endpoints using refresh metadata
  6. \n
  7. Check token metadata changes using token metadata fetch
  8. \n
\n","isPage":false,"text":"\n\nCheck current token metadata using token metadata fetch\nModify token metadata content either onchain or via token baseURI\nCall refresh token ID endpoints using refresh metadata\nCheck token metadata changes using token metadata fetch\n\n","title":"Testing instructions:","titles":["Token Metadata","Refreshing token metadata"]},"65":{"href":"/api/metadata/token-metadata#token-metadata-standards","html":"\n

Popular token standards like EIP721 and EIP1155 both\nhave similar metadata standard formats with some subtle differences. In addition to the standards, we've seen in practice that projects\noften slightly deviate from the standards but are sensical, easy to parse and well supported in the ecosystem, include the Sequence Metadata service.\nBelow we describe the standards and common practices across projects to help demystify how to format your token metadata for your projects.

\n","isPage":false,"text":"\nPopular token standards like EIP721 and EIP1155 both\nhave similar metadata standard formats with some subtle differences. In addition to the standards, we've seen in practice that projects\noften slightly deviate from the standards but are sensical, easy to parse and well supported in the ecosystem, include the Sequence Metadata service.\nBelow we describe the standards and common practices across projects to help demystify how to format your token metadata for your projects.\n","title":"Token Metadata Standards","titles":["Token Metadata"]},"66":{"href":"/api/metadata/token-metadata#metadata-standards","html":"\n","isPage":false,"text":"\n","title":"Metadata Standards","titles":["Token Metadata"]},"67":{"href":"/api/metadata/token-metadata#erc721","html":"\n

ERC721 token contracts contain a method on the contract called tokenURI(uint256) string. When querying the tokenURI method on the contract, it will return a URI which contains additional metadata for that asset.

\n

See EIP for specific details: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md

\n

Here is an example Bored Ape (token id 9):\nhttps://metadata.sequence.app/tokens/mainnet/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/9

\n

response:

\n
{\n  "tokenId": "9",\n  "contractAddress": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",\n  "name": "",\n  "description": "",\n  "image": "https://ipfs.sequence.info/ipfs/QmUQgKka8EW7exiUHnMwZ4UoXA11wV7NFjHAogVAbasSYy",\n  "decimals": 0,\n  "properties": null,\n  "attributes": [\n    {\n      "trait_type": "Earring",\n      "value": "Silver Stud"\n    },\n    {\n      "trait_type": "Eyes",\n      "value": "Sleepy"\n    },\n    {\n      "trait_type": "Mouth",\n      "value": "Small Grin"\n    },\n    {\n      "trait_type": "Fur",\n      "value": "Brown"\n    },\n    {\n      "trait_type": "Hat",\n      "value": "Seaman's Hat"\n    },\n    {\n      "trait_type": "Clothes",\n      "value": "Stunt Jacket"\n    },\n    {\n      "trait_type": "Background",\n      "value": "Purple"\n    }\n  ]\n}
\n

In the case of this Bored Ape, it appears there is no name or description set,\nbut they do have "attributes" as an array of { "trait_type": string, "value: string }.

\n

Additionally, see OpenSea for more information: https://docs.opensea.io/docs/metadata-standards

\n

Note that OpenSea technically breaks the ERC1155 standard by suggesting to use "attributes", where in fact,\nthe ERC1155 calls uses the field name "properties" instead of "attributes", see\nhttps://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema (read section below).\nHowever this is completely okay and mixed use of properties / attributes is compatible in practice.\nOn Sequence Metadata, we support both structures for token contracts which use either format for their properties/attributes.

\n

Another example is from Neon District: https://metadata.sequence.app/tokens/polygon/0x7227e371540CF7b8e512544Ba6871472031F3335/158456331411102687640546264635

\n","isPage":false,"text":"\nERC721 token contracts contain a method on the contract called tokenURI(uint256) string. When querying the tokenURI method on the contract, it will return a URI which contains additional metadata for that asset.\nSee EIP for specific details: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md\nHere is an example Bored Ape (token id 9):\nhttps://metadata.sequence.app/tokens/mainnet/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/9\nresponse:\n{\n "tokenId": "9",\n "contractAddress": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",\n "name": "",\n "description": "",\n "image": "https://ipfs.sequence.info/ipfs/QmUQgKka8EW7exiUHnMwZ4UoXA11wV7NFjHAogVAbasSYy",\n "decimals": 0,\n "properties": null,\n "attributes": [\n {\n "trait_type": "Earring",\n "value": "Silver Stud"\n },\n {\n "trait_type": "Eyes",\n "value": "Sleepy"\n },\n {\n "trait_type": "Mouth",\n "value": "Small Grin"\n },\n {\n "trait_type": "Fur",\n "value": "Brown"\n },\n {\n "trait_type": "Hat",\n "value": "Seaman's Hat"\n },\n {\n "trait_type": "Clothes",\n "value": "Stunt Jacket"\n },\n {\n "trait_type": "Background",\n "value": "Purple"\n }\n ]\n}\nIn the case of this Bored Ape, it appears there is no name or description set,\nbut they do have "attributes" as an array of { "trait_type": string, "value: string }.\nAdditionally, see OpenSea for more information: https://docs.opensea.io/docs/metadata-standards\nNote that OpenSea technically breaks the ERC1155 standard by suggesting to use "attributes", where in fact,\nthe ERC1155 calls uses the field name "properties" instead of "attributes", see\nhttps://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema (read section below).\nHowever this is completely okay and mixed use of properties / attributes is compatible in practice.\nOn Sequence Metadata, we support both structures for token contracts which use either format for their properties/attributes.\nAnother example is from Neon District: https://metadata.sequence.app/tokens/polygon/0x7227e371540CF7b8e512544Ba6871472031F3335/158456331411102687640546264635\n","title":"ERC721","titles":["Token Metadata","Metadata Standards"]},"68":{"href":"/api/metadata/token-metadata#erc1155","html":"\n

ERC1155 token contracts contain a method on the contract called uri(uint256) string. When querying the uri method on the\ncontract, it will return a URI which contains additional metadata for that asset.

\n

See EIP for specific details: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema

\n

Here is an example Skyweaver card (token id 65548):\nhttps://metadata.sequence.app/tokens/polygon/0x27A11C1563a5dDa238379B95c91B3AbBaD9C0cf6/65548

\n
{\n  "tokenId": "65548",\n  "contractAddress": "0x27a11c1563a5dda238379b95c91b3abbad9c0cf6",\n  "name": "Weighted Die (Silver)",\n  "description": "Give +1/+1, armor, and guard to a random ally unit, six times.\\n\\n\\"I will not bow to fate. If the dice fall against me, I'll cut off the hand that cast them.\\"\\n -Horik",\n  "image": "https://assets.skyweaver.net/LV7xNcQh/webapp/cards/full-cards/6x/12-silver.png",\n  "decimals": 2,\n  "properties": {\n    "artists": {\n      "name": "Artist",\n      "value": [\n        {\n          "id": "xavi",\n          "name": "Henrique Xavier",\n          "url": "https://www.artstation.com/kitexavier"\n        }\n      ]\n    },\n    "baseCardId": 12,\n    "cardType": "Spell",\n    "element": "Metal",\n    "mana": 8,\n    "prism": "Strength",\n    "type": "Silver"\n  },\n  "attributes": null\n}
\n

As you can see, Skyweaver an ERC1155 token's metadata uses the properties object, which is an object/dictionary type of arbitrary data.

\n","isPage":false,"text":"\nERC1155 token contracts contain a method on the contract called uri(uint256) string. When querying the uri method on the\ncontract, it will return a URI which contains additional metadata for that asset.\nSee EIP for specific details: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema\nHere is an example Skyweaver card (token id 65548):\nhttps://metadata.sequence.app/tokens/polygon/0x27A11C1563a5dDa238379B95c91B3AbBaD9C0cf6/65548\n{\n "tokenId": "65548",\n "contractAddress": "0x27a11c1563a5dda238379b95c91b3abbad9c0cf6",\n "name": "Weighted Die (Silver)",\n "description": "Give +1/+1, armor, and guard to a random ally unit, six times.\\n\\n\\"I will not bow to fate. If the dice fall against me, I'll cut off the hand that cast them.\\"\\n -Horik",\n "image": "https://assets.skyweaver.net/LV7xNcQh/webapp/cards/full-cards/6x/12-silver.png",\n "decimals": 2,\n "properties": {\n "artists": {\n "name": "Artist",\n "value": [\n {\n "id": "xavi",\n "name": "Henrique Xavier",\n "url": "https://www.artstation.com/kitexavier"\n }\n ]\n },\n "baseCardId": 12,\n "cardType": "Spell",\n "element": "Metal",\n "mana": 8,\n "prism": "Strength",\n "type": "Silver"\n },\n "attributes": null\n}\nAs you can see, Skyweaver an ERC1155 token's metadata uses the properties object, which is an object/dictionary type of arbitrary data.\n","title":"ERC1155","titles":["Token Metadata","Metadata Standards"]},"69":{"href":"/api/metadata/token-metadata#attributes-vs-properties","html":"\n

As you can see, the standard format of token metadata contains both attributes and properties. The attributes field is an array of\nobjects. The properties field is an object/dictionary of arbitrary data. In technical terms, the attributes type is defined as\n[]map<string,any> and the properties type is defined as map<string,any>.

\n

In practice, we've seen that many projects use both attributes and properties to store the same data, and in some cases, they use\nattributes to store data that should be in properties and vice versa. Sometimes project use both fields, and this is completely fine\nin practice, as marketplaces and services will parse both areas.

\n

Finally, if you are looking to extend the metadata format to suit your project, we recommend to utilize either or both the attributes\nand properties fields for either ERC721 or ERC1155.

\n","isPage":false,"text":"\nAs you can see, the standard format of token metadata contains both attributes and properties. The attributes field is an array of\nobjects. The properties field is an object/dictionary of arbitrary data. In technical terms, the attributes type is defined as\n[]map<string,any> and the properties type is defined as map<string,any>.\nIn practice, we've seen that many projects use both attributes and properties to store the same data, and in some cases, they use\nattributes to store data that should be in properties and vice versa. Sometimes project use both fields, and this is completely fine\nin practice, as marketplaces and services will parse both areas.\nFinally, if you are looking to extend the metadata format to suit your project, we recommend to utilize either or both the attributes\nand properties fields for either ERC721 or ERC1155.\n","title":"Attributes vs Properties","titles":["Token Metadata","Metadata Standards"]},"70":{"href":"/api/metadata/token-metadata#erc20","html":"\n

Finally, a note on ERC20 tokens. ERC20 tokens are just a single token, so they themselves do not have a token ID, but\nare represented entirely by their contract address. We can infer some information about the token by querying the contract\nmethods such as name and decimals. Additionally, ERC20 tokens can take advantage of the contractURI extension used\nby OpenSea and described in more detail in our Contract metadata section.

","isPage":false,"text":"\nFinally, a note on ERC20 tokens. ERC20 tokens are just a single token, so they themselves do not have a token ID, but\nare represented entirely by their contract address. We can infer some information about the token by querying the contract\nmethods such as name and decimals. Additionally, ERC20 tokens can take advantage of the contractURI extension used\nby OpenSea and described in more detail in our Contract metadata section.","title":"ERC20","titles":["Token Metadata","Metadata Standards"]},"71":{"href":"/guides/templates/02-building-relaying-server#building-a-relaying-server","html":"\n

With Sequence, you can create a smart contract wallet your server can use to dispatch transactions for your users\nwithout you having to be worried about transaction speed, throughput and re-orgs.

\n

:::info Sequentual Transactions\nBy default, Sequence transactions will be executed sequentially.\n:::

\n","isPage":true,"text":"\nWith Sequence, you can create a smart contract wallet your server can use to dispatch transactions for your users\nwithout you having to be worried about transaction speed, throughput and re-orgs.\n:::info Sequentual Transactions\nBy default, Sequence transactions will be executed sequentially.\n:::\n","title":"Building a Relaying Server","titles":[]},"72":{"href":"/guides/templates/02-building-relaying-server#nodejs-server","html":"\n

Your server will need an EOA wallet that will be able to sign messages. It will be the owner of your server-side Sequence\nwallet which will be used to dispatch transactions.

\n

This Sequence wallet should have the correct ownership at your contract level, not the EOA.\nAlso, the Sequence wallet should be sufficiently funded in order to pay fees needed by the relayer to dispatch your transactions.

\n

Using this approach - versus the next section (with sponsoring) - includes the ability to pay for gas in any available currency by our relayer (e.g. 'MATIC', 'DAI', 'USDC', 'WETH').

\n
import { Session } from "@0xsequence/auth";\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider);\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n  signer: walletEOA,\n  projectAccessKey: "<access_key>",\n});\n \n// Get the Sequence wallet address\nconsole.log(session.account.address);\n \n// Get a signer for a specific network\n// - 1:     Ethereum Mainnet\n// - 137:   Polygon Mainnet\n// - 42161: Arbitrum One\n// See https://chainid.network/ for more\nconst signer = session.account.getSigner(137);\n \n// Craft your transaction\nconst erc721Interface = new ethers.utils.Interface([\n  "function safeTransferFrom(address _from, address _to, uint256 _tokenId)",\n]);\n \nconst data = erc721Interface.encodeFunctionData("safeTransferFrom", [\n  senderAddress,\n  recipientAddress,\n  id,\n]);\n \nconst txn = {\n  to: erc721TokenAddress,\n  data,\n};\n \n// Send the transaction\nconst txnResponse = await signer.sendTransaction(txn);\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n  console.log(`Unexpected status: ${txnReceipt.status}`);\n}
\n

You can also enforce a specific way to pay for gas fees, or the openning of a specific Sequence wallet.

\n
import { Session } from '@0xsequence/auth'\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider)\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n  signer: walletEOA,\n  projectAccessKey: '<access_key>'\n  // OPTIONAL: Multiple wallets could be found for the same EOA\n  // to enforce a specific wallet you can use the following callback\n  selectWallet: async (wallets: string[]) => {\n    const found = wallets.find(w => w === EXPECTED_WALLET_ADDRESS)\n    if (!found) throw Error('wallet not found')\n    // Returning the wallet address will make the session use it\n    // returning undefined will make the session create a new wallet\n    return found\n  }\n})\n \nconst signer = session.account.getSigner(137, {\n  // OPTIONAL: You can also enforce a specific way to pay for gas fees\n  // if not provided the sdk will select one for you\n  selectFee: async (\n    _txs: any,\n    options: FeeOption[]\n  ) => {\n    // Find the option to pay with native tokens\n    const found = options.find(o => !o.token.contractAddress)\n    if (!found) throw Error('fee option not found')\n    return found\n  }\n})\n \n// Initialize the contract\nconst usdc = new ethers.Contract(\n  '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', // USDC on Polygon\n  ERC_20_ABI,\n  signer\n)\n \n// Send the transaction\nconst txnResponse = await usdc.transfer(recipient, 1)\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n  console.log(`Unexpected status: ${txnReceipt.status}`)\n}
\n

:::caution Triggers migration

\n

Openning a session may trigger a migration of your Sequence wallet to a new version, this could be v1 to v2 or v2 to future versions.

\n

Migration is a one-way process, once your wallet is migrated it cannot be reverted to a previous version.

\n

To catch any unwanted migration, you can use the onMigration callback.\n:::

\n","isPage":false,"text":"\nYour server will need an EOA wallet that will be able to sign messages. It will be the owner of your server-side Sequence\nwallet which will be used to dispatch transactions.\nThis Sequence wallet should have the correct ownership at your contract level, not the EOA.\nAlso, the Sequence wallet should be sufficiently funded in order to pay fees needed by the relayer to dispatch your transactions.\nUsing this approach - versus the next section (with sponsoring) - includes the ability to pay for gas in any available currency by our relayer (e.g. 'MATIC', 'DAI', 'USDC', 'WETH').\nimport { Session } from "@0xsequence/auth";\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider);\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n signer: walletEOA,\n projectAccessKey: "<access_key>",\n});\n \n// Get the Sequence wallet address\nconsole.log(session.account.address);\n \n// Get a signer for a specific network\n// - 1: Ethereum Mainnet\n// - 137: Polygon Mainnet\n// - 42161: Arbitrum One\n// See https://chainid.network/ for more\nconst signer = session.account.getSigner(137);\n \n// Craft your transaction\nconst erc721Interface = new ethers.utils.Interface([\n "function safeTransferFrom(address _from, address _to, uint256 _tokenId)",\n]);\n \nconst data = erc721Interface.encodeFunctionData("safeTransferFrom", [\n senderAddress,\n recipientAddress,\n id,\n]);\n \nconst txn = {\n to: erc721TokenAddress,\n data,\n};\n \n// Send the transaction\nconst txnResponse = await signer.sendTransaction(txn);\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n console.log(`Unexpected status: ${txnReceipt.status}`);\n}\nYou can also enforce a specific way to pay for gas fees, or the openning of a specific Sequence wallet.\nimport { Session } from '@0xsequence/auth'\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider)\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n signer: walletEOA,\n projectAccessKey: '<access_key>'\n // OPTIONAL: Multiple wallets could be found for the same EOA\n // to enforce a specific wallet you can use the following callback\n selectWallet: async (wallets: string[]) => {\n const found = wallets.find(w => w === EXPECTED_WALLET_ADDRESS)\n if (!found) throw Error('wallet not found')\n // Returning the wallet address will make the session use it\n // returning undefined will make the session create a new wallet\n return found\n }\n})\n \nconst signer = session.account.getSigner(137, {\n // OPTIONAL: You can also enforce a specific way to pay for gas fees\n // if not provided the sdk will select one for you\n selectFee: async (\n _txs: any,\n options: FeeOption[]\n ) => {\n // Find the option to pay with native tokens\n const found = options.find(o => !o.token.contractAddress)\n if (!found) throw Error('fee option not found')\n return found\n }\n})\n \n// Initialize the contract\nconst usdc = new ethers.Contract(\n '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', // USDC on Polygon\n ERC_20_ABI,\n signer\n)\n \n// Send the transaction\nconst txnResponse = await usdc.transfer(recipient, 1)\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n console.log(`Unexpected status: ${txnReceipt.status}`)\n}\n:::caution Triggers migration\nOpenning a session may trigger a migration of your Sequence wallet to a new version, this could be v1 to v2 or v2 to future versions.\nMigration is a one-way process, once your wallet is migrated it cannot be reverted to a previous version.\nTo catch any unwanted migration, you can use the onMigration callback.\n:::\n","title":"Nodejs Server","titles":["Building a Relaying Server"]},"73":{"href":"/guides/templates/02-building-relaying-server#nodejs-server-with-gas-sponsoring-using-sequence-builder","html":"\n

If you want to have your transactions sponsored & paid for with a credit card, you can follow the below steps before beginning your code, at the following link: https://sequence.build/

\n

By sponsoring your transaction, you can now just send the transaction without a fee object and not have to fund the smart contract wallet before relaying any transactions.

\n

:::info Already Deployed Contract\nFor this example, we assume you have a smart contract deployed with a contract address to include in the last step.\n:::

\n","isPage":false,"text":"\nIf you want to have your transactions sponsored & paid for with a credit card, you can follow the below steps before beginning your code, at the following link: https://sequence.build/\nBy sponsoring your transaction, you can now just send the transaction without a fee object and not have to fund the smart contract wallet before relaying any transactions.\n:::info Already Deployed Contract\nFor this example, we assume you have a smart contract deployed with a contract address to include in the last step.\n:::\n","title":"Nodejs Server with Gas Sponsoring using Sequence Builder","titles":["Building a Relaying Server"]},"74":{"href":"/guides/templates/02-building-relaying-server#a-create-dapp","html":"\n

\"Sequence

\n","isPage":false,"text":"\n\n","title":"A. Create Dapp","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"75":{"href":"/guides/templates/02-building-relaying-server#b-new-dapp","html":"\n

\"Sequence

\n","isPage":false,"text":"\n\n","title":"B. New Dapp","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"76":{"href":"/guides/templates/02-building-relaying-server#c1-gas-tank","html":"\n

\"Sequence

\n","isPage":false,"text":"\n\n","title":"C.1 Gas Tank","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"77":{"href":"/guides/templates/02-building-relaying-server#c2-add-gas","html":"\n

\"Sequence

\n","isPage":false,"text":"\n\n","title":"C.2 Add Gas","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"78":{"href":"/guides/templates/02-building-relaying-server#c3-add-sponsored-address","html":"\n

\"Sequence

\n

The following is example code that implements a relayed transaction, same as the above example (i.e. Nodejs Server) but without fees, taken care of by the Sequence Builder.

\n
import { Session } from "@0xsequence/auth";\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider);\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n  signer: walletEOA,\n  projectAccessKey: "<access_key>",\n});\n \n// Get the Sequence wallet address\nconsole.log(session.account.address);\n \n// Get a signer for a specific network\n// - 1:     Ethereum Mainnet\n// - 137:   Polygon Mainnet\n// - 42161: Arbitrum One\n// See https://chainid.network/ for more\nconst signer = session.account.getSigner(137, {\n  // OPTIONAL: This ensures that the transaction is paid for by the gas tank\n  // but if not provided, the gas tank will be used anyway\n  selectFee: async (_txs: any, _options: FeeOption[]) => {\n    return undefined;\n  },\n});\n \n// Craft your transaction\nconst erc721Interface = new ethers.utils.Interface([\n  "function safeTransferFrom(address _from, address _to, uint256 _tokenId)",\n]);\n \nconst data = erc721Interface.encodeFunctionData("safeTransferFrom", [\n  senderAddress,\n  recipientAddress,\n  id,\n]);\n \nconst txn = {\n  to: erc721TokenAddress,\n  data,\n};\n \n// Send the transaction\nconst txnResponse = await signer.sendTransaction(txn);\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n  console.log(`Unexpected status: ${txnReceipt.status}`);\n}
\n","isPage":false,"text":"\n\nThe following is example code that implements a relayed transaction, same as the above example (i.e. Nodejs Server) but without fees, taken care of by the Sequence Builder.\nimport { Session } from "@0xsequence/auth";\n \n// Create your server EOA\nconst walletEOA = new ethers.Wallet(serverPrivateKey, provider);\n \n// Open a Sequence session, this will find or create\n// a Sequence wallet controlled by your server EOA\nconst session = await Session.singleSigner({\n signer: walletEOA,\n projectAccessKey: "<access_key>",\n});\n \n// Get the Sequence wallet address\nconsole.log(session.account.address);\n \n// Get a signer for a specific network\n// - 1: Ethereum Mainnet\n// - 137: Polygon Mainnet\n// - 42161: Arbitrum One\n// See https://chainid.network/ for more\nconst signer = session.account.getSigner(137, {\n // OPTIONAL: This ensures that the transaction is paid for by the gas tank\n // but if not provided, the gas tank will be used anyway\n selectFee: async (_txs: any, _options: FeeOption[]) => {\n return undefined;\n },\n});\n \n// Craft your transaction\nconst erc721Interface = new ethers.utils.Interface([\n "function safeTransferFrom(address _from, address _to, uint256 _tokenId)",\n]);\n \nconst data = erc721Interface.encodeFunctionData("safeTransferFrom", [\n senderAddress,\n recipientAddress,\n id,\n]);\n \nconst txn = {\n to: erc721TokenAddress,\n data,\n};\n \n// Send the transaction\nconst txnResponse = await signer.sendTransaction(txn);\n \n// Check if transaction was successful\nif (txnReceipt.status != 1) {\n console.log(`Unexpected status: ${txnReceipt.status}`);\n}\n","title":"C.3 Add Sponsored Address","titles":["Building a Relaying Server","Nodejs Server with Gas Sponsoring using Sequence Builder"]},"79":{"href":"/guides/templates/02-building-relaying-server#parallel-transactions","html":"\n

If you want to send multiple independent transactions without needing to batch them, you can also send them in distinct nonce spaces.\nUsing distinct nonce spaces for your transactions signals to the relayer that there's no dependency between them and that\nthey can be executed on-chain in any order.

\n

This allows the transactions to be dispatched immediately in an unbuffered way without having to wait for a full batch.\nHere is an example of how to do that:

\n
// Generate random nonce spaces with ~0% probability of collision\nconst randomNonceSpace1 = ethers.BigNumber.from(\n  ethers.utils.hexlify(ethers.utils.randomBytes(20))\n);\nconst randomNonceSpace2 = ethers.BigNumber.from(\n  ethers.utils.hexlify(ethers.utils.randomBytes(20))\n);\n \n// Create signers for each nonce space\nconst signer1 = session.account.getSigner(137, {\n  nonceSpace: randomNonceSpace1,\n});\n \nconst signer2 = session.account.getSigner(137, {\n  nonceSpace: randomNonceSpace2,\n});\n \n// Generate transactions\nconst txn1 = {\n  to: tokenContract.address,\n  data: erc20Interface.encodeFunctionData("transfer", [recipient1, amount1]),\n};\n \nconst txn2 = {\n  to: tokenContract.address,\n  data: erc20Interface.encodeFunctionData("transfer", [recipient2, amount2]),\n};\n \n// Dispatch transactions, which can now be executed in parallel\nawait Promise.all([\n  signer1.sendTransaction(txn1),\n  signer2.sendTransaction(txn2),\n]);
\n

If batching transactions is not a problem for your use-case, you can call await wallet.sendTransaction(txns).\nYou can read more about batch transactions in Sending Batched Transactions.

","isPage":false,"text":"\nIf you want to send multiple independent transactions without needing to batch them, you can also send them in distinct nonce spaces.\nUsing distinct nonce spaces for your transactions signals to the relayer that there's no dependency between them and that\nthey can be executed on-chain in any order.\nThis allows the transactions to be dispatched immediately in an unbuffered way without having to wait for a full batch.\nHere is an example of how to do that:\n// Generate random nonce spaces with ~0% probability of collision\nconst randomNonceSpace1 = ethers.BigNumber.from(\n ethers.utils.hexlify(ethers.utils.randomBytes(20))\n);\nconst randomNonceSpace2 = ethers.BigNumber.from(\n ethers.utils.hexlify(ethers.utils.randomBytes(20))\n);\n \n// Create signers for each nonce space\nconst signer1 = session.account.getSigner(137, {\n nonceSpace: randomNonceSpace1,\n});\n \nconst signer2 = session.account.getSigner(137, {\n nonceSpace: randomNonceSpace2,\n});\n \n// Generate transactions\nconst txn1 = {\n to: tokenContract.address,\n data: erc20Interface.encodeFunctionData("transfer", [recipient1, amount1]),\n};\n \nconst txn2 = {\n to: tokenContract.address,\n data: erc20Interface.encodeFunctionData("transfer", [recipient2, amount2]),\n};\n \n// Dispatch transactions, which can now be executed in parallel\nawait Promise.all([\n signer1.sendTransaction(txn1),\n signer2.sendTransaction(txn2),\n]);\nIf batching transactions is not a problem for your use-case, you can call await wallet.sendTransaction(txns).\nYou can read more about batch transactions in Sending Batched Transactions.","title":"Parallel Transactions","titles":["Building a Relaying Server"]},"80":{"href":"/guides/templates/03-mint-collectibles-serverless#mint-collectibles-using-a-gasless-serverless-relayer","html":"\n

Time to complete: 20-30 minutes

\n

The Sequence Relayer can be implemented on a serverless Cloudflare worker so a game or app user interaction is seamless without a confirmation signature or gas payment. You'll also benefit from not having to be worried about transaction speed, throughput and re-orgs by the relayer, and experience automatic scaling with Cloudflare.

\n

The following steps will guide you through how to build your hosted minter API in 4 steps:

\n
    \n
  1. Setup Cloudflare environment with wrangler cli and deploy a test
  2. \n
  3. Deploy, sponsor and update Metadata for an ERC1155 contract with Builder
  4. \n
  5. Use EthAuthProof to prevent EOA DDoS
  6. \n
  7. Mint a collectible to wallet
  8. \n
\n

The result, a secure API with the following specs:

\n\n

:::info Difficulty\nYou need basic knowledge of wrangler cli, npm, and Sequence Builder in order to complete this implementation.\n:::

\n","isPage":true,"text":"\nTime to complete: 20-30 minutes\nThe Sequence Relayer can be implemented on a serverless Cloudflare worker so a game or app user interaction is seamless without a confirmation signature or gas payment. You'll also benefit from not having to be worried about transaction speed, throughput and re-orgs by the relayer, and experience automatic scaling with Cloudflare.\nThe following steps will guide you through how to build your hosted minter API in 4 steps:\n\nSetup Cloudflare environment with wrangler cli and deploy a test\nDeploy, sponsor and update Metadata for an ERC1155 contract with Builder\nUse EthAuthProof to prevent EOA DDoS\nMint a collectible to wallet\n\nThe result, a secure API with the following specs:\n\nHTTPS GET: returns blockNumber\nHTTPS POST(proof, address): mints a collectible & returns transaction hash\n\n:::info Difficulty\nYou need basic knowledge of wrangler cli, npm, and Sequence Builder in order to complete this implementation.\n:::\n","title":"Mint Collectibles Using a Gasless Serverless Relayer","titles":[]},"81":{"href":"/guides/templates/03-mint-collectibles-serverless#1-setup-cloudflare-environment-with-wrangler-cli-and-deploy-a-test","html":"\n

In order to create the project from scratch, first create a project with mkdir, cd into the project, and run pnpm init to create a package.json.

\n

Next, make sure wrangler cli is installed in your project and set the wrangler keyword as an alias in your local bash session.

\n
pnpm install wrangler --save-dev\nalias wrangler='./node_modules/.bin/wrangler'
\n

Create an account on the Cloudflare site and perform a login step to login to your Cloudflare dashboard to connect the Cloudflare platform to your local development environment.

\n
wrangler login
\n

Once logged in, initialize the project in the directory by accepting one of the randomly generated project folder names provided that you like, and follow the prompts to initialize your git tracked typescript "Hello World" Worker application.

\n
wrangler init
\n

To complete this step, you should press enter 4 times after wrangler init with the last step answered as No to decline deployment.

\n

This will clone down a starter repository that can be used to deploy code to the cloud.

\n

:::info Local API Testing\nAt any point in the guide, you can use the wrangler dev command in the project folder for local testing\n:::

\n","isPage":false,"text":"\nIn order to create the project from scratch, first create a project with mkdir, cd into the project, and run pnpm init to create a package.json.\nNext, make sure wrangler cli is installed in your project and set the wrangler keyword as an alias in your local bash session.\npnpm install wrangler --save-dev\nalias wrangler='./node_modules/.bin/wrangler'\nCreate an account on the Cloudflare site and perform a login step to login to your Cloudflare dashboard to connect the Cloudflare platform to your local development environment.\nwrangler login\nOnce logged in, initialize the project in the directory by accepting one of the randomly generated project folder names provided that you like, and follow the prompts to initialize your git tracked typescript "Hello World" Worker application.\nwrangler init\nTo complete this step, you should press enter 4 times after wrangler init with the last step answered as No to decline deployment.\nThis will clone down a starter repository that can be used to deploy code to the cloud.\n:::info Local API Testing\nAt any point in the guide, you can use the wrangler dev command in the project folder for local testing\n:::\n","title":"1. Setup Cloudflare environment with wrangler cli and deploy a test","titles":["Mint Collectibles Using a Gasless Serverless Relayer"]},"82":{"href":"/guides/templates/03-mint-collectibles-serverless#deploy-test","html":"\n

Finally, cd into the randomly generated project folder, and perform a wrangler deploy command.

\n

This should print a URL, which you can enter in the browser the URL https://<app>.<account>.workers.dev to view the Hello World! result.

\n","isPage":false,"text":"\nFinally, cd into the randomly generated project folder, and perform a wrangler deploy command.\nThis should print a URL, which you can enter in the browser the URL https://<app>.<account>.workers.dev to view the Hello World! result.\n","title":"Deploy Test","titles":["Mint Collectibles Using a Gasless Serverless Relayer","1. Setup Cloudflare environment with wrangler cli and deploy a test",null]},"83":{"href":"/guides/templates/03-mint-collectibles-serverless#2-deploy-sponsor-and-update-metadata-for-an-erc1155-contract-with-builder","html":"\n

First, follow this guide to deploy a contract.

\n

Then, one must update the role access of the contract in the Builder to only receive requests from the minter wallet address, which can be done in 2 steps.

\n

You can do this in Sequence Builder by providing minter permission to your Sequence Wallet Relayer Address.

\n

In order to know what the relayer address you are working with is, one must first either:

\n
    \n
  1. Have one generated for you using this dapp by selecting your network, and generating a wallet keypair with the generate local wallet button
  2. \n
  3. Or, you can print locally the account address produced from an EOA wallet private key using the following code snippet:
  4. \n
\n
import { Session } from "@0xsequence/auth";\nimport { ethers } from "ethers";\n \n(async () => {\n  // Generate a new EOA\n  // const wallet = ethers.Wallet.createRandom()\n  // const privateKey = wallet.privateKey\n \n  // Or, use an existing EOA private key\n  const privateKey = "";\n  const provider = new ethers.providers.JsonRpcProvider(\n    "https://nodes.sequence.app/mainnet"\n  );\n \n  // Create your server EOA\n  const walletEOA = new ethers.Wallet(privateKey, provider);\n \n  // Open a Sequence session, this will find or create\n  // a Sequence wallet controlled by your server EOA\n  const session = await Session.singleSigner({\n    signer: walletEOA,\n    projectAccessKey: "access_key",\n  });\n \n  const signer = session.account.getSigner(1);\n  console.log(`Your relayer wallet address: ${signer.account.address}`);\n})();
\n

To do so, open your project, navigate to the Contracts page, select your Linked contracts and under Write Contract tab expand the grantRole method.

\n

Complete with the following details:

\n

bytes32 role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6

\n

address account: <Generated Sequence Relayer Wallet Address>

\n\n

Where the role string inputted is the result of keccak256("MINTER_ROLE") in solidity or ethers.utils.keccak256(ethers.utils.toUtf8Bytes("MINTER_ROLE")) in javascript

\n

This makes it so that only your specific address can mint from the contract, it will error otherwise.

\n

Complete the role update by clicking write and sign the sponsored transaction.

\n","isPage":false,"text":"\nFirst, follow this guide to deploy a contract.\nThen, one must update the role access of the contract in the Builder to only receive requests from the minter wallet address, which can be done in 2 steps.\nYou can do this in Sequence Builder by providing minter permission to your Sequence Wallet Relayer Address.\nIn order to know what the relayer address you are working with is, one must first either:\n\nHave one generated for you using this dapp by selecting your network, and generating a wallet keypair with the generate local wallet button\nOr, you can print locally the account address produced from an EOA wallet private key using the following code snippet:\n\nimport { Session } from "@0xsequence/auth";\nimport { ethers } from "ethers";\n \n(async () => {\n // Generate a new EOA\n // const wallet = ethers.Wallet.createRandom()\n // const privateKey = wallet.privateKey\n \n // Or, use an existing EOA private key\n const privateKey = "";\n const provider = new ethers.providers.JsonRpcProvider(\n "https://nodes.sequence.app/mainnet"\n );\n \n // Create your server EOA\n const walletEOA = new ethers.Wallet(privateKey, provider);\n \n // Open a Sequence session, this will find or create\n // a Sequence wallet controlled by your server EOA\n const session = await Session.singleSigner({\n signer: walletEOA,\n projectAccessKey: "access_key",\n });\n \n const signer = session.account.getSigner(1);\n console.log(`Your relayer wallet address: ${signer.account.address}`);\n})();\nTo do so, open your project, navigate to the Contracts page, select your Linked contracts and under Write Contract tab expand the grantRole method.\nComplete with the following details:\nbytes32 role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6\naddress account: <Generated Sequence Relayer Wallet Address>\n\nWhere the role string inputted is the result of keccak256("MINTER_ROLE") in solidity or ethers.utils.keccak256(ethers.utils.toUtf8Bytes("MINTER_ROLE")) in javascript\nThis makes it so that only your specific address can mint from the contract, it will error otherwise.\nComplete the role update by clicking write and sign the sponsored transaction.\n","title":"2. Deploy, Sponsor and Update Metadata for an ERC1155 Contract with Builder","titles":["Mint Collectibles Using a Gasless Serverless Relayer"]},"84":{"href":"/guides/templates/03-mint-collectibles-serverless#update-metadata","html":"\n

Next, you'll need to update the metadata with your media or assets for your contract, which can be done by following this guide.

\n","isPage":false,"text":"\nNext, you'll need to update the metadata with your media or assets for your contract, which can be done by following this guide.\n","title":"Update metadata","titles":["Mint Collectibles Using a Gasless Serverless Relayer","2. Deploy, Sponsor and Update Metadata for an ERC1155 Contract with Builder",null]},"85":{"href":"/guides/templates/03-mint-collectibles-serverless#contract-sponsoring","html":"\n

Finally, in order to sponsor the contract follow this guide to sponsor a contract.

\n","isPage":false,"text":"\nFinally, in order to sponsor the contract follow this guide to sponsor a contract.\n","title":"Contract sponsoring","titles":["Mint Collectibles Using a Gasless Serverless Relayer","2. Deploy, Sponsor and Update Metadata for an ERC1155 Contract with Builder",null]},"86":{"href":"/guides/templates/03-mint-collectibles-serverless#3-use-ethauthproof-to-prevent-eoa-ddos","html":"\n

Now that we have a contract deployed, we can return to the cloudflare worker directory and project, and install ethers and 0xsequence to get access to sequence APIs in order to perform a proof validation that the request is coming from a trusted source, a sequence wallet.

\n
pnpm install 0xsequence @0xsequence/network
\n

Then, we have to add a type of middleware, after we check if it's a POST or GET request. If it's a POST request, verify that the passed in proofString and address are valid, as well as the environment variables.

\n

The code scaffold placed into src/index.ts would look like this, with callContract and getBlockNumber mocked out, using the mentioned verification step of calling verify before any contract call.

\n
import { sequence } from "0xsequence";\nimport { networks, findSupportedNetwork } from "@0xsequence/network";\n \nexport interface Env {\n  PKEY: string; // Private key for EOA wallet\n  CONTRACT_ADDRESS: string; // Deployed ERC1155 or ERC721 contract address\n  PROJECT_ACCESS_KEY: string; // From sequence.build\n  CHAIN_HANDLE: string; // Standardized chain name – See https://docs.sequence.xyz/multi-chain-support\n}\n \n// use the sequence api to verify proof came from a sequence wallet\nconst verify = async (\n  chainId: string,\n  walletAddress: string,\n  ethAuthProofString: string\n): Promise<Boolean> => {\n  const api = new sequence.api.SequenceAPIClient("https://api.sequence.app");\n  const { isValid } = await api.isValidETHAuthProof({\n    chainId,\n    walletAddress,\n    ethAuthProofString,\n  });\n  return isValid;\n};\n \nasync function handleRequest(\n  request: Request,\n  env: Env,\n  ctx: ExecutionContext\n): Promise<Response> {\n  if (env.PKEY === undefined || env.PKEY === "") {\n    return new Response("Make sure PKEY is configured in your environment", {\n      status: 400,\n    });\n  }\n \n  if (env.CONTRACT_ADDRESS === undefined || env.CONTRACT_ADDRESS === "") {\n    return new Response(\n      "Make sure CONTRACT_ADDRESS is configured in your environment",\n      { status: 400 }\n    );\n  }\n \n  if (env.PROJECT_ACCESS_KEY === undefined || env.PROJECT_ACCESS_KEY === "") {\n    return new Response(\n      "Make sure PROJECT_ACCESS_KEY is configured in your environment",\n      { status: 400 }\n    );\n  }\n \n  if (env.CHAIN_HANDLE === undefined || env.CHAIN_HANDLE === "") {\n    return new Response(\n      "Make sure CHAIN_HANDLE is configured in your environment",\n      { status: 400 }\n    );\n  }\n \n  const chainConfig = findSupportedNetwork(env.CHAIN_HANDLE);\n \n  if (chainConfig === undefined) {\n    return new Response("Unsupported network or unknown CHAIN_HANDLE", {\n      status: 400,\n    });\n  }\n \n  // POST request\n  if (request.method === "POST") {\n    // parse the request body as JSON\n    const body = await request.json();\n    const { proof, address, tokenId }: any = body;\n    try {\n      // check that the proof is valid\n      if (await verify(env.CHAIN_HANDLE, address, proof)) {\n        try {\n          // mocked call\n          const res = await callContract(request, env, address, tokenId);\n          return new Response(`${res.hash}`, { status: 200 });\n        } catch (err: any) {\n          console.log(err);\n          return new Response(`Something went wrong: ${JSON.stringify(err)}`, {\n            status: 400,\n          });\n        }\n      } else {\n        return new Response(`Unauthorized`, { status: 401 });\n      }\n    } catch (err: any) {\n      return new Response(`Unauthorized ${JSON.stringify(err)}`, {\n        status: 401,\n      });\n    }\n  }\n  // GET request\n  else {\n    try {\n      // mocked call\n      const res = await getBlockNumber(env.CHAIN_HANDLE, request);\n      return new Response(`Block Number: ${res}`);\n    } catch (err: any) {\n      return new Response(`Something went wrong: ${JSON.stringify(err)}`, {\n        status: 500,\n      });\n    }\n  }\n}\n \nconst getBlockNumber = async (\n  chainId: string,\n  request: Request\n): Promise<number> => {\n  return chainId;\n};\n \nconst callContract = async (\n  request: Request,\n  env: Env,\n  address: string,\n  tokenId: number\n): Promise<ethers.providers.TransactionResponse> => {\n  return { hash: "0x" } as any;\n};\n \nexport default {\n  async fetch(request: Request, env: Env, ctx: ExecutionContext) {\n    // Process the request and create a response\n    const response = await handleRequest(request, env, ctx);\n \n    // Set CORS headers\n    response.headers.set("Access-Control-Allow-Origin", "*");\n    response.headers.set(\n      "Access-Control-Allow-Methods",\n      "GET, POST, PUT, DELETE, OPTIONS"\n    );\n    response.headers.set("Access-Control-Allow-Headers", "Content-Type");\n \n    // return response\n    return response;\n  },\n};
\n","isPage":false,"text":"\nNow that we have a contract deployed, we can return to the cloudflare worker directory and project, and install ethers and 0xsequence to get access to sequence APIs in order to perform a proof validation that the request is coming from a trusted source, a sequence wallet.\npnpm install 0xsequence @0xsequence/network\nThen, we have to add a type of middleware, after we check if it's a POST or GET request. If it's a POST request, verify that the passed in proofString and address are valid, as well as the environment variables.\nThe code scaffold placed into src/index.ts would look like this, with callContract and getBlockNumber mocked out, using the mentioned verification step of calling verify before any contract call.\nimport { sequence } from "0xsequence";\nimport { networks, findSupportedNetwork } from "@0xsequence/network";\n \nexport interface Env {\n PKEY: string; // Private key for EOA wallet\n CONTRACT_ADDRESS: string; // Deployed ERC1155 or ERC721 contract address\n PROJECT_ACCESS_KEY: string; // From sequence.build\n CHAIN_HANDLE: string; // Standardized chain name – See https://docs.sequence.xyz/multi-chain-support\n}\n \n// use the sequence api to verify proof came from a sequence wallet\nconst verify = async (\n chainId: string,\n walletAddress: string,\n ethAuthProofString: string\n): Promise<Boolean> => {\n const api = new sequence.api.SequenceAPIClient("https://api.sequence.app");\n const { isValid } = await api.isValidETHAuthProof({\n chainId,\n walletAddress,\n ethAuthProofString,\n });\n return isValid;\n};\n \nasync function handleRequest(\n request: Request,\n env: Env,\n ctx: ExecutionContext\n): Promise<Response> {\n if (env.PKEY === undefined || env.PKEY === "") {\n return new Response("Make sure PKEY is configured in your environment", {\n status: 400,\n });\n }\n \n if (env.CONTRACT_ADDRESS === undefined || env.CONTRACT_ADDRESS === "") {\n return new Response(\n "Make sure CONTRACT_ADDRESS is configured in your environment",\n { status: 400 }\n );\n }\n \n if (env.PROJECT_ACCESS_KEY === undefined || env.PROJECT_ACCESS_KEY === "") {\n return new Response(\n "Make sure PROJECT_ACCESS_KEY is configured in your environment",\n { status: 400 }\n );\n }\n \n if (env.CHAIN_HANDLE === undefined || env.CHAIN_HANDLE === "") {\n return new Response(\n "Make sure CHAIN_HANDLE is configured in your environment",\n { status: 400 }\n );\n }\n \n const chainConfig = findSupportedNetwork(env.CHAIN_HANDLE);\n \n if (chainConfig === undefined) {\n return new Response("Unsupported network or unknown CHAIN_HANDLE", {\n status: 400,\n });\n }\n \n // POST request\n if (request.method === "POST") {\n // parse the request body as JSON\n const body = await request.json();\n const { proof, address, tokenId }: any = body;\n try {\n // check that the proof is valid\n if (await verify(env.CHAIN_HANDLE, address, proof)) {\n try {\n // mocked call\n const res = await callContract(request, env, address, tokenId);\n return new Response(`${res.hash}`, { status: 200 });\n } catch (err: any) {\n console.log(err);\n return new Response(`Something went wrong: ${JSON.stringify(err)}`, {\n status: 400,\n });\n }\n } else {\n return new Response(`Unauthorized`, { status: 401 });\n }\n } catch (err: any) {\n return new Response(`Unauthorized ${JSON.stringify(err)}`, {\n status: 401,\n });\n }\n }\n // GET request\n else {\n try {\n // mocked call\n const res = await getBlockNumber(env.CHAIN_HANDLE, request);\n return new Response(`Block Number: ${res}`);\n } catch (err: any) {\n return new Response(`Something went wrong: ${JSON.stringify(err)}`, {\n status: 500,\n });\n }\n }\n}\n \nconst getBlockNumber = async (\n chainId: string,\n request: Request\n): Promise<number> => {\n return chainId;\n};\n \nconst callContract = async (\n request: Request,\n env: Env,\n address: string,\n tokenId: number\n): Promise<ethers.providers.TransactionResponse> => {\n return { hash: "0x" } as any;\n};\n \nexport default {\n async fetch(request: Request, env: Env, ctx: ExecutionContext) {\n // Process the request and create a response\n const response = await handleRequest(request, env, ctx);\n \n // Set CORS headers\n response.headers.set("Access-Control-Allow-Origin", "*");\n response.headers.set(\n "Access-Control-Allow-Methods",\n "GET, POST, PUT, DELETE, OPTIONS"\n );\n response.headers.set("Access-Control-Allow-Headers", "Content-Type");\n \n // return response\n return response;\n },\n};\n","title":"3. Use EthAuthProof to prevent EOA DDoS","titles":["Mint Collectibles Using a Gasless Serverless Relayer"]},"87":{"href":"/guides/templates/03-mint-collectibles-serverless#add-cloudflare-environment-variables","html":"\n

Then, pass in the environment variables for your build by updating the [vars] section in your wrangler.toml.

\n
[vars]\nPKEY = "" # Private key for EOA wallet\nCONTRACT_ADDRESS = "" # // Deployed ERC1155 or ERC721 contract address\nPROJECT_ACCESS_KEY = "" # From sequence.build\nCHAIN_HANDLE = "" # // Standardized chain name – See https://docs.sequence.xyz/multi-chain-support
\n","isPage":false,"text":"\nThen, pass in the environment variables for your build by updating the [vars] section in your wrangler.toml.\n[vars]\nPKEY = "" # Private key for EOA wallet\nCONTRACT_ADDRESS = "" # // Deployed ERC1155 or ERC721 contract address\nPROJECT_ACCESS_KEY = "" # From sequence.build\nCHAIN_HANDLE = "" # // Standardized chain name – See https://docs.sequence.xyz/multi-chain-support\n","title":"Add cloudflare environment variables","titles":["Mint Collectibles Using a Gasless Serverless Relayer","3. Use EthAuthProof to prevent EOA DDoS",null]},"88":{"href":"/guides/templates/03-mint-collectibles-serverless#implement-window-object-in-wrangler-template","html":"\n

It should be noted, if you try to deploy this you'll get a missing window object required by the web3 modules.

\n

To prevent this, add the following line to your wrangler.toml file to make the environment compatible.

\n
...\nnode_compat = true # add this line\n...
\n","isPage":false,"text":"\nIt should be noted, if you try to deploy this you'll get a missing window object required by the web3 modules.\nTo prevent this, add the following line to your wrangler.toml file to make the environment compatible.\n...\nnode_compat = true # add this line\n...\n","title":"Implement window object in wrangler template","titles":["Mint Collectibles Using a Gasless Serverless Relayer","3. Use EthAuthProof to prevent EOA DDoS",null]},"89":{"href":"/guides/templates/03-mint-collectibles-serverless#testing-the-deploy","html":"\n

You can now redeploy using wrangler deploy

\n

And perform a curl request to test your endpoint like such:

\n
curl -X POST https://your-worker.your-subdomain.workers.dev \\\n-H "Content-Type: application/json" \\\n-d '{"proof": "<some_proof>", "address": "<some_address>", "tokenId": 0 }'\n\n... invalid proof string ...\n\n# and if you replace with actual proof (from a wallet client login) and address on polygon, it should return\nsuccess
\n

You can acquire your wallet address proof by using this dapp and follow the below steps.

\n","isPage":false,"text":"\nYou can now redeploy using wrangler deploy\nAnd perform a curl request to test your endpoint like such:\ncurl -X POST https://your-worker.your-subdomain.workers.dev \\\n-H "Content-Type: application/json" \\\n-d '{"proof": "<some_proof>", "address": "<some_address>", "tokenId": 0 }'\n\n... invalid proof string ...\n\n# and if you replace with actual proof (from a wallet client login) and address on polygon, it should return\nsuccess\nYou can acquire your wallet address proof by using this dapp and follow the below steps.\n","title":"Testing the deploy","titles":["Mint Collectibles Using a Gasless Serverless Relayer","3. Use EthAuthProof to prevent EOA DDoS",null]},"90":{"href":"/guides/templates/03-mint-collectibles-serverless#using-the-ethauthproof-viewer-dapp","html":"\n

When you arrive on the page, the first thing you should do is select a network.

\n

Then you have an option to either connect and generate the Proof, or, generate a local wallet

\n

\"ETHAuthProof

\n

Press the connect button and then copy to clipboard.

\n

\"ETHAuthProof

\n

It should be noted, it is best not to share this ETHAuthProof with anyone as this means someone can prove ownership of your wallet and interact with specific APIs.

\n

Finally, replace the url with your app from this step, the <some_proof> with the generated value copied from the viewer dapp, and <some_address> with your wallet address and it should return just the mocked 0x string.

\n
curl -X POST https://your-worker.your-subdomain.workers.dev \\\n-H "Content-Type: application/json" \\\n-d '{"proof": "<some_proof>", "address": "<some_address>", "tokenId": 0 }'
\n","isPage":false,"text":"\nWhen you arrive on the page, the first thing you should do is select a network.\nThen you have an option to either connect and generate the Proof, or, generate a local wallet\n\nPress the connect button and then copy to clipboard.\n\nIt should be noted, it is best not to share this ETHAuthProof with anyone as this means someone can prove ownership of your wallet and interact with specific APIs.\nFinally, replace the url with your app from this step, the <some_proof> with the generated value copied from the viewer dapp, and <some_address> with your wallet address and it should return just the mocked 0x string.\ncurl -X POST https://your-worker.your-subdomain.workers.dev \\\n-H "Content-Type: application/json" \\\n-d '{"proof": "<some_proof>", "address": "<some_address>", "tokenId": 0 }'\n","title":"Using the ETHAuthProof Viewer dapp","titles":["Mint Collectibles Using a Gasless Serverless Relayer","3. Use EthAuthProof to prevent EOA DDoS",null]},"91":{"href":"/guides/templates/03-mint-collectibles-serverless#4-mint-a-collectible-to-wallet","html":"\n

Finally, to deploy and mint a collectible from the sponsored contract address, we install the following packages

\n
pnpm install @0xsequence/auth ethers@5.7.2
\n

and implement the callContract and getBlockNumber methods previously mocked out as follows:

\n
import { ethers } from 'ethers'\nimport { Session, SessionSettings } from '@0xsequence/auth'\n \n...\n \nconst getBlockNumber = async (chainId: string, request: Request): Promise<number> => {\n\tconst nodeUrl = `https://nodes.sequence.app/${chainId}`\n\tconst provider = new ethers.providers.JsonRpcProvider({ url: nodeUrl, skipFetchSetup: true })\n\treturn await provider.getBlockNumber()\n}\n \nconst callContract = async (request: Request, env: Env, address: string, tokenId: number): Promise<ethers.providers.TransactionResponse> => {\n \n\tconst nodeUrl = `https://nodes.sequence.app/${env.CHAIN_HANDLE}`\n\tconst relayerUrl = `https://{env.CHAIN_HANDLE}-relayer.sequence.app`\n\tconst provider = new ethers.providers.JsonRpcProvider({ url: nodeUrl, skipFetchSetup: true })\n    const contractAddress = env.CONTRACT_ADDRESS\n \n    // create EOA from private key\n\tconst walletEOA = new ethers.Wallet(env.PKEY, provider);\n \n\t// instantiate settings\n\tconst settings: Partial<SessionSettings> = {\n\t\tnetworks: [{\n\t\t\t...networks[findSupportedNetwork(env.CHAIN_HANDLE)!.chainId],\n\t\t\trpcUrl: findSupportedNetwork(env.CHAIN_HANDLE)!.rpcUrl,\n\t\t\tprovider: provider,\n\t\t\trelayer: {\n\t\t\t\turl: relayerUrl,\n\t\t\t\tprovider: {\n\t\t\t\t\turl: findSupportedNetwork(env.CHAIN_HANDLE)!.rpcUrl\n\t\t\t\t}\n\t\t\t}\n\t\t}],\n\t}\n \n    // create a single signer sequence wallet session\n\tconst session = await Session.singleSigner({\n\t\tsettings: settings,\n\t\tsigner: walletEOA,\n\t\tprojectAccessKey: env.PROJECT_ACCESS_KEY\n\t})\n \n\t// get signer\n\tconst signer = session.account.getSigner(findSupportedNetwork(env.CHAIN_HANDLE)!.chainId)\n \n\t// create interface from partial abi\n\tconst collectibleInterface = new ethers.utils.Interface([\n\t\t'function mint(address to, uint256 tokenId, uint256 amount, bytes data)'\n\t])\n \n\t// create calldata\n\tconst data = collectibleInterface.encodeFunctionData(\n\t\t'mint', [address, tokenId, 1, "0x00"]\n\t)\n \n\t// create transaction object\n\tconst txn = { to: contractAddress, data }\n \n\ttry {\n\t\treturn await signer.sendTransaction(txn)\n\t} catch (err) {\n\t\tthrow err\n\t}\n}
\n

Once these steps are complete, you can redeploy and test with the steps outlined in this prior step, and this time the POST request should return a transaction hash for the completed mint and the GET request would return a block number.

\n

If you want to browse the full code, see an example implementation here

","isPage":false,"text":"\nFinally, to deploy and mint a collectible from the sponsored contract address, we install the following packages\npnpm install @0xsequence/auth ethers@5.7.2\nand implement the callContract and getBlockNumber methods previously mocked out as follows:\nimport { ethers } from 'ethers'\nimport { Session, SessionSettings } from '@0xsequence/auth'\n \n...\n \nconst getBlockNumber = async (chainId: string, request: Request): Promise<number> => {\n\tconst nodeUrl = `https://nodes.sequence.app/${chainId}`\n\tconst provider = new ethers.providers.JsonRpcProvider({ url: nodeUrl, skipFetchSetup: true })\n\treturn await provider.getBlockNumber()\n}\n \nconst callContract = async (request: Request, env: Env, address: string, tokenId: number): Promise<ethers.providers.TransactionResponse> => {\n \n\tconst nodeUrl = `https://nodes.sequence.app/${env.CHAIN_HANDLE}`\n\tconst relayerUrl = `https://{env.CHAIN_HANDLE}-relayer.sequence.app`\n\tconst provider = new ethers.providers.JsonRpcProvider({ url: nodeUrl, skipFetchSetup: true })\n const contractAddress = env.CONTRACT_ADDRESS\n \n // create EOA from private key\n\tconst walletEOA = new ethers.Wallet(env.PKEY, provider);\n \n\t// instantiate settings\n\tconst settings: Partial<SessionSettings> = {\n\t\tnetworks: [{\n\t\t\t...networks[findSupportedNetwork(env.CHAIN_HANDLE)!.chainId],\n\t\t\trpcUrl: findSupportedNetwork(env.CHAIN_HANDLE)!.rpcUrl,\n\t\t\tprovider: provider,\n\t\t\trelayer: {\n\t\t\t\turl: relayerUrl,\n\t\t\t\tprovider: {\n\t\t\t\t\turl: findSupportedNetwork(env.CHAIN_HANDLE)!.rpcUrl\n\t\t\t\t}\n\t\t\t}\n\t\t}],\n\t}\n \n // create a single signer sequence wallet session\n\tconst session = await Session.singleSigner({\n\t\tsettings: settings,\n\t\tsigner: walletEOA,\n\t\tprojectAccessKey: env.PROJECT_ACCESS_KEY\n\t})\n \n\t// get signer\n\tconst signer = session.account.getSigner(findSupportedNetwork(env.CHAIN_HANDLE)!.chainId)\n \n\t// create interface from partial abi\n\tconst collectibleInterface = new ethers.utils.Interface([\n\t\t'function mint(address to, uint256 tokenId, uint256 amount, bytes data)'\n\t])\n \n\t// create calldata\n\tconst data = collectibleInterface.encodeFunctionData(\n\t\t'mint', [address, tokenId, 1, "0x00"]\n\t)\n \n\t// create transaction object\n\tconst txn = { to: contractAddress, data }\n \n\ttry {\n\t\treturn await signer.sendTransaction(txn)\n\t} catch (err) {\n\t\tthrow err\n\t}\n}\nOnce these steps are complete, you can redeploy and test with the steps outlined in this prior step, and this time the POST request should return a transaction hash for the completed mint and the GET request would return a block number.\nIf you want to browse the full code, see an example implementation here","title":"4. Mint a collectible to wallet","titles":["Mint Collectibles Using a Gasless Serverless Relayer"]},"92":{"href":"/guides/templates/template-embedded-wallet#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"93":{"href":"/guides/templates/template-embedded-wallet#try-a-demo","html":"\n\n","isPage":false,"text":"\nTry out seamless UX of our embedded wallet at our demo\n","title":"Try a Demo","titles":["Quickstart"]},"94":{"href":"/guides/templates/template-embedded-wallet#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template leveraging our embedded wallet.\n","title":"Template","titles":["Quickstart"]},"95":{"href":"/guides/templates/template-embedded-wallet#getting-started","html":"\n","isPage":false,"text":"\n","title":"Getting Started","titles":["Quickstart"]},"96":{"href":"/guides/templates/template-embedded-wallet#sdk-installation","html":"\n

We provide TypeScript and Unity SDKs for the Embedded Wallet authentication system. You can install the TypeScript SDK with:

\n
pnpm install @0xsequence/waas
\n

For more information on the Unity Embedded Wallet SDK, please refer to the TODO add link Unity SDK documentation

\n","isPage":false,"text":"\nWe provide TypeScript and Unity SDKs for the Embedded Wallet authentication system. You can install the TypeScript SDK with:\npnpm install @0xsequence/waas\nFor more information on the Unity Embedded Wallet SDK, please refer to the TODO add link Unity SDK documentation\n","title":"SDK Installation","titles":["Quickstart","Getting Started"]},"97":{"href":"/guides/templates/template-embedded-wallet#project-setup","html":"\n

Sequence Embedded Wallet is currently only available as a closed beta. To start using the Embedded Wallet SDKs, you'll need to contact the Sequence team and acquire API credentials. Once this is done, you will be provided with two keys:

\n\n","isPage":false,"text":"\nSequence Embedded Wallet is currently only available as a closed beta. To start using the Embedded Wallet SDKs, you'll need to contact the Sequence team and acquire API credentials. Once this is done, you will be provided with two keys:\n\nProject access key\nEmbedded Wallet configuration key\n\n","title":"Project Setup","titles":["Quickstart","Getting Started"]},"98":{"href":"/guides/templates/template-embedded-wallet#library-setup","html":"\n

To start using Sequence Embedded Wallet SDK, you'll need to create a new instance of the waas class:

\n
import { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n  projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n  waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n  network: 'mumbai'\n}, defaults.TEST)
\n

Note that the library is operational, but it can't be used to interact with any wallet until you have authenticated as a user.

","isPage":false,"text":"\nTo start using Sequence Embedded Wallet SDK, you'll need to create a new instance of the waas class:\nimport { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: 'mumbai'\n}, defaults.TEST)\nNote that the library is operational, but it can't be used to interact with any wallet until you have authenticated as a user.","title":"Library Setup","titles":["Quickstart","Getting Started"]},"99":{"href":"/sdk/go/overview#go","html":"\n

A complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.

\n

go-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.

\n","isPage":true,"text":"\nA complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.\ngo-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.\n","title":"Go","titles":[null,null]},"100":{"href":"/sdk/go/overview#ethkit","html":"\n

As part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.

","isPage":false,"text":"\nAs part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.","title":"ethkit","titles":[null,null]},"101":{"href":"/sdk/sequence-kit/01-overview#sequencekit-sdk","html":"\n

Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.

\n","isPage":true,"text":"\nSequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.\n","title":"SequenceKit SDK","titles":[]},"102":{"href":"/sdk/sequence-kit/01-overview#key-features","html":"\n\n

Explore the potential of Sequence Kit by trying out our demo!

\n
","isPage":false,"text":"\n\n\nUniversal Connections: Seamlessly connect via popular social logins such as Facebook, Google, Discord, and more! Your users will enjoy a smooth, secure onboarding process. 🔐🪪\n\n\nWeb3 Wallet Integration: Effortlessly integrate with leading web3 wallets like WalletConnect and MetaMask. Unleash the power of blockchain with just a few clicks! 🦊 ⛓️\n\n\nEmbedded Wallet Experience: Provide your users with a comprehensive embedded wallet, enabling them to manage their coins and collectibles all within your own application. 👛 🖼️ 🪙\n\n\nExplore the potential of Sequence Kit by trying out our demo!\n","title":"Key Features","titles":["SequenceKit SDK"]},"103":{"href":"/sdk/sequence-kit/01-overview#next-steps","html":"
\n

Ready to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.

","isPage":false,"text":"\nReady to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.","title":"Next Steps","titles":[]},"104":{"href":"/sdk/sequence-kit/02-getting-started#getting-started-with-sequence-kit","html":"\n

In this guide, we will walk you through installing Sequence Kit, triggering the connection modal, and displaying the embedded wallet in your application.

\n","isPage":true,"text":"\nIn this guide, we will walk you through installing Sequence Kit, triggering the connection modal, and displaying the embedded wallet in your application.\n","title":"Getting Started with Sequence Kit","titles":[]},"105":{"href":"/sdk/sequence-kit/02-getting-started#installing-sequence-kit-packages","html":"\n

Sequence Kit is modular, allowing you to install only the necessary packages. To get started, install the kit core package, the connectors package for interfacing with various wallet providers, and the wallet for the embedded wallet. Additionally, install other dependencies such as wagmi, viem, and 0xsequence.

\n
npm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n# or\npnpm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n# or\nyarn add @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query
\n
","isPage":false,"text":"\nSequence Kit is modular, allowing you to install only the necessary packages. To get started, install the kit core package, the connectors package for interfacing with various wallet providers, and the wallet for the embedded wallet. Additionally, install other dependencies such as wagmi, viem, and 0xsequence.\nnpm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n# or\npnpm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n# or\nyarn add @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n","title":"Installing Sequence Kit Packages","titles":["Getting Started with Sequence Kit"]},"106":{"href":"/sdk/sequence-kit/02-getting-started#setting-up-the-kit-wrapper","html":"
\n

To utilize the core kit wrapper for connecting web3 wallets to your application, follow these steps:

\n
    \n
  1. Configure wagmi for your app. Below is a basic wagmi configuration. For advanced configurations, please refer to the wagmi documentation.
  2. \n
\n
import MyPage from './components/MyPage'\nimport { KitProvider } from '@0xsequence/kit'\nimport { getDefaultConnectors } from '@0xsequence/kit-connectors'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { createConfig, http, WagmiProvider } from 'wagmi'\nimport { mainnet, polygon, Chain } from 'wagmi/chains'\n \nconst queryClient = new QueryClient() \n \nfunction App() {\n  const chains = [mainnet, polygon] as [Chain, ...Chain[]]\n  \n  const projectAccessKey = '<access-key>'\n \n  const connectors = getDefaultConnectors({\n    walletConnectProjectId: 'wallet-connect-id',\n    defaultChainId: 137,\n    appName: 'demo app',\n    projectAccessKey\n  })\n \n  const transports = {}\n \n  chains.forEach(chain => {\n    transports[chain.id] = http()\n  })\n  \n  const config = createConfig({\n    transports,\n    connectors,\n    chains\n  })\n \n  return (\n    <WagmiConfig config={config}>\n      <QueryClientProvider client={queryClient}> \n        <KitProvider>\n          <MyPage />\n        </KitProvider>\n      </QueryClientProvider>\n    </WagmiConfig>\n  );\n}
\n
    \n
  1. Wrap your app with the KitProvider within the WagmiConfig wrapper.
  2. \n
\n
","isPage":false,"text":"\nTo utilize the core kit wrapper for connecting web3 wallets to your application, follow these steps:\n\nConfigure wagmi for your app. Below is a basic wagmi configuration. For advanced configurations, please refer to the wagmi documentation.\n\nimport MyPage from './components/MyPage'\nimport { KitProvider } from '@0xsequence/kit'\nimport { getDefaultConnectors } from '@0xsequence/kit-connectors'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { createConfig, http, WagmiProvider } from 'wagmi'\nimport { mainnet, polygon, Chain } from 'wagmi/chains'\n \nconst queryClient = new QueryClient() \n \nfunction App() {\n const chains = [mainnet, polygon] as [Chain, ...Chain[]]\n \n const projectAccessKey = '<access-key>'\n \n const connectors = getDefaultConnectors({\n walletConnectProjectId: 'wallet-connect-id',\n defaultChainId: 137,\n appName: 'demo app',\n projectAccessKey\n })\n \n const transports = {}\n \n chains.forEach(chain => {\n transports[chain.id] = http()\n })\n \n const config = createConfig({\n transports,\n connectors,\n chains\n })\n \n return (\n <WagmiConfig config={config}>\n <QueryClientProvider client={queryClient}> \n <KitProvider>\n <MyPage />\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n );\n}\n\nWrap your app with the KitProvider within the WagmiConfig wrapper.\n\n","title":"Setting Up the Kit Wrapper","titles":[]},"107":{"href":"/sdk/sequence-kit/02-getting-started#setting-up-the-embedded-wallet-wrapper","html":"
\n

To install the optional embedded wallet, add the KitWalletProvider below the KitProvider wrapper.

\n
import { KitWalletProvider } from '@0xsequence/kit-wallet'\n \n// ...\n \nconst App = () => {\n  return (\n    <WagmiConfig config={config}>\n      <QueryClientProvider client={queryClient}> \n        <KitProvider config={kitConfig}>\n          <KitWalletProvider>\n            <Page />\n          </KitWalletProvider>\n        </KitProvider>\n      </QueryClientProvider>\n    </WagmiConfig>\n  )\n}
\n

The complete code will then look like this:

\n
import MyPage from './components/MyPage'\nimport { KitProvider } from '@0xsequence/kit'\nimport { getDefaultConnectors } from '@0xsequence/kit-connectors'\nimport { KitWalletProvider } from '@0xsequence/kit-wallet'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { createConfig, http, WagmiProvider } from 'wagmi'\nimport { mainnet, polygon, Chain } from 'wagmi/chains'\n \nconst queryClient = new QueryClient() \n \nfunction App() {\n  const chains = [mainnet, polygon] as [Chain, ...Chain[]]\n  \n  const projectAccessKey = '<access-key>'\n \n  const connectors = getDefaultConnectors({\n    walletConnectProjectId: 'wallet-connect-id',\n    defaultChainId: 137,\n    appName: 'demo app',\n    projectAccessKey\n  })\n \n  const transports = {}\n \n  chains.forEach(chain => {\n    transports[chain.id] = http()\n  })\n  \n  const config = createConfig({\n    transports,\n    connectors,\n    chains\n  })\n \n  return (\n    <WagmiConfig config={config}>\n      <QueryClientProvider client={queryClient}> \n        <KitProvider>\n          <KitWalletProvider>\n            <MyPage />\n          </KitWalletProvider>\n        </KitProvider>\n      </QueryClientProvider>\n    </WagmiConfig>\n  );\n}
\n
","isPage":false,"text":"\nTo install the optional embedded wallet, add the KitWalletProvider below the KitProvider wrapper.\nimport { KitWalletProvider } from '@0xsequence/kit-wallet'\n \n// ...\n \nconst App = () => {\n return (\n <WagmiConfig config={config}>\n <QueryClientProvider client={queryClient}> \n <KitProvider config={kitConfig}>\n <KitWalletProvider>\n <Page />\n </KitWalletProvider>\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n )\n}\nThe complete code will then look like this:\nimport MyPage from './components/MyPage'\nimport { KitProvider } from '@0xsequence/kit'\nimport { getDefaultConnectors } from '@0xsequence/kit-connectors'\nimport { KitWalletProvider } from '@0xsequence/kit-wallet'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { createConfig, http, WagmiProvider } from 'wagmi'\nimport { mainnet, polygon, Chain } from 'wagmi/chains'\n \nconst queryClient = new QueryClient() \n \nfunction App() {\n const chains = [mainnet, polygon] as [Chain, ...Chain[]]\n \n const projectAccessKey = '<access-key>'\n \n const connectors = getDefaultConnectors({\n walletConnectProjectId: 'wallet-connect-id',\n defaultChainId: 137,\n appName: 'demo app',\n projectAccessKey\n })\n \n const transports = {}\n \n chains.forEach(chain => {\n transports[chain.id] = http()\n })\n \n const config = createConfig({\n transports,\n connectors,\n chains\n })\n \n return (\n <WagmiConfig config={config}>\n <QueryClientProvider client={queryClient}> \n <KitProvider>\n <KitWalletProvider>\n <MyPage />\n </KitWalletProvider>\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n );\n}\n","title":"Setting Up the Embedded Wallet Wrapper","titles":[]},"108":{"href":"/sdk/sequence-kit/02-getting-started#triggering-the-connect-modal","html":"
\n
\n

Invoke the connect modal using the useOpenConnectModal hook.

\n
import { useOpenConnectModal } from '@0xsequence/kit'\nimport { useDisconnect, useAccount } from 'wagmi'\n \n \nconst MyReactComponent = () => {\n  const { setOpenConnectModal } = useOpenConnectModal()\n \n  const { isConnected } = useAccount()\n \n  const onClick = () => {\n    setOpenConnectModal(true)\n  }\n \n  return (\n    <>\n      {!isConnected && (\n        <button onClick={onClick}>\n          Sign in\n        </button>\n      )}\n    </>\n  )\n}
\n

The modal will automatically close once the user signs in. You can utilize the useAccount hook from wagmi to detect the user's connection status.

\n
","isPage":false,"text":"\n\nInvoke the connect modal using the useOpenConnectModal hook.\nimport { useOpenConnectModal } from '@0xsequence/kit'\nimport { useDisconnect, useAccount } from 'wagmi'\n \n \nconst MyReactComponent = () => {\n const { setOpenConnectModal } = useOpenConnectModal()\n \n const { isConnected } = useAccount()\n \n const onClick = () => {\n setOpenConnectModal(true)\n }\n \n return (\n <>\n {!isConnected && (\n <button onClick={onClick}>\n Sign in\n </button>\n )}\n </>\n )\n}\nThe modal will automatically close once the user signs in. You can utilize the useAccount hook from wagmi to detect the user's connection status.\n","title":"Triggering the Connect Modal","titles":[]},"109":{"href":"/sdk/sequence-kit/02-getting-started#invoking-the-embedded-wallet-modal","html":"
\n
\n

Open the embedded wallet using the useOpenWalletModal react hook.

\n
import { useOpenWalletModal } from '@0xsequence/kit-wallet'\n \nconst MyComponent = () => {\n  const { setOpenWalletModal } = useOpenWalletModal()\n \n  const onClick = () => {\n    setOpenWalletModal(true)\n  }\n \n  return (\n    <button onClick={onClick}>open wallet</button>\n  )\n}
\n
","isPage":false,"text":"\n\nOpen the embedded wallet using the useOpenWalletModal react hook.\nimport { useOpenWalletModal } from '@0xsequence/kit-wallet'\n \nconst MyComponent = () => {\n const { setOpenWalletModal } = useOpenWalletModal()\n \n const onClick = () => {\n setOpenWalletModal(true)\n }\n \n return (\n <button onClick={onClick}>open wallet</button>\n )\n}\n","title":"Invoking the embedded wallet modal","titles":[]},"110":{"href":"/sdk/sequence-kit/02-getting-started#react-example","html":"
\n

The Sequence Kit Github repository contains an example app that you can use for learning and testing.

","isPage":false,"text":"\nThe Sequence Kit Github repository contains an example app that you can use for learning and testing.","title":"React Example","titles":[]},"111":{"href":"/sdk/sequence-kit/03-configuration#configuration-options","html":"\n

Developers can customize the Sequence Kit experience by passing configuration options to the KitProvider wrapper.

\n

Here's how you can configure the kit using these options:

\n
 \n  const kitConfig =  {\n\t\tdefaultTheme: 'light',\n\t\tposition: 'top-left',\n\t\t...\n\t}\n \n  <KitProvider config={kitConfig}>\n    <App />\n  <KitProvider>\n 
\n
","isPage":true,"text":"\nDevelopers can customize the Sequence Kit experience by passing configuration options to the KitProvider wrapper.\nHere's how you can configure the kit using these options:\n \n const kitConfig = {\n\t\tdefaultTheme: 'light',\n\t\tposition: 'top-left',\n\t\t...\n\t}\n \n <KitProvider config={kitConfig}>\n <App />\n <KitProvider>\n \n","title":"Configuration Options","titles":[]},"112":{"href":"/sdk/sequence-kit/03-configuration#available-options","html":"
\n","isPage":false,"text":"\n","title":"Available Options","titles":[]},"113":{"href":"/sdk/sequence-kit/03-configuration#defaulttheme","html":"\n
TypeDefault
string or objectdark
\n

The defaultTheme determines the color palette used for styling the modal. Possible values include:

\n\n

Specific colors can be overwritten by passing a theme override object. The Sequence Builder provides a useful playground for toying with the colors in Sequence Kit.

\n","isPage":false,"text":"\nTypeDefaultstring or objectdark\nThe defaultTheme determines the color palette used for styling the modal. Possible values include:\n\n'light'\n'dark'\nobject\n\nSpecific colors can be overwritten by passing a theme override object. The Sequence Builder provides a useful playground for toying with the colors in Sequence Kit.\n","title":"defaultTheme","titles":["Available Options"]},"114":{"href":"/sdk/sequence-kit/03-configuration#position","html":"\n
TypeDefault
stringcenter
\n

The position parameter determines the location of the various modals on the screen. Possible values include:

\n\n","isPage":false,"text":"\nTypeDefaultstringcenter\nThe position parameter determines the location of the various modals on the screen. Possible values include:\n\ncenter\nmiddle-right\nmiddle-left\ntop-center\ntop-right\ntop-left\nbottom-center\nbottom-right\nbottom-left\n\n","title":"position","titles":["Available Options"]},"115":{"href":"/sdk/sequence-kit/03-configuration#sign-in-modal-configuration-signin","html":"\n

The signIn object is used to configure the sign in modal.

\n","isPage":false,"text":"\nThe signIn object is used to configure the sign in modal.\n","title":"Sign In Modal Configuration (signIn)","titles":["Available Options"]},"116":{"href":"/sdk/sequence-kit/03-configuration#signinlogourl","html":"\n
\n
TypeDefault
stringundefined
\n

URL of the logo to be shown in the sign in modal.

\n","isPage":false,"text":"\n\nTypeDefaultstringundefined\nURL of the logo to be shown in the sign in modal.\n","title":"signIn.logoUrl","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"117":{"href":"/sdk/sequence-kit/03-configuration#signinprojectname","html":"\n
\n
TypeDefault
stringundefined
\n

Name of the project to be shown in the sign in modal.

\n","isPage":false,"text":"\n\nTypeDefaultstringundefined\nName of the project to be shown in the sign in modal.\n","title":"signIn.projectName","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"118":{"href":"/sdk/sequence-kit/03-configuration#signinshowemailinput","html":"\n
\n
TypeDefault
booleantrue
\n

Determines whether the inline email input will be shown in the sign in modal.

\n","isPage":false,"text":"\n\nTypeDefaultbooleantrue\nDetermines whether the inline email input will be shown in the sign in modal.\n","title":"signIn.showEmailInput","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"119":{"href":"/sdk/sequence-kit/03-configuration#signinsocialauthoptions","html":"\n
\n
TypeDefault
string[]['google', 'facebook', 'twitch', 'apple']
\n

Determines which authentication options will be shown as social options in the sign in modal.\nThe wallets will be displayed in the order they are passed in the array. The values correspond to the connector's id and a corresponding connector must be passed down to wagmi.

\n

For a full list of official connectors, see the connectors page.

\n","isPage":false,"text":"\n\nTypeDefaultstring[]['google', 'facebook', 'twitch', 'apple']\nDetermines which authentication options will be shown as social options in the sign in modal.\nThe wallets will be displayed in the order they are passed in the array. The values correspond to the connector's id and a corresponding connector must be passed down to wagmi.\nFor a full list of official connectors, see the connectors page.\n","title":"signIn.socialAuthOptions","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"120":{"href":"/sdk/sequence-kit/03-configuration#signinwalletauthoptions","html":"\n
\n
TypeDefault
string[]['sequence', 'metamask', 'wallet-connect', 'coinbase-wallet']
\n

Determines which authentication options will be shown in the modal as web3 wallet options.\nThe wallets will be displayed in the order they are passed in the array. The values correspond to the connector's id and a corresponding connector must be passed down to wagmi.

\n

For a full list of official connectors, see the connectors page.

\n","isPage":false,"text":"\n\nTypeDefaultstring[]['sequence', 'metamask', 'wallet-connect', 'coinbase-wallet']\nDetermines which authentication options will be shown in the modal as web3 wallet options.\nThe wallets will be displayed in the order they are passed in the array. The values correspond to the connector's id and a corresponding connector must be passed down to wagmi.\nFor a full list of official connectors, see the connectors page.\n","title":"signIn.walletAuthOptions","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"121":{"href":"/sdk/sequence-kit/03-configuration#displayedassets","html":"\n
TypeDefault
[{ contractAddress: string, chainId: number }, ...]undefined
\n

If provided, this will determine which assets are to be displayed in the embedded wallet modal main view.\nBy passing a list of displayed assets, only assets from the provided list will be displayed in the main view.\nIn the case that no assets are provided, all owned assets can be displayed in the main view.

","isPage":false,"text":"\nTypeDefault[{ contractAddress: string, chainId: number }, ...]undefined\nIf provided, this will determine which assets are to be displayed in the embedded wallet modal main view.\nBy passing a list of displayed assets, only assets from the provided list will be displayed in the main view.\nIn the case that no assets are provided, all owned assets can be displayed in the main view.","title":"displayedAssets","titles":["Available Options"]},"122":{"href":"/sdk/sequence-kit/04-checkout#overview","html":"\n

The checkout modal enables developers to easily facilitate cryptocurrency payments.

\n
\n
","isPage":true,"text":"\nThe checkout modal enables developers to easily facilitate cryptocurrency payments.\n\n","title":"Overview","titles":[]},"123":{"href":"/sdk/sequence-kit/04-checkout#integration","html":"
\n

To integrate the checkout feature, follow these steps:

\n
    \n
  1. Install the kit-checkout module:
  2. \n
\n
npm install @0xsequence/kit-checkout\n# or\npnpm install @0xsequence/kit-checkout\n# or\nyarn add @0xsequence/kit-checkout
\n
    \n
  1. Place the KitCheckoutProvider below the Sequence Kit Core provider in your app:
  2. \n
\n
import { KitCheckoutProvider } from '@0xsequence/kit-checkout'\n \n \nconst App = () => {\n  return (\n    <WagmiConfig config={config}>\n      <QueryClientProvider client={queryClient}> \n        <KitProvider>\n          <KitCheckoutProvider>\n            <Page />\n          </KitCheckoutProvider>\n        </KitProvider>\n      </QueryClientProvider>\n    </WagmiConfig>\n  )\n}
\n","isPage":false,"text":"\nTo integrate the checkout feature, follow these steps:\n\nInstall the kit-checkout module:\n\nnpm install @0xsequence/kit-checkout\n# or\npnpm install @0xsequence/kit-checkout\n# or\nyarn add @0xsequence/kit-checkout\n\nPlace the KitCheckoutProvider below the Sequence Kit Core provider in your app:\n\nimport { KitCheckoutProvider } from '@0xsequence/kit-checkout'\n \n \nconst App = () => {\n return (\n <WagmiConfig config={config}>\n <QueryClientProvider client={queryClient}> \n <KitProvider>\n <KitCheckoutProvider>\n <Page />\n </KitCheckoutProvider>\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n )\n}\n","title":"Integration","titles":[]},"124":{"href":"/sdk/sequence-kit/04-checkout#opening-the-checkout-modal","html":"\n

Use the useCheckoutModal hook to open the checkout modal and pass a settings object:

\n
  import { useCheckoutModal } from '@0xsequence/kit-checkout'\n \n \n  const MyComponent = () => {\n    const { triggerCheckout } = useCheckoutModal()\n  \n    const onClick = () => {\n      const checkoutSettings = {...}\n      triggerCheckout(checkoutSettings)\n    }\n \n    return (\n      <button onClick={onClick}>checkout</button>\n    )\n  }
\n","isPage":false,"text":"\nUse the useCheckoutModal hook to open the checkout modal and pass a settings object:\n import { useCheckoutModal } from '@0xsequence/kit-checkout'\n \n \n const MyComponent = () => {\n const { triggerCheckout } = useCheckoutModal()\n \n const onClick = () => {\n const checkoutSettings = {...}\n triggerCheckout(checkoutSettings)\n }\n \n return (\n <button onClick={onClick}>checkout</button>\n )\n }\n","title":"Opening the Checkout modal","titles":["Integration"]},"125":{"href":"/sdk/sequence-kit/04-checkout#configuring-the-checkout-modal","html":"\n

Configure the checkout modal using the checkoutSettings object:

\n
const checkoutSettings = {\n  cryptoCheckout: {...},\n  orderSummaryItems: {...}\n}
\n","isPage":false,"text":"\nConfigure the checkout modal using the checkoutSettings object:\nconst checkoutSettings = {\n cryptoCheckout: {...},\n orderSummaryItems: {...}\n}\n","title":"Configuring the Checkout modal","titles":["Integration"]},"126":{"href":"/sdk/sequence-kit/04-checkout#crypto-checkout-configuration-cryptocheckout","html":"\n

The cryptoCheckout field specifies settings for checking out with cryptocurrency, e.g., interacting with a minting contract or marketplace contract.

\n

Example configuration:

\n
cons checkoutConfig = {\n  // ...\n  cryptoCheckout: {\n    chainId: 137,\n    triggerTransaction: async () => { console.log('triggered transaction') },\n    coinQuantity: {\n      contractAddress: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',\n      amountRequiredRaw: '10000000000'\n    },\n  },\n}
\n","isPage":false,"text":"\nThe cryptoCheckout field specifies settings for checking out with cryptocurrency, e.g., interacting with a minting contract or marketplace contract.\nExample configuration:\ncons checkoutConfig = {\n // ...\n cryptoCheckout: {\n chainId: 137,\n triggerTransaction: async () => { console.log('triggered transaction') },\n coinQuantity: {\n contractAddress: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',\n amountRequiredRaw: '10000000000'\n },\n },\n}\n","title":"Crypto Checkout Configuration (cryptoCheckout)","titles":["Integration","Configuring the Checkout modal"]},"127":{"href":"/sdk/sequence-kit/04-checkout#order-summary-configuration-ordersummaryitems","html":"\n

The orderSummaryItems field specifies the list of collectibles shown in the order summary.

\n

Example configuration:

\n
    orderSummaryItems: [\n      {\n        contractAddress: '0x631998e91476da5b870d741192fc5cbc55f5a52e',\n        tokenId: '66597',\n        quantityRaw: '100'\n      },\n    ]
","isPage":false,"text":"\nThe orderSummaryItems field specifies the list of collectibles shown in the order summary.\nExample configuration:\n orderSummaryItems: [\n {\n contractAddress: '0x631998e91476da5b870d741192fc5cbc55f5a52e',\n tokenId: '66597',\n quantityRaw: '100'\n },\n ]","title":"Order Summary Configuration (orderSummaryItems)","titles":["Integration","Configuring the Checkout modal"]},"128":{"href":"/sdk/sequence-kit/05-custom-connectors#custom-connectors-in-sequence-kit","html":"\n

Sequence Kit provides official connectors via the @0xsequence/kit-connectors package. However, you can also integrate custom connectors with Sequence Kit to support additional wallets. This guide will walk you through creating and using custom connectors.

\n","isPage":true,"text":"\nSequence Kit provides official connectors via the @0xsequence/kit-connectors package. However, you can also integrate custom connectors with Sequence Kit to support additional wallets. This guide will walk you through creating and using custom connectors.\n","title":"Custom Connectors in Sequence Kit","titles":[]},"129":{"href":"/sdk/sequence-kit/05-custom-connectors#creating-a-custom-connector","html":"\n

To create a custom connector, you can use an existing connector as a basis. For example, the Metamask Connector is a good starting point. Here's an example of how to create a custom connector:

\n
export const myCustomConnector = (options: MyCustomConnectorOptions) => ({\n  id: 'my-custom-connector',\n  name: 'My Custom Connector',\n  logoDark: MyCustomLogoDark,\n  logoLight: MyCustomLogoLight,\n  createConnector: () => {\n    const connector = myCustomConnector(options);\n    return connector;\n  },\n});
\n

Make sure to provide a unique id for your connector to avoid conflicts with other connectors. You can also customize fields such as name, logoDark, and logoLight to control how the connector appears in Sequence Kit.

\n

The createConnector function should return an initialized connector. Sequence Kit connectors are wrappers of Wagmi connectors, so you can use an official Wagmi connector if available, or create your own if needed.

\n

For more details on creating custom connectors, refer to Wagmi's guide on Custom Connectors.

\n
","isPage":false,"text":"\nTo create a custom connector, you can use an existing connector as a basis. For example, the Metamask Connector is a good starting point. Here's an example of how to create a custom connector:\nexport const myCustomConnector = (options: MyCustomConnectorOptions) => ({\n id: 'my-custom-connector',\n name: 'My Custom Connector',\n logoDark: MyCustomLogoDark,\n logoLight: MyCustomLogoLight,\n createConnector: () => {\n const connector = myCustomConnector(options);\n return connector;\n },\n});\nMake sure to provide a unique id for your connector to avoid conflicts with other connectors. You can also customize fields such as name, logoDark, and logoLight to control how the connector appears in Sequence Kit.\nThe createConnector function should return an initialized connector. Sequence Kit connectors are wrappers of Wagmi connectors, so you can use an official Wagmi connector if available, or create your own if needed.\nFor more details on creating custom connectors, refer to Wagmi's guide on Custom Connectors.\n","title":"Creating a Custom Connector","titles":["Custom Connectors in Sequence Kit"]},"130":{"href":"/sdk/sequence-kit/05-custom-connectors#using-custom-connectors","html":"
\n

When using custom connectors, you can't rely on the getDefaultConnectors utility function. Instead, you need to pass custom configurations to Sequence Kit.

\n

First, create a list of connectors, including your custom connector, and provide it to the Wagmi configuration:

\n
import { getKitConnectWallets } from '@0xsequence/kit';\n \nconst connectors = getKitConnectWallets([\n  google({\n    defaultNetwork: 137,\n    connect: {\n      app: 'my-app',\n      projectAccessKey: '<access-key>'\n    }\n  }),\n  // ... other connectors\n  myCustomConnector({ appName: 'my-app' }),\n]);\n \nconst config = createConfig({\n  transports,\n  connectors,\n  chains\n})
\n

Next, use your custom connector by specifying its id in either the socialAuthOptions or walletAuthOptions field of the Sequence Kit configuration:

\n
const kitConfig = {\n  signIn: {\n    socialAuthOptions: ['google', 'facebook'],\n    walletAuthOptions: ['metamask', 'my-custom-connector'],\n  }\n};\n \nreturn (\n  <WagmiConfig config={wagmiConfig}>\n    <QueryClientProvider client={queryClient}>\n      <KitProvider config={kitConfig}>\n        <App />\n      </KitProvider>\n    </QueryClientProvider>\n  </WagmiConfig>\n);
\n
","isPage":false,"text":"\nWhen using custom connectors, you can't rely on the getDefaultConnectors utility function. Instead, you need to pass custom configurations to Sequence Kit.\nFirst, create a list of connectors, including your custom connector, and provide it to the Wagmi configuration:\nimport { getKitConnectWallets } from '@0xsequence/kit';\n \nconst connectors = getKitConnectWallets([\n google({\n defaultNetwork: 137,\n connect: {\n app: 'my-app',\n projectAccessKey: '<access-key>'\n }\n }),\n // ... other connectors\n myCustomConnector({ appName: 'my-app' }),\n]);\n \nconst config = createConfig({\n transports,\n connectors,\n chains\n})\nNext, use your custom connector by specifying its id in either the socialAuthOptions or walletAuthOptions field of the Sequence Kit configuration:\nconst kitConfig = {\n signIn: {\n socialAuthOptions: ['google', 'facebook'],\n walletAuthOptions: ['metamask', 'my-custom-connector'],\n }\n};\n \nreturn (\n <WagmiConfig config={wagmiConfig}>\n <QueryClientProvider client={queryClient}>\n <KitProvider config={kitConfig}>\n <App />\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n);\n","title":"Using Custom Connectors","titles":[]},"131":{"href":"/sdk/sequence-kit/05-custom-connectors#share-your-custom-connectors","html":"
\n

Feel free to contribute your custom connectors by creating a pull request. This way, others can benefit from your work and enjoy seamless integration with Sequence Kit.

\n

Share the love ❤️ by expanding the ecosystem of custom connectors!

","isPage":false,"text":"\nFeel free to contribute your custom connectors by creating a pull request. This way, others can benefit from your work and enjoy seamless integration with Sequence Kit.\nShare the love ❤️ by expanding the ecosystem of custom connectors!","title":"Share Your Custom Connectors","titles":[]},"132":{"href":"/sdk/unity/01-overview#introduction","html":"\n

The Sequence Unity Embedded Wallet SDK provides full Sequence Embedded Wallet and Indexer integration for your Unity Games, integrated with our own purpose-built for Unity SequenceEthereum library. That's right, no Nethereum required!

\n

This SDK follows Semantic Versioning (major.minor.patch). While we're still in 0.x.y builds, API breaking changes can be made at any time. After 1.0.0, breaking changes will always cause a major version increment, non-breaking new features will cause a minor version increment, and bugfixes will cause a patch version increment.

\n","isPage":true,"text":"\nThe Sequence Unity Embedded Wallet SDK provides full Sequence Embedded Wallet and Indexer integration for your Unity Games, integrated with our own purpose-built for Unity SequenceEthereum library. That's right, no Nethereum required!\nThis SDK follows Semantic Versioning (major.minor.patch). While we're still in 0.x.y builds, API breaking changes can be made at any time. After 1.0.0, breaking changes will always cause a major version increment, non-breaking new features will cause a minor version increment, and bugfixes will cause a patch version increment.\n","title":"Introduction","titles":[]},"133":{"href":"/sdk/unity/01-overview#requirements","html":"\n

Unity 2021.3.6f1 or later

\n","isPage":false,"text":"\nUnity 2021.3.6f1 or later\n\nAndroid\niOS\nPC standalone\nMac standalone -> (Mono builds only when using Social Sign in -> in our testing MacOS doesn't pick up custom URL schemes automatically unless you run some system commands first; these system commands only work on Mono -> see OpenIdAuthentication.PlatformSpecificSetup)\nWebGL (excluding Social Sign in)\n","title":"Requirements","titles":["Introduction"]},"134":{"href":"/sdk/unity/02-installation#installation","html":"\n","isPage":true,"text":"\n","title":"Installation","titles":[]},"135":{"href":"/sdk/unity/02-installation#package-manager---recommended","html":"\n
    \n
  1. Ensure you have Git 2.14.0 or above installed on your machine
  2. \n
  3. Open Package Manager (Window > Package Manager)
  4. \n
  5. Click the "+" icon in the Package Manager window > "Add package from git URL..."
  6. \n
  7. Paste this url and click Add or press Enter on your keyboard https://github.com/0xsequence/sequence-unity.git?path=/Assets
  8. \n
  9. From Package Manager, click on "Samples"
  10. \n
  11. Import "Setup" from Samples\n\"Setup\"/
  12. \n
\n

a) This will import a Resources folder with the SequenceConfig scriptable object (more on this in Setup).

\n

b) This will also import an Editor folder with a Post Process Build script that will setup social sign in for you automatically on MacOS and iOS.

\n
    \n
  1. Import TMP Essentials (if you haven't already). Note: Unity should prompt you to do this automatically if you attempt to Play or Build with a TextMeshPro object in your scene.
  2. \n
\n

\"Import

\n","isPage":false,"text":"\n\nEnsure you have Git 2.14.0 or above installed on your machine\nOpen Package Manager (Window > Package Manager)\nClick the "+" icon in the Package Manager window > "Add package from git URL..."\nPaste this url and click Add or press Enter on your keyboard https://github.com/0xsequence/sequence-unity.git?path=/Assets\nFrom Package Manager, click on "Samples"\nImport "Setup" from Samples\n\n\na) This will import a Resources folder with the SequenceConfig scriptable object (more on this in Setup).\nb) This will also import an Editor folder with a Post Process Build script that will setup social sign in for you automatically on MacOS and iOS.\n\nImport TMP Essentials (if you haven't already). Note: Unity should prompt you to do this automatically if you attempt to Play or Build with a TextMeshPro object in your scene.\n\n\n","title":"Package Manager - Recommended","titles":["Installation"]},"136":{"href":"/sdk/unity/02-installation#samples","html":"\n

In addition to this documentation, we've also provided you with a few samples to help with using our SDK.

\n

These can be found by:

\n
    \n
  1. Opening Package Manager
  2. \n
  3. Finding our SDK "Sequence WaaS SDK"
  4. \n
  5. Click on "Samples"
  6. \n
  7. Click "Import" next to any sample you wish to install. This will create a Samples folder under Assets and import the sample there. The sample will be completely mutable as it lives within your Assets folder.
  8. \n
\n

\"Samples\"/

\n

The second sample "Demo Scene" is sample scene that showcases some of the features of our SDK. It serves as a useful supplement to the documentation.

\n

The third sample "Demo Tower Defense Game" is a sample game. We began with Unity's Tower Defense Template project and ripped out the save system to replace it with ERC1155s. When importing this sample game into your project, you may get a message "Script Updating Consent" that asks if you want to update the source files to the a newer API. This is because the template project was made on a much earlier version of Unity and some of the scripting APIs used by Unity have changed since the template project was created. You can simply click "Yes, just for these files". Note that, in order to play the demo game, there is some config you need to setup. However, even without configuring the game, we believe the Scripts within the project can be a useful resource when starting out.

\n

\"Update

\n","isPage":false,"text":"\nIn addition to this documentation, we've also provided you with a few samples to help with using our SDK.\nThese can be found by:\n\nOpening Package Manager\nFinding our SDK "Sequence WaaS SDK"\nClick on "Samples"\nClick "Import" next to any sample you wish to install. This will create a Samples folder under Assets and import the sample there. The sample will be completely mutable as it lives within your Assets folder.\n\n\nThe second sample "Demo Scene" is sample scene that showcases some of the features of our SDK. It serves as a useful supplement to the documentation.\nThe third sample "Demo Tower Defense Game" is a sample game. We began with Unity's Tower Defense Template project and ripped out the save system to replace it with ERC1155s. When importing this sample game into your project, you may get a message "Script Updating Consent" that asks if you want to update the source files to the a newer API. This is because the template project was made on a much earlier version of Unity and some of the scripting APIs used by Unity have changed since the template project was created. You can simply click "Yes, just for these files". Note that, in order to play the demo game, there is some config you need to setup. However, even without configuring the game, we believe the Scripts within the project can be a useful resource when starting out.\n\n","title":"Samples","titles":["Installation","Package Manager - Recommended"]},"137":{"href":"/sdk/unity/02-installation#manual","html":"\n

Installing via Package Manager will put the SDK in a read-only state - note: you will still be able to modify the UI when using Package Manager.

\n

For most use cases, this is ideal. However, we recognize that some advanced users will want the flexibility to edit the SDK as they see fit.

\n

Please note that if you do chose this route that updating the SDK will become more challenging because any changes you make will be overwritten and these changes can easily go unnoticed in a version control system. In general, we feel it is safer to import the SDK in read-only mode via Package Manager and write wrappers to extend as needed, but we empower you to work with our SDK how you see fit.

\n
    \n
  1. Add Newtonsoft.json to your project (if it isn't there already) via package manager. Click on the "+" icon in the Package Manager window > "Add package by name..." and add com.unity.nuget.newtonsoft-json.
  2. \n
  3. Download the latest release of the Sequence Unity SDK UnityPackage
  4. \n
  5. Drag the .unitypackage file into your project window and import it
  6. \n
  7. Import TMP Essentials (if you haven't already). Note: Unity should prompt you to do this automatically if you attempt to Play or Build with a TextMeshPro object in your scene.
  8. \n
","isPage":false,"text":"\nInstalling via Package Manager will put the SDK in a read-only state - note: you will still be able to modify the UI when using Package Manager.\nFor most use cases, this is ideal. However, we recognize that some advanced users will want the flexibility to edit the SDK as they see fit.\nPlease note that if you do chose this route that updating the SDK will become more challenging because any changes you make will be overwritten and these changes can easily go unnoticed in a version control system. In general, we feel it is safer to import the SDK in read-only mode via Package Manager and write wrappers to extend as needed, but we empower you to work with our SDK how you see fit.\n\nAdd Newtonsoft.json to your project (if it isn't there already) via package manager. Click on the "+" icon in the Package Manager window > "Add package by name..." and add com.unity.nuget.newtonsoft-json.\nDownload the latest release of the Sequence Unity SDK UnityPackage\nDrag the .unitypackage file into your project window and import it\nImport TMP Essentials (if you haven't already). Note: Unity should prompt you to do this automatically if you attempt to Play or Build with a TextMeshPro object in your scene.\n","title":"Manual","titles":["Installation"]},"138":{"href":"/sdk/unity/03-setup#setup","html":"\n
    \n
  1. \n

    Navigate to the Resources folder imported via the Setup sample and locate the SequenceConfig ScriptableObject

    \n

    a) If you imported the SDK manually, you will need to create a Resources folder and SequenceConfig

    \n

    b) Create a Resources folder located at Assets/Resources. The SDK uses Resources.Load to load the config ScriptableObject we'll create in the next step.

    \n

    c) On the top bar, click Assets > Create > Sequence > SequenceConfig and place the newly created ScriptableObject at the root of your Resources folder.

    \n
  2. \n
  3. \n

    Fill in SequenceConfig with the appropriate values for your project.

    \n

    a) Url Scheme - You must replace this with a string that is unique to your application. This is very important. Failure to do so will cause unexpected behaviour when signing in with social sign in and it will not work.

    \n

    b) Builder API Keys - These are found in the Builder under Settings > API Access Keys

    \n

    c) WaaS Config Key - This will be given to you by the Sequence team during WaaS onboarding

    \n
  4. \n
","isPage":true,"text":"\n\n\nNavigate to the Resources folder imported via the Setup sample and locate the SequenceConfig ScriptableObject\na) If you imported the SDK manually, you will need to create a Resources folder and SequenceConfig\nb) Create a Resources folder located at Assets/Resources. The SDK uses Resources.Load to load the config ScriptableObject we'll create in the next step.\nc) On the top bar, click Assets > Create > Sequence > SequenceConfig and place the newly created ScriptableObject at the root of your Resources folder.\n\n\nFill in SequenceConfig with the appropriate values for your project.\na) Url Scheme - You must replace this with a string that is unique to your application. This is very important. Failure to do so will cause unexpected behaviour when signing in with social sign in and it will not work.\nb) Builder API Keys - These are found in the Builder under Settings > API Access Keys\nc) WaaS Config Key - This will be given to you by the Sequence team during WaaS onboarding\n\n","title":"Setup","titles":[]},"139":{"href":"/sdk/unity/04-authentication#authentication","html":"\n

As a WaaS SDK, authentication is extremely important. Authentication works by establishing a session signing wallet through association with an OIDC idToken. For more on how our Embedded Wallet works, please see Embedded Wallet docs.

\n

To implement authentication, we recommend using our LoginPanel prefab. Locate this prefab under SequenceExamples > Prefabs and drag it under a Canvas in your scene.\nWe recommend having the Canvas Scaler component attached to your Canvas use the "Scale with Screen Size" UI Scale Mode. This will make it so that the LoginPanel (and any other UI elements under this Canvas) are scaled automatically when switching between build targets.

\n

Note: The LoginPanel is hidden by default. You can open it with the Open method and no arguments. To help with this, the LoginPanel GameObject is not disabled, so feel free to use GetComponentInChildren, FindObjectOfType, or similar to obtain a reference to the LoginPanel MonoBehaviour.

\n

This will provide you easy access to two authentication methods:

\n","isPage":true,"text":"\nAs a WaaS SDK, authentication is extremely important. Authentication works by establishing a session signing wallet through association with an OIDC idToken. For more on how our Embedded Wallet works, please see Embedded Wallet docs.\nTo implement authentication, we recommend using our LoginPanel prefab. Locate this prefab under SequenceExamples > Prefabs and drag it under a Canvas in your scene.\nWe recommend having the Canvas Scaler component attached to your Canvas use the "Scale with Screen Size" UI Scale Mode. This will make it so that the LoginPanel (and any other UI elements under this Canvas) are scaled automatically when switching between build targets.\nNote: The LoginPanel is hidden by default. You can open it with the Open method and no arguments. To help with this, the LoginPanel GameObject is not disabled, so feel free to use GetComponentInChildren, FindObjectOfType, or similar to obtain a reference to the LoginPanel MonoBehaviour.\nThis will provide you easy access to two authentication methods:\n","title":"Authentication","titles":[]},"140":{"href":"/sdk/unity/04-authentication#1-email-sign-in","html":"\n

Available on all platforms, email sign in leverages Amazon Cognito and provides the user with a 2FA challenge - a 6 digit code emailed to the entered address for the user to enter on the next page.\nOnce the user successfully completes the 2FA challenge, the SDK will receive an idToken in JWT format from Amazon Cognito and proceed to establish the session with WaaS API.

\n","isPage":false,"text":"\nAvailable on all platforms, email sign in leverages Amazon Cognito and provides the user with a 2FA challenge - a 6 digit code emailed to the entered address for the user to enter on the next page.\nOnce the user successfully completes the 2FA challenge, the SDK will receive an idToken in JWT format from Amazon Cognito and proceed to establish the session with WaaS API.\n","title":"1. Email Sign In","titles":["Authentication"]},"141":{"href":"/sdk/unity/04-authentication#2-social-sign-in","html":"\n

Available on all platforms except WebGL (currently), social sign in uses OIDC with the implicit flow to allow users to login via their existing Google, Discord, Facebook, or Apple accounts.\nOnce the user successfully signs in, an idToken is returned via deep link to the application.\nIn order to enable deep linking, we must register a custom URL scheme for our application. There are some platform specific requirements to set this up.

\nNote: social sign in does not work in the Editor as we cannot register a custom URL scheme.\n","isPage":false,"text":"\nAvailable on all platforms except WebGL (currently), social sign in uses OIDC with the implicit flow to allow users to login via their existing Google, Discord, Facebook, or Apple accounts.\nOnce the user successfully signs in, an idToken is returned via deep link to the application.\nIn order to enable deep linking, we must register a custom URL scheme for our application. There are some platform specific requirements to set this up.\nNote: social sign in does not work in the Editor as we cannot register a custom URL scheme.\n","title":"2. Social Sign in","titles":["Authentication"]},"142":{"href":"/sdk/unity/04-authentication#ios","html":"\n
    \n
  1. Open the iOS Player Settings window (menu: Edit > Project Settings > Player Settings, then select iOS).
  2. \n
  3. Select Other Settings, then scroll down to Configuration.
  4. \n
  5. Expand the Supported URL schemes section, and add 1 to the size.
  6. \n
  7. In the new Element N field, enter the URL scheme you've configured in SequenceConfig.
  8. \n
\n

\"iOS

\n","isPage":false,"text":"\n\nOpen the iOS Player Settings window (menu: Edit > Project Settings > Player Settings, then select iOS).\nSelect Other Settings, then scroll down to Configuration.\nExpand the Supported URL schemes section, and add 1 to the size.\nIn the new Element N field, enter the URL scheme you've configured in SequenceConfig.\n\n\n","title":"iOS","titles":["Authentication","2. Social Sign in"]},"143":{"href":"/sdk/unity/04-authentication#macos","html":"\n
    \n
  1. Open the Windows/Mac/Linux Player Settings window (menu: Edit > Project Settings > Player Settings, then select Windows/Mac/Linux).
  2. \n
  3. Select Other Settings, then scroll down to Mac Configuration.
  4. \n
  5. Expand the Supported URL schemes section, and add 1 to the size.
  6. \n
  7. In the new Element N field, enter the URL scheme you've configured in SequenceConfig.
  8. \n
\n

\"Mac

\n","isPage":false,"text":"\n\nOpen the Windows/Mac/Linux Player Settings window (menu: Edit > Project Settings > Player Settings, then select Windows/Mac/Linux).\nSelect Other Settings, then scroll down to Mac Configuration.\nExpand the Supported URL schemes section, and add 1 to the size.\nIn the new Element N field, enter the URL scheme you've configured in SequenceConfig.\n\n\n","title":"MacOS","titles":["Authentication","2. Social Sign in"]},"144":{"href":"/sdk/unity/04-authentication#pc","html":"\n

No additional steps required.

\n","isPage":false,"text":"\nNo additional steps required.\n","title":"PC","titles":["Authentication","2. Social Sign in"]},"145":{"href":"/sdk/unity/04-authentication#android","html":"\n
    \n
  1. In the Project window, browse to Assets > Plugins > Android.
  2. \n
\n

a) Note: in Unity versions 2021.2 and up this path doesn't exist by default. Please navigate to Edit > Project Settings > Player and under the Android Publishing Settings, enable Custom Main Manifest in the Build section. See https://docs.unity3d.com/Manual/deep-linking-android.html for more info.

\n
    \n
  1. If it doesn't already exist, create a new file and name it AndroidManifest.xml.
  2. \n
  3. Paste the following XML into the file, or, if you already have one, add the new keys from this XML to it.
  4. \n
  5. Make sure to replace 'sdk-powered-by-sequence' with the Url Scheme you set in SequenceConfig
  6. \n
\n
   <?xml version="1.0" encoding="utf-8"?>\n   <manifest\n     xmlns:android="http://schemas.android.com/apk/res/android"\n     xmlns:tools="http://schemas.android.com/tools"\n   >\n     <application>\n       <activity\n         android:name="com.unity3d.player.UnityPlayerActivity"\n         android:theme="@style/UnityThemeSelector"\n       >\n         <intent-filter>\n           <action android:name="android.intent.action.MAIN" />\n           <category android:name="android.intent.category.LAUNCHER" />\n         </intent-filter>\n         <intent-filter>\n           <action android:name="android.intent.action.VIEW" />\n           <category android:name="android.intent.category.DEFAULT" />\n           <category android:name="android.intent.category.BROWSABLE" />\n           <data android:scheme="sdk-powered-by-sequence"/> <!-- substitute 'sdk-powered-by-sequence' with the Url Scheme you set in `SequenceConfig` -->\n         </intent-filter>\n       </activity>\n     </application>\n   </manifest>
\n

b) Note: Unity 2022 versions prior to 2022.3.7f1 and 2023 versions prior to 2023.1.7f1, 2023.2.0b3, or 2023.3.0a1 contain a bug with Android deep-linking. Please use this XML instead.

\n
<?xml version="1.0" encoding="utf-8"?>\n<manifest\n        xmlns:android="http://schemas.android.com/apk/res/android"\n        xmlns:tools="http://schemas.android.com/tools"\n>\n    <application>\n        <activity\n                android:name="com.unity3d.player.UnityPlayerActivity"\n                android:theme="@style/UnityThemeSelector"\n                android:exported="true">\n            <intent-filter>\n                <action android:name="android.intent.action.MAIN" />\n                <category android:name="android.intent.category.LAUNCHER" />\n            </intent-filter>\n            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />\n            <intent-filter>\n                <action android:name="android.intent.action.VIEW" />\n                <category android:name="android.intent.category.DEFAULT" />\n                <category android:name="android.intent.category.BROWSABLE" />\n                <data android:scheme="sdk-powered-by-sequence"/> <!-- substitute 'sdk-powered-by-sequence' with the Url Scheme you set in `SequenceConfig` -->\n            </intent-filter>\n        </activity>\n    </application>\n</manifest>
\n

i.e. add <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> after your first intent-filter. Please see https://forum.unity.com/threads/deep-linking-in-unity-2022-the-app-is-restarted.1447300/ for more info.

\n","isPage":false,"text":"\n\nIn the Project window, browse to Assets > Plugins > Android.\n\na) Note: in Unity versions 2021.2 and up this path doesn't exist by default. Please navigate to Edit > Project Settings > Player and under the Android Publishing Settings, enable Custom Main Manifest in the Build section. See https://docs.unity3d.com/Manual/deep-linking-android.html for more info.\n\nIf it doesn't already exist, create a new file and name it AndroidManifest.xml.\nPaste the following XML into the file, or, if you already have one, add the new keys from this XML to it.\nMake sure to replace 'sdk-powered-by-sequence' with the Url Scheme you set in SequenceConfig\n\n <?xml version="1.0" encoding="utf-8"?>\n <manifest\n xmlns:android="http://schemas.android.com/apk/res/android"\n xmlns:tools="http://schemas.android.com/tools"\n >\n <application>\n <activity\n android:name="com.unity3d.player.UnityPlayerActivity"\n android:theme="@style/UnityThemeSelector"\n >\n <intent-filter>\n <action android:name="android.intent.action.MAIN" />\n <category android:name="android.intent.category.LAUNCHER" />\n </intent-filter>\n <intent-filter>\n <action android:name="android.intent.action.VIEW" />\n <category android:name="android.intent.category.DEFAULT" />\n <category android:name="android.intent.category.BROWSABLE" />\n <data android:scheme="sdk-powered-by-sequence"/> <!-- substitute 'sdk-powered-by-sequence' with the Url Scheme you set in `SequenceConfig` -->\n </intent-filter>\n </activity>\n </application>\n </manifest>\nb) Note: Unity 2022 versions prior to 2022.3.7f1 and 2023 versions prior to 2023.1.7f1, 2023.2.0b3, or 2023.3.0a1 contain a bug with Android deep-linking. Please use this XML instead.\n<?xml version="1.0" encoding="utf-8"?>\n<manifest\n xmlns:android="http://schemas.android.com/apk/res/android"\n xmlns:tools="http://schemas.android.com/tools"\n>\n <application>\n <activity\n android:name="com.unity3d.player.UnityPlayerActivity"\n android:theme="@style/UnityThemeSelector"\n android:exported="true">\n <intent-filter>\n <action android:name="android.intent.action.MAIN" />\n <category android:name="android.intent.category.LAUNCHER" />\n </intent-filter>\n <meta-data android:name="unityplayer.UnityActivity" android:value="true" />\n <intent-filter>\n <action android:name="android.intent.action.VIEW" />\n <category android:name="android.intent.category.DEFAULT" />\n <category android:name="android.intent.category.BROWSABLE" />\n <data android:scheme="sdk-powered-by-sequence"/> <!-- substitute 'sdk-powered-by-sequence' with the Url Scheme you set in `SequenceConfig` -->\n </intent-filter>\n </activity>\n </application>\n</manifest>\ni.e. add <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> after your first intent-filter. Please see https://forum.unity.com/threads/deep-linking-in-unity-2022-the-app-is-restarted.1447300/ for more info.\n","title":"Android","titles":["Authentication","2. Social Sign in"]},"146":{"href":"/sdk/unity/04-authentication#webgl","html":"\n

Coming soon.

\n","isPage":false,"text":"\nComing soon.\n","title":"WebGL","titles":["Authentication","2. Social Sign in"]},"147":{"href":"/sdk/unity/04-authentication#connecting-with-waas","html":"\n

Once we've received the idToken from either email login or social sign in, the SDK will handle connecting with WaaS servers for you. If you're curious how this is done, please see ConnectToWaaS in WaaSLogin.cs.\nYou'll want to subscribe to the WaaSWallet.OnWaaSWalletCreated event. This can be done with the following code snippet:

\n
WaaSWallet.OnWaaSWalletCreated += OnWaaSWalletCreatedHandler;\n\npublic void OnWaaSWalletCreatedHandler(WaaSWallet wallet) {\n  // Do something\n}
\n

where OnWaaSWalletCreatedHandler is a function accepting a WaaSWallet as it's only parameter. If you're unfamiliar with working with events in Unity, check out this great Reddit post!

\n

Congratulations! You've just connected your user with WaaS, creating them a new account and non-custodial smart contract wallet as needed.

","isPage":false,"text":"\nOnce we've received the idToken from either email login or social sign in, the SDK will handle connecting with WaaS servers for you. If you're curious how this is done, please see ConnectToWaaS in WaaSLogin.cs.\nYou'll want to subscribe to the WaaSWallet.OnWaaSWalletCreated event. This can be done with the following code snippet:\nWaaSWallet.OnWaaSWalletCreated += OnWaaSWalletCreatedHandler;\n\npublic void OnWaaSWalletCreatedHandler(WaaSWallet wallet) {\n // Do something\n}\nwhere OnWaaSWalletCreatedHandler is a function accepting a WaaSWallet as it's only parameter. If you're unfamiliar with working with events in Unity, check out this great Reddit post!\nCongratulations! You've just connected your user with WaaS, creating them a new account and non-custodial smart contract wallet as needed.","title":"Connecting with WaaS","titles":["Authentication"]},"148":{"href":"/sdk/unity/05-write-to-blockchain#write-to-blockchain","html":"\n

The blockchain can be thought of as a general-purpose, publically viewable and verified, database. To write to a blockchain, similar to with a typical database, you must make a transaction.

\n

Typically, creating a blockchain transaction is rather complex, but WaaS handles that complexity for you and exposes 5 types of Transactions.

\n

Sending a transaction is an asynchronous Task. You can use await when calling WaaSWallet.SendTransaction from within an async Task if you wish to obtain the TransactionReturn object directly. Or, you can take the recommended approach which is to setup handler functions for the WaaSWallet.OnSendTransactionComplete and WaaSWallet.OnSendTransactionFailed events and call the WaaSWallet.SendTransaction method from anywhere (without await). For example:

\n
public void OnSendTransactionCompleteHandler(SuccessfulTransactionReturn result) {\n    // Do something\n}\n\npublic void OnSendTransactionFailedHandler(FailedTransactionReturn result) {\n    // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n    wallet.OnSendTransactionComplete += OnSendTransactionCompleteHandler;\n    wallet.OnSendTransactionFailed += OnSendTransactionFailedHandler;\n}
\n

If you're unfamiliar with working with events in Unity, check out this great Reddit post!

\n","isPage":true,"text":"\nThe blockchain can be thought of as a general-purpose, publically viewable and verified, database. To write to a blockchain, similar to with a typical database, you must make a transaction.\nTypically, creating a blockchain transaction is rather complex, but WaaS handles that complexity for you and exposes 5 types of Transactions.\nSending a transaction is an asynchronous Task. You can use await when calling WaaSWallet.SendTransaction from within an async Task if you wish to obtain the TransactionReturn object directly. Or, you can take the recommended approach which is to setup handler functions for the WaaSWallet.OnSendTransactionComplete and WaaSWallet.OnSendTransactionFailed events and call the WaaSWallet.SendTransaction method from anywhere (without await). For example:\npublic void OnSendTransactionCompleteHandler(SuccessfulTransactionReturn result) {\n // Do something\n}\n\npublic void OnSendTransactionFailedHandler(FailedTransactionReturn result) {\n // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n wallet.OnSendTransactionComplete += OnSendTransactionCompleteHandler;\n wallet.OnSendTransactionFailed += OnSendTransactionFailedHandler;\n}\nIf you're unfamiliar with working with events in Unity, check out this great Reddit post!\n","title":"Write to Blockchain","titles":[]},"149":{"href":"/sdk/unity/05-write-to-blockchain#rawtransaction","html":"\n

The most basic form of a Transaction, a raw transaction is very useful to send ETH or the gas currency of the network you are interacting with to an Address.

\n

For example, to send one MATIC to 0x9766bf76b2E3e7BCB8c61410A3fC873f1e89b43f you can use this snippet:

\n
_wallet.SendTransaction(\n    Chain.Polygon,\n    new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction("0x9766bf76b2E3e7BCB8c61410A3fC873f1e89b43f", DecimalNormalizer.Normalize(1))\n    });
\n

where _wallet is a WaaSWallet.

\n

Note: the EVM does not support floating point numbers. As a result, token (and gas currency) values are represented by whole numbers and a "decimals" value. 1 ETH (or in the example above 1 MATIC) is represented as 1000000000000000000 (1 * 10^18) as ETH, MATIC, and most gas currencies have a "decimals" value of 18. DecimalNormalizer.Normalize (above) is a basic helper function that will return input value * 10^decimals and optionally accepts a "decimals" value as a second parameter (defaulting to 18 when not provided).

\n

Additionally, you can include data with a raw transaction in hexadecimal format as a string. For more on this, please see the advanced section of this documentation.

\n","isPage":false,"text":"\nThe most basic form of a Transaction, a raw transaction is very useful to send ETH or the gas currency of the network you are interacting with to an Address.\nFor example, to send one MATIC to 0x9766bf76b2E3e7BCB8c61410A3fC873f1e89b43f you can use this snippet:\n_wallet.SendTransaction(\n Chain.Polygon,\n new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction("0x9766bf76b2E3e7BCB8c61410A3fC873f1e89b43f", DecimalNormalizer.Normalize(1))\n });\nwhere _wallet is a WaaSWallet.\nNote: the EVM does not support floating point numbers. As a result, token (and gas currency) values are represented by whole numbers and a "decimals" value. 1 ETH (or in the example above 1 MATIC) is represented as 1000000000000000000 (1 * 10^18) as ETH, MATIC, and most gas currencies have a "decimals" value of 18. DecimalNormalizer.Normalize (above) is a basic helper function that will return input value * 10^decimals and optionally accepts a "decimals" value as a second parameter (defaulting to 18 when not provided).\nAdditionally, you can include data with a raw transaction in hexadecimal format as a string. For more on this, please see the advanced section of this documentation.\n","title":"RawTransaction","titles":["Write to Blockchain"]},"150":{"href":"/sdk/unity/05-write-to-blockchain#senderc20","html":"\n

An ERC20 token is the fungible token standard. You can easily deploy an ERC20 contract and mint tokens using our Builder. Learn how in our Builder documentation.

\n

To send an ERC20 token transaction, you can use this code snippet:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new SendERC20(\n            erc20TokenAddress,\n            ToAddress,\n            AmountAsString),\n    });
\n

Note: as above, it is recommended to use DecimalNormalizer.Normalize to convert the amount from human readable format to EVM format. Please make sure to include the optional "decimals" int parameter if your ERC20 token has a "decimals" value that is not 18. If you're not sure how many "decimals" your ERC20 has, this can be easily read on the Builder using the "decimals" method under "Read Contract".

\n","isPage":false,"text":"\nAn ERC20 token is the fungible token standard. You can easily deploy an ERC20 contract and mint tokens using our Builder. Learn how in our Builder documentation.\nTo send an ERC20 token transaction, you can use this code snippet:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new SendERC20(\n erc20TokenAddress,\n ToAddress,\n AmountAsString),\n });\nNote: as above, it is recommended to use DecimalNormalizer.Normalize to convert the amount from human readable format to EVM format. Please make sure to include the optional "decimals" int parameter if your ERC20 token has a "decimals" value that is not 18. If you're not sure how many "decimals" your ERC20 has, this can be easily read on the Builder using the "decimals" method under "Read Contract".\n","title":"sendERC20","titles":["Write to Blockchain"]},"151":{"href":"/sdk/unity/05-write-to-blockchain#complex-erc20-interactions","html":"\n

For interactions with ERC20 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC20 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.

\n

First, you'll need to create an ERC20 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC20 standard (not recommended).

\n
ERC20 myToken = new ERC20(myTokenAddress);
\n

with this reference, you'll have access to all of the methods implemented by the ERC20 class. Any method that returns a CallContractFunction, e.g. Mint, can be used when creating a RawTransaction with WaaS. For example:

\n
ERC20 myToken = new ERC20(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction(myToken.Mint(toAddress, DecimalNormalizer.NormalizeAsBigInteger(amount))),\n    });
\n","isPage":false,"text":"\nFor interactions with ERC20 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC20 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.\nFirst, you'll need to create an ERC20 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC20 standard (not recommended).\nERC20 myToken = new ERC20(myTokenAddress);\nwith this reference, you'll have access to all of the methods implemented by the ERC20 class. Any method that returns a CallContractFunction, e.g. Mint, can be used when creating a RawTransaction with WaaS. For example:\nERC20 myToken = new ERC20(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction(myToken.Mint(toAddress, DecimalNormalizer.NormalizeAsBigInteger(amount))),\n });\n","title":"Complex ERC20 Interactions","titles":["Write to Blockchain","sendERC20"]},"152":{"href":"/sdk/unity/05-write-to-blockchain#senderc721","html":"\n

An ERC721 token is the non-fungible standard, you've probably heard of them as NFTs. You can easily deploy an ERC721 contract and mint tokens using our Builder. Learn how in our Builder documentation.

\n

To send an ERC721 token transaction, you can use this code snippet:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new SendERC721(\n            erc721TokenAddress,\n            ToAddress,\n            TokenIdAsString),\n    });
\n","isPage":false,"text":"\nAn ERC721 token is the non-fungible standard, you've probably heard of them as NFTs. You can easily deploy an ERC721 contract and mint tokens using our Builder. Learn how in our Builder documentation.\nTo send an ERC721 token transaction, you can use this code snippet:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new SendERC721(\n erc721TokenAddress,\n ToAddress,\n TokenIdAsString),\n });\n","title":"sendERC721","titles":["Write to Blockchain"]},"153":{"href":"/sdk/unity/05-write-to-blockchain#complex-erc721-interactions","html":"\n

For interactions with ERC721 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC21 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.

\n

First, you'll need to create an ERC721 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC721 standard (not recommended).

\n
ERC721 myToken = new ERC721(myTokenAddress);
\n

with this reference, you'll have access to all of the methods implemented by the ERC721 class. Any method that returns a CallContractFunction, e.g. SafeMint, can be used when creating a RawTransaction with WaaS. For example:

\n
ERC721 myToken = new ERC721(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction(myToken.SafeMint(toAddress)),\n    });
\n","isPage":false,"text":"\nFor interactions with ERC721 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC21 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.\nFirst, you'll need to create an ERC721 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC721 standard (not recommended).\nERC721 myToken = new ERC721(myTokenAddress);\nwith this reference, you'll have access to all of the methods implemented by the ERC721 class. Any method that returns a CallContractFunction, e.g. SafeMint, can be used when creating a RawTransaction with WaaS. For example:\nERC721 myToken = new ERC721(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction(myToken.SafeMint(toAddress)),\n });\n","title":"Complex ERC721 Interactions","titles":["Write to Blockchain","sendERC721"]},"154":{"href":"/sdk/unity/05-write-to-blockchain#senderc1155","html":"\n

An ERC1155 token is the multi token standard, often referred to as SFTs (semi-fungible tokens). As co-creators of the ERC1155 standard we are firm believers in its unparalleled usefulness for games. You can easily deploy an ERC1155 contract and mint tokens using our Builder. Learn how in our Builder documentation.

\n

To send an ERC1155 token transaction, you can use this code snippet:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new SendERC1155(\n            erc1155TokenAddress,\n            ToAddress,\n            new SendERC1155Values[]\n            {\n                new SendERC1155Values(TokenIdAsString, AmountAsString),\n                ...\n            }),\n    });
\n

Note: you can send multiple token ids from the same ERC1155 contract in a single transaction by including multiple SendERC1155Values objects in the transaction

\n","isPage":false,"text":"\nAn ERC1155 token is the multi token standard, often referred to as SFTs (semi-fungible tokens). As co-creators of the ERC1155 standard we are firm believers in its unparalleled usefulness for games. You can easily deploy an ERC1155 contract and mint tokens using our Builder. Learn how in our Builder documentation.\nTo send an ERC1155 token transaction, you can use this code snippet:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new SendERC1155(\n erc1155TokenAddress,\n ToAddress,\n new SendERC1155Values[]\n {\n new SendERC1155Values(TokenIdAsString, AmountAsString),\n ...\n }),\n });\nNote: you can send multiple token ids from the same ERC1155 contract in a single transaction by including multiple SendERC1155Values objects in the transaction\n","title":"sendERC1155","titles":["Write to Blockchain"]},"155":{"href":"/sdk/unity/05-write-to-blockchain#complex-erc1155-interactions","html":"\n

For interactions with ERC1155 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC1155 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.

\n

First, you'll need to create an ERC1155 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC1155 standard (not recommended).

\n
ERC1155 myToken = new ERC1155(myTokenAddress);
\n

with this reference, you'll have access to all of the methods implemented by the ERC1155 class. Any method that returns a CallContractFunction, e.g. Mint, can be used when creating a RawTransaction with WaaS. For example:

\n
ERC1155 myToken = new ERC1155(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction(myToken.Mint(toAddress, tokenId, amount)),\n    });
\n","isPage":false,"text":"\nFor interactions with ERC1155 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC1155 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.\nFirst, you'll need to create an ERC1155 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC1155 standard (not recommended).\nERC1155 myToken = new ERC1155(myTokenAddress);\nwith this reference, you'll have access to all of the methods implemented by the ERC1155 class. Any method that returns a CallContractFunction, e.g. Mint, can be used when creating a RawTransaction with WaaS. For example:\nERC1155 myToken = new ERC1155(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction(myToken.Mint(toAddress, tokenId, amount)),\n });\n","title":"Complex ERC1155 Interactions","titles":["Write to Blockchain","sendERC1155"]},"156":{"href":"/sdk/unity/05-write-to-blockchain#delayedencode","html":"\n

When calling a smart contract on an EVM-based network, the client goes through a complex process known as "ABI encoding" where the function signature you want to call as well as the parameters you're providing are encoded into a binary format. This process is complicated and error-prone so we've abstracted it all away so that you don't have to deal with it. But, if you're curious to learn how it works, please see this document.

\n

A DelayedEncode transaction allows you to call any method on an arbitrary smart contract, allowing us to handle the complicated ABI encoding process.

\n

To send a DelayedEncode transaction, you can use this code snippet:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new DelayedEncode(ContractAddress, ValueAsString, new DelayedEncodeData(\n            ContractABIAsString,\n            ParametersAsObjectArray,\n            FunctionNameAsString)),\n    });
\n

Let's examine the above to get a better understanding of some of the variables that may be non-obvious.

\n

ValueAsString: This will usually be "0" unless you are calling a payable method denoted by the payable keyword in the smart contract definition. If you are calling a payable method, it is recommended to use DecimalNormalizer.Normalize to convert the amount from human readable format to EVM format.

\n

ContractABIAsString: This can either be the entire ABI or just the function you plan on interacting with. If you're not familiar with ABIs, we'd recommend copy-pasting the function signature (with parameters) from the contract source code on Etherscan (or the appropriate block explorer for your network) and removing the whitespace and variable names.

\n

ParametersAsObjectArray: The parameters you want to provide to the method you wish to call. No need to provide the parameter names, just their values in the order they appear in the ABI. Provide parameters in string format when in doubt.

\n

FunctionNameAsString: The name of the function you want to call as it appears in the ABI (or source code). Exclude parentheses and parameters.

\n

Putting this together, an example of using delayed encode to call the "mint" function on an ERC20 would look like this:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new DelayedEncode(ContractAddress, "0", new DelayedEncodeData(\n            "mint(address,uint256)",\n            new object[]\n            {\n                ToAddress, DecimalNormalizer.Normalize(1)\n            },\n            "mint")),\n    });
\n","isPage":false,"text":"\nWhen calling a smart contract on an EVM-based network, the client goes through a complex process known as "ABI encoding" where the function signature you want to call as well as the parameters you're providing are encoded into a binary format. This process is complicated and error-prone so we've abstracted it all away so that you don't have to deal with it. But, if you're curious to learn how it works, please see this document.\nA DelayedEncode transaction allows you to call any method on an arbitrary smart contract, allowing us to handle the complicated ABI encoding process.\nTo send a DelayedEncode transaction, you can use this code snippet:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new DelayedEncode(ContractAddress, ValueAsString, new DelayedEncodeData(\n ContractABIAsString,\n ParametersAsObjectArray,\n FunctionNameAsString)),\n });\nLet's examine the above to get a better understanding of some of the variables that may be non-obvious.\nValueAsString: This will usually be "0" unless you are calling a payable method denoted by the payable keyword in the smart contract definition. If you are calling a payable method, it is recommended to use DecimalNormalizer.Normalize to convert the amount from human readable format to EVM format.\nContractABIAsString: This can either be the entire ABI or just the function you plan on interacting with. If you're not familiar with ABIs, we'd recommend copy-pasting the function signature (with parameters) from the contract source code on Etherscan (or the appropriate block explorer for your network) and removing the whitespace and variable names.\nParametersAsObjectArray: The parameters you want to provide to the method you wish to call. No need to provide the parameter names, just their values in the order they appear in the ABI. Provide parameters in string format when in doubt.\nFunctionNameAsString: The name of the function you want to call as it appears in the ABI (or source code). Exclude parentheses and parameters.\nPutting this together, an example of using delayed encode to call the "mint" function on an ERC20 would look like this:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new DelayedEncode(ContractAddress, "0", new DelayedEncodeData(\n "mint(address,uint256)",\n new object[]\n {\n ToAddress, DecimalNormalizer.Normalize(1)\n },\n "mint")),\n });\n","title":"DelayedEncode","titles":["Write to Blockchain"]},"157":{"href":"/sdk/unity/05-write-to-blockchain#batch-transactions","html":"\n

Using the magic of the Sequence Smart Contract wallet, our SDK allows you to seemlessly batch transactions together. Batching transactions together is extremely beneficial as it provides material gas savings and allows you to create complex transactions, that either all pass or all fail, without deploying custom smart contracts for each bespoke use case, opening a whole new realm of design possibilities!

\n

Sending a batch transaction is easy! Simply include multiple transactions, of any type, in your transaction array when making the SendTransaction request.

\n

For example - sending a transaction of each type in a batch:

\n
_wallet.SendTransaction(\n    Chain.Polygon,\n    new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction(ToAddress, DecimalNormalizer.Normalize(1)),\n        new SendERC20(\n            erc20TokenAddress,\n            ToAddress,\n            AmountAsString),\n        new RawTransaction(new ERC20(erc20TokenAddress).Burn(DecimalNormalizer.NormalizeAsBigInteger(amount))),\n        new SendERC721(\n            erc721TokenAddress,\n            ToAddress,\n            TokenIdAsString),\n        new SendERC1155(\n            erc1155TokenAddress,\n            ToAddress,\n            new SendERC1155Values[]\n            {\n                new SendERC1155Values(TokenIdAsString, AmountAsString),\n                ...\n            }),\n        new DelayedEncode(ContractAddress, ValueAsString, new DelayedEncodeData(\n            ContractABIAsString,\n            ParametersAsObjectArray,\n            FunctionNameAsString)),\n    });
\n

Since these transactions are all batched into a single transaction by the Sequence Smart Contract Wallet before being submitted to the network, you will receive only one transaction receipt.

","isPage":false,"text":"\nUsing the magic of the Sequence Smart Contract wallet, our SDK allows you to seemlessly batch transactions together. Batching transactions together is extremely beneficial as it provides material gas savings and allows you to create complex transactions, that either all pass or all fail, without deploying custom smart contracts for each bespoke use case, opening a whole new realm of design possibilities!\nSending a batch transaction is easy! Simply include multiple transactions, of any type, in your transaction array when making the SendTransaction request.\nFor example - sending a transaction of each type in a batch:\n_wallet.SendTransaction(\n Chain.Polygon,\n new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction(ToAddress, DecimalNormalizer.Normalize(1)),\n new SendERC20(\n erc20TokenAddress,\n ToAddress,\n AmountAsString),\n new RawTransaction(new ERC20(erc20TokenAddress).Burn(DecimalNormalizer.NormalizeAsBigInteger(amount))),\n new SendERC721(\n erc721TokenAddress,\n ToAddress,\n TokenIdAsString),\n new SendERC1155(\n erc1155TokenAddress,\n ToAddress,\n new SendERC1155Values[]\n {\n new SendERC1155Values(TokenIdAsString, AmountAsString),\n ...\n }),\n new DelayedEncode(ContractAddress, ValueAsString, new DelayedEncodeData(\n ContractABIAsString,\n ParametersAsObjectArray,\n FunctionNameAsString)),\n });\nSince these transactions are all batched into a single transaction by the Sequence Smart Contract Wallet before being submitted to the network, you will receive only one transaction receipt.","title":"Batch Transactions","titles":["Write to Blockchain"]},"158":{"href":"/sdk/unity/06-read-from-blockchain#read-from-blockchain","html":"\n

Reading from the blockchain is done using Unity-Native implementation of our Sequence Indexer.

\n

We recommend creating an instance of the ChainIndexer class. This will expose you to all the functionality offered by the IIndexer interface.

\n
IIndexer polygonIndexer = new ChainIndexer(Chain.Polygon);
\n

ChainIndexer is essentially a wrapper of the Indexer static class which is fully documented here: https://docs.sequence.xyz/unity-sdk/indexer/guides.

","isPage":true,"text":"\nReading from the blockchain is done using Unity-Native implementation of our Sequence Indexer.\nWe recommend creating an instance of the ChainIndexer class. This will expose you to all the functionality offered by the IIndexer interface.\nIIndexer polygonIndexer = new ChainIndexer(Chain.Polygon);\nChainIndexer is essentially a wrapper of the Indexer static class which is fully documented here: https://docs.sequence.xyz/unity-sdk/indexer/guides.","title":"Read from Blockchain","titles":[]},"159":{"href":"/sdk/unity/07-sign-messages#sign-messages","html":"\n

Signing a message is an asynchronous Task. You can use await when calling WaaSWallet.SignMessage from within an async Task if you wish to obtain the SignMessageReturn object directly. Or, you can take the recommended approach which is to setup a handler function for the WaaSWallet.OnSignMessageComplete event and call the WaaSWallet.SignMessage method from anywhere (without await). For example:

\n
public void OnSignMessageCompleteHandler(string signature) {\n    // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n    wallet.OnSignMessageComplete += OnSignMessageCompleteHandler;\n}
\n
_wallet.SignMessage(Chain.Polygon, "Message to sign");
\n

If you're unfamiliar with working with events in Unity, check out this great Reddit post!

","isPage":true,"text":"\nSigning a message is an asynchronous Task. You can use await when calling WaaSWallet.SignMessage from within an async Task if you wish to obtain the SignMessageReturn object directly. Or, you can take the recommended approach which is to setup a handler function for the WaaSWallet.OnSignMessageComplete event and call the WaaSWallet.SignMessage method from anywhere (without await). For example:\npublic void OnSignMessageCompleteHandler(string signature) {\n // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n wallet.OnSignMessageComplete += OnSignMessageCompleteHandler;\n}\n_wallet.SignMessage(Chain.Polygon, "Message to sign");\nIf you're unfamiliar with working with events in Unity, check out this great Reddit post!","title":"Sign Messages","titles":[]},"160":{"href":"/sdk/unity/08-deploy-contracts#contract-deployment","html":"\n

While, in general, we would recommend deploying your smart contracts via the Builder, we recognize that there are some use cases where deploying a smart contract from Unity (or a Made-With-Unity application) is useful.

\n

Contract deployment involves sending a transaction, which is done via an asynchronous Task. You can use await when calling WaaSWallet.DeployContract from within an async Task if you wish to obtain the ContractDeploymentReturn object directly. Or, you can take the recommended approach which is to setup handler functions for the WaaSWallet.OnDeployContractComplete and WaaSWallet.OnDeployContractFailed events and call the WaaSWallet.DeployContract method from anywhere (without await).

\n

WaaSWallet.DeployContract is essentially a wrapper for a very special WaaSWallet.SendTransaction call and therefore, you can expect to still receive the WaaSWallet.OnSendTransactionComplete or WaaSWallet.OnSendTransactionFailed events in addition.

\n
public void OnDeployContractCompleteHandler(SuccessfulContractDeploymentReturn result) {\n    Address newlyDeployedContractAddress = result.DeployedContractAddress;\n\n    // Do something\n}\n\npublic void OnDeployContractFailedHandler(FailedContractDeploymentReturn result) {\n    // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n    wallet.OnDeployContractComplete += OnDeployContractCompleteHandler;\n    wallet.OnDeployContractFailed += OnDeployContractFailedHandler;\n}
\n

If you're unfamiliar with working with events in Unity, check out this great Reddit post!

\n

To deploy a contract you'll need to first compile your smart contract code into bytecode and add the bytecode as a hexadecimal string in one of your C# scripts.

\n

To deploy a smart contract, you can use this code snippet:

\n
string bytecode = "Here you'll paste your compiled bytecode"\n_wallet.DeployContract(Chain.Polygon, bytecode);
","isPage":true,"text":"\nWhile, in general, we would recommend deploying your smart contracts via the Builder, we recognize that there are some use cases where deploying a smart contract from Unity (or a Made-With-Unity application) is useful.\nContract deployment involves sending a transaction, which is done via an asynchronous Task. You can use await when calling WaaSWallet.DeployContract from within an async Task if you wish to obtain the ContractDeploymentReturn object directly. Or, you can take the recommended approach which is to setup handler functions for the WaaSWallet.OnDeployContractComplete and WaaSWallet.OnDeployContractFailed events and call the WaaSWallet.DeployContract method from anywhere (without await).\nWaaSWallet.DeployContract is essentially a wrapper for a very special WaaSWallet.SendTransaction call and therefore, you can expect to still receive the WaaSWallet.OnSendTransactionComplete or WaaSWallet.OnSendTransactionFailed events in addition.\npublic void OnDeployContractCompleteHandler(SuccessfulContractDeploymentReturn result) {\n Address newlyDeployedContractAddress = result.DeployedContractAddress;\n\n // Do something\n}\n\npublic void OnDeployContractFailedHandler(FailedContractDeploymentReturn result) {\n // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n wallet.OnDeployContractComplete += OnDeployContractCompleteHandler;\n wallet.OnDeployContractFailed += OnDeployContractFailedHandler;\n}\nIf you're unfamiliar with working with events in Unity, check out this great Reddit post!\nTo deploy a contract you'll need to first compile your smart contract code into bytecode and add the bytecode as a hexadecimal string in one of your C# scripts.\nTo deploy a smart contract, you can use this code snippet:\nstring bytecode = "Here you'll paste your compiled bytecode"\n_wallet.DeployContract(Chain.Polygon, bytecode);","title":"Contract Deployment","titles":[]},"161":{"href":"/sdk/unity/09-wallet-ui#wallet-ui","html":"\n

As a Wallet as a Service product, this SDK requires no UI. However, as we expect some apps will still choose to provide some form of wallet UI to users, we are making efforts to provide a default UI for you to use.

\n

This UI can be found under SequenceExamples.

\n

To add the UI to your scene, you can add the WalletPanel prefab found under SequenceExamples > Prefabs. It is opened using the Open method; you must provide an IWallet (e.g. a WaaSWallet) as an argument.

\n

You'll notice that the UI is still a work in progress and is also using mocks in some places (fetching transaction history and prices). These will be replaced in coming updates of the SDK, but please feel free to replace them on your own (and for bonus points, submit a PR!).

\n","isPage":true,"text":"\nAs a Wallet as a Service product, this SDK requires no UI. However, as we expect some apps will still choose to provide some form of wallet UI to users, we are making efforts to provide a default UI for you to use.\nThis UI can be found under SequenceExamples.\nTo add the UI to your scene, you can add the WalletPanel prefab found under SequenceExamples > Prefabs. It is opened using the Open method; you must provide an IWallet (e.g. a WaaSWallet) as an argument.\nYou'll notice that the UI is still a work in progress and is also using mocks in some places (fetching transaction history and prices). These will be replaced in coming updates of the SDK, but please feel free to replace them on your own (and for bonus points, submit a PR!).\n","title":"Wallet UI","titles":[]},"162":{"href":"/sdk/unity/09-wallet-ui#how-it-works","html":"\n

The sample Sequence UI is comprised of a few important components.

\n","isPage":false,"text":"\nThe sample Sequence UI is comprised of a few important components.\n","title":"How It Works","titles":["Wallet UI"]},"163":{"href":"/sdk/unity/09-wallet-ui#ui-customizability","html":"\n

Built on Unity's UI system, the UI is entirely customizable. We encourage you to make it your own and "beautify" it to suit your app!

\n","isPage":false,"text":"\nBuilt on Unity's UI system, the UI is entirely customizable. We encourage you to make it your own and "beautify" it to suit your app!\n","title":"UI Customizability","titles":["Wallet UI"]},"164":{"href":"/sdk/unity/09-wallet-ui#color-scheme-manager","html":"\n

To help you with the process, we've added a basic ColorSchemeManager script which you can experiment with in our Demo scene, which can be imported via Package Manager.

\n

To use the ColorSchemeManager, please perform the following in edit mode.

\n
    \n
  1. Create a Color Scheme scriptable object by navigating to the top bar Assets > Create > Sequence > Color Scheme and give it an appropriate name.
  2. \n
  3. Set the desired colors in your new scriptable object - don't forget to set the alpha values! Unity defaults these to 0.
  4. \n
  5. Locate the ColorSchemeManager MonoBehaviour in your scene in the inspector. In our demo scene, this is attached to the SequenceCanvas gameObject.
  6. \n
  7. Set your newly created scriptable object as the Color Scheme.
  8. \n
  9. Click "Apply". Note that this may take a few seconds to apply and you may need to click apply multiple times due to the way Unity refreshes after changes in the inspector (version dependant).
  10. \n
\n

The ColorSchemeManager isn't meant to give you perfect results and the perfect UI right out of the gate, but we hope it saves you some time on the way there!

\n","isPage":false,"text":"\nTo help you with the process, we've added a basic ColorSchemeManager script which you can experiment with in our Demo scene, which can be imported via Package Manager.\nTo use the ColorSchemeManager, please perform the following in edit mode.\n\nCreate a Color Scheme scriptable object by navigating to the top bar Assets > Create > Sequence > Color Scheme and give it an appropriate name.\nSet the desired colors in your new scriptable object - don't forget to set the alpha values! Unity defaults these to 0.\nLocate the ColorSchemeManager MonoBehaviour in your scene in the inspector. In our demo scene, this is attached to the SequenceCanvas gameObject.\nSet your newly created scriptable object as the Color Scheme.\nClick "Apply". Note that this may take a few seconds to apply and you may need to click apply multiple times due to the way Unity refreshes after changes in the inspector (version dependant).\n\nThe ColorSchemeManager isn't meant to give you perfect results and the perfect UI right out of the gate, but we hope it saves you some time on the way there!\n","title":"Color Scheme Manager","titles":["Wallet UI","UI Customizability"]},"165":{"href":"/sdk/unity/09-wallet-ui#more-customization-tools-coming-soon","html":"\n

We hope to bring you more convenience tools to help you customize the UI quicker and easier! While we have ideas of our own, nobody understands your needs better than you do, so please don't hesitate to reach out to us with any ideas you have! Or better yet, submit a PR!

","isPage":false,"text":"\nWe hope to bring you more convenience tools to help you customize the UI quicker and easier! While we have ideas of our own, nobody understands your needs better than you do, so please don't hesitate to reach out to us with any ideas you have! Or better yet, submit a PR!","title":"More Customization Tools Coming Soon","titles":["Wallet UI","UI Customizability"]},"166":{"href":"/sdk/unreal/01-overview#introduction","html":"\n

The Sequence Unreal In-Game Wallet SDK provides full Sequence In-Game Wallet and Indexer integration for games built on the Unreal Framework.

\n

This SDK follows Semantic Versioning (major.minor.patch). While we're still in 0.x.y builds, API breaking changes can be made at any time. After 1.0.0, breaking changes will always cause a major version increment, non-breaking new features will cause a minor version increment, and bugfixes will cause a patch version increment.

\n

Sequence Unreal SDK is only available as a private beta at the moment. To get access, get in touch with Sequence BD Team.

\n","isPage":true,"text":"\nThe Sequence Unreal In-Game Wallet SDK provides full Sequence In-Game Wallet and Indexer integration for games built on the Unreal Framework.\nThis SDK follows Semantic Versioning (major.minor.patch). While we're still in 0.x.y builds, API breaking changes can be made at any time. After 1.0.0, breaking changes will always cause a major version increment, non-breaking new features will cause a minor version increment, and bugfixes will cause a patch version increment.\nSequence Unreal SDK is only available as a private beta at the moment. To get access, get in touch with Sequence BD Team.\n","title":"Introduction","titles":[]},"167":{"href":"/sdk/unreal/01-overview#requirements","html":"\n","isPage":false,"text":"\n\nUnreal 5.2 or later\nAndroid\niOS\nPC standalone\nMac standalone\n","title":"Requirements","titles":["Introduction"]},"168":{"href":"/sdk/unreal/02-installation#installation","html":"\n","isPage":true,"text":"\n","title":"Installation","titles":[]},"169":{"href":"/sdk/unreal/02-installation#credentials","html":"\n

Before you can use this plugin, you need to acquire the following credentials from Sequence:

\n\n

You can then add these credentials in the [Config.h] file under SequencePlugin/Source/SequencePlugin/Private/Config/Config.h.

\n","isPage":false,"text":"\nBefore you can use this plugin, you need to acquire the following credentials from Sequence:\n\nWaaSTenantKey: This key will be given to you by the Sequence team during WaaS onboarding\nProjectAccessKey: This key can be found in Sequence Builder under Settings > API Access Keys\n\nYou can then add these credentials in the [Config.h] file under SequencePlugin/Source/SequencePlugin/Private/Config/Config.h.\n","title":"Credentials","titles":["Installation"]},"170":{"href":"/sdk/unreal/02-installation#security","html":"\n

You must provide an encryption key implementation at [SequenceEncryptor.cpp] function [GetStoredKey]. This function must be implemented to provide a securely stored private key that will be used to encrypt and decrypt client information. Failure to do so will result in NO information being stored or in the event you do not use a securely stored key, can result in client information being stored insecurely on their systems.

","isPage":false,"text":"\nYou must provide an encryption key implementation at [SequenceEncryptor.cpp] function [GetStoredKey]. This function must be implemented to provide a securely stored private key that will be used to encrypt and decrypt client information. Failure to do so will result in NO information being stored or in the event you do not use a securely stored key, can result in client information being stored insecurely on their systems.","title":"Security","titles":["Installation"]},"171":{"href":"/sdk/unreal/03-setup#setup","html":"\n
    \n
  1. \n

    Once you have the the SequencePlugin folder, you'll need to go to your project directory and create a Plugins folder in it, then copy over the SequencePlugin folder into the Plugins folder. If a Plugins folder already exists just copy the SequencePlugin folder into it.

    \n
  2. \n
  3. \n

    Launch your project, then allow it to update the UProject Settings.

    \n
  4. \n
  5. \n

    To find the SequencePlugin content folder in your content drawer enable view plugin content

    \n
  6. \n
  7. \n

    If you wish to use the in built sequence UI for login\na) Create an [Actor] you wish to be responsible for the SequenceUI then attach the [Sequence_Pawn_Component_BP] to it\nb) Setup your [Actor] Blueprint similar to how it's setup in [Custom_Spectator_Pawn] being sure to bind to the delegate that gives you Credentials [Auth_Success_Forwarder]

    \n
  8. \n
  9. \n

    Once you have those credentials you'll need to forward them to your own C++ backend in order to use the Sequence API, an example of this can be found in the [Custom_Spectator_Pawn]. This Pawn inherits from a C++ class [Sqnc_Spec_Pawn], which implements a blueprint Callable function [SetupCredentials(FCredentials_BE CredentialsIn)]. This is callable within the child class [Custom_Spectator_Pawn]. Calling this function will forward the credentials to a C++ backend.

    \n
  10. \n
","isPage":true,"text":"\n\n\nOnce you have the the SequencePlugin folder, you'll need to go to your project directory and create a Plugins folder in it, then copy over the SequencePlugin folder into the Plugins folder. If a Plugins folder already exists just copy the SequencePlugin folder into it.\n\n\nLaunch your project, then allow it to update the UProject Settings.\n\n\nTo find the SequencePlugin content folder in your content drawer enable view plugin content\n\n\nIf you wish to use the in built sequence UI for login\na) Create an [Actor] you wish to be responsible for the SequenceUI then attach the [Sequence_Pawn_Component_BP] to it\nb) Setup your [Actor] Blueprint similar to how it's setup in [Custom_Spectator_Pawn] being sure to bind to the delegate that gives you Credentials [Auth_Success_Forwarder]\n\n\nOnce you have those credentials you'll need to forward them to your own C++ backend in order to use the Sequence API, an example of this can be found in the [Custom_Spectator_Pawn]. This Pawn inherits from a C++ class [Sqnc_Spec_Pawn], which implements a blueprint Callable function [SetupCredentials(FCredentials_BE CredentialsIn)]. This is callable within the child class [Custom_Spectator_Pawn]. Calling this function will forward the credentials to a C++ backend.\n\n","title":"Setup","titles":[]},"172":{"href":"/sdk/unreal/04-authentication#authentication","html":"\n","isPage":true,"text":"\n","title":"Authentication","titles":[]},"173":{"href":"/sdk/unreal/04-authentication#custom-ui-integration","html":"\n

In a C++ backend with a series of pass through [UFUNCTIONS] setup similarly to [SequenceBackendManager.h/.cpp]. Each of these calls are implemented in [UAuthenticator] you just need to pass through the data with YOUR UAuthenticator UObject

\n
//This call is platform dependent on windows & mac this is required for SSO WIP\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nFString GetLoginURL(const ESocialSigninType& Type); \n \n//This Call is made after you've collected the ID_Token (Mac & Windows only) WIP\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid SocialLogin(const FString& IDTokenIn);\n \n//This Call is made after you've collected the email address from the Users in the UI\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid EmailLogin(const FString& EmailIn);\n \n//This is call is made after the Delegate `[AuthRequiresCode]` is fired\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid EmailCode(const FString& CodeIn);\n \n//Optional call used to check if the credentials on disk are valid or not//\nUFUNCTION(BlueprintCallable, Category = "Login")\nbool StoredCredentialsValid();
\n

To start you'll want to create a [UAuthenticator] UObject like so [UAuthenticator + Auth = NewObject<UAuthenticator>()], this UObject manages the authentication side of Sequence.

\n

Be sure to bind to the Delegates for [AuthSuccess], [AuthFailure], [AuthRequiresCode] prior to making any signin calls You can bind to these delegates like so:

\n
this->authenticator->AuthRequiresCode.AddDynamic(this, &AYourClass::YourCallReadyToReceiveCode);\nthis->authenticator->AuthFailure.AddDynamic(this, &AYourClass::YourCallShowAuthFailureScreen);
\n

In the case of [AuthSuccess] since a parameter is also passed we bind to it like this

\n
FScriptDelegate del;\ndel.BindUFunction(this, "CallShowAuthSuccessScreen");\nthis->authenticator->AuthSuccess.Add(del);
\n

Where [CallShowAuthSuccessScreen] is defined in SequenceBackendManager.h like so:

\n
UFUNCTION()\nvoid CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn);
\n

And in SequenceBackendManager.cpp like so:

\n
void ASequenceBackendManager::CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn) \n{\nthis->Credentials = CredentialsIn;\nif (this->ShowAuthSuccessDelegate.IsBound())\n  this->ShowAuthSuccessDelegate.Broadcast(Credentials);\nelse\n  UE_LOG(LogTemp, Error, TEXT("`[Nothing bound to: ShowAuthSuccessDelegate]`"));\n}
\n","isPage":false,"text":"\nIn a C++ backend with a series of pass through [UFUNCTIONS] setup similarly to [SequenceBackendManager.h/.cpp]. Each of these calls are implemented in [UAuthenticator] you just need to pass through the data with YOUR UAuthenticator UObject\n//This call is platform dependent on windows & mac this is required for SSO WIP\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nFString GetLoginURL(const ESocialSigninType& Type); \n \n//This Call is made after you've collected the ID_Token (Mac & Windows only) WIP\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid SocialLogin(const FString& IDTokenIn);\n \n//This Call is made after you've collected the email address from the Users in the UI\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid EmailLogin(const FString& EmailIn);\n \n//This is call is made after the Delegate `[AuthRequiresCode]` is fired\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid EmailCode(const FString& CodeIn);\n \n//Optional call used to check if the credentials on disk are valid or not//\nUFUNCTION(BlueprintCallable, Category = "Login")\nbool StoredCredentialsValid();\nTo start you'll want to create a [UAuthenticator] UObject like so [UAuthenticator + Auth = NewObject<UAuthenticator>()], this UObject manages the authentication side of Sequence.\nBe sure to bind to the Delegates for [AuthSuccess], [AuthFailure], [AuthRequiresCode] prior to making any signin calls You can bind to these delegates like so:\nthis->authenticator->AuthRequiresCode.AddDynamic(this, &AYourClass::YourCallReadyToReceiveCode);\nthis->authenticator->AuthFailure.AddDynamic(this, &AYourClass::YourCallShowAuthFailureScreen);\nIn the case of [AuthSuccess] since a parameter is also passed we bind to it like this\nFScriptDelegate del;\ndel.BindUFunction(this, "CallShowAuthSuccessScreen");\nthis->authenticator->AuthSuccess.Add(del);\nWhere [CallShowAuthSuccessScreen] is defined in SequenceBackendManager.h like so:\nUFUNCTION()\nvoid CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn);\nAnd in SequenceBackendManager.cpp like so:\nvoid ASequenceBackendManager::CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn) \n{\nthis->Credentials = CredentialsIn;\nif (this->ShowAuthSuccessDelegate.IsBound())\n this->ShowAuthSuccessDelegate.Broadcast(Credentials);\nelse\n UE_LOG(LogTemp, Error, TEXT("`[Nothing bound to: ShowAuthSuccessDelegate]`"));\n}\n","title":"Custom UI Integration","titles":["Authentication",null]},"174":{"href":"/sdk/unreal/04-authentication#email-based-authentication","html":"\n
    \n
  1. \n

    To start email based authentication you'll start it with this call [EmailLogin(const FString& EmailIn)], supplying an email you've collected from the User in your GUI.

    \n
  2. \n
  3. \n

    Next [AuthRequiresCode] will fire when the backend is ready to receive the Code from your UI. Collect this code from your GUI and send it to the authenticator using [EmailCode(CodeIn)].

    \n
  4. \n
  5. \n

    Finally [AuthSuccess] will fire with a Credentials_BE struct as a parameter. This is your non registered credentials from EmailAuth. You are done Email Based Auth.

    \n
  6. \n
\n","isPage":false,"text":"\n\n\nTo start email based authentication you'll start it with this call [EmailLogin(const FString& EmailIn)], supplying an email you've collected from the User in your GUI.\n\n\nNext [AuthRequiresCode] will fire when the backend is ready to receive the Code from your UI. Collect this code from your GUI and send it to the authenticator using [EmailCode(CodeIn)].\n\n\nFinally [AuthSuccess] will fire with a Credentials_BE struct as a parameter. This is your non registered credentials from EmailAuth. You are done Email Based Auth.\n\n\n","title":"Email based Authentication","titles":["Authentication",null]},"175":{"href":"/sdk/unreal/04-authentication#social-signin-based-authentication-on-desktop","html":"\n
    \n
  1. \n

    To start SSO based authentication with desktop you can either use your own implementation to get the necessary id_token or you can make use of Unreal's web browser plugin.

    \n
  2. \n
  3. \n

    With whatever implementation you chose you can forward the colleted id_token to the UAuthenticator object with [SocialLogin(const FString& IDTokenIn)], after which [AuthSuccess] will fire and you're done desktop based SSO.

    \n
  4. \n
\n","isPage":false,"text":"\n\n\nTo start SSO based authentication with desktop you can either use your own implementation to get the necessary id_token or you can make use of Unreal's web browser plugin.\n\n\nWith whatever implementation you chose you can forward the colleted id_token to the UAuthenticator object with [SocialLogin(const FString& IDTokenIn)], after which [AuthSuccess] will fire and you're done desktop based SSO.\n\n\n","title":"Social Signin based Authentication on Desktop","titles":["Authentication",null]},"176":{"href":"/sdk/unreal/04-authentication#social-signin-based-authentication-on-mobile","html":"\n

WIP

","isPage":false,"text":"\nWIP","title":"Social Signin based Authentication on Mobile","titles":["Authentication",null]},"177":{"href":"/sdk/unreal/05-api-integration#api-integration","html":"\n","isPage":true,"text":"\n","title":"API Integration","titles":[]},"178":{"href":"/sdk/unreal/05-api-integration#sequence-api","html":"\n

After you've completed initial authentication and have intercepted the credentials either through your UI or ours, to use the Sequence API you'll need to create a [USequenceWallet] by using:

\n
`[USequenceWallet * Api = USequenceWallet(CredentialsIn)]` or `[USequenceWallet * Api = USequenceWallet::Make(CredentialsIn, ProviderURL)]`
\n

Once you have your [USequenceWallet] UObject call [Api>RegisterSession(OnSuccess,GenericFailure)] this will register your credentials with the Sequence API. Note not calling Register prior to make any others calls will result in errors as a UserWallet hasn't been supplied until this point.

\n

`*

\n

Assuming you've setup your controlling Actor with the [Sequence_Pawn_Component_BP]\nThe sequence pawn component has functions to do the following:

\n

Setup Sequence (sets up the sequence based systems), requires playerController input

\n

Show GUI Shows the UI

\n

Hide GUI Hides the UI

\n

GUI Visible Simple Visibility test for the UI

\n

Switch Platform (Switches which mode the UI will be in and how it will be displayed)

\n

Note: this doesn't rotate the application into any one view it just make the UI responsive to that type of view.

\n

Modes:

\n\n

`*

\n","isPage":false,"text":"\nAfter you've completed initial authentication and have intercepted the credentials either through your UI or ours, to use the Sequence API you'll need to create a [USequenceWallet] by using:\n`[USequenceWallet * Api = USequenceWallet(CredentialsIn)]` or `[USequenceWallet * Api = USequenceWallet::Make(CredentialsIn, ProviderURL)]`\nOnce you have your [USequenceWallet] UObject call [Api>RegisterSession(OnSuccess,GenericFailure)] this will register your credentials with the Sequence API. Note not calling Register prior to make any others calls will result in errors as a UserWallet hasn't been supplied until this point.\n`*\nAssuming you've setup your controlling Actor with the [Sequence_Pawn_Component_BP]\nThe sequence pawn component has functions to do the following:\nSetup Sequence (sets up the sequence based systems), requires playerController input\nShow GUI Shows the UI\nHide GUI Hides the UI\nGUI Visible Simple Visibility test for the UI\nSwitch Platform (Switches which mode the UI will be in and how it will be displayed)\nNote: this doesn't rotate the application into any one view it just make the UI responsive to that type of view.\nModes:\n\nDesktop (default)\nMobile Portrait (Custom built for portrait mode reducing the X width where ever possible)\nMobile Landscape\n\n`*\n","title":"Sequence API","titles":["API Integration",null]},"179":{"href":"/sdk/unreal/05-api-integration#sequence-unreal-api","html":"\n

The Sequence Unreal plugin is broken up into a few different parts in order to manage all of the differing functionality. Here we'll go through each parts purpose then summarize how to use them all together below

\n

The SDK automatically stores credentials on disk in the following cases:

\n
    \n
  1. On Successful Auth
  2. \n
  3. On Successful Registering of a session
  4. \n
  5. On Successful Closing of a session
  6. \n
\n","isPage":false,"text":"\nThe Sequence Unreal plugin is broken up into a few different parts in order to manage all of the differing functionality. Here we'll go through each parts purpose then summarize how to use them all together below\nThe SDK automatically stores credentials on disk in the following cases:\n\nOn Successful Auth\nOn Successful Registering of a session\nOn Successful Closing of a session\n\n","title":"Sequence Unreal API","titles":["API Integration",null]},"180":{"href":"/sdk/unreal/05-api-integration#usequencewallet","html":"\n

To get a USequenceWallet call either:

\n
USequenceWallet::Make(FCredentials_BE CredentialsIn)\nUSequenceWallet::Make(FCredentials_BE CredentialsIn, FString ProviderURL)
\n

Where the Credentials you give are the credentials you received from the UAuthenticator when [AuthSuccess] fires, or you can use the call Auth->[GetStoredCredentials](), where Auth is of the type [UAuthenticator]. If you are using StoredCredentials please ensure they are valid by checking the wrapping Structs FStoredCredentials_BE.GetValid() flag returned from [GetStoredCredentials], the providerURL is the url of the provider you wish to use.

\n

Once you have your [USequenceWallet] UObject please ensure that you've registered the session using [RegisterSession] before attempting to make other calls to the API.

\n","isPage":false,"text":"\nTo get a USequenceWallet call either:\nUSequenceWallet::Make(FCredentials_BE CredentialsIn)\nUSequenceWallet::Make(FCredentials_BE CredentialsIn, FString ProviderURL)\nWhere the Credentials you give are the credentials you received from the UAuthenticator when [AuthSuccess] fires, or you can use the call Auth->[GetStoredCredentials](), where Auth is of the type [UAuthenticator]. If you are using StoredCredentials please ensure they are valid by checking the wrapping Structs FStoredCredentials_BE.GetValid() flag returned from [GetStoredCredentials], the providerURL is the url of the provider you wish to use.\nOnce you have your [USequenceWallet] UObject please ensure that you've registered the session using [RegisterSession] before attempting to make other calls to the API.\n","title":"USequenceWallet","titles":["API Integration",null]},"181":{"href":"/sdk/unreal/05-api-integration#sequence-api-methods","html":"\n

We make use of TFunctions with some callbacks:

\n
TSuccessCallback\nconst TFunction<void(FString)> OnResponse = `[Capturable variables]`(const FString& Response)\n{\n//callback body where we can process Response\n};\n \nFFailureCallback\nconst TFunction<void(FSequenceError)> OnFailureTest = `[Capturable variables]`(const FSequenceError& Error)\n{\n//callback body where we can process Error\n};
\n

One thing to be aware of is keep an eye on capturables if you have lots of nested TFunctions it's very easy to miss something and start over writing memory. If you require lots of nesting swapping to a better approach using UFUNCTION callbacks helps to avoid these problems similar to how things are done in [UAuthenticator.h/cpp]

","isPage":false,"text":"\nWe make use of TFunctions with some callbacks:\nTSuccessCallback\nconst TFunction<void(FString)> OnResponse = `[Capturable variables]`(const FString& Response)\n{\n//callback body where we can process Response\n};\n \nFFailureCallback\nconst TFunction<void(FSequenceError)> OnFailureTest = `[Capturable variables]`(const FSequenceError& Error)\n{\n//callback body where we can process Error\n};\nOne thing to be aware of is keep an eye on capturables if you have lots of nested TFunctions it's very easy to miss something and start over writing memory. If you require lots of nesting swapping to a better approach using UFUNCTION callbacks helps to avoid these problems similar to how things are done in [UAuthenticator.h/cpp]","title":"Sequence API Methods","titles":["API Integration",null]},"182":{"href":"/sdk/unreal/06-packaging#packaging","html":"\n

To set your system up for Packaging please refer to the following links:

\n\n","isPage":true,"text":"\nTo set your system up for Packaging please refer to the following links:\n\nWindows and macOS\nAndroid\niOS\n\n","title":"Packaging","titles":[]},"183":{"href":"/sdk/unreal/06-packaging#google-sso-setup","html":"\n

In order to be able to properly use Google Auth, create and place the Keystore file by following these instructions.

\n

You will also need to generate an [Android client ID] and a [Web Application client ID] for your application, as well as place the [Web Application client ID] in the Config/Config.h FAuthenticatorConfig.GoogleClientID field.

\n

Refer to these docs to generate [Android client ID] and [Web Application client ID].

\n

This guide helps explain how to collect SHA-1 key fingerprints for the [Android client ID].

\n","isPage":false,"text":"\nIn order to be able to properly use Google Auth, create and place the Keystore file by following these instructions.\nYou will also need to generate an [Android client ID] and a [Web Application client ID] for your application, as well as place the [Web Application client ID] in the Config/Config.h FAuthenticatorConfig.GoogleClientID field.\nRefer to these docs to generate [Android client ID] and [Web Application client ID].\nThis guide helps explain how to collect SHA-1 key fingerprints for the [Android client ID].\n","title":"Google SSO Setup","titles":["Packaging",null]},"184":{"href":"/sdk/unreal/06-packaging#ios","html":"\n

For iOS apps you also need to setup provisioning, following these docs.

\n","isPage":false,"text":"\nFor iOS apps you also need to setup provisioning, following these docs.\n","title":"iOS","titles":["Packaging",null]},"185":{"href":"/sdk/unreal/06-packaging#unreal-and-xcode-specifics","html":"\n

During the Unreal Package process there is a very high chance that it will fail due to a code signing error, in the event that this happens please take the following steps within XCode to get your packaged .app file

\n
    \n
  1. After packaging the project in Unreal, open the Xcode project (Sequence-unreal folder -> Intermediate -> ProjectFilesIOS -> SequenceUnreal.xcodeproj)
  2. \n
  3. Click on the project name on the left hand side to open up project settings
  4. \n
  5. Click the Build Phase Tab
  6. \n
  7. Click on the "+" icon at the top left
  8. \n
  9. Select Run Script
  10. \n
  11. Drag the new run script to one below from the last item in the phase list
  12. \n
  13. Expand the run script
  14. \n
  15. In the script box, add the following command: xattr -cr /path-to-your-project/sequence-unreal/Binaries/IOS/Payload/SequenceUnreal.app
  16. \n
  17. Click on the Build Settings tab
  18. \n
  19. Click on each item under the Architectures header that contains macOS and hit the delete key
  20. \n
  21. Click on the General tab
  22. \n
  23. Click on Mac and Applevision Pro under supported destinations and hit the delete key
  24. \n
  25. Now the project can be built (if the build fails at first, wait a few moments then try again. It can sometimes take a bit before the build registers the run script)
  26. \n
  27. Once you have finished running the project, and want to make changes to the code, REMEMBER to delete this xcodeproj file in the sequence-unreal folder to ensure that a new xcodeproj is creating when you packaging the project again.
  28. \n
","isPage":false,"text":"\nDuring the Unreal Package process there is a very high chance that it will fail due to a code signing error, in the event that this happens please take the following steps within XCode to get your packaged .app file\n\nAfter packaging the project in Unreal, open the Xcode project (Sequence-unreal folder -> Intermediate -> ProjectFilesIOS -> SequenceUnreal.xcodeproj)\nClick on the project name on the left hand side to open up project settings\nClick the Build Phase Tab\nClick on the "+" icon at the top left\nSelect Run Script\nDrag the new run script to one below from the last item in the phase list\nExpand the run script\nIn the script box, add the following command: xattr -cr /path-to-your-project/sequence-unreal/Binaries/IOS/Payload/SequenceUnreal.app\nClick on the Build Settings tab\nClick on each item under the Architectures header that contains macOS and hit the delete key\nClick on the General tab\nClick on Mac and Applevision Pro under supported destinations and hit the delete key\nNow the project can be built (if the build fails at first, wait a few moments then try again. It can sometimes take a bit before the build registers the run script)\nOnce you have finished running the project, and want to make changes to the code, REMEMBER to delete this xcodeproj file in the sequence-unreal folder to ensure that a new xcodeproj is creating when you packaging the project again.\n","title":"Unreal and Xcode Specifics","titles":["Packaging",null]},"186":{"href":"/solutions/builder/analytics#analytics-in-builder","html":"\n

When you use Sequence, via our SDKs, to build your application, you can see key insights in Sequence Builder.\nYou don't need to do any additional work to see valuable metrics about your project, such as the number\nof connected wallets or daily transaction requests.

\n","isPage":true,"text":"\nWhen you use Sequence, via our SDKs, to build your application, you can see key insights in Sequence Builder.\nYou don't need to do any additional work to see valuable metrics about your project, such as the number\nof connected wallets or daily transaction requests.\n","title":"Analytics in Builder","titles":[]},"187":{"href":"/solutions/builder/analytics#how-it-works","html":"\n

When requests are made with Sequence SDKs/APIs, analytics events are fired and sent to our internal analytics system, Databeat.\nDatabeat anonymizes the data and stores it in a secure database designed for high-volume, real-time applications. The metrics you see in Builder are\nqueried from the database, in real-time, for your project and presented in insightful visualizations.

\n","isPage":false,"text":"\nWhen requests are made with Sequence SDKs/APIs, analytics events are fired and sent to our internal analytics system, Databeat.\nDatabeat anonymizes the data and stores it in a secure database designed for high-volume, real-time applications. The metrics you see in Builder are\nqueried from the database, in real-time, for your project and presented in insightful visualizations.\n","title":"How it works","titles":["Analytics in Builder",null,null]},"188":{"href":"/solutions/builder/analytics#overview","html":"\n

In the Overview tab of Builder, you will see the key, high-level metrics for your project. Metric cards will show the total value for that metric, and\nclicking on one will change the chart to show time-series data for that metric.

\n\n","isPage":false,"text":"\nIn the Overview tab of Builder, you will see the key, high-level metrics for your project. Metric cards will show the total value for that metric, and\nclicking on one will change the chart to show time-series data for that metric.\nYou also have the option to look back at your data beyond the default Last 30 days\nby toggling the filter in the top right corner.\n","title":"Overview","titles":["Analytics in Builder"]},"189":{"href":"/solutions/builder/analytics#wallets-connected","html":"\n

Wallets connected represents the count of distinct wallet addresses connected via Sequence SDKs for the selected time period.

\n

\"Sequence

\n","isPage":false,"text":"\nWallets connected represents the count of distinct wallet addresses connected via Sequence SDKs for the selected time period.\n\n","title":"Wallets connected","titles":["Analytics in Builder","Overview",null]},"190":{"href":"/solutions/builder/analytics#marketplace-transactions","html":"\n

Marketplace transactions shows the total number of buy and sell events that occure via the Sequence Marketplace API.

\n

\"Sequence

\n","isPage":false,"text":"\nMarketplace transactions shows the total number of buy and sell events that occure via the Sequence Marketplace API.\n\n","title":"Marketplace transactions","titles":["Analytics in Builder","Overview",null]},"191":{"href":"/solutions/builder/analytics#transaction-requests","html":"\n

Transaction requests represents the total number of transactions sent by wallets associated with the project.

\n

\"Sequence

","isPage":false,"text":"\nTransaction requests represents the total number of transactions sent by wallets associated with the project.\n","title":"Transaction requests","titles":["Analytics in Builder","Overview",null]},"192":{"href":"/solutions/marketplaces/overview#marketplaces-overview","html":"\n

Sequence provides a variety of options for your marketplace and in-game store to accelerate your development, namely our white-label marketplace as well as our suite of Marketplace APIs.

\n","isPage":true,"text":"\nSequence provides a variety of options for your marketplace and in-game store to accelerate your development, namely our white-label marketplace as well as our suite of Marketplace APIs.\n","title":"Marketplaces Overview","titles":[]},"193":{"href":"/solutions/marketplaces/overview#what-are-the-differences-between-these-options","html":"\n

The white-label marketplace is ideal for getting started with a browser-based marketplace in literally minutes - all with no-coding experience and options to customize the marketplace to fit your branding such as fonts, colors, and logos. Our white-label marketplace is ideal if you want to minimize development time, focus on a web-based experience for your users, and start selling assets.

\n

Conversely, our Marketplace APIs give you complete control & customization so you can build your own UI while leaving the complexity of blockchain & backend orchestration to us. Our APIs can be utilized in game engines such as Unity or Unreal to build an in-game marketplace or store. Alternatively, they can be leveraged via a web-based experience in the browser as well - the choice is yours.

\n

You can even mix and match these options! For example, launching your own white-label marketplace for selling your initial game assets while building out your game. Then once launched, your in-game store uses the marketplace APIs to showcase these assets and offer new ones - while ensuring a seamless user experience as the user never needs to leave the game.

\n","isPage":false,"text":"\nThe white-label marketplace is ideal for getting started with a browser-based marketplace in literally minutes - all with no-coding experience and options to customize the marketplace to fit your branding such as fonts, colors, and logos. Our white-label marketplace is ideal if you want to minimize development time, focus on a web-based experience for your users, and start selling assets.\nConversely, our Marketplace APIs give you complete control & customization so you can build your own UI while leaving the complexity of blockchain & backend orchestration to us. Our APIs can be utilized in game engines such as Unity or Unreal to build an in-game marketplace or store. Alternatively, they can be leveraged via a web-based experience in the browser as well - the choice is yours.\nYou can even mix and match these options! For example, launching your own white-label marketplace for selling your initial game assets while building out your game. Then once launched, your in-game store uses the marketplace APIs to showcase these assets and offer new ones - while ensuring a seamless user experience as the user never needs to leave the game.\n","title":"What are the differences between these options?","titles":["Marketplaces Overview",null]},"194":{"href":"/solutions/marketplaces/overview#getting-started","html":"\n

To get started with the white-label marketplace, check out our page for more information and a helpful video to walk you through the process.

\n

Additionally, our quickstart page for the Marketplace APIs has a variety of templates, demos, and common integration patterns needed to get you started. We also provide a step by step guide of leveraging the APIs for (building a custom marketplace)[/guides/template-marketplace-api]

","isPage":false,"text":"\nTo get started with the white-label marketplace, check out our page for more information and a helpful video to walk you through the process.\nAdditionally, our quickstart page for the Marketplace APIs has a variety of templates, demos, and common integration patterns needed to get you started. We also provide a step by step guide of leveraging the APIs for (building a custom marketplace)[/guides/template-marketplace-api]","title":"Getting Started","titles":["Marketplaces Overview",null]},"195":{"href":"/solutions/wallets/overview#sequence-wallets-overview","html":"\n

Sequence offers multiple wallet options to integrate into your products, chiefly we call these our In-Game Wallet and our Universal Wallet which are both completely non-custodial.

\n","isPage":true,"text":"\nSequence offers multiple wallet options to integrate into your products, chiefly we call these our In-Game Wallet and our Universal Wallet which are both completely non-custodial.\n","title":"Sequence Wallets Overview","titles":[]},"196":{"href":"/solutions/wallets/overview#what-are-the-differences-between-these-options","html":"\n

The In-Game Wallet is primarily focused on delivering a traditional game experience that is headless with no mandatory pop-ups, modals, transaction signing, or other additional distractions take players out of them trying to enjoy the game. Users can login with common social logins or other authentication providers and simply jump into the experience. We provide native support for a variety of popular game engines such as Unreal and Unity as well as Typescript support so you can stay within your preferred framework for building games or experiences.

\n

\"Wallets\"/

\n

Conversely, our Universal Wallet is geared more towards native blockchain users with a focus on games and gaming assets. Existing blockchain users will feel right at home where you can leverage our wallet infrastructure for creating great experiences for web3 users, complete with a Typescript SDK for easy integration.

\n","isPage":false,"text":"\nThe In-Game Wallet is primarily focused on delivering a traditional game experience that is headless with no mandatory pop-ups, modals, transaction signing, or other additional distractions take players out of them trying to enjoy the game. Users can login with common social logins or other authentication providers and simply jump into the experience. We provide native support for a variety of popular game engines such as Unreal and Unity as well as Typescript support so you can stay within your preferred framework for building games or experiences.\n\nConversely, our Universal Wallet is geared more towards native blockchain users with a focus on games and gaming assets. Existing blockchain users will feel right at home where you can leverage our wallet infrastructure for creating great experiences for web3 users, complete with a Typescript SDK for easy integration.\n","title":"What are the differences between these options?","titles":["Sequence Wallets Overview",null]},"197":{"href":"/solutions/wallets/overview#what-are-the-benefits-of-each-and-how-can-i-leverage-them","html":"\n

All integrations provide non-custodial smart contract wallets with account abstraction advantages like optionality for gasless transactions. We recommend our In-Game Wallet if you are focused on a seamless, headless web2/2.5-like experience for your players or our Universal Wallet for prioritizing web2.5/web3 native users.

\n

Best of all, our wallet connector called SequenceKit integrates both options in a convenient, customizable UI written in Typescript, which you can leverage to cater to users with an existing wallet such as Metamask and millions of potential new users that want the convenience of social login.

\n","isPage":false,"text":"\nAll integrations provide non-custodial smart contract wallets with account abstraction advantages like optionality for gasless transactions. We recommend our In-Game Wallet if you are focused on a seamless, headless web2/2.5-like experience for your players or our Universal Wallet for prioritizing web2.5/web3 native users.\nBest of all, our wallet connector called SequenceKit integrates both options in a convenient, customizable UI written in Typescript, which you can leverage to cater to users with an existing wallet such as Metamask and millions of potential new users that want the convenience of social login.\n","title":"What are the benefits of each and how can I leverage them?","titles":["Sequence Wallets Overview",null]},"198":{"href":"/solutions/wallets/overview#getting-started","html":"\n

Please check out Sequence Builder to create a project and select Wallets to get started. This will provide the corresponding code snippets with our convenient SDKs to get started.

\n

Alternatively, our quickstart page for In-Game Wallets and Universal Wallets has all the templates, demos, and common integration patterns needed to accelerate your development.

","isPage":false,"text":"\nPlease check out Sequence Builder to create a project and select Wallets to get started. This will provide the corresponding code snippets with our convenient SDKs to get started.\nAlternatively, our quickstart page for In-Game Wallets and Universal Wallets has all the templates, demos, and common integration patterns needed to accelerate your development.","title":"Getting Started","titles":["Sequence Wallets Overview",null]},"199":{"href":"/sdk/typescript/03-guides/01-connect-wallet#connect-wallet","html":"\n

Sequence is a very flexible wallet which allow users multiple ways to connect / access their wallet. This includes:

\n
    \n
  1. \n

    On-demand Ethereum web wallet for new users via 0xsequence npm package + https://sequence.app -- this option allows\ndevelopers to offer users an on-demand web3 wallet. No user install required -- any browser will just work, and users\ncan onboard with a familiar Web2 experience. Think of it like Paypal / Stripe but for web3.

    \n
  2. \n
  3. \n

    Surf all of web3 via Sequence Wallet Chrome Extension -- users\nwho have the Sequence Wallet Chrome Extension installed are able to access any Ethereum-compatible Dapp on the Web :) Just like how MetaMask works,\nbut of course with a bunch of the benefits of Sequence.

    \n
  4. \n
  5. \n

    Mobile phone access via WalletConnect support within Sequence Wallet -- users are able to communicate with their wallets remotely\nvia the awesome Wallet Connect protocol. This is an excellent option if using Sequence Wallet from your mobile phone and want to connect\nyour wallet to a desktop dapp.

    \n
  6. \n
\n

Sequence Wallet is built on Web Browser (W3C) and Ethereum web3 standards -- and is available everywhere that a modern browser is able to run.\nWe've carefully designed the wallet for simple onboarding, while maintaining security for users, and allowing users to progressively\nincrease the level of their security through additional keys and measures.

\n

This means, that if you've developed a dapp to work with MetaMask, then Sequence will work too without any changes. If you're\nusing web3.js or ethers.js, Sequence will just work too. This is the beauty of interoperability on web3 :)

\n","isPage":true,"text":"\nSequence is a very flexible wallet which allow users multiple ways to connect / access their wallet. This includes:\n\n\nOn-demand Ethereum web wallet for new users via 0xsequence npm package + https://sequence.app -- this option allows\ndevelopers to offer users an on-demand web3 wallet. No user install required -- any browser will just work, and users\ncan onboard with a familiar Web2 experience. Think of it like Paypal / Stripe but for web3.\n\n\nSurf all of web3 via Sequence Wallet Chrome Extension -- users\nwho have the Sequence Wallet Chrome Extension installed are able to access any Ethereum-compatible Dapp on the Web :) Just like how MetaMask works,\nbut of course with a bunch of the benefits of Sequence.\n\n\nMobile phone access via WalletConnect support within Sequence Wallet -- users are able to communicate with their wallets remotely\nvia the awesome Wallet Connect protocol. This is an excellent option if using Sequence Wallet from your mobile phone and want to connect\nyour wallet to a desktop dapp.\n\n\nSequence Wallet is built on Web Browser (W3C) and Ethereum web3 standards -- and is available everywhere that a modern browser is able to run.\nWe've carefully designed the wallet for simple onboarding, while maintaining security for users, and allowing users to progressively\nincrease the level of their security through additional keys and measures.\nThis means, that if you've developed a dapp to work with MetaMask, then Sequence will work too without any changes. If you're\nusing web3.js or ethers.js, Sequence will just work too. This is the beauty of interoperability on web3 :)\n","title":"Connect Wallet","titles":[]},"200":{"href":"/sdk/typescript/03-guides/01-connect-wallet#connecting-your-dapp-with-0xsequence","html":"\n

:::info A delightful wallet without requiring your users to install anything

\nBy integrating 0xsequence, users may access your dapp without having to install any special extensions,\nand the wallet also works on mobile browsers!\n:::

\n

Your dapp can connect to your user's wallet by first instantiating the Wallet provider:

\n
import { sequence } from "0xsequence";\n \nconst projectAccessKey = '<access_key>'\n \n// This assumes your dapp runs on Ethereum mainnet\nconst wallet = sequence.initWallet(projectAccessKey);\n \n// If your dapp runs on a different EVM-compatible blockchain, you can specify its name\n// const wallet = sequence.initWallet(projectAccessKey, { defaultNetwork: 'polygon' });
\n

Note that is possible to retrieve the above instance by using the getWallet() method:

\n
import { sequence } from "0xsequence";\nconst wallet = sequence.getWallet();
\n

Once you have the instance, you can connect to the wallet:

\n
const connectDetails = await wallet.connect({\n  app: "Your Dapp name",\n  authorize: true,\n  // And pass settings if you would like to customize further\n  settings: {\n    theme: "light",\n    bannerUrl: "https://yoursite.com/banner-image.png", // 3:1 aspect ratio, 1200x400 works best\n    includedPaymentProviders: ["moonpay", "ramp"],\n    defaultFundingCurrency: "matic",\n    lockFundingCurrencyToDefault: false,\n  },\n});\n \nconsole.log("user accepted connect?", connectDetails.connected);\nconsole.log(\n  "users signed connect proof to valid their account address:",\n  connectDetails.proof\n);
\n

You can pick/limit the available sign in options with signInOptions. Will be ignored if user is already signed in.

\n
const wallet = sequence.getWallet();\n \nawait wallet.connect({\n  app: "Your Dapp name",\n  settings: { signInOptions: ["google"] },\n});
\n

After you connect, you can use wallet.openWallet() to open the wallet:

\n
const wallet = sequence.getWallet();\nwallet.openWallet();
\n

You can also optionally pass a path, and use openWithOptions intent to pass settings when you open the wallet:

\n
const settings: Settings = {\n  theme: "dark",\n  bannerUrl: "https://yoursite.com/banner-image.png", // 3:1 aspect ratio, 1200x400 works best\n  includedPaymentProviders: ["moonpay", "ramp"],\n  defaultFundingCurrency: "eth",\n  lockFundingCurrencyToDefault: false,\n};\n \nconst intent: OpenWalletIntent = {\n  type: "openWithOptions",\n  options: {\n    settings: settings,\n  },\n};\n \nconst wallet = sequence.getWallet();\n \nconst path = "wallet/add-funds";\nwallet.openWallet(path, intent);
\n

:::tip Check out some example Dapp source code\nFor a complete examples, see Demo-Dapp and Demo-Dapp-Web3Modal.\n:::

\n

:::caution Avoid Browsers Blocking Sequence Popup\nMost browsers will block popups if they are called outside of user-triggered event handlers like onclick, or when it takes too long to process between the user action and the actual window

\n

Read more about browser popup-blocking here.\n:::

\n

\"Sequence

\n

\"Sequence

\n","isPage":false,"text":"\n:::info A delightful wallet without requiring your users to install anything \nBy integrating 0xsequence, users may access your dapp without having to install any special extensions,\nand the wallet also works on mobile browsers!\n:::\nYour dapp can connect to your user's wallet by first instantiating the Wallet provider:\nimport { sequence } from "0xsequence";\n \nconst projectAccessKey = '<access_key>'\n \n// This assumes your dapp runs on Ethereum mainnet\nconst wallet = sequence.initWallet(projectAccessKey);\n \n// If your dapp runs on a different EVM-compatible blockchain, you can specify its name\n// const wallet = sequence.initWallet(projectAccessKey, { defaultNetwork: 'polygon' });\nNote that is possible to retrieve the above instance by using the getWallet() method:\nimport { sequence } from "0xsequence";\nconst wallet = sequence.getWallet();\nOnce you have the instance, you can connect to the wallet:\nconst connectDetails = await wallet.connect({\n app: "Your Dapp name",\n authorize: true,\n // And pass settings if you would like to customize further\n settings: {\n theme: "light",\n bannerUrl: "https://yoursite.com/banner-image.png", // 3:1 aspect ratio, 1200x400 works best\n includedPaymentProviders: ["moonpay", "ramp"],\n defaultFundingCurrency: "matic",\n lockFundingCurrencyToDefault: false,\n },\n});\n \nconsole.log("user accepted connect?", connectDetails.connected);\nconsole.log(\n "users signed connect proof to valid their account address:",\n connectDetails.proof\n);\nYou can pick/limit the available sign in options with signInOptions. Will be ignored if user is already signed in.\nconst wallet = sequence.getWallet();\n \nawait wallet.connect({\n app: "Your Dapp name",\n settings: { signInOptions: ["google"] },\n});\nAfter you connect, you can use wallet.openWallet() to open the wallet:\nconst wallet = sequence.getWallet();\nwallet.openWallet();\nYou can also optionally pass a path, and use openWithOptions intent to pass settings when you open the wallet:\nconst settings: Settings = {\n theme: "dark",\n bannerUrl: "https://yoursite.com/banner-image.png", // 3:1 aspect ratio, 1200x400 works best\n includedPaymentProviders: ["moonpay", "ramp"],\n defaultFundingCurrency: "eth",\n lockFundingCurrencyToDefault: false,\n};\n \nconst intent: OpenWalletIntent = {\n type: "openWithOptions",\n options: {\n settings: settings,\n },\n};\n \nconst wallet = sequence.getWallet();\n \nconst path = "wallet/add-funds";\nwallet.openWallet(path, intent);\n:::tip Check out some example Dapp source code\nFor a complete examples, see Demo-Dapp and Demo-Dapp-Web3Modal.\n:::\n:::caution Avoid Browsers Blocking Sequence Popup\nMost browsers will block popups if they are called outside of user-triggered event handlers like onclick, or when it takes too long to process between the user action and the actual window\nRead more about browser popup-blocking here.\n:::\n\n\n","title":"Connecting your dapp with 0xsequence","titles":["Connect Wallet"]},"201":{"href":"/sdk/typescript/03-guides/01-connect-wallet#wallet-login-and-connect-options","html":"\n

Dapps with direct sequence integration can specify a ConnectOptions object when running wallet.connect().

\n
const connectDetails = await wallet.connect(connectOptions)
\n

The option parameters are described below.

\n","isPage":false,"text":"\nDapps with direct sequence integration can specify a ConnectOptions object when running wallet.connect().\nconst connectDetails = await wallet.connect(connectOptions)\nThe option parameters are described below.\n","title":"Wallet Login and Connect Options","titles":["Connect Wallet"]},"202":{"href":"/sdk/typescript/03-guides/01-connect-wallet#app","html":"\n

App name of the dapp which will be announced to user on connect screen.

\n

Example: await wallet.connect({ app: 'My defi app' })

\n","isPage":false,"text":"\nApp name of the dapp which will be announced to user on connect screen.\nExample: await wallet.connect({ app: 'My defi app' })\n","title":"app","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"203":{"href":"/sdk/typescript/03-guides/01-connect-wallet#appprotocol","html":"\n

Custom protocol for auth redirect (unity/unreal).

\n","isPage":false,"text":"\nCustom protocol for auth redirect (unity/unreal).\n","title":"appProtocol","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"204":{"href":"/sdk/typescript/03-guides/01-connect-wallet#origin","html":"\n

Origin hint of the dapp's host opening the wallet. This value will automatically be determined and verified for integrity, and can be omitted.

\n","isPage":false,"text":"\nOrigin hint of the dapp's host opening the wallet. This value will automatically be determined and verified for integrity, and can be omitted.\n","title":"origin","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"205":{"href":"/sdk/typescript/03-guides/01-connect-wallet#expiry","html":"\n

Expiry number (in seconds) that is used for ETHAuth proof. Default is 1 week in seconds.

\n

Example: await wallet.connect({ expiry: 36000 })

\n","isPage":false,"text":"\nExpiry number (in seconds) that is used for ETHAuth proof. Default is 1 week in seconds.\nExample: await wallet.connect({ expiry: 36000 })\n","title":"expiry","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"206":{"href":"/sdk/typescript/03-guides/01-connect-wallet#authorize","html":"\n

authorize will perform an ETHAuth eip712 signing and return the proof to the dapp.

\n

Example: await wallet.connect({ authorize: true })

\n","isPage":false,"text":"\nauthorize will perform an ETHAuth eip712 signing and return the proof to the dapp.\nExample: await wallet.connect({ authorize: true })\n","title":"authorize","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"207":{"href":"/sdk/typescript/03-guides/01-connect-wallet#authorizenonce","html":"\n

authorizeNonce is an optional number to be passed as ETHAuth's nonce claim for replay protection.

\n

Example: await wallet.connect({ authorizeNonce: 123 })

\n","isPage":false,"text":"\nauthorizeNonce is an optional number to be passed as ETHAuth's nonce claim for replay protection.\nExample: await wallet.connect({ authorizeNonce: 123 })\n","title":"authorizeNonce","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"208":{"href":"/sdk/typescript/03-guides/01-connect-wallet#refresh","html":"\n

refresh flag will force a full re-connect (ie. disconnect then connect again).

\n

Example: await wallet.connect({ refresh: true })

\n","isPage":false,"text":"\nrefresh flag will force a full re-connect (ie. disconnect then connect again).\nExample: await wallet.connect({ refresh: true })\n","title":"refresh","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"209":{"href":"/sdk/typescript/03-guides/01-connect-wallet#keepwalletopened","html":"\n

keepWalletOpened will keep the wallet window open after connecting. The default is to automatically close the wallet after connecting.

\n

Example: await wallet.connect({ keepWalletOpened: true })

\n","isPage":false,"text":"\nkeepWalletOpened will keep the wallet window open after connecting. The default is to automatically close the wallet after connecting.\nExample: await wallet.connect({ keepWalletOpened: true })\n","title":"keepWalletOpened","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"210":{"href":"/sdk/typescript/03-guides/01-connect-wallet#askforemail","html":"\n

askForEmail will ask user whether they want to share the email they use to sign in to wallet while connecting, and will be returned in connectDetails.

\n

Example: await wallet.connect({ askForEmail: true })

\n","isPage":false,"text":"\naskForEmail will ask user whether they want to share the email they use to sign in to wallet while connecting, and will be returned in connectDetails.\nExample: await wallet.connect({ askForEmail: true })\n","title":"askForEmail","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"211":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingstheme","html":"\n

Name of one of the available theme provided by sequence the sequence wallet will be rendered with.

\n

Example: await wallet.connect({ settings: {theme: "light"}}

\n","isPage":false,"text":"\nName of one of the available theme provided by sequence the sequence wallet will be rendered with.\nExample: await wallet.connect({ settings: {theme: "light"}}\n","title":"settings.theme","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"212":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingsbannerurl","html":"\n

URL of a banner image users will see when connecting or logging into your dapp. The banner image should follow a 3:1 aspect ration where 1200x400 works best.

\n

Example: await wallet.connect({ settings: {bannerUrl: "https://yoursite.com/banner-image.png"}}

\n","isPage":false,"text":"\nURL of a banner image users will see when connecting or logging into your dapp. The banner image should follow a 3:1 aspect ration where 1200x400 works best.\nExample: await wallet.connect({ settings: {bannerUrl: "https://yoursite.com/banner-image.png"}}\n","title":"settings.bannerUrl","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"213":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingssigninwith","html":"\n

Specify signInWith with a supported auth provider to automatically sign in the user with that provider only. Will be ignored if user is already signed in.

\n

Example: await wallet.connect({ settings: {signInWith: "google"}}

\n

Supported Providers: "google", "discord", "twitch", "apple", "facebook"

\n","isPage":false,"text":"\nSpecify signInWith with a supported auth provider to automatically sign in the user with that provider only. Will be ignored if user is already signed in.\nExample: await wallet.connect({ settings: {signInWith: "google"}}\nSupported Providers: "google", "discord", "twitch", "apple", "facebook"\n","title":"settings.signInWith","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"214":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingssigninwithemail","html":"\n

Specify signInWithEmail with an email address to allow user automatically sign in with the email option. Will be ignored if user is already signed in.

\n

Example: await wallet.connect({ settings: {signInWithEmail: "user@email.com"}}

\n","isPage":false,"text":"\nSpecify signInWithEmail with an email address to allow user automatically sign in with the email option. Will be ignored if user is already signed in.\nExample: await wallet.connect({ settings: {signInWithEmail: "user@email.com"}}\n","title":"settings.signInWithEmail","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"215":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingssigninoptions","html":"\n

Specify signInOptions to pick/limit the available sign in options. Will be ignored if user is already signed in.

\n

Example: await wallet.connect({ settings: {signInOptions: ["email", "google", "apple"]}}

\n","isPage":false,"text":"\nSpecify signInOptions to pick/limit the available sign in options. Will be ignored if user is already signed in.\nExample: await wallet.connect({ settings: {signInOptions: ["email", "google", "apple"]}}\n","title":"settings.signInOptions","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"216":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingsincludedpaymentproviders","html":"\n

List of payment providers users will be able to access. By default, users can access all payment providers integrated in Sequence.

\n

Example: await wallet.connect({ settings: {includedPaymentProviders: ["moonpay", "ramp"]}}

\n","isPage":false,"text":"\nList of payment providers users will be able to access. By default, users can access all payment providers integrated in Sequence.\nExample: await wallet.connect({ settings: {includedPaymentProviders: ["moonpay", "ramp"]}}\n","title":"settings.includedPaymentProviders","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"217":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingsdefaultfundingcurrency","html":"\n

The tag of the default currency to show when users open the payment provider page. The currency has to be supported by the payment providers integrated in sequence.

\n

Example: await wallet.connect({ settings: {defaultFundingCurrency: "usdc"}}

\n","isPage":false,"text":"\nThe tag of the default currency to show when users open the payment provider page. The currency has to be supported by the payment providers integrated in sequence.\nExample: await wallet.connect({ settings: {defaultFundingCurrency: "usdc"}}\n","title":"settings.defaultFundingCurrency","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"218":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingsdefaultpurchaseamount","html":"\n

Use to specify a default purchase amount, as an integer, for prefilling the funding amount. If not specified, the default is 100.

\n

Example: await wallet.connect({ settings: {defaultPurchaseAmount: 200}}

\n","isPage":false,"text":"\nUse to specify a default purchase amount, as an integer, for prefilling the funding amount. If not specified, the default is 100.\nExample: await wallet.connect({ settings: {defaultPurchaseAmount: 200}}\n","title":"settings.defaultPurchaseAmount","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"219":{"href":"/sdk/typescript/03-guides/01-connect-wallet#settingslockfundingcurrencytodefault","html":"\n

Whether to only allow users to purchase the default currency specified by the defaultFundingCurrency option. If set to false, users will also be able to purchase other tokens. locking the default funding currency can be useful to prevent users from purchasing the wrong currency or the currency on the wrong chain.

\n

Example: await wallet.connect({ settings: {defaultFundingCurrency: true}}

\n","isPage":false,"text":"\nWhether to only allow users to purchase the default currency specified by the defaultFundingCurrency option. If set to false, users will also be able to purchase other tokens. locking the default funding currency can be useful to prevent users from purchasing the wrong currency or the currency on the wrong chain.\nExample: await wallet.connect({ settings: {defaultFundingCurrency: true}}\n","title":"settings.lockFundingCurrencyToDefault","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"220":{"href":"/sdk/typescript/03-guides/01-connect-wallet#connecting-your-dapp-with-web3js-or-ethersjs","html":"\n

For a full example of a dapp which supports Sequence (on-demand + chrome extension), Metamask, and WalletConnect\nplease see the Demo-Dapp-Web3Modal repo.

\n

\"Sequence

\n","isPage":false,"text":"\nFor a full example of a dapp which supports Sequence (on-demand + chrome extension), Metamask, and WalletConnect\nplease see the Demo-Dapp-Web3Modal repo.\n\n","title":"Connecting your dapp with web3.js or ethers.js","titles":["Connect Wallet"]},"221":{"href":"/sdk/typescript/03-guides/01-connect-wallet#connecting-to-any-ethereum-dapp-with-the-sequence-wallet-chrome-extension","html":"\n

Sequence Chrome Extension: Install

\n

\"Sequence

\n","isPage":false,"text":"\nSequence Chrome Extension: Install\n\n","title":"Connecting to any Ethereum dapp with the Sequence Wallet Chrome Extension","titles":["Connect Wallet"]},"222":{"href":"/sdk/typescript/03-guides/01-connect-wallet#connecting-via-walletconnect","html":"\n

Sequence already supports connecting to dapps via WalletConnect.\nIf your dapp already supports WalletConnect, and you don't need Sequence-specific functionality, nothing more needs to be done.\nFrom the user's perspective, the WalletConnect flow behaves as follows.

\n

Taking Uniswap as an example, the user is prompted to connect their wallet using one of multiple possible protocols.

\n\n

The user selects the WalletConnect option.

\n\n

A QR code is displayed, which can be scanned by Sequence.\nAlternatively, the user can also choose to copy the connection details via their OS clipboard.

\n\n

Back in the Sequence interface, the user chooses "Scan".

\n\n

The QR code from the dapp is scanned.\nAlternatively, the code is pasted from the OS clipboard if the user chose that previously.

\n\n

The user confirms the connection request.

\n\n

The connection succeeded, and the dapp is updated to reflect that.

\n\n

While connected, the dapp is able to make signing requests to Sequence.\nSequence will always prompt for confirmation from the user for any activity initiated by the dapp.

\n\n

Once the user has finished using the dapp, they can disconnect the wallet via the session menu.

\n","isPage":false,"text":"\nSequence already supports connecting to dapps via WalletConnect.\nIf your dapp already supports WalletConnect, and you don't need Sequence-specific functionality, nothing more needs to be done.\nFrom the user's perspective, the WalletConnect flow behaves as follows.\nTaking Uniswap as an example, the user is prompted to connect their wallet using one of multiple possible protocols.\n\nThe user selects the WalletConnect option.\n\nA QR code is displayed, which can be scanned by Sequence.\nAlternatively, the user can also choose to copy the connection details via their OS clipboard.\n\nBack in the Sequence interface, the user chooses "Scan".\n\nThe QR code from the dapp is scanned.\nAlternatively, the code is pasted from the OS clipboard if the user chose that previously.\n\nThe user confirms the connection request.\n\nThe connection succeeded, and the dapp is updated to reflect that.\n\nWhile connected, the dapp is able to make signing requests to Sequence.\nSequence will always prompt for confirmation from the user for any activity initiated by the dapp.\n\nOnce the user has finished using the dapp, they can disconnect the wallet via the session menu.\n","title":"Connecting via WalletConnect","titles":["Connect Wallet"]},"223":{"href":"/sdk/typescript/03-guides/02-auth-address#authenticate-users-with-message-signature","html":"\n","isPage":true,"text":"\n","title":"Authenticate Users with Message Signature","titles":[]},"224":{"href":"/sdk/typescript/03-guides/02-auth-address#ask-for-the-wallet-address","html":"\n

To get the user's Sequence wallet address:

\n
const wallet = sequence.getWallet()\nconst address = wallet.getAddress()\nconsole.log(address)
\n","isPage":false,"text":"\nTo get the user's Sequence wallet address:\nconst wallet = sequence.getWallet()\nconst address = wallet.getAddress()\nconsole.log(address)\n","title":"Ask for the wallet address","titles":["Authenticate Users with Message Signature"]},"225":{"href":"/sdk/typescript/03-guides/02-auth-address#authenticate-wallet","html":"\n

In many cases, you'll want your users to connect and then verify they do control this wallet address. Applications typically do this by asking the user\nto sign a message with their wallet, and then verify the signature from the user to ensure its integrity.

\n

As this is such a common workflow, Sequence can automatically authenticate the account address at the same time\nwhile the user is prompt to connect their wallet to your dapp. This allows the user experience to be simpler and\nmore seamless.

\n
import { sequence } from '0xsequence'\n \nconst wallet = sequence.getWallet()\n \nconst connectDetails = await wallet.connect({\n  app: 'Your Dapp name',\n  authorize: true // <---<<< this will automatically sign+verify a EIP712 message when user clicks "Connect"\n})
\n

It will look like this to your users:

\n\"Sequence\n

In the above example, we pass authorize: true to the connect() function, which will automatically have the user\nsign a EIP712 signed message to prove their identity. This allows you to then easily authenticate the connected\nwallet address with absolute certainty.

\n

You can find the signed message proof returned in connectDetails.proof, which is an EIP712 signed object using\na simple convention from ethauth. NOTE: EIP712 allows you to use an actual object for\nsigning instead of just a plain-text string.

\n","isPage":false,"text":"\nIn many cases, you'll want your users to connect and then verify they do control this wallet address. Applications typically do this by asking the user\nto sign a message with their wallet, and then verify the signature from the user to ensure its integrity.\nAs this is such a common workflow, Sequence can automatically authenticate the account address at the same time\nwhile the user is prompt to connect their wallet to your dapp. This allows the user experience to be simpler and\nmore seamless.\nimport { sequence } from '0xsequence'\n \nconst wallet = sequence.getWallet()\n \nconst connectDetails = await wallet.connect({\n app: 'Your Dapp name',\n authorize: true // <---<<< this will automatically sign+verify a EIP712 message when user clicks "Connect"\n})\nIt will look like this to your users:\n\nIn the above example, we pass authorize: true to the connect() function, which will automatically have the user\nsign a EIP712 signed message to prove their identity. This allows you to then easily authenticate the connected\nwallet address with absolute certainty.\nYou can find the signed message proof returned in connectDetails.proof, which is an EIP712 signed object using\na simple convention from ethauth. NOTE: EIP712 allows you to use an actual object for\nsigning instead of just a plain-text string.\n","title":"Authenticate wallet","titles":["Authenticate Users with Message Signature"]},"226":{"href":"/sdk/typescript/03-guides/02-auth-address#authenticate-wallet-server-side","html":"\n

The above example demonstrates how to connect and verify the user's identity in your dapp on the client-side,\nbut if you'd like to authenticate the Sequence authorization proof on your server, then you can do so with the following snippet:

\n
import { ValidateSequenceWalletProof } from '@0xsequence/auth'\nimport { commons, v2 } from '@0xsequence/core'\nimport { ETHAuth } from '@0xsequence/ethauth'\nimport { trackers } from '@0xsequence/sessions'\nimport * as ethers from 'ethers'\n \n// ...\n \nconst rpcUrl = 'https://polygon-mainnet.infura.io/v3/<your infura key here>'\nconst provider = new ethers.providers.JsonRpcProvider(rpcUrl)\n \n// create an EIP-6492-aware ETHAuth proof validator\nconst validator = ValidateSequenceWalletProof(\n  () => new commons.reader.OnChainReader(provider),\n  new trackers.remote.RemoteConfigTracker('https://sessions.sequence.app'),\n  v2.DeployedWalletContext\n)\nconst ethauth = new ETHAuth(validator)\nawait ethauth.configJsonRpcProvider(rpcUrl)\n \ntry {\n  const proof = await ethAuth.decodeProof(connectDetails.proof.proofString)\n  console.log(`proof for address ${proof.address} is valid`)\n} catch (err) {\n  console.log(`invalid proof -- do not trust address: ${err}`)\n}
\n

See the Go Sequence SDK on using Sequence in your Go applications.

\n

If your server is written in a language other than Javascript/Typescript or Go, all you have to do is validate\nthe signature with EIP1271, the standard method for validating signed messages for a smart wallet.

\n

As always, if you have any questions or require help, reach out to us on Discord.

","isPage":false,"text":"\nThe above example demonstrates how to connect and verify the user's identity in your dapp on the client-side,\nbut if you'd like to authenticate the Sequence authorization proof on your server, then you can do so with the following snippet:\nimport { ValidateSequenceWalletProof } from '@0xsequence/auth'\nimport { commons, v2 } from '@0xsequence/core'\nimport { ETHAuth } from '@0xsequence/ethauth'\nimport { trackers } from '@0xsequence/sessions'\nimport * as ethers from 'ethers'\n \n// ...\n \nconst rpcUrl = 'https://polygon-mainnet.infura.io/v3/<your infura key here>'\nconst provider = new ethers.providers.JsonRpcProvider(rpcUrl)\n \n// create an EIP-6492-aware ETHAuth proof validator\nconst validator = ValidateSequenceWalletProof(\n () => new commons.reader.OnChainReader(provider),\n new trackers.remote.RemoteConfigTracker('https://sessions.sequence.app'),\n v2.DeployedWalletContext\n)\nconst ethauth = new ETHAuth(validator)\nawait ethauth.configJsonRpcProvider(rpcUrl)\n \ntry {\n const proof = await ethAuth.decodeProof(connectDetails.proof.proofString)\n console.log(`proof for address ${proof.address} is valid`)\n} catch (err) {\n console.log(`invalid proof -- do not trust address: ${err}`)\n}\nSee the Go Sequence SDK on using Sequence in your Go applications.\nIf your server is written in a language other than Javascript/Typescript or Go, all you have to do is validate\nthe signature with EIP1271, the standard method for validating signed messages for a smart wallet.\nAs always, if you have any questions or require help, reach out to us on Discord.","title":"Authenticate wallet server-side","titles":["Authenticate Users with Message Signature"]},"227":{"href":"/sdk/typescript/03-guides/03-sign-message#todo---replace-with-code-groups-from-vocs","html":"","isPage":true,"text":"","title":"TODO - Replace with Code Groups from Vocs","titles":[]},"228":{"href":"/sdk/typescript/03-guides/04-session-keys#no-wallet-confirmation-signatures","html":"\n

It is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using session keys, or ephemeral keys.

\n
","isPage":true,"text":"\nIt is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using session keys, or ephemeral keys.\n","title":"No-Wallet-Confirmation Signatures","titles":[]},"229":{"href":"/sdk/typescript/03-guides/04-session-keys#session-keys","html":"
\n

Session keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet.

\n

By signing a message with their primary wallet (e.g., Sequence Wallet), users can authorize a session key to act on their behalf for a limited time or scope. Applications can then interpret signed messages from the session key as if they were coming directly from the user's wallet, streamlining the user experience.

\n

Session keys are particularly useful for applications that require frequent user interactions, as they help reduce the number of wallet confirmations needed, while still maintaining a secure and verifiable authentication process.

\n
","isPage":false,"text":"\nSession keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet.\nBy signing a message with their primary wallet (e.g., Sequence Wallet), users can authorize a session key to act on their behalf for a limited time or scope. Applications can then interpret signed messages from the session key as if they were coming directly from the user's wallet, streamlining the user experience.\nSession keys are particularly useful for applications that require frequent user interactions, as they help reduce the number of wallet confirmations needed, while still maintaining a secure and verifiable authentication process.\n","title":"Session Keys","titles":[]},"230":{"href":"/sdk/typescript/03-guides/04-session-keys#using-session-keys-with-sequence","html":"
\n","isPage":false,"text":"\n","title":"Using Session keys with Sequence","titles":[]},"231":{"href":"/sdk/typescript/03-guides/04-session-keys#1-initialize-sequence-wallet-and-connect","html":"\n
import { Wallet } from '@0xsequence/wallet'\nimport { ethers } from 'ethers'\n \nconst wallet = new Wallet()\nawait wallet.connect()\n \nconst signer = wallet.getSigner()\nconst userAddress = signer.getAddress()
\n","isPage":false,"text":"\nimport { Wallet } from '@0xsequence/wallet'\nimport { ethers } from 'ethers'\n \nconst wallet = new Wallet()\nawait wallet.connect()\n \nconst signer = wallet.getSigner()\nconst userAddress = signer.getAddress()\n","title":"1. Initialize Sequence Wallet and Connect","titles":["Using Session keys with Sequence",null]},"232":{"href":"/sdk/typescript/03-guides/04-session-keys#2-generate-a-session-key","html":"\n

Create a new ephemeral private key, store it in local storage, and derive the associated address:

\n
const sessionPrivateKey = ethers.utils.randomBytes(32)\nlocalStorage.setItem('sessionPrivateKey', ethers.utils.hexlify(sessionPrivateKey))\nconst sessionWallet = new ethers.Wallet(sessionPrivateKey)\nconst sessionAddress = await sessionWallet.getAddress()
\n","isPage":false,"text":"\nCreate a new ephemeral private key, store it in local storage, and derive the associated address:\nconst sessionPrivateKey = ethers.utils.randomBytes(32)\nlocalStorage.setItem('sessionPrivateKey', ethers.utils.hexlify(sessionPrivateKey))\nconst sessionWallet = new ethers.Wallet(sessionPrivateKey)\nconst sessionAddress = await sessionWallet.getAddress()\n","title":"2. Generate a Session Key","titles":["Using Session keys with Sequence",null]},"233":{"href":"/sdk/typescript/03-guides/04-session-keys#3-sign-authorization-message","html":"\n

Sign a message with the user's Sequence Wallet to authorize the session key:

\n
const authorizationMessage = `Authorize this device to play this game.`\nconst signature = await signer.signMessage(authorizationMessage)
\n","isPage":false,"text":"\nSign a message with the user's Sequence Wallet to authorize the session key:\nconst authorizationMessage = `Authorize this device to play this game.`\nconst signature = await signer.signMessage(authorizationMessage)\n","title":"3. Sign Authorization Message","titles":["Using Session keys with Sequence",null]},"234":{"href":"/sdk/typescript/03-guides/04-session-keys#4-verify-authorization-signature","html":"\n

Verify the signature on the server or client side using Sequence utility functions:

\n
const provider = wallet.getProvider()\nconst chainId = await wallet.getChainId()\n \nconst isValid = await wallet.utils.isValidMessageSignature(\n  userAddress,\n  authorizationMessage,\n  signature,\n  chainId\n)\n \nif (isValid) {\n  console.log('Session key authorized')\n} else {\n  console.log('Session key not authorized')\n}
\n","isPage":false,"text":"\nVerify the signature on the server or client side using Sequence utility functions:\nconst provider = wallet.getProvider()\nconst chainId = await wallet.getChainId()\n \nconst isValid = await wallet.utils.isValidMessageSignature(\n userAddress,\n authorizationMessage,\n signature,\n chainId\n)\n \nif (isValid) {\n console.log('Session key authorized')\n} else {\n console.log('Session key not authorized')\n}\n","title":"4. Verify Authorization Signature","titles":["Using Session keys with Sequence",null]},"235":{"href":"/sdk/typescript/03-guides/04-session-keys#5-sign-message-with-session-key","html":"\n

Use the session key to sign a message client-side without user interaction:

\n
const message = 'Perform action without wallet confirmation'\nconst sessionSignature = await sessionWallet.signMessage(message)
\n","isPage":false,"text":"\nUse the session key to sign a message client-side without user interaction:\nconst message = 'Perform action without wallet confirmation'\nconst sessionSignature = await sessionWallet.signMessage(message)\n","title":"5. Sign Message with Session Key","titles":["Using Session keys with Sequence",null]},"236":{"href":"/sdk/typescript/03-guides/04-session-keys#6-verify-session-signature","html":"\n

Verify the session signature on the server or client side:

\n
const recoveredSessionAddress = ethers.utils.verifyMessage(message, sessionSignature)\nif (recoveredSessionAddress === sessionAddress) {\n  console.log('Session signature valid')\n} else {\n  console.log('Session signature invalid')\n}
\n

Note: You should retrieve the session key stored in local storage upon loading the application and only create a new session key if none can be found.

","isPage":false,"text":"\nVerify the session signature on the server or client side:\nconst recoveredSessionAddress = ethers.utils.verifyMessage(message, sessionSignature)\nif (recoveredSessionAddress === sessionAddress) {\n console.log('Session signature valid')\n} else {\n console.log('Session signature invalid')\n}\nNote: You should retrieve the session key stored in local storage upon loading the application and only create a new session key if none can be found.","title":"6. Verify Session Signature","titles":["Using Session keys with Sequence",null]},"237":{"href":"/sdk/typescript/03-guides/05-send-transaction#sending-transactions","html":"\n

Signing a transaction will only retrieve the signed payload.\nIf you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from signTransactions to sendTransaction):

\n
const transaction = {\n  to: recipientAddress,\n  value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSigning a transaction will only retrieve the signed payload.\nIf you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from signTransactions to sendTransaction):\nconst transaction = {\n to: recipientAddress,\n value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n ","title":"Sending Transactions","titles":[]},"238":{"href":"/sdk/typescript/03-guides/06-send-erc20#sending-erc-20-tokens","html":"\n

You can ask the wallet to send a single ERC-20 token transfer:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\n \n// Encode an ERC-20 token transfer to recipient of the specified amount\nconst data = erc20Interface.encodeFunctionData(\n  'transfer', [recipientAddress, amount]\n)\n \nconst transaction = {\n  to: daiContractAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\n \n// Encode two different ERC-20 token transfers\nconst data1 = erc20Interface.encodeFunctionData(\n  'transfer', [recipient1Address, amount1]\n)\nconst data2 = erc20Interface.encodeFunctionData(\n  'transfer', [recipient2Address, amount2]\n)\n \nconst transaction1 = {\n  to: daiContractAddress,\n  data: data1\n}\n \nconst transaction2 = {\n  to: daiContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nYou can ask the wallet to send a single ERC-20 token transfer:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\n \n// Encode an ERC-20 token transfer to recipient of the specified amount\nconst data = erc20Interface.encodeFunctionData(\n 'transfer', [recipientAddress, amount]\n)\n \nconst transaction = {\n to: daiContractAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\n \n// Encode two different ERC-20 token transfers\nconst data1 = erc20Interface.encodeFunctionData(\n 'transfer', [recipient1Address, amount1]\n)\nconst data2 = erc20Interface.encodeFunctionData(\n 'transfer', [recipient2Address, amount2]\n)\n \nconst transaction1 = {\n to: daiContractAddress,\n data: data1\n}\n \nconst transaction2 = {\n to: daiContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-20 Tokens","titles":[]},"239":{"href":"/sdk/typescript/03-guides/07-send-erc721#sending-erc-721-nft-tokens","html":"\n

Sending an ERC-721 NFT is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:

\n
const erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode the transfer of the NFT tokenId to recipient\nconst address = await wallet.getAddress()\nconst data = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipientAddress, tokenId]\n)\n \nconst transaction = {\n  to: erc721TokenAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode two different ERC-721 token transfers\nconst data1 = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient1Address, amount1]\n)\nconst data2 = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient2Address, amount2]\n)\n \nconst transaction1 = {\n  to: erc721ContractAddress,\n  data: data1\n}\n \nconst transaction2 = {\n  to: erc721ContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSending an ERC-721 NFT is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode the transfer of the NFT tokenId to recipient\nconst address = await wallet.getAddress()\nconst data = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipientAddress, tokenId]\n)\n \nconst transaction = {\n to: erc721TokenAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode two different ERC-721 token transfers\nconst data1 = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient1Address, amount1]\n)\nconst data2 = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient2Address, amount2]\n)\n \nconst transaction1 = {\n to: erc721ContractAddress,\n data: data1\n}\n \nconst transaction2 = {\n to: erc721ContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-721 (NFT) Tokens","titles":[]},"240":{"href":"/sdk/typescript/03-guides/08-send-erc1155#sending-erc-1155-collectible-tokens","html":"\n

Sending an ERC-1155 collectible is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:

\n
const erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode the transfer of the collectible to recipient\nconst address = await wallet.getAddress()\nconst data = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipientAddress, tokenId, amount, '0x']\n)\n \nconst transaction = {\n  to: erc1155TokenAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode two different ERC-1155 token transfers\nconst data1 = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient1Address, token1Id, amount1, '0x']\n)\nconst data2 = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient2Address, token2Id, amount2, '0x']\n)\n \nconst transaction1 = {\n  to: erc1155ContractAddress,\n  data: data1\n}\nconst transaction2 = {\n  to: erc1155ContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSending an ERC-1155 collectible is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode the transfer of the collectible to recipient\nconst address = await wallet.getAddress()\nconst data = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipientAddress, tokenId, amount, '0x']\n)\n \nconst transaction = {\n to: erc1155TokenAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode two different ERC-1155 token transfers\nconst data1 = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient1Address, token1Id, amount1, '0x']\n)\nconst data2 = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient2Address, token2Id, amount2, '0x']\n)\n \nconst transaction1 = {\n to: erc1155ContractAddress,\n data: data1\n}\nconst transaction2 = {\n to: erc1155ContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-1155 (Collectible) Tokens","titles":[]},"241":{"href":"/sdk/typescript/03-guides/09-send-batch-transactions#sending-a-batch-of-transactions","html":"\n

Likewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:

\n
const transaction1 = {\n  to: recipient1Address,\n  value: 1000000000000000000\n}\n \nconst transaction2 = {\n  to: recipient2Address,\n  value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(response)
\n

The transactions don't have to be the same token or even token standard either.\nYou can mix and match:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\nconst erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\nconst erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \nconst erc20Data = erc20Interface.encodeFunctionData(\n  'transfer', [recipient2Address, amount2]\n)\nconst erc721Data = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient3Address, amount3]\n)\nconst erc1155Data = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient4Address, token4Id, amount4, '0x']\n)\n \nconst transactions = [\n  { to: recipient1Address, value: '1000000000000000000' },\n  { to: daiContractAddress, data: erc20Data },\n  { to: erc721ContractAddress, data: erc721Data },\n  { to: erc1155ContractAddress, data: erc1155Data }\n]\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction(transactions)\nconsole.log(response)
","isPage":true,"text":"\nLikewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:\nconst transaction1 = {\n to: recipient1Address,\n value: 1000000000000000000\n}\n \nconst transaction2 = {\n to: recipient2Address,\n value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(response)\nThe transactions don't have to be the same token or even token standard either.\nYou can mix and match:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \nconst erc20Data = erc20Interface.encodeFunctionData(\n 'transfer', [recipient2Address, amount2]\n)\nconst erc721Data = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient3Address, amount3]\n)\nconst erc1155Data = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient4Address, token4Id, amount4, '0x']\n)\n \nconst transactions = [\n { to: recipient1Address, value: '1000000000000000000' },\n { to: daiContractAddress, data: erc20Data },\n { to: erc721ContractAddress, data: erc721Data },\n { to: erc1155ContractAddress, data: erc1155Data }\n]\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction(transactions)\nconsole.log(response)","title":"Sending a Batch of Transactions","titles":[]},"242":{"href":"/sdk/typescript/03-guides/10-building-backends#building-backends-with-sequence","html":"\n","isPage":true,"text":"\n","title":"Building Backends with Sequence","titles":[]},"243":{"href":"/sdk/typescript/03-guides/10-building-backends#nodejs","html":"\n

The 0xsequence package which is available for browser / client use, also works perfectly on nodejs backends\nwritten in Javascript or Typescript.

\n","isPage":false,"text":"\nThe 0xsequence package which is available for browser / client use, also works perfectly on nodejs backends\nwritten in Javascript or Typescript.\n","title":"nodejs","titles":["Building Backends with Sequence",null]},"244":{"href":"/sdk/typescript/03-guides/10-building-backends#go","html":"\n

A complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.

\n

go-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.

\n","isPage":false,"text":"\nA complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.\ngo-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.\n","title":"Go","titles":["Building Backends with Sequence",null]},"245":{"href":"/sdk/typescript/03-guides/10-building-backends#ethkit","html":"\n

As part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.

\n","isPage":false,"text":"\nAs part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.\n","title":"ethkit","titles":["Building Backends with Sequence",null]},"246":{"href":"/sdk/typescript/03-guides/10-building-backends#support-for-other-backend-languages","html":"\n

If your backend services are written in a language other than JS or Go, you can still easily integrate Sequence,\nas Sequence is really just a standard Ethereum client library with some extra features. In many cases, the extra\nfeatures are best utilized on the client-side / dapp.

\n

If your situation for example is a Python or Java backend where you'd like to verify signatures from a Sequence Wallet,\nwell then, you can call the standard EIP1271 function for the account address\nfrom your backend.

\n

If you'd like to use the Sequence's Meta-Transaction capabilities, see Building Relaying Server with Sequence.

","isPage":false,"text":"\nIf your backend services are written in a language other than JS or Go, you can still easily integrate Sequence,\nas Sequence is really just a standard Ethereum client library with some extra features. In many cases, the extra\nfeatures are best utilized on the client-side / dapp.\nIf your situation for example is a Python or Java backend where you'd like to verify signatures from a Sequence Wallet,\nwell then, you can call the standard EIP1271 function for the account address\nfrom your backend.\nIf you'd like to use the Sequence's Meta-Transaction capabilities, see Building Relaying Server with Sequence.","title":"Support for other backend languages","titles":["Building Backends with Sequence",null]},"247":{"href":"/sdk/typescript/03-guides/overview#install","html":"\n

Sequence.js is a modular web3 stack and smart wallet package for Ethereum chains. You can think of it similar to ethers.js, but tailored to the Sequence stack which streamlines common functions needed for blockchain-enabled game development. The sequence.js SDK is composed of several sub-packages combined into a single meta-package called 0xsequence.\nTo add the SDK to your project, add a dependency on 0xsequence to your package.json:

\n
npm install 0xsequence ethers
\n

or

\n
pnpm install 0xsequence ethers
\n

or

\n
yarn add 0xsequence ethers
\n

If you know that your project only requires specific sub-packages, you can also depend on those directly with\nnpm add @0xsequence/<sub-package name>.

\n

Your package.json should look something like this (actual version may vary):

\n
{\n  "name": "my-dapp",\n  ...\n  "dependencies": {\n    "0xsequence": "^1.0.0",\n    "ethers": ^5.7.0"\n    ...\n  }\n}
\n","isPage":true,"text":"\nSequence.js is a modular web3 stack and smart wallet package for Ethereum chains. You can think of it similar to ethers.js, but tailored to the Sequence stack which streamlines common functions needed for blockchain-enabled game development. The sequence.js SDK is composed of several sub-packages combined into a single meta-package called 0xsequence.\nTo add the SDK to your project, add a dependency on 0xsequence to your package.json:\nnpm install 0xsequence ethers\nor\npnpm install 0xsequence ethers\nor\nyarn add 0xsequence ethers\nIf you know that your project only requires specific sub-packages, you can also depend on those directly with\nnpm add @0xsequence/<sub-package name>.\nYour package.json should look something like this (actual version may vary):\n{\n "name": "my-dapp",\n ...\n "dependencies": {\n "0xsequence": "^1.0.0",\n "ethers": ^5.7.0"\n ...\n }\n}\n","title":"Install","titles":[null]},"248":{"href":"/sdk/typescript/03-guides/overview#cdn-distribution-as-native-js","html":"\n

Optionally, 0xsequence can be installed as a JS script source (UMD distribution) via:

\n
<script src="https://cdn.ethers.io/lib/ethers-5.7.umd.min.js"></script>\n<script src="https://unpkg.com/0xsequence@latest/dist/0xsequence.umd.min.js"></script>
","isPage":false,"text":"\nOptionally, 0xsequence can be installed as a JS script source (UMD distribution) via:\n<script src="https://cdn.ethers.io/lib/ethers-5.7.umd.min.js"></script>\n<script src="https://unpkg.com/0xsequence@latest/dist/0xsequence.umd.min.js"></script>","title":"CDN distribution as native JS","titles":[null,"Install",null]},"249":{"href":"/sdk/typescript/connectors/01-overview#wallet-connectors","html":"\n

Sequence is compatible with all standard Ethereum libraries and connectors. If you've\ndeveloped your dapp to with work Metamask, it will also automatically work with Sequence.

\n

Our SDKs offer all the functionality you'd need to build a web3 dapp, but you can also\ncombine other libraries, tools, and wallet connectors :) Please see our open sourced Demo Dapp\nproject for an example use of Sequence, or see below on usage with additional connectors.

\n

For your dapps, you may also want to support many different kinds of wallets in addition\nto the Sequence Wallet. You may do this by using sequence.js or using one of the connectors below:

\n\n

Additionally, if you are building a mobile app or video game, please see the docs for\nthe respective SDK. Feel free to reach out to our team for help/questions too.

","isPage":true,"text":"\nSequence is compatible with all standard Ethereum libraries and connectors. If you've\ndeveloped your dapp to with work Metamask, it will also automatically work with Sequence.\nOur SDKs offer all the functionality you'd need to build a web3 dapp, but you can also\ncombine other libraries, tools, and wallet connectors :) Please see our open sourced Demo Dapp\nproject for an example use of Sequence, or see below on usage with additional connectors.\nFor your dapps, you may also want to support many different kinds of wallets in addition\nto the Sequence Wallet. You may do this by using sequence.js or using one of the connectors below:\n\nSequence Kit\nWagmi\nWeb3Modal\nRainbowKit\nweb3-onboard\nweb3-react\n\nAdditionally, if you are building a mobile app or video game, please see the docs for\nthe respective SDK. Feel free to reach out to our team for help/questions too.","title":"Wallet Connectors","titles":[]},"250":{"href":"/sdk/typescript/connectors/02-sequence-kit#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","html":"\n

Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.

\n","isPage":true,"text":"\nSequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.\n","title":"Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications","titles":[]},"251":{"href":"/sdk/typescript/connectors/02-sequence-kit#key-features","html":"\n\n

Explore the potential of Sequence Kit by trying out our demo!

\n
","isPage":false,"text":"\n\n\nUniversal Connections: Seamlessly connect via popular social logins such as Facebook, Google, Discord, and more! Your users will enjoy a smooth, secure onboarding process. 🔐🪪\n\n\nWeb3 Wallet Integration: Effortlessly integrate with leading web3 wallets like WalletConnect and MetaMask. Unleash the power of blockchain with just a few clicks! 🦊 ⛓️\n\n\nEmbedded Wallet Experience: Provide your users with a comprehensive embedded wallet, enabling them to manage their coins and collectibles all within your own application. 👛 🖼️ 🪙\n\n\nExplore the potential of Sequence Kit by trying out our demo!\n","title":"Key Features","titles":["Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications"]},"252":{"href":"/sdk/typescript/connectors/02-sequence-kit#next-steps","html":"
\n

Ready to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.

","isPage":false,"text":"\nReady to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.","title":"Next Steps","titles":[]},"253":{"href":"/sdk/typescript/connectors/03-wagmi#using-wagmi","html":"\n

The Sequence wallet used with Wagmi through the connector.

\n

:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Wallet Connect with wagmi.

\n

Source code is available too: https://github.com/0xsequence/demo-dapp-wagmi\n:::

\n","isPage":true,"text":"\nThe Sequence wallet used with Wagmi through the connector.\n:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Wallet Connect with wagmi.\nSource code is available too: https://github.com/0xsequence/demo-dapp-wagmi\n:::\n","title":"Using Wagmi","titles":[]},"254":{"href":"/sdk/typescript/connectors/03-wagmi#installation","html":"\n

The connector is installed via the npm package @0xsequence/wagmi-connector. If you are using the latest version of wagmi (>= 1.0.0) the latest version of the wagmi-connector package can be installed with the following command:

\n
npm install @0xsequence/wagmi-connector 0xsequence ethers
\n

or

\n
yarn add @0xsequence/wagmi-connector 0xsequence ethers
\n","isPage":false,"text":"\nThe connector is installed via the npm package @0xsequence/wagmi-connector. If you are using the latest version of wagmi (>= 1.0.0) the latest version of the wagmi-connector package can be installed with the following command:\nnpm install @0xsequence/wagmi-connector 0xsequence ethers\nor\nyarn add @0xsequence/wagmi-connector 0xsequence ethers\n","title":"Installation","titles":["Using Wagmi"]},"255":{"href":"/sdk/typescript/connectors/03-wagmi#usage","html":"\n

The connector is then imported and added to the list of connectors alongside the other wagmi connectors.

\n
import { SequenceConnector } from "@0xsequence/wagmi-connector";\n \nconst connectors = [\n  new SequenceConnector({\n    chains,\n    options: {\n      defaultNetwork: "polygon",\n      connect: {\n        app: "Demo-app",\n      },\n    },\n  }),\n  ...otherConnectors,\n];\n \nconst wagmiConfig = createConfig({\n  autoConnect: true,\n  connectors,\n  publicClient,\n  webSocketPublicClient,\n});
\n","isPage":false,"text":"\nThe connector is then imported and added to the list of connectors alongside the other wagmi connectors.\nimport { SequenceConnector } from "@0xsequence/wagmi-connector";\n \nconst connectors = [\n new SequenceConnector({\n chains,\n options: {\n defaultNetwork: "polygon",\n connect: {\n app: "Demo-app",\n },\n },\n }),\n ...otherConnectors,\n];\n \nconst wagmiConfig = createConfig({\n autoConnect: true,\n connectors,\n publicClient,\n webSocketPublicClient,\n});\n","title":"Usage","titles":["Using Wagmi"]},"256":{"href":"/sdk/typescript/connectors/03-wagmi#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using Wagmi"]},"257":{"href":"/sdk/typescript/connectors/03-wagmi#chains","html":"\n

Chains supported by app. This is the same parameter as would be passed to other RainbowKit wallets.

\n","isPage":false,"text":"\nChains supported by app. This is the same parameter as would be passed to other RainbowKit wallets.\n","title":"chains","titles":["Using Wagmi","Parameters"]},"258":{"href":"/sdk/typescript/connectors/03-wagmi#optionsconnect-optional","html":"\n

Connection details that will be passed to Sequence upon connection, including app name, network id, etc...\nA more in depth description of the connect options is available here.

\n","isPage":false,"text":"\nConnection details that will be passed to Sequence upon connection, including app name, network id, etc...\nA more in depth description of the connect options is available here.\n","title":"options.connect (optional)","titles":["Using Wagmi","Parameters"]},"259":{"href":"/sdk/typescript/connectors/03-wagmi#optionsdefaultnetwork-optional","html":"\n

The default network to connect to. Sequence will default all operations to this network. It can also be defined using a number (e.g. 1 for Mainnet, 5 for Goerli, etc...).

\n","isPage":false,"text":"\nThe default network to connect to. Sequence will default all operations to this network. It can also be defined using a number (e.g. 1 for Mainnet, 5 for Goerli, etc...).\n","title":"options.defaultNetwork (optional)","titles":["Using Wagmi","Parameters"]},"260":{"href":"/sdk/typescript/connectors/03-wagmi#using-older-versions-of-wagmi--012x","html":"\n

If you are using an older version of Wagmi (<= 0.12.x), which is based on ethers instead of viem, use the following command to install the appropriate version of the wagmi connector:

\n
npm install @0xsequence/wagmi-connector@1.0 0xsequence ethers
\n

or

\n
yarn add @0xsequence/wagmi-connector@1.0 0xsequence ethers
\n","isPage":false,"text":"\nIf you are using an older version of Wagmi (<= 0.12.x), which is based on ethers instead of viem, use the following command to install the appropriate version of the wagmi connector:\nnpm install @0xsequence/wagmi-connector@1.0 0xsequence ethers\nor\nyarn add @0xsequence/wagmi-connector@1.0 0xsequence ethers\n","title":"Using older versions of Wagmi (<= 0.12.x)","titles":["Using Wagmi"]},"261":{"href":"/sdk/typescript/connectors/03-wagmi#using-nextjs","html":"\n

There are special considerations to take into account when using Wagmi with NextJs such that it functions harmoniously with the server-side rendering of NextJs.\nThe correct technique to use differs depending on whether the application uses the older pages router or the more recent app router.

\n

See this section for an explanation on using the Wagmi connector with app router.
\nSee the example app which uses the app router structure.

\n

See this section for an explanation on using the Wagmi connector with pages router.
\nSee the example app which uses the pages router structure.

\n","isPage":false,"text":"\nThere are special considerations to take into account when using Wagmi with NextJs such that it functions harmoniously with the server-side rendering of NextJs.\nThe correct technique to use differs depending on whether the application uses the older pages router or the more recent app router.\nSee this section for an explanation on using the Wagmi connector with app router.\nSee the example app which uses the app router structure.\nSee this section for an explanation on using the Wagmi connector with pages router.\nSee the example app which uses the pages router structure.\n","title":"Using NextJs","titles":["Using Wagmi"]},"262":{"href":"/sdk/typescript/connectors/03-wagmi#examples","html":"\n

Below are example dapps using various versions of wagmi and libraries.

\n

A demo app for the lastest version of Wagmi is available here.
\nA demo app is available for older version of Wagmi(<=0.12.x) is available here.

\n

A demo app for Wagmi + NextJs with the app router structure here.
\nA demo app for Wagmi + NextJs with the older pages router structure here.

","isPage":false,"text":"\nBelow are example dapps using various versions of wagmi and libraries.\nA demo app for the lastest version of Wagmi is available here.\nA demo app is available for older version of Wagmi(<=0.12.x) is available here.\nA demo app for Wagmi + NextJs with the app router structure here.\nA demo app for Wagmi + NextJs with the older pages router structure here.","title":"Examples","titles":["Using Wagmi"]},"263":{"href":"/sdk/typescript/connectors/04-rainbow-kit#using-rainbowkit","html":"\n

The Sequence wallet can be added to RainbowKit through the connector.

\n

:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Rainbow + Wallet Connect with RainbowKit.

\n

Source code is available too: https://github.com/0xsequence/demo-dapp-rainbowkit\n:::

\n","isPage":true,"text":"\nThe Sequence wallet can be added to RainbowKit through the connector.\n:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Rainbow + Wallet Connect with RainbowKit.\nSource code is available too: https://github.com/0xsequence/demo-dapp-rainbowkit\n:::\n","title":"Using RainbowKit","titles":[]},"264":{"href":"/sdk/typescript/connectors/04-rainbow-kit#installation","html":"\n

The connector is installed via the npm package @0xsequence/rainbowkit-plugin.

\n
npm install @0xsequence/rainbowkit-plugin 0xsequence ethers
\n

or

\n
yarn add @0xsequence/rainbowkit-plugin 0xsequence ethers
\n","isPage":false,"text":"\nThe connector is installed via the npm package @0xsequence/rainbowkit-plugin.\nnpm install @0xsequence/rainbowkit-plugin 0xsequence ethers\nor\nyarn add @0xsequence/rainbowkit-plugin 0xsequence ethers\n","title":"Installation","titles":["Using RainbowKit"]},"265":{"href":"/sdk/typescript/connectors/04-rainbow-kit#usage","html":"\n

The connector is then imported and added to the list of connectors alongside the other RainbowKit wallets.

\n
import { sequenceWallet } from '@0xsequence/rainbowkit-plugin'\nimport { connectorsForWallets } from '@rainbow-me/rainbowkit';\n \nconst connectors = connectorsForWallets([\n  {\n    groupName: 'Recommended',\n    wallets: [\n      sequenceWallet({\n        chains,\n        defaultNetwork: 'polygon',\n        connect: {\n          app: 'Demo-app'\n        }\n      }),\n      ...otherRainbowKitWallets\n    ]\n  }\n 
\n","isPage":false,"text":"\nThe connector is then imported and added to the list of connectors alongside the other RainbowKit wallets.\nimport { sequenceWallet } from '@0xsequence/rainbowkit-plugin'\nimport { connectorsForWallets } from '@rainbow-me/rainbowkit';\n \nconst connectors = connectorsForWallets([\n {\n groupName: 'Recommended',\n wallets: [\n sequenceWallet({\n chains,\n defaultNetwork: 'polygon',\n connect: {\n app: 'Demo-app'\n }\n }),\n ...otherRainbowKitWallets\n ]\n }\n \n","title":"Usage","titles":["Using RainbowKit"]},"266":{"href":"/sdk/typescript/connectors/04-rainbow-kit#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using RainbowKit"]},"267":{"href":"/sdk/typescript/connectors/04-rainbow-kit#chains","html":"\n

Chains supported by app. This is the same parameter as would be passed to other RainbowKit wallets.

\n","isPage":false,"text":"\nChains supported by app. This is the same parameter as would be passed to other RainbowKit wallets.\n","title":"chains","titles":["Using RainbowKit","Parameters"]},"268":{"href":"/sdk/typescript/connectors/04-rainbow-kit#connect-optional","html":"\n

Connect options for Sequence, including the name of the app and the default network id the wallet will attempt connection to.\nA more in depth description of the connect options is available here.

\n","isPage":false,"text":"\nConnect options for Sequence, including the name of the app and the default network id the wallet will attempt connection to.\nA more in depth description of the connect options is available here.\n","title":"connect (optional)","titles":["Using RainbowKit","Parameters"]},"269":{"href":"/sdk/typescript/connectors/04-rainbow-kit#defaultnetwork-optional","html":"\n

The default network to connect to. Sequence will default all operations to this network. It can also be defined using a number (e.g. 1 for Mainnet, 5 for Goerli, etc...).

\n","isPage":false,"text":"\nThe default network to connect to. Sequence will default all operations to this network. It can also be defined using a number (e.g. 1 for Mainnet, 5 for Goerli, etc...).\n","title":"defaultNetwork (optional)","titles":["Using RainbowKit","Parameters"]},"270":{"href":"/sdk/typescript/connectors/04-rainbow-kit#using-nextjs","html":"\n

There are special considerations to take into account when using NextJs with Wagmi-based libraries like RainbowKit, such that it functions harmoniously with the server-side rendering of NextJs.\nThe correct technique to use differs depending on whether the application uses the older pages router or the more recent app router.

\n

See this section for an explanation on using Wagmi or Wagmi-based libraries with app router.
\nSee the example app which uses the app router structure.

\n

See this section for an explanation on using Wagmi or Wagmi-based libraries with pages router.
\nSee the example app which uses the pages router structure.

\n","isPage":false,"text":"\nThere are special considerations to take into account when using NextJs with Wagmi-based libraries like RainbowKit, such that it functions harmoniously with the server-side rendering of NextJs.\nThe correct technique to use differs depending on whether the application uses the older pages router or the more recent app router.\nSee this section for an explanation on using Wagmi or Wagmi-based libraries with app router.\nSee the example app which uses the app router structure.\nSee this section for an explanation on using Wagmi or Wagmi-based libraries with pages router.\nSee the example app which uses the pages router structure.\n","title":"Using NextJs","titles":["Using RainbowKit"]},"271":{"href":"/sdk/typescript/connectors/04-rainbow-kit#using-older-versions-of-wagmi--012x","html":"\n

If you are using an older version of Wagmi (<= 0.12.x), which is based on ethers instead of viem, use the following command to install the appropriate version of the wagmi connector:

\n
npm install @0xsequence/wagmi-connector@1.0 0xsequence ethers
\n

or

\n
yarn add @0xsequence/wagmi-connector@1.0 0xsequence ethers
\n","isPage":false,"text":"\nIf you are using an older version of Wagmi (<= 0.12.x), which is based on ethers instead of viem, use the following command to install the appropriate version of the wagmi connector:\nnpm install @0xsequence/wagmi-connector@1.0 0xsequence ethers\nor\nyarn add @0xsequence/wagmi-connector@1.0 0xsequence ethers\n","title":"Using older versions of Wagmi (<= 0.12.x)","titles":["Using RainbowKit"]},"272":{"href":"/sdk/typescript/connectors/04-rainbow-kit#examples","html":"\n

A demo app for RainbowKit is available here

\n

A demo app for NextJs + Wagmi (which is applicable for wagmi-based libraries) with the app router structure here.
\nA demo app for NextJs + Wagmi (which is applicable for wagmi-based libraries) with the older pages router structure here.

","isPage":false,"text":"\nA demo app for RainbowKit is available here\nA demo app for NextJs + Wagmi (which is applicable for wagmi-based libraries) with the app router structure here.\nA demo app for NextJs + Wagmi (which is applicable for wagmi-based libraries) with the older pages router structure here.","title":"Examples","titles":["Using RainbowKit"]},"273":{"href":"/sdk/typescript/connectors/05-web3-onboard#using-web3-onboard","html":"\n

The Sequence wallet can be added through the Blocknative web3-onboard package.

\n

:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Wallet Connect with Web3-Onboard.

\n

Source code is available too: https://github.com/0xsequence/demo-dapp-web3-onboard\n:::

\n","isPage":true,"text":"\nThe Sequence wallet can be added through the Blocknative web3-onboard package.\n:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Wallet Connect with Web3-Onboard.\nSource code is available too: https://github.com/0xsequence/demo-dapp-web3-onboard\n:::\n","title":"Using Web3-Onboard","titles":[]},"274":{"href":"/sdk/typescript/connectors/05-web3-onboard#installation","html":"\n

The Sequence module is available through npm:

\n
npm install @web3-onboard/sequence 0xsequence ethers
\n

or

\n
yarn add @web3-onboard/sequence 0xsequence ethers
\n","isPage":false,"text":"\nThe Sequence module is available through npm:\nnpm install @web3-onboard/sequence 0xsequence ethers\nor\nyarn add @web3-onboard/sequence 0xsequence ethers\n","title":"Installation","titles":["Using Web3-Onboard"]},"275":{"href":"/sdk/typescript/connectors/05-web3-onboard#usage","html":"\n
import sequenceModule from '@web3-onboard/sequence'\n \nconst sequenceOptions = {\n  network: 137,\n  appName: 'My app'\n}\n \nconst sequenceOnboard = sequenceModule({})\n \nconst onboard = Onboard({\n  wallets: [\n    sequenceOnboard,\n    ...restWallets\n  ],\n  ...restofOnboardParams\n})\n 
\n","isPage":false,"text":"\nimport sequenceModule from '@web3-onboard/sequence'\n \nconst sequenceOptions = {\n network: 137,\n appName: 'My app'\n}\n \nconst sequenceOnboard = sequenceModule({})\n \nconst onboard = Onboard({\n wallets: [\n sequenceOnboard,\n ...restWallets\n ],\n ...restofOnboardParams\n})\n \n","title":"Usage","titles":["Using Web3-Onboard"]},"276":{"href":"/sdk/typescript/connectors/05-web3-onboard#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using Web3-Onboard"]},"277":{"href":"/sdk/typescript/connectors/05-web3-onboard#network-optional","html":"\n

The default network that the Sequence wallet will attempt to connect to.

\n","isPage":false,"text":"\nThe default network that the Sequence wallet will attempt to connect to.\n","title":"network (optional)","titles":["Using Web3-Onboard","Parameters"]},"278":{"href":"/sdk/typescript/connectors/05-web3-onboard#appname-optional","html":"\n

The name of the app which will show up in Sequence's prompt upon an attempt to connect.

\n","isPage":false,"text":"\nThe name of the app which will show up in Sequence's prompt upon an attempt to connect.\n","title":"appName (optional)","titles":["Using Web3-Onboard","Parameters"]},"279":{"href":"/sdk/typescript/connectors/05-web3-onboard#example","html":"\n

An example demo of an integration of Sequence + Web3 Onboard is available here

","isPage":false,"text":"\nAn example demo of an integration of Sequence + Web3 Onboard is available here","title":"Example","titles":["Using Web3-Onboard"]},"280":{"href":"/sdk/typescript/connectors/06-web3-react-v6#using-web3-react-v6","html":"\n

The connector is available for web3-react V6. Please note that later versions of web3-react cannot be used with the Web3-React V6 connector due to breaking changes.

\n","isPage":true,"text":"\nThe connector is available for web3-react V6. Please note that later versions of web3-react cannot be used with the Web3-React V6 connector due to breaking changes.\n","title":"Using Web3-React V6","titles":[]},"281":{"href":"/sdk/typescript/connectors/06-web3-react-v6#installation","html":"\n

The connector may be installed via the npm package:

\n
 npm install @0xsequence/web3-react-v6-connector 0xsequence ethers
\n","isPage":false,"text":"\nThe connector may be installed via the npm package:\n npm install @0xsequence/web3-react-v6-connector 0xsequence ethers\n","title":"Installation","titles":["Using Web3-React V6"]},"282":{"href":"/sdk/typescript/connectors/06-web3-react-v6#usage","html":"\n","isPage":false,"text":"\n","title":"Usage","titles":["Using Web3-React V6"]},"283":{"href":"/sdk/typescript/connectors/06-web3-react-v6#initialization","html":"\n

The connector must be initialized similarly to other connectors.

\n
import { SequenceConnector } from '@0xsequence/web3-react-v6-connector'\n \nconst options = {\n  appName: 'Web3 React Demo app'\n}\n \nexport const sequence = new SequenceConnector({ chainId: 137, appName: options.appName  })
\n","isPage":false,"text":"\nThe connector must be initialized similarly to other connectors.\nimport { SequenceConnector } from '@0xsequence/web3-react-v6-connector'\n \nconst options = {\n appName: 'Web3 React Demo app'\n}\n \nexport const sequence = new SequenceConnector({ chainId: 137, appName: options.appName })\n","title":"Initialization","titles":["Using Web3-React V6","Usage"]},"284":{"href":"/sdk/typescript/connectors/06-web3-react-v6#activationdeactivation","html":"\n

The connection can be activated and deactivated from the initialized connector similarly to other connectors.

\n
import { useWeb3React } from '@web3-react/core'\nimport { sequence as sequenceConnector } from './connectors/sequence'\n \nconst { activate } = useWeb3React()\n \nconst connectWeb3React = async () => {\n  activate(sequenceConnector);\n}\n \nconst disconnectWeb3React = async () => {\n  sequenceConnector.deactivate();\n}
\n","isPage":false,"text":"\nThe connection can be activated and deactivated from the initialized connector similarly to other connectors.\nimport { useWeb3React } from '@web3-react/core'\nimport { sequence as sequenceConnector } from './connectors/sequence'\n \nconst { activate } = useWeb3React()\n \nconst connectWeb3React = async () => {\n activate(sequenceConnector);\n}\n \nconst disconnectWeb3React = async () => {\n sequenceConnector.deactivate();\n}\n","title":"Activation/Deactivation","titles":["Using Web3-React V6","Usage"]},"285":{"href":"/sdk/typescript/connectors/06-web3-react-v6#options","html":"\n","isPage":false,"text":"\n","title":"Options","titles":["Using Web3-React V6"]},"286":{"href":"/sdk/typescript/connectors/06-web3-react-v6#chainid","html":"\n

The default chain id as number that the Sequence wallet will attempt to connect to.

\n","isPage":false,"text":"\nThe default chain id as number that the Sequence wallet will attempt to connect to.\n","title":"chainId","titles":["Using Web3-React V6","Options"]},"287":{"href":"/sdk/typescript/connectors/06-web3-react-v6#appname-optional","html":"\n

The value of appName will be displayed by the Sequence wallet when initiating a connection.

\n","isPage":false,"text":"\nThe value of appName will be displayed by the Sequence wallet when initiating a connection.\n","title":"appName (optional)","titles":["Using Web3-React V6","Options"]},"288":{"href":"/sdk/typescript/connectors/06-web3-react-v6#example","html":"\n

A demo app for Web3-React v6 is available here

","isPage":false,"text":"\nA demo app for Web3-React v6 is available here","title":"Example","titles":["Using Web3-React V6"]},"289":{"href":"/sdk/typescript/connectors/07-web3modal#using-web3modal","html":"\n

The Sequence wallet can easily be used with Web3Modal.

\n

:::tip Try it live :)\nTry a live Dapp example using Sequence + Wallet Connect with Web3Modal.

\n

Source code is available too: https://github.com/0xsequence/demo-dapp-web3modal\n:::

\n","isPage":true,"text":"\nThe Sequence wallet can easily be used with Web3Modal.\n:::tip Try it live :)\nTry a live Dapp example using Sequence + Wallet Connect with Web3Modal.\nSource code is available too: https://github.com/0xsequence/demo-dapp-web3modal\n:::\n","title":"Using Web3Modal","titles":[]},"290":{"href":"/sdk/typescript/connectors/07-web3modal#usage","html":"\n

The sequence wallet is compatible with wallet connect V2 and is therefore fully compatible with web3modal by default.\nUsers can use the Scan button in the sequence wallet to connect.

\n\n","isPage":false,"text":"\nThe sequence wallet is compatible with wallet connect V2 and is therefore fully compatible with web3modal by default.\nUsers can use the Scan button in the sequence wallet to connect.\n\n","title":"Usage","titles":["Using Web3Modal"]},"291":{"href":"/sdk/typescript/connectors/07-web3modal#example","html":"\n

An example demo for the sequence Wallet + web3modal is available [here] (https://github.com/0xsequence/demo-dapp-web3modal)

","isPage":false,"text":"\nAn example demo for the sequence Wallet + web3modal is available [here] (https://github.com/0xsequence/demo-dapp-web3modal)","title":"Example","titles":["Using Web3Modal"]},"292":{"href":"/sdk/typescript/connectors/08-FAQ#nextjs","html":"\n","isPage":true,"text":"\n","title":"NextJs","titles":[null]},"293":{"href":"/sdk/typescript/connectors/08-FAQ#why-does-my-wallet-integration-produce-an-error-when-used-with-nextjs","html":"\n

Wallet libraries and connectors must be rendered in the browser. This is particularly true for Wagmi and Wagmi-based libraries. Attempts to render the page elsewhere, such as on backend server, can produce errors in some situations. Rendering on the server is therefore highly discouraged.

\n

The method for fixing this issue will depend on the folder structure. The pages folder structure is available for all versions of NextJs, while the app folder structure is only available for NextJs version 13 and above and may require being turned on through an experimental setting.

\n

See using wallet libraries with next.js pages directory

\n

See using wallet libraries with next.js app directory(NextJs 13+ feature)

\n","isPage":false,"text":"\nWallet libraries and connectors must be rendered in the browser. This is particularly true for Wagmi and Wagmi-based libraries. Attempts to render the page elsewhere, such as on backend server, can produce errors in some situations. Rendering on the server is therefore highly discouraged.\nThe method for fixing this issue will depend on the folder structure. The pages folder structure is available for all versions of NextJs, while the app folder structure is only available for NextJs version 13 and above and may require being turned on through an experimental setting.\nSee using wallet libraries with next.js pages directory\nSee using wallet libraries with next.js app directory(NextJs 13+ feature)\n","title":"Why does my wallet integration produce an error when used with next.js?","titles":[null,"NextJs"]},"294":{"href":"/sdk/typescript/connectors/08-FAQ#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-pages-directory-all-versions-of-nextjs","html":"\n

The content of the application which depends on Wagmi hooks must be mounted only once the application is rendered in the client. This is a limitation due to wagmi when used with NextJs, and all wagmi-based libraries will inherit this limitation. To do so we can use a useEffect hook to wait before rendering the application.

\n

In the example below, we wait until the app is mounted in the client before rendering the rest of the application:

\n
import { useIsMounted } from '../hooks'\nimport Home from '../components/Home'\n \nconst Page = () => {\n  const isMounted = useIsMounted()\n \n  if (!isMounted) return null\n  return (\n    <>\n      <Home />\n    </>\n  )\n}\n \nexport default Page
\n

A full code example of this setup working with the Wagmi library can be found on github.\nThe method described above is the one recommended by Wagmi and is demonstrated in their official example.

\n","isPage":false,"text":"\nThe content of the application which depends on Wagmi hooks must be mounted only once the application is rendered in the client. This is a limitation due to wagmi when used with NextJs, and all wagmi-based libraries will inherit this limitation. To do so we can use a useEffect hook to wait before rendering the application.\nIn the example below, we wait until the app is mounted in the client before rendering the rest of the application:\nimport { useIsMounted } from '../hooks'\nimport Home from '../components/Home'\n \nconst Page = () => {\n const isMounted = useIsMounted()\n \n if (!isMounted) return null\n return (\n <>\n <Home />\n </>\n )\n}\n \nexport default Page\nA full code example of this setup working with the Wagmi library can be found on github.\nThe method described above is the one recommended by Wagmi and is demonstrated in their official example.\n","title":"How do I use a wallet library and connector with next.js using the pages directory (all versions of NextJs)?","titles":[null,"NextJs"]},"295":{"href":"/sdk/typescript/connectors/08-FAQ#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-app-directory-version-13-and-above-only","html":"\n

NextJs 13 and above allows using a new folder structure in which the content is placed in an app directory. Enabling this feature may require explicitly indicating it with an experimental setting.\nWhen using such a folder structure, NextJs allows the declaration of Client Components which are components that will be rendered in the browser.\nA wrapper component containing the wallet library initialized with all the connectors must be declared with the "use client" directive. The "use client" directive is what will turn the wrapper component into a Client Component to be rendered in the browser.

\n

In addition, there is a bug with wagmi and nextJs when using the autoConnect feature which causes

\n

In the example below, we declare a wrapper component with the "use client" directive:

\n
"use client" // this directive informs next.js that the component is a Client Component to be rendered in the browser\n \nconst WagmiWrapper = ({ children }) => {\n  const wagmiClient = createClient({\n    autoConnect: true,\n    connectors,\n    provider,\n    webSocketProvider,\n  });\n \n \n  return (\n    <WagmiConfig client={wagmiClient}>\n      {children}\n    </WagmiConfig>\n  );\n}\n \nexport default WagmiWrapper
\n

This wrapper component can then be imported normally and wrap the rest of the application. The child components can be a combination of Client and Server components.

\n
// We import a custom wrapper component that initializes the wallet library and all its connectors\n// An example of the content of this wrapper component can be found here: https://github.com/0xsequence/demo-dapp-wagmi-next/blob/master/components/WagmiProvider.tsx\nimport WagmiWrapper from './WagmiWrapper'\n \n// We can then wrap our entire app with this browser's rendered component\nfunction MyApp({ Component, pageProps }: AppProps) {\n  return (\n    <WagmiWrapper>\n      <Component {...pageProps} />\n    </WagmiWrapper>\n  );\n}
\n

A full code example using Nextjs and the app directory can be found on github.\nThe method described above is the one recommended by Wagmi through their NextJs example which can be consulted by running the command npx create-wagmi and selecting the nextJs option.

\n

Click here for more information about Client Components.

","isPage":false,"text":"\nNextJs 13 and above allows using a new folder structure in which the content is placed in an app directory. Enabling this feature may require explicitly indicating it with an experimental setting.\nWhen using such a folder structure, NextJs allows the declaration of Client Components which are components that will be rendered in the browser.\nA wrapper component containing the wallet library initialized with all the connectors must be declared with the "use client" directive. The "use client" directive is what will turn the wrapper component into a Client Component to be rendered in the browser.\nIn addition, there is a bug with wagmi and nextJs when using the autoConnect feature which causes\nIn the example below, we declare a wrapper component with the "use client" directive:\n"use client" // this directive informs next.js that the component is a Client Component to be rendered in the browser\n \nconst WagmiWrapper = ({ children }) => {\n const wagmiClient = createClient({\n autoConnect: true,\n connectors,\n provider,\n webSocketProvider,\n });\n \n \n return (\n <WagmiConfig client={wagmiClient}>\n {children}\n </WagmiConfig>\n );\n}\n \nexport default WagmiWrapper\nThis wrapper component can then be imported normally and wrap the rest of the application. The child components can be a combination of Client and Server components.\n// We import a custom wrapper component that initializes the wallet library and all its connectors\n// An example of the content of this wrapper component can be found here: https://github.com/0xsequence/demo-dapp-wagmi-next/blob/master/components/WagmiProvider.tsx\nimport WagmiWrapper from './WagmiWrapper'\n \n// We can then wrap our entire app with this browser's rendered component\nfunction MyApp({ Component, pageProps }: AppProps) {\n return (\n <WagmiWrapper>\n <Component {...pageProps} />\n </WagmiWrapper>\n );\n}\nA full code example using Nextjs and the app directory can be found on github.\nThe method described above is the one recommended by Wagmi through their NextJs example which can be consulted by running the command npx create-wagmi and selecting the nextJs option.\nClick here for more information about Client Components.","title":"How do I use a wallet library and connector with next.js using the app directory (version 13 and above only)?","titles":[null,"NextJs"]},"296":{"href":"/sdk/unity/Advanced/01-introduction#advanced---introduction","html":"\n

For advanced users with experience developing applications on EVM-based blockchains, we've provided our own lightweight, custom-made for Unity, Ethereum library: SequenceEthereum.\nSequenceEthereum should provide everything you need to build your Unity app on the EVM, without all the extra bells and whistles that the popular Nethereum library provides.

\n

While SequenceEthereum is heavily tested, in general, when working with asynchronous methods in the library, you should consider them to be "unsafe", in that they may throw Exceptions when used improperly.\nIn general, wrapping async calls that can potentially throw Exceptions in try catch blocks is a best practice; particularly in Unity, where Tasks can fail silently when throwing exceptions - making debugging difficult when not wrapping calls in try catch blocks.

\n","isPage":true,"text":"\nFor advanced users with experience developing applications on EVM-based blockchains, we've provided our own lightweight, custom-made for Unity, Ethereum library: SequenceEthereum.\nSequenceEthereum should provide everything you need to build your Unity app on the EVM, without all the extra bells and whistles that the popular Nethereum library provides.\nWhile SequenceEthereum is heavily tested, in general, when working with asynchronous methods in the library, you should consider them to be "unsafe", in that they may throw Exceptions when used improperly.\nIn general, wrapping async calls that can potentially throw Exceptions in try catch blocks is a best practice; particularly in Unity, where Tasks can fail silently when throwing exceptions - making debugging difficult when not wrapping calls in try catch blocks.\n","title":"Advanced - Introduction","titles":[]},"297":{"href":"/sdk/unity/Advanced/01-introduction#important-components","html":"\n

When working with the SequenceEthereum library it can be helpful to understand some of the main "components" and how they logically fit together.

\n","isPage":false,"text":"\nWhen working with the SequenceEthereum library it can be helpful to understand some of the main "components" and how they logically fit together.\n","title":"Important Components","titles":["Advanced - Introduction"]},"298":{"href":"/sdk/unity/Advanced/02-wallets#wallets","html":"\n

In the context of SequenceEthereum, a Wallet is defined by the IWallet interface. There are currently 2 implementations of the IWallet interface in this SDK.

\n","isPage":true,"text":"\nIn the context of SequenceEthereum, a Wallet is defined by the IWallet interface. There are currently 2 implementations of the IWallet interface in this SDK.\n","title":"Wallets","titles":[]},"299":{"href":"/sdk/unity/Advanced/02-wallets#1-ethwallet","html":"\n

EthWallet is a standard EOA wallet for EVM chains.

\n

An EthWallet is easily created:

\n
IWallet eoaWallet = new EthWallet(); // This will generate a cryptographically random private key\nIWallet eoaWallet = new EthWallet(privateKeyString); // Create a wallet using a previously generated private key
\n","isPage":false,"text":"\nEthWallet is a standard EOA wallet for EVM chains.\nAn EthWallet is easily created:\nIWallet eoaWallet = new EthWallet(); // This will generate a cryptographically random private key\nIWallet eoaWallet = new EthWallet(privateKeyString); // Create a wallet using a previously generated private key\n","title":"1.","titles":["Wallets"]},"300":{"href":"/sdk/unity/Advanced/02-wallets#2-waastowalletadapter","html":"\n

WaaSToWalletAdapter is an adapter that allows you to use a WaaSWallet with the same IWallet interface as an EthWallet so that it may be used interchangeably with EOA wallets throughout the rest of the SequenceEthereum library.

\n

A WaaSToWalletAdapter is easily created once you have a WaaSWallet:

\n
IWallet waasAdapter = new WaaSToWalletAdapter(waasWallet);
\n","isPage":false,"text":"\nWaaSToWalletAdapter is an adapter that allows you to use a WaaSWallet with the same IWallet interface as an EthWallet so that it may be used interchangeably with EOA wallets throughout the rest of the SequenceEthereum library.\nA WaaSToWalletAdapter is easily created once you have a WaaSWallet:\nIWallet waasAdapter = new WaaSToWalletAdapter(waasWallet);\n","title":"2.","titles":["Wallets"]},"301":{"href":"/sdk/unity/Advanced/02-wallets#methods","html":"\n

The IWallet interface provides a number of methods for you. The most important of which are:

\n","isPage":false,"text":"\nThe IWallet interface provides a number of methods for you. The most important of which are:\n","title":"Methods","titles":["Wallets"]},"302":{"href":"/sdk/unity/Advanced/02-wallets#getaddress","html":"\n

Returns the Address for the wallet

\n
Address address = wallet.GetAddress();
\n","isPage":false,"text":"\nReturns the Address for the wallet\nAddress address = wallet.GetAddress();\n","title":"GetAddress","titles":["Wallets","Methods"]},"303":{"href":"/sdk/unity/Advanced/02-wallets#sendtransaction","html":"\n

Signs the given EthTransaction and submits it via the given client

\n
string transactionHash = await wallet.SendTransaction(client, transaction);
\n","isPage":false,"text":"\nSigns the given EthTransaction and submits it via the given client\nstring transactionHash = await wallet.SendTransaction(client, transaction);\n","title":"SendTransaction","titles":["Wallets","Methods"]},"304":{"href":"/sdk/unity/Advanced/02-wallets#sendtransactionandwaitforreceipt","html":"\n

Signs the given EthTransaction and submits it via the given client then waits for the TransactionReceipt

\n
TransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);
\n","isPage":false,"text":"\nSigns the given EthTransaction and submits it via the given client then waits for the TransactionReceipt\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n","title":"SendTransactionAndWaitForReceipt","titles":["Wallets","Methods"]},"305":{"href":"/sdk/unity/Advanced/02-wallets#sendtransactionbatch","html":"\n

Signs the given EthTransaction[] and submits them via the given client.\nIf wallet is an EthWallet, the transactions will be submitted sequentially, each of which may pass or fail. If the wallet is a WaaSToWalletAdapter, the transactions will be batched together into a single transaction that is submitted all at once and either passes or fails as a whole.\nSimilarly, if a wallet is an EthWallet the string[] (transaction hashes) you receive will be equal in length to the EthTransaction[] you submitted. While, if the wallet is a WaaSToWalletAdapter, you will only receive one transaction hash (string[] of length 1)

\n
string[] transactionHashes = await wallet.SendTransactionBatch(client, transactions);
\n","isPage":false,"text":"\nSigns the given EthTransaction[] and submits them via the given client.\nIf wallet is an EthWallet, the transactions will be submitted sequentially, each of which may pass or fail. If the wallet is a WaaSToWalletAdapter, the transactions will be batched together into a single transaction that is submitted all at once and either passes or fails as a whole.\nSimilarly, if a wallet is an EthWallet the string[] (transaction hashes) you receive will be equal in length to the EthTransaction[] you submitted. While, if the wallet is a WaaSToWalletAdapter, you will only receive one transaction hash (string[] of length 1)\nstring[] transactionHashes = await wallet.SendTransactionBatch(client, transactions);\n","title":"SendTransactionBatch","titles":["Wallets","Methods"]},"306":{"href":"/sdk/unity/Advanced/02-wallets#sendtransactionbatchandwaitforreceipts","html":"\n

Signs the given EthTransaction[] and submits them via the given client then waits for the TransactionReceipt[].\nIf wallet is an EthWallet, the transactions will be submitted sequentially, each of which may pass or fail. If the wallet is a WaaSToWalletAdapter, the transactions will be batched together into a single transaction that is submitted all at once and either passes or fails as a whole.\nSimilarly, if a wallet is an EthWallet the TransactionReceipt[] you receive will be equal in length to the EthTransaction[] you submitted. While, if the wallet is a WaaSToWalletAdapter, you will only receive one transaction receipt (TransactionReceipt[] of length 1)

\n
TransactionReceipt[] receipts = await wallet.SendTransactionAndWaitForReceipt(client, transactions);
\n","isPage":false,"text":"\nSigns the given EthTransaction[] and submits them via the given client then waits for the TransactionReceipt[].\nIf wallet is an EthWallet, the transactions will be submitted sequentially, each of which may pass or fail. If the wallet is a WaaSToWalletAdapter, the transactions will be batched together into a single transaction that is submitted all at once and either passes or fails as a whole.\nSimilarly, if a wallet is an EthWallet the TransactionReceipt[] you receive will be equal in length to the EthTransaction[] you submitted. While, if the wallet is a WaaSToWalletAdapter, you will only receive one transaction receipt (TransactionReceipt[] of length 1)\nTransactionReceipt[] receipts = await wallet.SendTransactionAndWaitForReceipt(client, transactions);\n","title":"SendTransactionBatchAndWaitForReceipts","titles":["Wallets","Methods"]},"307":{"href":"/sdk/unity/Advanced/02-wallets#signmessage","html":"\n

Given a message and an optional chain id, sign the message using the wallet. Omit the chain id from the signature if not provided

\n
string signedMessage = await wallet.SignMessage(message, chainId)
\n

Note: the chainId is expected to be in hexadecimal format. If you are working with a Chain object (recommended), you can use the AsString method to get the hexadecimal format of the chain id

\n
string signedMessage = await wallet.SignMessage(message, Chain.Polygon.AsString());
","isPage":false,"text":"\nGiven a message and an optional chain id, sign the message using the wallet. Omit the chain id from the signature if not provided\nstring signedMessage = await wallet.SignMessage(message, chainId)\nNote: the chainId is expected to be in hexadecimal format. If you are working with a Chain object (recommended), you can use the AsString method to get the hexadecimal format of the chain id\nstring signedMessage = await wallet.SignMessage(message, Chain.Polygon.AsString());","title":"SignMessage","titles":["Wallets","Methods"]},"308":{"href":"/sdk/unity/Advanced/03-clients#clients","html":"\n

In the context of SequenceEthereum, a Client is defined by the IEthClient interface.

\n

Creating a client requires a Chain. This will use our highly available and responsive Node Gateway service for your RPC requests; accessed using the API key from the Builder you've provided in your SequenceConfig scriptable object. If you prefer to use your own RPC URL, you can create a SequenceEthClient using a URL string as a parameter instead.

\n

You can create a client using this snippet:

\n
IEthClient client = new SequenceEthClient(Chain.Polygon);
\n","isPage":true,"text":"\nIn the context of SequenceEthereum, a Client is defined by the IEthClient interface.\nCreating a client requires a Chain. This will use our highly available and responsive Node Gateway service for your RPC requests; accessed using the API key from the Builder you've provided in your SequenceConfig scriptable object. If you prefer to use your own RPC URL, you can create a SequenceEthClient using a URL string as a parameter instead.\nYou can create a client using this snippet:\nIEthClient client = new SequenceEthClient(Chain.Polygon);\n","title":"Clients","titles":[]},"309":{"href":"/sdk/unity/Advanced/03-clients#methods","html":"\n

As your connection point to Ethereum nodes, there are a number of methods that can be performed by a client, these can be found in the IEthClient interface and are implemented by SequenceEthClient.

\n

Note: with the exception of BalanceAt (potentially), most users will not need to make use of these methods, but we have included them in our documentation for completeness.

\n","isPage":false,"text":"\nAs your connection point to Ethereum nodes, there are a number of methods that can be performed by a client, these can be found in the IEthClient interface and are implemented by SequenceEthClient.\nNote: with the exception of BalanceAt (potentially), most users will not need to make use of these methods, but we have included them in our documentation for completeness.\n","title":"Methods","titles":["Clients"]},"310":{"href":"/sdk/unity/Advanced/03-clients#balanceat","html":"\n

Used to get the gas currency balance of a given wallet at a given blockNumber (in hexadecimal format provided as a string)

\n
BigIntegar balance = await client.BalanceAt(wallet.GetAddress()); // By default, if no blockNumber string is provided, check the latest block\nBigIntegar balance = await client.BalanceAt(wallet.GetAddress(), blockNumber);
\n

Note: there are two special values for blockNumber. "earliest" will get the balance at the earliest block on the chain. "latest" will get the balance at the latest block on the chain and is the default parameter when none is provided. Otherwise, you'll want to provide the blockNumber string in hexadecimal format.

\nUnless you really want to get into the weeds with how things work, it is HIGHLY recommended to move on to the next page of the documentation at this point\n","isPage":false,"text":"\nUsed to get the gas currency balance of a given wallet at a given blockNumber (in hexadecimal format provided as a string)\nBigIntegar balance = await client.BalanceAt(wallet.GetAddress()); // By default, if no blockNumber string is provided, check the latest block\nBigIntegar balance = await client.BalanceAt(wallet.GetAddress(), blockNumber);\nNote: there are two special values for blockNumber. "earliest" will get the balance at the earliest block on the chain. "latest" will get the balance at the latest block on the chain and is the default parameter when none is provided. Otherwise, you'll want to provide the blockNumber string in hexadecimal format.\nUnless you really want to get into the weeds with how things work, it is HIGHLY recommended to move on to the next page of the documentation at this point\n","title":"BalanceAt","titles":["Clients","Methods"]},"311":{"href":"/sdk/unity/Advanced/03-clients#blockbynumber","html":"\n

Used to get the Block with a specific block number.

\n
Block block = await client.BlockByNumber(blockNumber);
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nUsed to get the Block with a specific block number.\nBlock block = await client.BlockByNumber(blockNumber);\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"BlockByNumber","titles":["Clients","Methods"]},"312":{"href":"/sdk/unity/Advanced/03-clients#blockbyhash","html":"\n

Used to get the Block by a specified block hash (string)

\n
Block block = await client.BlockByHash(blockHash);
\n","isPage":false,"text":"\nUsed to get the Block by a specified block hash (string)\nBlock block = await client.BlockByHash(blockHash);\n","title":"BlockByHash","titles":["Clients","Methods"]},"313":{"href":"/sdk/unity/Advanced/03-clients#blocknumber","html":"\n

Used to get the most recent block number in hexadecimal format

\n
string blockNumber = await client.BlockNumber();
\n","isPage":false,"text":"\nUsed to get the most recent block number in hexadecimal format\nstring blockNumber = await client.BlockNumber();\n","title":"BlockNumber","titles":["Clients","Methods"]},"314":{"href":"/sdk/unity/Advanced/03-clients#blockrange","html":"\n

Used to get a List<Block> from the blocks in a range specified by blockNumbers

\n
List<Block> blockRange = await client.BlockRange(startingBlockNumber, endingBlockNumber);
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nUsed to get a List<Block> from the blocks in a range specified by blockNumbers\nList<Block> blockRange = await client.BlockRange(startingBlockNumber, endingBlockNumber);\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"BlockRange","titles":["Clients","Methods"]},"315":{"href":"/sdk/unity/Advanced/03-clients#chainid","html":"\n

Used to get the chain id in hexadecimal format for the chain the client is connected to

\n
string chainId = await client.ChainID();
\n","isPage":false,"text":"\nUsed to get the chain id in hexadecimal format for the chain the client is connected to\nstring chainId = await client.ChainID();\n","title":"ChainID","titles":["Clients","Methods"]},"316":{"href":"/sdk/unity/Advanced/03-clients#codeat","html":"\n

Used to get the bytecode for a smart contract at a given address in hexadecimal format at a specified blockNumber

\n
string code = await client.CodeAt(contractAddress, blockNumber);
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nUsed to get the bytecode for a smart contract at a given address in hexadecimal format at a specified blockNumber\nstring code = await client.CodeAt(contractAddress, blockNumber);\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"CodeAt","titles":["Clients","Methods"]},"317":{"href":"/sdk/unity/Advanced/03-clients#estimategas","html":"\n

Given a TransactionCall estimate the amount of gas required for the transaction

\n
BigIntegar gas = await client.EstimateGas(transactionCall);
\n","isPage":false,"text":"\nGiven a TransactionCall estimate the amount of gas required for the transaction\nBigIntegar gas = await client.EstimateGas(transactionCall);\n","title":"EstimateGas","titles":["Clients","Methods"]},"318":{"href":"/sdk/unity/Advanced/03-clients#feehistory","html":"\n

Get a FeeHistoryResult for gas fees paid blockCount blocks since newestBlock (blockNumber)

\n
FeeHistoryResult feeHistory = await client.FeeHistory(blockCount, newestBlock, new int[] { });
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nGet a FeeHistoryResult for gas fees paid blockCount blocks since newestBlock (blockNumber)\nFeeHistoryResult feeHistory = await client.FeeHistory(blockCount, newestBlock, new int[] { });\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"FeeHistory","titles":["Clients","Methods"]},"319":{"href":"/sdk/unity/Advanced/03-clients#networkid","html":"\n

Used to get the chain id in integer format (as string) for the chain the client is connected to

\n
string networkId = await client.NetworkId();
\n","isPage":false,"text":"\nUsed to get the chain id in integer format (as string) for the chain the client is connected to\nstring networkId = await client.NetworkId();\n","title":"NetworkId","titles":["Clients","Methods"]},"320":{"href":"/sdk/unity/Advanced/03-clients#nonceat","html":"\n

Used to get the recommended nonce for a given Address at a given blockNumber (defaults to "latest")

\n
BigInteger nonce = await client.NonceAt(wallet.GetAddress()); // Nonce at latest\nBigIntegar nonce = await client.NonceAt(wallet.GetAddress(), blockNumber);
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nUsed to get the recommended nonce for a given Address at a given blockNumber (defaults to "latest")\nBigInteger nonce = await client.NonceAt(wallet.GetAddress()); // Nonce at latest\nBigIntegar nonce = await client.NonceAt(wallet.GetAddress(), blockNumber);\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"NonceAt","titles":["Clients","Methods"]},"321":{"href":"/sdk/unity/Advanced/03-clients#sendrawtransaction","html":"\n

Given a signed transaction string, submit the transaction to the network and return a transaction hash

\n
string transactionHash = await client.SendRawTransaction(signedTransactionString);
\n","isPage":false,"text":"\nGiven a signed transaction string, submit the transaction to the network and return a transaction hash\nstring transactionHash = await client.SendRawTransaction(signedTransactionString);\n","title":"SendRawTransaction","titles":["Clients","Methods"]},"322":{"href":"/sdk/unity/Advanced/03-clients#suggestgasprice","html":"\n

Used to get a suggested gas price

\n
BigIntegar gasPrice = await client.SuggestGasPrice();
\n","isPage":false,"text":"\nUsed to get a suggested gas price\nBigIntegar gasPrice = await client.SuggestGasPrice();\n","title":"SuggestGasPrice","titles":["Clients","Methods"]},"323":{"href":"/sdk/unity/Advanced/03-clients#suggestgastipcap","html":"\n

Used to get the max suggested priority fee for gas

\n
BigIntegar gasTipCap = await client.SuggestGasTipCap();
\n","isPage":false,"text":"\nUsed to get the max suggested priority fee for gas\nBigIntegar gasTipCap = await client.SuggestGasTipCap();\n","title":"SuggestGasTipCap","titles":["Clients","Methods"]},"324":{"href":"/sdk/unity/Advanced/03-clients#transactionbyhash","html":"\n

Used to get a Transaction by transaction hash

\n
Transaction transaction = await client.TransactionByHash(transactionHash);
\n","isPage":false,"text":"\nUsed to get a Transaction by transaction hash\nTransaction transaction = await client.TransactionByHash(transactionHash);\n","title":"TransactionByHash","titles":["Clients","Methods"]},"325":{"href":"/sdk/unity/Advanced/03-clients#transactioncount","html":"\n

Used to get the number of transactions in a block by block hash

\n
BigIntegar transactionCount = await client.TransactionCount(blockHash);
\n","isPage":false,"text":"\nUsed to get the number of transactions in a block by block hash\nBigIntegar transactionCount = await client.TransactionCount(blockHash);\n","title":"TransactionCount","titles":["Clients","Methods"]},"326":{"href":"/sdk/unity/Advanced/03-clients#waitfortransactionreceipt","html":"\n

Provide a transaction hash in order to wait for and return the TransactionReceipt

\n
TransactionReceipt receipt = await client.WaitForTransactionReceipt(transactionHash);
","isPage":false,"text":"\nProvide a transaction hash in order to wait for and return the TransactionReceipt\nTransactionReceipt receipt = await client.WaitForTransactionReceipt(transactionHash);","title":"WaitForTransactionReceipt","titles":["Clients","Methods"]},"327":{"href":"/sdk/unity/Advanced/04-transfers#transfers","html":"\n

In order to transfer ETH (or the gas currency for your network), it is recommended to use TranferEth.CreateTransaction

\n
EthTransaction transferTransaction = await TransferEth.CreateTransaction(client, wallet, recipientAddress, DecimalNormalizer.Normalize(1));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transferTransaction);
\n

Behind the scenes, this will create a GasLimitEstimator which will construct the transaction for you - including determining the appropriate gasPrice, gasLimit, and nonce.

","isPage":true,"text":"\nIn order to transfer ETH (or the gas currency for your network), it is recommended to use TranferEth.CreateTransaction\nEthTransaction transferTransaction = await TransferEth.CreateTransaction(client, wallet, recipientAddress, DecimalNormalizer.Normalize(1));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transferTransaction);\nBehind the scenes, this will create a GasLimitEstimator which will construct the transaction for you - including determining the appropriate gasPrice, gasLimit, and nonce.","title":"Transfers","titles":[]},"328":{"href":"/sdk/unity/Advanced/05-contracts#contracts","html":"\n

Creating a Contract object for an already deployed contract is rather straightforward.

\n
Contract contract = new Contract(contractAddress, abi);
\n

While it is not strictly required, it is highly recommended to provide the contract ABI as a string when creating a contract object. Failure to do so will make it so that you cannot fully take advantage of our ABI encoding and decoding.\nIf you do chose to go down this route, you will need to provide the entire function signature (function name + parameter types in brackets - e.g. transfer(address,uint256) for the ERC20 transfer method) when calling a function or querying the contract and you will only ever receive a string as a response to queries.

\n","isPage":true,"text":"\nCreating a Contract object for an already deployed contract is rather straightforward.\nContract contract = new Contract(contractAddress, abi);\nWhile it is not strictly required, it is highly recommended to provide the contract ABI as a string when creating a contract object. Failure to do so will make it so that you cannot fully take advantage of our ABI encoding and decoding.\nIf you do chose to go down this route, you will need to provide the entire function signature (function name + parameter types in brackets - e.g. transfer(address,uint256) for the ERC20 transfer method) when calling a function or querying the contract and you will only ever receive a string as a response to queries.\n","title":"Contracts","titles":[]},"329":{"href":"/sdk/unity/Advanced/05-contracts#calling-smart-contract-functions","html":"\n

To call a smart contract, you'll use the CallFunction method to create a CallContractFunction object which will determine the appropriate gasPrice, gasLimit, nonce, and data to include in a newly assembled EthTransaction when provided with a client and a ContractCall object to the Create async Task

\n

An example of calling a smart contract would look like:

\n
Contract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nTransactionReceipt receipt = await erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger).SendTransactionMethodAndWaitForReceipt(wallet, client);
\n

Note: if you don't want to wait for the receipt, you can use SendTransactionMethod instead.

\n

Alternatively, if you want to simply create the EthTransaction and send it at a later time, you can use the CallContractFunction object from CallFunction directly.

\n
Contract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nEthTransaction transaction = await erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger).Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n\n// or \nCallContractFunction transactionCreator = erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger);\nEthTransaction transaction = await transactionCreator.Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n\n// or \nCallContractFunction transactionCreator = erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger);\nTransactionReceipt receipt = await transactionCreator.SendTransactionMethodAndWaitForReceipt(wallet, client);
\n

You'll notice that the CallFunction method accepts an arbitrary number of arguments. You'll want to provide the arguments in the order they are provided in the ABI/function signature.

\n","isPage":false,"text":"\nTo call a smart contract, you'll use the CallFunction method to create a CallContractFunction object which will determine the appropriate gasPrice, gasLimit, nonce, and data to include in a newly assembled EthTransaction when provided with a client and a ContractCall object to the Create async Task\nAn example of calling a smart contract would look like:\nContract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nTransactionReceipt receipt = await erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger).SendTransactionMethodAndWaitForReceipt(wallet, client);\nNote: if you don't want to wait for the receipt, you can use SendTransactionMethod instead.\nAlternatively, if you want to simply create the EthTransaction and send it at a later time, you can use the CallContractFunction object from CallFunction directly.\nContract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nEthTransaction transaction = await erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger).Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n\n// or \nCallContractFunction transactionCreator = erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger);\nEthTransaction transaction = await transactionCreator.Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n\n// or \nCallContractFunction transactionCreator = erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger);\nTransactionReceipt receipt = await transactionCreator.SendTransactionMethodAndWaitForReceipt(wallet, client);\nYou'll notice that the CallFunction method accepts an arbitrary number of arguments. You'll want to provide the arguments in the order they are provided in the ABI/function signature.\n","title":"Calling Smart Contract Functions","titles":["Contracts"]},"330":{"href":"/sdk/unity/Advanced/05-contracts#understanding-data-type-mappings","html":"\n

When interacting with smart contracts, it is important to understand how EVM datatypes are mapped to C# datatypes in the SequenceEthereum library.

\n

bool -> bool

\n

Integers (int, uint, int256, uint8, ...) -> BigInteger

\n

address -> Address or string

\n

string -> string

\n

Fixed bytes (bytesN for any N value) -> FixedByte

\n

bytes -> byte[]

\n

If you were to, for example, provide a string where the ABI expects an Integer, you will receive an exception, even if that string could be converted into an integer.

\n","isPage":false,"text":"\nWhen interacting with smart contracts, it is important to understand how EVM datatypes are mapped to C# datatypes in the SequenceEthereum library.\nbool -> bool\nIntegers (int, uint, int256, uint8, ...) -> BigInteger\naddress -> Address or string\nstring -> string\nFixed bytes (bytesN for any N value) -> FixedByte\nbytes -> byte[]\nIf you were to, for example, provide a string where the ABI expects an Integer, you will receive an exception, even if that string could be converted into an integer.\n","title":"Understanding data type mappings","titles":["Contracts"]},"331":{"href":"/sdk/unity/Advanced/05-contracts#querying-contracts","html":"\n

To query a smart contract (read data from it), you'll use the SendQuery<T> method to query the contract and return the result as type T (if possible).\nAn example of querying a smart contract would look like:

\n
Contract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nBigIntegar balance = await erc20Contract.SendQuery<BigIntegar>(client, "balanceOf", address);
\n

Alternatively, if you wish to simply construct the query and send it at a later time, you can use QueryContract<T> to create a delegate.

\n
Contract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nQueryContractMessageSender<BigIntegar> balanceQuery = erc20Contract.QueryContract<BigIntegar>("balanceOf", address);\nBigIntegar balance = await balanceQuery(client);\n// or\nBigIntegar balance = await balanceQuery.SendQuery(client);
\n","isPage":false,"text":"\nTo query a smart contract (read data from it), you'll use the SendQuery<T> method to query the contract and return the result as type T (if possible).\nAn example of querying a smart contract would look like:\nContract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nBigIntegar balance = await erc20Contract.SendQuery<BigIntegar>(client, "balanceOf", address);\nAlternatively, if you wish to simply construct the query and send it at a later time, you can use QueryContract<T> to create a delegate.\nContract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nQueryContractMessageSender<BigIntegar> balanceQuery = erc20Contract.QueryContract<BigIntegar>("balanceOf", address);\nBigIntegar balance = await balanceQuery(client);\n// or\nBigIntegar balance = await balanceQuery.SendQuery(client);\n","title":"Querying Contracts","titles":["Contracts"]},"332":{"href":"/sdk/unity/Advanced/05-contracts#deploying-contracts","html":"\n

If you want to deploy a contract, you can use the ContractDeployer

\n
ContractDeploymentResult deploymentResult = await ContractDeployer.Deploy(client, wallet, contractBytecodeAsString);\nstring newlyDeployedContractAddress = deploymentResult.Receipt.contractAddress;
","isPage":false,"text":"\nIf you want to deploy a contract, you can use the ContractDeployer\nContractDeploymentResult deploymentResult = await ContractDeployer.Deploy(client, wallet, contractBytecodeAsString);\nstring newlyDeployedContractAddress = deploymentResult.Receipt.contractAddress;","title":"Deploying Contracts","titles":["Contracts"]},"333":{"href":"/sdk/unity/Advanced/06-tokens#tokens","html":"\n

Since their use is so ubiquitous, we've provided ERC20, ERC721, and ERC1155 wrappers of the Contract class with pre-defined ABIs for your convenience. When interacting with tokens, it is recommended to use these.

\n

Any of these contract wrappers can be created via a standard constructor requiring only the contract address. For example:

\n
ERC20 erc20 = new ERC20(contractAddress);
\n

You may also provide your own ABI should you need to rewrite our default; however, doing so may require you to modify or rewrite the contract wrappers.

\n

An example of querying:

\n
string symbol = await erc20.Symbol(client);\nBigIntegar balance = await erc20.BalanceOf(client, address);
\n

An example of sending a transaction:

\n
TransactionReceipt receipt = await erc20.Mint(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1)).SendTransactionMethodAndWaitForReceipt(wallet, client);
\n

As a wrapper of Contract, you also have the option to not create the EthTransaction and send later on.

\n
CallContractFunction transactionCreator = erc20.Transfer(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1));\nEthTransaction transaction = await transactionCreator.Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);
\n
","isPage":true,"text":"\nSince their use is so ubiquitous, we've provided ERC20, ERC721, and ERC1155 wrappers of the Contract class with pre-defined ABIs for your convenience. When interacting with tokens, it is recommended to use these.\nAny of these contract wrappers can be created via a standard constructor requiring only the contract address. For example:\nERC20 erc20 = new ERC20(contractAddress);\nYou may also provide your own ABI should you need to rewrite our default; however, doing so may require you to modify or rewrite the contract wrappers.\nAn example of querying:\nstring symbol = await erc20.Symbol(client);\nBigIntegar balance = await erc20.BalanceOf(client, address);\nAn example of sending a transaction:\nTransactionReceipt receipt = await erc20.Mint(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1)).SendTransactionMethodAndWaitForReceipt(wallet, client);\nAs a wrapper of Contract, you also have the option to not create the EthTransaction and send later on.\nCallContractFunction transactionCreator = erc20.Transfer(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1));\nEthTransaction transaction = await transactionCreator.Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n","title":"Tokens","titles":[]},"334":{"href":"/sdk/unity/Advanced/06-tokens#bonus-ownable","html":"
\n

Similar to with tokens, we have also provided an Ownable wrapper for your convenience as well which has a pre-defined ABI for methods implementing the Ownable interface.\nERC20, ERC721, and ERC1155 all inherit from this, but we encourage you to use Ownable whenever you wish to interact with the Ownable methods on any arbitrary contract for convenience and safety.

","isPage":false,"text":"\nSimilar to with tokens, we have also provided an Ownable wrapper for your convenience as well which has a pre-defined ABI for methods implementing the Ownable interface.\nERC20, ERC721, and ERC1155 all inherit from this, but we encourage you to use Ownable whenever you wish to interact with the Ownable methods on any arbitrary contract for convenience and safety.","title":"Bonus: Ownable","titles":[]},"335":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#how-to-manage-item-metadata-in-sequence-builder","html":"\n","isPage":true,"text":"\n","title":"How to Manage Item Metadata in Sequence Builder","titles":[]},"336":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#introduction","html":"\n

Following this guide, you can easily manage token metadata for your contract items in Sequence Builder, with a little help from Pinata for IPFS hosting.

\n","isPage":false,"text":"\nFollowing this guide, you can easily manage token metadata for your contract items in Sequence Builder, with a little help from Pinata for IPFS hosting.\n","title":"Introduction","titles":["How to Manage Item Metadata in Sequence Builder"]},"337":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-1-prepare-your-token-images-and-metadata","html":"\n

First things first, gather all your token images. For each token, you'll need a metadata file named id.json (like 1.json, 2.json, etc.). These files should look something like this at a minimum:

\n
{\n    "name": "Token Name",\n    "description": "Token Description",\n    "image": "ipfs://"\n}
\n

As you can guess, you can build from these basics. You could have your unique item attributes embedded in this token and generated on the fly.

\n","isPage":false,"text":"\nFirst things first, gather all your token images. For each token, you'll need a metadata file named id.json (like 1.json, 2.json, etc.). These files should look something like this at a minimum:\n{\n "name": "Token Name",\n "description": "Token Description",\n "image": "ipfs://"\n}\nAs you can guess, you can build from these basics. You could have your unique item attributes embedded in this token and generated on the fly.\n","title":"Step 1: Prepare Your Token Images and Metadata","titles":["How to Manage Item Metadata in Sequence Builder"]},"338":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-2-set-up-on-pinatacloud","html":"\n

Head over to Pinata.cloud and create an account. Upload each of your token images as separate files. Next, update the metadata JSON files with the ipfs address for each token. To do this, simply copy the CID (Content Identifier) for each file from Pinata and paste it after ipfs:// in your JSON files. It should look like this:

\n
{\n    "name": "Token Name",\n    "description": "Token Description",\n    "image": "ipfs://QmdJzQExj2wnNY7pNNn4KauzckjH4vA5xhoxmmis919Ev3"\n}
\n

\"Configure

\n","isPage":false,"text":"\nHead over to Pinata.cloud and create an account. Upload each of your token images as separate files. Next, update the metadata JSON files with the ipfs address for each token. To do this, simply copy the CID (Content Identifier) for each file from Pinata and paste it after ipfs:// in your JSON files. It should look like this:\n{\n "name": "Token Name",\n "description": "Token Description",\n "image": "ipfs://QmdJzQExj2wnNY7pNNn4KauzckjH4vA5xhoxmmis919Ev3"\n}\n\n","title":"Step 2: Set Up on Pinata.cloud","titles":["How to Manage Item Metadata in Sequence Builder"]},"339":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-3-upload-your-metadata-files","html":"\n

Now, gather all your JSON metadata files into a single folder on your computer. Use Pinata's 'Upload > Folder' feature to upload this folder. Then, copy the CID for the entire folder.

\n

\"Upload

\n","isPage":false,"text":"\nNow, gather all your JSON metadata files into a single folder on your computer. Use Pinata's 'Upload > Folder' feature to upload this folder. Then, copy the CID for the entire folder.\n\n","title":"Step 3: Upload Your Metadata Files","titles":["How to Manage Item Metadata in Sequence Builder"]},"340":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-4-get-the-folder-url","html":"\n

Click on name of the folder you created on Pinata. This will open a new tab showing all your uploaded JSON files. Copy the URL of this folder.

\n

\"Get

\n","isPage":false,"text":"\nClick on name of the folder you created on Pinata. This will open a new tab showing all your uploaded JSON files. Copy the URL of this folder.\n\n","title":"Step 4: Get the Folder URL","titles":["How to Manage Item Metadata in Sequence Builder"]},"341":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-5-set-up-on-sequence-builder","html":"\n

Navigate to Sequence Builder, set up your account, and create your project on the network of your choice. In the Contracts section, click on "Deploy New Contract".

\n

\"Configure

\n","isPage":false,"text":"\nNavigate to Sequence Builder, set up your account, and create your project on the network of your choice. In the Contracts section, click on "Deploy New Contract".\n\n","title":"Step 5: Set Up on Sequence Builder","titles":["How to Manage Item Metadata in Sequence Builder"]},"342":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-6-deploy-your-contract","html":"\n

Select "Web3 Game Item Collection (ERC-1155)" and name your contract. Sequence Builder will automatically deploy your contract on-chain.

\n

\"Deploy

\n","isPage":false,"text":"\nSelect "Web3 Game Item Collection (ERC-1155)" and name your contract. Sequence Builder will automatically deploy your contract on-chain.\n\n","title":"Step 6: Deploy Your Contract","titles":["How to Manage Item Metadata in Sequence Builder"]},"343":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-7-move-to-contract-details","html":"\n

Once you sign the transaction, your contract is ready! Click on it to view the details screen.

\n

\"Contract

\n","isPage":false,"text":"\nOnce you sign the transaction, your contract is ready! Click on it to view the details screen.\n\n","title":"Step 7: Move to Contract Details","titles":["How to Manage Item Metadata in Sequence Builder"]},"344":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-8-update-contract-attributes","html":"\n

Navigate to the “Write Contract” section. This is where you can modify attributes of your freshly deployed ERC-1155 contract. Two methods are what you should focus on for now:

\n\n","isPage":false,"text":"\nNavigate to the “Write Contract” section. This is where you can modify attributes of your freshly deployed ERC-1155 contract. Two methods are what you should focus on for now:\n\nsetBaseMetadataURI allows the creator to set the base metadata URL for this contract. You want this to point to the JSON files you’ve created, depending on NFT ID.\nmint mints one of your tokens and sends it to an address of your choosing.\n\n","title":"Step 8: Update Contract Attributes","titles":["How to Manage Item Metadata in Sequence Builder"]},"345":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-9-set-the-base-metadata-uri","html":"\n

Scroll to setBaseMetadataURI, expand it, and under tokenBaseURI paste the URL for the JSON folder preview you got from Pinata earlier. It should look something like this:

\n
https://azure-wooden-lemur-911.mypinata.cloud/ipfs/QmW5gvYGWb98GsN8VjTRWu4pLn6jryEXNxZKNWpPhVwtDm/
\n

Click “Write” and you will be prompted to sign again. This will modify the contract on chain to set the metadata base. Essentially any token ID you provide will be appended to this URL, along with the .json suffix. So if you mint token ID 123, it will look for tokenBaseURI + 123.json.

\n

\"Base

\n","isPage":false,"text":"\nScroll to setBaseMetadataURI, expand it, and under tokenBaseURI paste the URL for the JSON folder preview you got from Pinata earlier. It should look something like this:\nhttps://azure-wooden-lemur-911.mypinata.cloud/ipfs/QmW5gvYGWb98GsN8VjTRWu4pLn6jryEXNxZKNWpPhVwtDm/\nClick “Write” and you will be prompted to sign again. This will modify the contract on chain to set the metadata base. Essentially any token ID you provide will be appended to this URL, along with the .json suffix. So if you mint token ID 123, it will look for tokenBaseURI + 123.json.\n\n","title":"Step 9: Set the Base Metadata URI","titles":["How to Manage Item Metadata in Sequence Builder"]},"346":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-10-minting-time","html":"\n

Finally, it's time to mint! Scroll up to mint, expand it, and fill in the details:

\n\n

\"Mint

\n","isPage":false,"text":"\nFinally, it's time to mint! Scroll up to mint, expand it, and fill in the details:\n\nto (address): This is the address that the token will be sent to. Use your Sequence wallet address or any other valid address.\ntokenId (uint256): This is your token ID. As long as you have a tokenId.json file already uploaded to pinata.cloud under the folder, it will work.\namount (uint256): The number of tokens to mint (usually 1).\ndata (bytes): Enter 0x00 for this simple process.\n\n\n","title":"Step 10: Minting Time","titles":["How to Manage Item Metadata in Sequence Builder"]},"347":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-11-finalize-and-admire","html":"\n

Click "Write" and sign the transaction. Congratulations, you've just minted a token! Head over to the "Tokens" section to see your minted tokens with their names and images.

\n

\"Finalize

\n","isPage":false,"text":"\nClick "Write" and sign the transaction. Congratulations, you've just minted a token! Head over to the "Tokens" section to see your minted tokens with their names and images.\n\n","title":"Step 11: Finalize and Admire","titles":["How to Manage Item Metadata in Sequence Builder"]},"348":{"href":"/solutions/collectibles/metadata/800-manage-metadata-builder#step-12-updating-metadata","html":"\n

If you make mistakes with the token metadata, you can always update it and then call the Sequence Metadata refresh endpoint to reload the specific tokens:

\n
curl -X GET "https://metadata.sequence.app/tokens/mumbai/0xb392c99d9f8e3e0b248e5c283818be5bf5cecca7/1/refresh"
\n

This is in the format: https://metadata.sequence.app/tokens/<chain-name>/<contract-address>/<token-id>/refresh

\n

Now that you are ready to mint, you might want to read about how you can launch your own serverless endpoint for securely minting tokens.

","isPage":false,"text":"\nIf you make mistakes with the token metadata, you can always update it and then call the Sequence Metadata refresh endpoint to reload the specific tokens:\ncurl -X GET "https://metadata.sequence.app/tokens/mumbai/0xb392c99d9f8e3e0b248e5c283818be5bf5cecca7/1/refresh"\nThis is in the format: https://metadata.sequence.app/tokens/<chain-name>/<contract-address>/<token-id>/refresh\nNow that you are ready to mint, you might want to read about how you can launch your own serverless endpoint for securely minting tokens.","title":"Step 12: Updating Metadata","titles":["How to Manage Item Metadata in Sequence Builder"]},"349":{"href":"/solutions/marketplaces/orderbook/02-quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"350":{"href":"/solutions/marketplaces/orderbook/02-quickstart#try-a-demo","html":"\n\n","isPage":false,"text":"\nCheck out our demo to see a custom marketplace in action.\n","title":"Try a Demo","titles":["Quickstart"]},"351":{"href":"/solutions/marketplaces/orderbook/02-quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template leveraging our Marketplace API.\n","title":"Template","titles":["Quickstart"]},"352":{"href":"/solutions/marketplaces/orderbook/02-quickstart#try-an-api-call","html":"\n
curl --request POST \\\n--url https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetTopOrders \\\n--header 'Content-Type: application/json' \\\n--data '{\n    "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n    "currencyAddresses": [\n        "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n    ],\n    "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n    "tokenIDs": ["0","1", "2", "3", "4", "5"],\n    "isListing": true,\n    "priceSort": "DESC"\n}'
","isPage":false,"text":"\ncurl --request POST \\\n--url https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetTopOrders \\\n--header 'Content-Type: application/json' \\\n--data '{\n "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n "currencyAddresses": [\n "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n ],\n "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n "tokenIDs": ["0","1", "2", "3", "4", "5"],\n "isListing": true,\n "priceSort": "DESC"\n}'","title":"Try an API Call","titles":["Quickstart"]},"353":{"href":"/solutions/payments/onramps/01-fiat-on-ramps#fiat-on-ramps","html":"\n

Sequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;

\n\n

Only providers that support the region the users are in will be displayed.

\n

\"Sequence

\n

As a developer integrating the Sequence Wallet, you can choose which payment provider can be visible to users. You can also specify which token will be available to purchase via the on-ramp providers.

\n

To learn more on how to configure the on-ramp options, see Sequence Connect Options.

","isPage":true,"text":"\nSequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;\n\nMoonpay\nRamp\nUPI via Onmeta\nSardine\nPayTrie\n\nOnly providers that support the region the users are in will be displayed.\n\nAs a developer integrating the Sequence Wallet, you can choose which payment provider can be visible to users. You can also specify which token will be available to purchase via the on-ramp providers.\nTo learn more on how to configure the on-ramp options, see Sequence Connect Options.","title":"Fiat On-Ramps","titles":[]},"354":{"href":"/solutions/technical-references/wallet-contracts/01-why#why-smart-contracts-wallets","html":"\n

Ethereum wallets may take two different forms, Externally owned accounts (EOAs) or Smart Contract Wallets.\nThe Sequence wallet is implemented as a smart contract, which allows the system to provide additional security and functionality.

\n","isPage":true,"text":"\nEthereum wallets may take two different forms, Externally owned accounts (EOAs) or Smart Contract Wallets.\nThe Sequence wallet is implemented as a smart contract, which allows the system to provide additional security and functionality.\n","title":"Why smart contracts wallets?","titles":[]},"355":{"href":"/solutions/technical-references/wallet-contracts/01-why#externally-owned-accounts","html":"\n

Externally owned accounts are the most primitive form of wallet on Ethereum; EOAs are accounts composed of a single ECDSA key pair.

\n","isPage":false,"text":"\nExternally owned accounts are the most primitive form of wallet on Ethereum; EOAs are accounts composed of a single ECDSA key pair.\n","title":"Externally owned accounts","titles":["Why smart contracts wallets?"]},"356":{"href":"/solutions/technical-references/wallet-contracts/01-why#pros","html":"\n\n","isPage":false,"text":"\n\nSimple to implement\nCheap to use (in some scenarios)\nEasy to backup\n\n","title":"Pros","titles":["Why smart contracts wallets?","Externally owned accounts"]},"357":{"href":"/solutions/technical-references/wallet-contracts/01-why#popular-examples","html":"\n\n","isPage":false,"text":"\n\nMetaMask\nRainbow\nMyEtherWallet\nTrust\n\n","title":"Popular examples","titles":["Why smart contracts wallets?","Externally owned accounts"]},"358":{"href":"/solutions/technical-references/wallet-contracts/01-why#smart-contract-wallets","html":"\n

Smart contract wallets are wallets that are implemented as smart contracts; it allows the wallets to implement arbitrary logic within the bounds of what's supported by the underlying virtual machine.\nBecause of this, these contracts can implement functionality that's not available for EOAs, and can also be upgraded if they are prepared to do so.

\n","isPage":false,"text":"\nSmart contract wallets are wallets that are implemented as smart contracts; it allows the wallets to implement arbitrary logic within the bounds of what's supported by the underlying virtual machine.\nBecause of this, these contracts can implement functionality that's not available for EOAs, and can also be upgraded if they are prepared to do so.\n","title":"Smart contract wallets","titles":["Why smart contracts wallets?"]},"359":{"href":"/solutions/technical-references/wallet-contracts/01-why#pros-1","html":"\n\n","isPage":false,"text":"\n\nMultiple keys\nKey rotation\nPay fees using ERC20 tokens (e.g. USDC)\nUpgradeability\nSocial recovery support\nMeta-transactions\nMore flexible design space\n\n","title":"Pros","titles":["Why smart contracts wallets?","Smart contract wallets"]},"360":{"href":"/solutions/technical-references/wallet-contracts/01-why#examples","html":"\n","isPage":false,"text":"\n\nSequence\nGnosis Safe\nArgent\n","title":"Examples","titles":["Why smart contracts wallets?"]},"361":{"href":"/solutions/wallets/embedded-wallet/01-overview#sequence-embedded-wallet","html":"\n

Sequence Embedded Wallet (or Wallet-as-a-Service) enables the creation, management and usage of fully functional EVM compatible wallets. These wallets can be created on-demand for each user and allow you to integrate an application with an Ethereum compatible blockchain, while using familiar constructions like RPC APIs.

\n

Sequence Embedded Wallet offers real non-custodial wallets and the system guarantees that each created wallet can only be accessed with the consent of the owner of the wallet.

\n","isPage":true,"text":"\nSequence Embedded Wallet (or Wallet-as-a-Service) enables the creation, management and usage of fully functional EVM compatible wallets. These wallets can be created on-demand for each user and allow you to integrate an application with an Ethereum compatible blockchain, while using familiar constructions like RPC APIs.\nSequence Embedded Wallet offers real non-custodial wallets and the system guarantees that each created wallet can only be accessed with the consent of the owner of the wallet.\n","title":"Sequence Embedded Wallet","titles":[]},"362":{"href":"/solutions/wallets/embedded-wallet/01-overview#architecture-overview","html":"\n

Sequence Embedded Wallets are native smart contract multisigs, the configuration of the multisig can be seen as a 2/2, both of which are required to sign in order to operate them; each one of the signers protects the wallet from a different facet of possible threats.

\n","isPage":false,"text":"\nSequence Embedded Wallets are native smart contract multisigs, the configuration of the multisig can be seen as a 2/2, both of which are required to sign in order to operate them; each one of the signers protects the wallet from a different facet of possible threats.\n","title":"Architecture overview","titles":["Sequence Embedded Wallet"]},"363":{"href":"/solutions/wallets/embedded-wallet/01-overview#signer-1-sequence-auth","html":"\n

Sequence Auth provides a simple way to add account creation, login, session management, and wallet support to your app, enabling applications to provide traditional web experiences (e.g. social login, email login, etc.) while providing access to crypto wallets to interact with smart contracts.

\n

All user and session data is encrypted by a Hardware Security Module operated by a third party. This makes it protected from both external attackers and internal access by Sequence Team or anyone else. Nobody can access a user's wallet but the user themselves.

\n

You won't need to trust us, this is a guarantee you can verify yourself: this service is hosted in a cryptographically attested secure enclave on Amazon Nitro platform. And we offer publicly available independently audited source code, so you can rest assured that it hasn't been tampered with.

\n","isPage":false,"text":"\nSequence Auth provides a simple way to add account creation, login, session management, and wallet support to your app, enabling applications to provide traditional web experiences (e.g. social login, email login, etc.) while providing access to crypto wallets to interact with smart contracts.\nAll user and session data is encrypted by a Hardware Security Module operated by a third party. This makes it protected from both external attackers and internal access by Sequence Team or anyone else. Nobody can access a user's wallet but the user themselves.\nYou won't need to trust us, this is a guarantee you can verify yourself: this service is hosted in a cryptographically attested secure enclave on Amazon Nitro platform. And we offer publicly available independently audited source code, so you can rest assured that it hasn't been tampered with.\n","title":"Signer 1: Sequence Auth","titles":["Sequence Embedded Wallet","Architecture overview"]},"364":{"href":"/solutions/wallets/embedded-wallet/01-overview#signer-2-sequence-guard","html":"\n

Sequence Guard is a service hosted by Sequence and contains the other key of the wallets. It's meant to be another line of defense, verifying not only user's identity but also their intent. It achieves this in two different ways:

\n

1 - Limits and allowlists: you can (from the development dashboard) configure what kind of actions are allowed, this means that the guard will only sign transactions within these constraints. For example, you can define that only NFT contract X can be called, and the guard will enforce that no other transactions can take place.

\n

2 - Authenticating the user: the Sequence Guard will authenticate the user independently of the Sequence Auth, it performs this action either by using a 3rd party OAuth 2.0 id token (from Meta, Google, X, etc.) or by directly communicating with the user via email/phone number with an OTP code. The direct communication is not always required and, when it does happen, it's seamless and branded with your project details.

\n","isPage":false,"text":"\nSequence Guard is a service hosted by Sequence and contains the other key of the wallets. It's meant to be another line of defense, verifying not only user's identity but also their intent. It achieves this in two different ways:\n1 - Limits and allowlists: you can (from the development dashboard) configure what kind of actions are allowed, this means that the guard will only sign transactions within these constraints. For example, you can define that only NFT contract X can be called, and the guard will enforce that no other transactions can take place.\n2 - Authenticating the user: the Sequence Guard will authenticate the user independently of the Sequence Auth, it performs this action either by using a 3rd party OAuth 2.0 id token (from Meta, Google, X, etc.) or by directly communicating with the user via email/phone number with an OTP code. The direct communication is not always required and, when it does happen, it's seamless and branded with your project details.\n","title":"Signer 2: Sequence Guard","titles":["Sequence Embedded Wallet","Architecture overview"]},"365":{"href":"/solutions/wallets/embedded-wallet/01-overview#threat-model","html":"\n

With these safeguards in place wallets are safe against the following scenarios:

\n
    \n
  1. \n

    Sequence.app backend is compromised, or guard keys are leaked: in this scenario, the user's identity must still be verified by Sequence Auth.

    \n
  2. \n
  3. \n

    Sequence Auth is compromised: in this scenario the Sequence Guard protects the wallets, because it independently authenticates the user, an attacker in this scenario wouldn't be able to access any wallets.

    \n
  4. \n
\n

The model also provides partial protection against the scenario:

\n
    \n
  1. Partner frontend is compromised, or MITM on the partner side: If an attacker were to be able to vulnerate the frontend of the partner, it could gain access to wallets at the time of login, but it cannot gain access to wallets of users who are currently inactive. This means that recovery from such a scenario is possible, with limited damage.
  2. \n
","isPage":false,"text":"\nWith these safeguards in place wallets are safe against the following scenarios:\n\n\nSequence.app backend is compromised, or guard keys are leaked: in this scenario, the user's identity must still be verified by Sequence Auth.\n\n\nSequence Auth is compromised: in this scenario the Sequence Guard protects the wallets, because it independently authenticates the user, an attacker in this scenario wouldn't be able to access any wallets.\n\n\nThe model also provides partial protection against the scenario:\n\nPartner frontend is compromised, or MITM on the partner side: If an attacker were to be able to vulnerate the frontend of the partner, it could gain access to wallets at the time of login, but it cannot gain access to wallets of users who are currently inactive. This means that recovery from such a scenario is possible, with limited damage.\n","title":"Threat model","titles":["Sequence Embedded Wallet"]},"366":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"367":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#try-a-demo","html":"\n\n","isPage":false,"text":"\nTry out seamless UX of our embedded wallet at our demo\n","title":"Try a Demo","titles":["Quickstart"]},"368":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template leveraging our embedded wallet.\n","title":"Template","titles":["Quickstart"]},"369":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#getting-started","html":"\n","isPage":false,"text":"\n","title":"Getting Started","titles":["Quickstart"]},"370":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#sdk-installation","html":"\n

We provide TypeScript and Unity SDKs for the Embedded Wallet authentication system. You can install the TypeScript SDK with:

\n
pnpm install @0xsequence/waas
\n

For more information on the Unity Embedded Wallet SDK, please refer to the TODO add link Unity SDK documentation

\n","isPage":false,"text":"\nWe provide TypeScript and Unity SDKs for the Embedded Wallet authentication system. You can install the TypeScript SDK with:\npnpm install @0xsequence/waas\nFor more information on the Unity Embedded Wallet SDK, please refer to the TODO add link Unity SDK documentation\n","title":"SDK Installation","titles":["Quickstart","Getting Started"]},"371":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#project-setup","html":"\n

Sequence Embedded Wallet is currently only available as a closed beta. To start using the Embedded Wallet SDKs, you'll need to contact the Sequence team and acquire API credentials. Once this is done, you will be provided with two keys:

\n\n","isPage":false,"text":"\nSequence Embedded Wallet is currently only available as a closed beta. To start using the Embedded Wallet SDKs, you'll need to contact the Sequence team and acquire API credentials. Once this is done, you will be provided with two keys:\n\nProject access key\nEmbedded Wallet configuration key\n\n","title":"Project Setup","titles":["Quickstart","Getting Started"]},"372":{"href":"/solutions/wallets/embedded-wallet/02-quickstart#library-setup","html":"\n

To start using Sequence Embedded Wallet SDK, you'll need to create a new instance of the waas class:

\n
import { SequenceWaaS } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);
\n

Note that the library is operational, but it can't be used to interact with any wallet until you have authenticated as a user.

","isPage":false,"text":"\nTo start using Sequence Embedded Wallet SDK, you'll need to create a new instance of the waas class:\nimport { SequenceWaaS } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\nNote that the library is operational, but it can't be used to interact with any wallet until you have authenticated as a user.","title":"Library Setup","titles":["Quickstart","Getting Started"]},"373":{"href":"/solutions/wallets/universal-wallet/02-quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"374":{"href":"/solutions/wallets/universal-wallet/02-quickstart#try-a-demo","html":"\n\n","isPage":false,"text":"\nTry out the Universal Wallet leveraging SequenceKit at our demo\n","title":"Try a Demo","titles":["Quickstart"]},"375":{"href":"/solutions/wallets/universal-wallet/02-quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template using SequenceKit\n","title":"Template","titles":["Quickstart"]},"376":{"href":"/solutions/wallets/universal-wallet/02-quickstart#install","html":"\n

The sequence.js SDK is composed of several sub-packages combined into a single meta-package called 0xsequence.\nTo add the SDK to your project, add a dependency on 0xsequence to your package.json:

\n
npm install 0xsequence ethers
\n

or

\n
pnpm install 0xsequence ethers
\n

or

\n
yarn add 0xsequence ethers
\n

If you know that your project only requires specific sub-packages, you can also depend on those directly with\nnpm add @0xsequence/<sub-package name>.

\n

Your package.json should look something like this (actual version may vary):

\n
{\n  "name": "my-dapp",\n  ...\n  "dependencies": {\n    "0xsequence": "^1.0.0",\n    "ethers": ^5.7.0"\n    ...\n  }\n}
\n","isPage":false,"text":"\nThe sequence.js SDK is composed of several sub-packages combined into a single meta-package called 0xsequence.\nTo add the SDK to your project, add a dependency on 0xsequence to your package.json:\nnpm install 0xsequence ethers\nor\npnpm install 0xsequence ethers\nor\nyarn add 0xsequence ethers\nIf you know that your project only requires specific sub-packages, you can also depend on those directly with\nnpm add @0xsequence/<sub-package name>.\nYour package.json should look something like this (actual version may vary):\n{\n "name": "my-dapp",\n ...\n "dependencies": {\n "0xsequence": "^1.0.0",\n "ethers": ^5.7.0"\n ...\n }\n}\n","title":"Install","titles":["Quickstart"]},"377":{"href":"/solutions/wallets/universal-wallet/02-quickstart#cdn-distribution-as-native-js","html":"\n

Optionally, 0xsequence can be installed as a JS script source (UMD distribution) via:

\n
<script src="https://cdn.ethers.io/lib/ethers-5.7.umd.min.js"></script>\n<script src="https://unpkg.com/0xsequence@latest/dist/0xsequence.umd.min.js"></script>
","isPage":false,"text":"\nOptionally, 0xsequence can be installed as a JS script source (UMD distribution) via:\n<script src="https://cdn.ethers.io/lib/ethers-5.7.umd.min.js"></script>\n<script src="https://unpkg.com/0xsequence@latest/dist/0xsequence.umd.min.js"></script>","title":"CDN distribution as native JS","titles":["Quickstart","Install",null]},"378":{"href":"/solutions/wallets/universal-wallet/04-sequence-kit#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","html":"\n

Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.

\n","isPage":true,"text":"\nSequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.\n","title":"Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications","titles":[]},"379":{"href":"/solutions/wallets/universal-wallet/04-sequence-kit#key-features","html":"\n\n

Explore the potential of Sequence Kit by trying out our demo!

\n
","isPage":false,"text":"\n\n\nUniversal Connections: Seamlessly connect via popular social logins such as Facebook, Google, Discord, and more! Your users will enjoy a smooth, secure onboarding process. 🔐🪪\n\n\nWeb3 Wallet Integration: Effortlessly integrate with leading web3 wallets like WalletConnect and MetaMask. Unleash the power of blockchain with just a few clicks! 🦊 ⛓️\n\n\nEmbedded Wallet Experience: Provide your users with a comprehensive embedded wallet, enabling them to manage their coins and collectibles all within your own application. 👛 🖼️ 🪙\n\n\nExplore the potential of Sequence Kit by trying out our demo!\n","title":"Key Features","titles":["Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications"]},"380":{"href":"/solutions/wallets/universal-wallet/04-sequence-kit#next-steps","html":"
\n

Ready to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.

","isPage":false,"text":"\nReady to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.","title":"Next Steps","titles":[]},"381":{"href":"/solutions/wallets/universal-wallet/05-platforms#platforms","html":"\n","isPage":true,"text":"\n","title":"Platforms","titles":[]},"382":{"href":"/solutions/wallets/universal-wallet/05-platforms#web-wallet","html":"\n

Sequence works beautifully on all modern Web Browsers! Try it at https://sequence.app from any computer, phone or tablet.

\n

See Build With Sequence to get started.

\n","isPage":false,"text":"\nSequence works beautifully on all modern Web Browsers! Try it at https://sequence.app from any computer, phone or tablet.\nSee Build With Sequence to get started.\n","title":"Web Wallet","titles":["Platforms"]},"383":{"href":"/solutions/wallets/universal-wallet/05-platforms#mobile-wallet","html":"\n

Sequence works beautifully on your Mobile Web Browser! Try it at https://sequence.app from any phone or tablet.

\n

This means dapps which integrate the Sequence Wallet will automatically support users on all mobile devices,\nwhile using standard Ethereum web3 dapp-to-wallet communication. See Build With Sequence to get started.

\n","isPage":false,"text":"\nSequence works beautifully on your Mobile Web Browser! Try it at https://sequence.app from any phone or tablet.\nThis means dapps which integrate the Sequence Wallet will automatically support users on all mobile devices,\nwhile using standard Ethereum web3 dapp-to-wallet communication. See Build With Sequence to get started.\n","title":"Mobile Wallet","titles":["Platforms"]},"384":{"href":"/solutions/wallets/universal-wallet/05-platforms#browser-extension-wallet","html":"\n

Sequence Chrome Extension: Install

\n

\"Sequence

\n

\"Sequence

","isPage":false,"text":"\nSequence Chrome Extension: Install\n\n","title":"Browser Extension Wallet","titles":["Platforms"]},"385":{"href":"/solutions/wallets/universal-wallet/06-fiat-on-ramps#fiat-on-ramps","html":"\n

Sequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;

\n\n

Only providers that support the region the users are in will be displayed.

\n

\"Sequence

\n

As a developer integrating the Sequence Wallet, you can choose which payment provider can be visible to users. You can also specify which token will be available to purchase via the on-ramp providers.

\n

To learn more on how to configure the on-ramp options, see Sequence Connect Options.

","isPage":true,"text":"\nSequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;\n\nMoonpay\nRamp\nUPI via Onmeta\nSardine\nPayTrie\nWyre (deprecated)\n\nOnly providers that support the region the users are in will be displayed.\n\nAs a developer integrating the Sequence Wallet, you can choose which payment provider can be visible to users. You can also specify which token will be available to purchase via the on-ramp providers.\nTo learn more on how to configure the on-ramp options, see Sequence Connect Options.","title":"Fiat On-Ramps","titles":[]},"386":{"href":"/solutions/wallets/universal-wallet/07-key-management#key-management","html":"\n

Each Sequence wallet can be controlled by multiple private keys, acting like a multisignature wallet. Users can either create a Sequence wallet using one of the supported social login options or create a wallet with a private key stored only on that device.

\n

The improved security compared to traditional blockchain wallet comes from the fact that multiple independent keys need to be compromised for a malicious actor to take control of a user’s wallet, instead of a single key. The philosophy is that the more independent private-keys the user adds to their wallet, the more secure their wallet becomes, even if each individual key is only moderately secure on their own.

\n","isPage":true,"text":"\nEach Sequence wallet can be controlled by multiple private keys, acting like a multisignature wallet. Users can either create a Sequence wallet using one of the supported social login options or create a wallet with a private key stored only on that device.\nThe improved security compared to traditional blockchain wallet comes from the fact that multiple independent keys need to be compromised for a malicious actor to take control of a user’s wallet, instead of a single key. The philosophy is that the more independent private-keys the user adds to their wallet, the more secure their wallet becomes, even if each individual key is only moderately secure on their own.\n","title":"Key Management","titles":[]},"387":{"href":"/solutions/wallets/universal-wallet/07-key-management#social-login-wallets","html":"\n

Sequence Wallet created with social logins are currently secured using three private keys: Session keys, a Guard key and a Torus key. The Session key and Torus key are both generated for the first time when a user creates their Sequence Wallet via social login or email authentication.\nAt least two of the three keys are needed to unlock an account. This means that if one of the three keys is lost or compromised, a user can use the two remaining keys to replace the lost/compromised key. For example, if a user lost their device containing their Session Key, they can unlock their Sequence Wallet account by email or social login for the Torus key combined with the Guard key. Once done, another session key is auto-generated and the user is back in their account with all 3 keys accessible again.

\n","isPage":false,"text":"\nSequence Wallet created with social logins are currently secured using three private keys: Session keys, a Guard key and a Torus key. The Session key and Torus key are both generated for the first time when a user creates their Sequence Wallet via social login or email authentication.\nAt least two of the three keys are needed to unlock an account. This means that if one of the three keys is lost or compromised, a user can use the two remaining keys to replace the lost/compromised key. For example, if a user lost their device containing their Session Key, they can unlock their Sequence Wallet account by email or social login for the Torus key combined with the Guard key. Once done, another session key is auto-generated and the user is back in their account with all 3 keys accessible again.\n","title":"Social Login Wallets","titles":["Key Management"]},"388":{"href":"/solutions/wallets/universal-wallet/07-key-management#session-keys","html":"\n

Session keys are stored in the browser's IndexedDB.\nUsers should be prudent in safeguarding their devices from unauthorized access since an attacker with access to their IndexedDB effectively has control of their session key.

\n","isPage":false,"text":"\nSession keys are stored in the browser's IndexedDB.\nUsers should be prudent in safeguarding their devices from unauthorized access since an attacker with access to their IndexedDB effectively has control of their session key.\n","title":"Session Keys","titles":["Key Management","Social Login Wallets"]},"389":{"href":"/solutions/wallets/universal-wallet/07-key-management#guard-key","html":"\n

A Guard key is a key owned by Horizon. This key allows Horizon to help users that lost their Session key and can require additional information from the user in case of suspicious activity, if the user wants this additional protection. This key would be compromised if a malicious actor took control over Horizon servers hosting the Guard key.

\n","isPage":false,"text":"\nA Guard key is a key owned by Horizon. This key allows Horizon to help users that lost their Session key and can require additional information from the user in case of suspicious activity, if the user wants this additional protection. This key would be compromised if a malicious actor took control over Horizon servers hosting the Guard key.\n","title":"Guard Key","titles":["Key Management","Social Login Wallets"]},"390":{"href":"/solutions/wallets/universal-wallet/07-key-management#torus-key","html":"\n

A Torus key is a key generated by the Torus network, and is generated using a user’s email or social login credentials such as Google or AppleID. Torus uses threshold cryptography to ensure that only the user can access their private key, making these keys non-custodial. A Torus key would be compromised if a malicious actor had control over the social account or email a user used to generate their Torus key. All Torus keys could be compromised if the Torus network itself was compromised.

\n

:::info DEFAULTS + CUSTOMIZATION

\n

While this is the default setup for new Sequence Wallets, we intend to add the ability for users to add, remove and replace the keys controlling their wallet such that users can choose their preference in terms of security and user experience tradeoff. Even the Guard key will be able to be removed. Security tips and recommendations will be added to ensure users are well informed of the risks and how to protect themselves against them.

\n

:::

","isPage":false,"text":"\nA Torus key is a key generated by the Torus network, and is generated using a user’s email or social login credentials such as Google or AppleID. Torus uses threshold cryptography to ensure that only the user can access their private key, making these keys non-custodial. A Torus key would be compromised if a malicious actor had control over the social account or email a user used to generate their Torus key. All Torus keys could be compromised if the Torus network itself was compromised.\n:::info DEFAULTS + CUSTOMIZATION\nWhile this is the default setup for new Sequence Wallets, we intend to add the ability for users to add, remove and replace the keys controlling their wallet such that users can choose their preference in terms of security and user experience tradeoff. Even the Guard key will be able to be removed. Security tips and recommendations will be added to ensure users are well informed of the risks and how to protect themselves against them.\n:::","title":"Torus Key","titles":["Key Management","Social Login Wallets"]},"391":{"href":"/solutions/marketplaces/orderbook/examples/05-get-user-activities#getuseractivities","html":"\n

Retrieve activity data for a specific user, including orders and trades.

\n\nExample: GetUserActivities for a user with specific token IDs\n
curl -X POST -H "Content-Type: application/json" https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetUserActivities -d '{\n    "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n    "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n    "currencyAddresses": [\n        "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n    ],\n    "userAddress": "0xC2Be9CF6D9ee4fd211f88620760e829792659b16",\n    "tokenIDs": ["1"]\n}'
// Works in both a Webapp (browser) or Node.js:\nimport fetch from "cross-fetch";\n \n(async () => {\n  const res = await fetch(\n    "https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetUserActivities",\n    {\n      method: "POST",\n      headers: {\n        "Content-Type": "application/json",\n      },\n      body: JSON.stringify({\n        "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n        "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n        "currencyAddresses": [\n            "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n        ],\n        "userAddress": "0xC2Be9CF6D9ee4fd211f88620760e829792659b16",\n        "tokenIDs": ["1"]\n      }),\n    }\n  );\n \n  console.log("res", await res.json());\n})();
 Please contact our team for assistance with integrations to another target.
","isPage":true,"text":"\nRetrieve activity data for a specific user, including orders and trades.\n\nRequest: POST /api/Marketplace/GetUserActivities\nContent-Type: application/json\nBody (in JSON):\n\norderbookContractAddress (string) -- the address of the protocol contract.\ncollectionAddress (string) -- the address of the NFT collection.\ncurrencyAddresses (string[]) -- an array of currency contract addresses.\nuserAddress (string) -- the address of the user whose activities are being queried.\ntokenIDs (string[]) -- an array of token IDs to filter the activities by.\n\n\nResponse (in JSON):\n\npage\n\npage (i32) -- number of the page\npageSize (i32) -- number of orders on the page\nmore (bool) -- if there are more orders\n\n\norders (OrderbookOrder[])\n[\n\norderId (string) -- order id\ntokenContract (string) -- the collection contract\ntokenId (string) -- the tokenId of the collection in the order\nisListing (bool) -- is true if it's a listing for sale, or false if it's an offer\nquantity (string) -- the number of tokens the order is for\nquantityRemaining (string) -- the number of tokens after the order\ncurrencyAddress (string) -- the currency the token is trading in\npricePerToken (string) -- the price per token\nexpiry (string) -- the expiry of when the order is no longer valid\norderStatus (OrderStatus) -- the status of the order as an enum fom "OPEN", "CLOSED", "CANCELLED"\ncreatedBy (string) -- the address the order was created by\ncreatedAt (uint64) -- the time the order was created\norderbookContractAddress (string) -- the orderbook contract address\n]\n\n\n\n\n\nExample: GetUserActivities for a user with specific token IDs\ncurl -X POST -H "Content-Type: application/json" https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetUserActivities -d '{\n "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n "currencyAddresses": [\n "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n ],\n "userAddress": "0xC2Be9CF6D9ee4fd211f88620760e829792659b16",\n "tokenIDs": ["1"]\n}'// Works in both a Webapp (browser) or Node.js:\nimport fetch from "cross-fetch";\n \n(async () => {\n const res = await fetch(\n "https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetUserActivities",\n {\n method: "POST",\n headers: {\n "Content-Type": "application/json",\n },\n body: JSON.stringify({\n "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n "currencyAddresses": [\n "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n ],\n "userAddress": "0xC2Be9CF6D9ee4fd211f88620760e829792659b16",\n "tokenIDs": ["1"]\n }),\n }\n );\n \n console.log("res", await res.json());\n})(); Please contact our team for assistance with integrations to another target.","title":"GetUserActivities","titles":[null]},"392":{"href":"/solutions/marketplaces/orderbook/examples/05-get-user-activities#example-implementation","html":"

With the use of the GetUserActivities api developers can build custom and personalized social or tracking experiences to follow certain users in various interfaces.

\"GetUserActivities\"/

","isPage":false,"text":"With the use of the GetUserActivities api developers can build custom and personalized social or tracking experiences to follow certain users in various interfaces.","title":"Example implementation","titles":[null,"GetUserActivities"]},"393":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#wallet-configuration","html":"\n

Every Sequence wallet has a configuration defined by a threshold and a list of signers with their corresponding weights.

\n","isPage":true,"text":"\nEvery Sequence wallet has a configuration defined by a threshold and a list of signers with their corresponding weights.\n","title":"Wallet Configuration","titles":[]},"394":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#configuration-layout","html":"\n
NameTypeRangeDescription
Thresholduint161 - 65535Required combined total "weight" of signers for a signature to be considered valid.
Signerssigner[]unlimited - bounded by gasList of signers that with their corresponding "weight"s.
\n","isPage":false,"text":"\nNameTypeRangeDescriptionThresholduint161 - 65535Required combined total "weight" of signers for a signature to be considered valid.Signerssigner[]unlimited - bounded by gasList of signers that with their corresponding "weight"s.\n","title":"Configuration layout","titles":["Wallet Configuration"]},"395":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#signer-layout","html":"\n
NameTypeRangeDescription
"weight"uint80 - 255"weight" of every signature of the signer.
"address""address"--"address" of the signer, it may be an EOA or another smart contract wallet with EIP-1271 support.
\n","isPage":false,"text":"\nNameTypeRangeDescription"weight"uint80 - 255"weight" of every signature of the signer."address""address"--"address" of the signer, it may be an EOA or another smart contract wallet with EIP-1271 support.\n","title":"Signer layout","titles":["Wallet Configuration","Configuration layout"]},"396":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#example","html":"\n
{\n  "threshold": 5,\n  "signers": [\n    {\n      "address": "0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea",\n      "weight": 2\n    },\n    {\n      "address": "0x596af90cecdbf9a768886e771178fd5561dd27ab",\n      "weight": 3\n    },\n    {\n      "address": "0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1",\n      "weight": 2\n    },\n    {\n      "address": "0xec9a7204a43d3f4a82c84fde92d25bfc9110981e",\n      "weight": 1\n    }\n  ]\n}
\n

This example has a threshold of 5 and 4 signers.

\n","isPage":false,"text":"\n{\n "threshold": 5,\n "signers": [\n {\n "address": "0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea",\n "weight": 2\n },\n {\n "address": "0x596af90cecdbf9a768886e771178fd5561dd27ab",\n "weight": 3\n },\n {\n "address": "0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1",\n "weight": 2\n },\n {\n "address": "0xec9a7204a43d3f4a82c84fde92d25bfc9110981e",\n "weight": 1\n }\n ]\n}\nThis example has a threshold of 5 and 4 signers.\n","title":"Example","titles":["Wallet Configuration","Configuration layout","Signer layout"]},"397":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#the-valid-combinations-of-signers-are","html":"\n
- 0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea & 0x596af90cecdbf9a768886e771178fd5561dd27ab - combined weight of 2 + 3 = 5\n- 0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1 & 0x596af90cecdbf9a768886e771178fd5561dd27ab - combined weight of 2 + 3 = 5\n- 0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea, 0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1 & 0xec9a7204a43d3f4a82c84fde92d25bfc9110981e - combined weight of 2 + 2 + 1 = 5
\n

Any combination of signers with a combined weight under the threshold is considered invalid; any additional signers above the threshold are ignored.

\n","isPage":false,"text":"\n- 0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea & 0x596af90cecdbf9a768886e771178fd5561dd27ab - combined weight of 2 + 3 = 5\n- 0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1 & 0x596af90cecdbf9a768886e771178fd5561dd27ab - combined weight of 2 + 3 = 5\n- 0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea, 0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1 & 0xec9a7204a43d3f4a82c84fde92d25bfc9110981e - combined weight of 2 + 2 + 1 = 5\nAny combination of signers with a combined weight under the threshold is considered invalid; any additional signers above the threshold are ignored.\n","title":"The valid combinations of signers are:","titles":["Wallet Configuration","Configuration layout","Signer layout"]},"398":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#configuration-hash---imagehash","html":"\n

The configuration is never stored directly on the contract, but instead is hashed and checked against every time a signature is validated. This allows the wallet contracts to reduce the usage of storage and therefore the gas cost.

\n

Wallets that never have been updated don't store the imageHash directly, instead the imageHash is used as the salt during the contract creation, and signatures are validated against the address of the wallet.

\n","isPage":false,"text":"\nThe configuration is never stored directly on the contract, but instead is hashed and checked against every time a signature is validated. This allows the wallet contracts to reduce the usage of storage and therefore the gas cost.\nWallets that never have been updated don't store the imageHash directly, instead the imageHash is used as the salt during the contract creation, and signatures are validated against the address of the wallet.\n","title":"Configuration hash - ImageHash","titles":["Wallet Configuration","Configuration layout"]},"399":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#compute-image-hash","html":"\n
  keccak256(abi.encode( uint8 weight_1, address signer_1,\n  keccak256(abi.encode( uint8 weight_2, address signer_2,\n  keccak256(abi.encode( uint8 weight_3, address signer_3,\n  keccak256(abi.encode( uint256 threshold )) )) )) )) 
  let tmp = ethers.utils.solidityPack(['uint256'], [configuration.threshold])\n \n  for (const signer of configuration.signers) {\n    tmp = ethers.utils.keccak256(\n      ethers.utils.defaultAbiCoder.encode(\n        ['bytes32', 'uint8', 'address'],\n        [tmp, signer.weight, signer.address]\n      )\n    )\n  }\n \n  const imageHash = tmp
\n","isPage":false,"text":"\n keccak256(abi.encode( uint8 weight_1, address signer_1,\n keccak256(abi.encode( uint8 weight_2, address signer_2,\n keccak256(abi.encode( uint8 weight_3, address signer_3,\n keccak256(abi.encode( uint256 threshold )) )) )) )) let tmp = ethers.utils.solidityPack(['uint256'], [configuration.threshold])\n \n for (const signer of configuration.signers) {\n tmp = ethers.utils.keccak256(\n ethers.utils.defaultAbiCoder.encode(\n ['bytes32', 'uint8', 'address'],\n [tmp, signer.weight, signer.address]\n )\n )\n }\n \n const imageHash = tmp\n","title":"Compute image hash","titles":["Wallet Configuration","Configuration layout","Configuration hash - ImageHash"]},"400":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#initial-wallet-configuration","html":"\n

The initial wallet configuration determines the address of the wallet, subsequent updates don't change the address.

\n

The wallet address can be computed using the imageHash, the factory and mainModule of the wallet.

\n","isPage":false,"text":"\nThe initial wallet configuration determines the address of the wallet, subsequent updates don't change the address.\nThe wallet address can be computed using the imageHash, the factory and mainModule of the wallet.\n","title":"Initial wallet configuration","titles":["Wallet Configuration"]},"401":{"href":"/solutions/technical-references/internals/v1/04-wallet-configuration#compute-wallet-address","html":"\n
// The code of the wallet proxy contract\nconst WalletProxyBytecode =\n"0x603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3";\n \n// These values are defined by the wallet context\n// they must be known in order to validate the counter-factual wallet imageHash\nconst factory = "0xf9D09D634Fb818b05149329C1dcCFAeA53639d96";\nconst mainModule = "0xd01F11855bCcb95f88D7A48492F66410d4637313";\n \n// Append the `mainModule` to the `WalletProxyBytecode`\n// this completed the creation code of the proxy contract\n// used for computing the wallet address as defined by the CREATE2 opcode\nconst codeHash = ethers.utils.keccak256(\nethers.utils.solidityPack(\n["bytes", "bytes32"],\n[WalletContractBytecode, ethers.utils.hexZeroPad(mainModule, 32)]\n)\n);\n \n// Compute the wallet address\nconst hash = ethers.utils.keccak256(\nethers.utils.solidityPack(\n["bytes1", "address", "bytes32", "bytes32"],\n["0xff", factory, salt, codeHash]\n)\n);\n \nconst address = ethers.utils.getAddress(ethers.utils.hexDataSlice(hash, 12));
","isPage":false,"text":"\n// The code of the wallet proxy contract\nconst WalletProxyBytecode =\n"0x603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3";\n \n// These values are defined by the wallet context\n// they must be known in order to validate the counter-factual wallet imageHash\nconst factory = "0xf9D09D634Fb818b05149329C1dcCFAeA53639d96";\nconst mainModule = "0xd01F11855bCcb95f88D7A48492F66410d4637313";\n \n// Append the `mainModule` to the `WalletProxyBytecode`\n// this completed the creation code of the proxy contract\n// used for computing the wallet address as defined by the CREATE2 opcode\nconst codeHash = ethers.utils.keccak256(\nethers.utils.solidityPack(\n["bytes", "bytes32"],\n[WalletContractBytecode, ethers.utils.hexZeroPad(mainModule, 32)]\n)\n);\n \n// Compute the wallet address\nconst hash = ethers.utils.keccak256(\nethers.utils.solidityPack(\n["bytes1", "address", "bytes32", "bytes32"],\n["0xff", factory, salt, codeHash]\n)\n);\n \nconst address = ethers.utils.getAddress(ethers.utils.hexDataSlice(hash, 12));","title":"Compute wallet address","titles":["Wallet Configuration","Initial wallet configuration","Configuration hash - ImageHash"]},"402":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#modules--wallet-update","html":"\n

Sequence modules are the underlying program implementation of the wallets; wallets can change modules at runtime.

\n

The MainModule is the initial module of every Sequence wallet; it differs from the other modules because it doesn't store the set of signers on contract storage; it uses the salt provided to the Factory contract.

\n","isPage":true,"text":"\nSequence modules are the underlying program implementation of the wallets; wallets can change modules at runtime.\nThe MainModule is the initial module of every Sequence wallet; it differs from the other modules because it doesn't store the set of signers on contract storage; it uses the salt provided to the Factory contract.\n","title":"Modules & wallet update","titles":[]},"403":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#wallet-implementation","html":"\n

Sequence modules can be assigned to wallets either by the factory or by updating it after the initial deployment. Only one module can be assigned to a wallet at a time.

\n","isPage":false,"text":"\nSequence modules can be assigned to wallets either by the factory or by updating it after the initial deployment. Only one module can be assigned to a wallet at a time.\n","title":"Wallet implementation","titles":["Modules & wallet update"]},"404":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#_updateconfiguration","html":"\n

The updateImplementation allows to update the underlying implementation of the wallet proxy. This implementation contains all the core code that defines the wallet's behaviour.

\n

:::warning Dangerous operation\nCalling updateImplementation with an invalid implementation will result in the corruption of the wallet.

\n

Corrupt wallets may lead to the loss of funds.\n:::

\n
function updateImplementation(\n  address _implementation\n) external override onlySelf {
\n","isPage":false,"text":"\nThe updateImplementation allows to update the underlying implementation of the wallet proxy. This implementation contains all the core code that defines the wallet's behaviour.\n:::warning Dangerous operation\nCalling updateImplementation with an invalid implementation will result in the corruption of the wallet.\nCorrupt wallets may lead to the loss of funds.\n:::\nfunction updateImplementation(\n address _implementation\n) external override onlySelf {\n","title":"_updateConfiguration","titles":["Modules & wallet update","Wallet implementation"]},"405":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#parameters","html":"\n
NameTypeDescription
_implementationaddressAddress of the new wallet implementation.
\n

This method has the onlySelf modifier, which means that it can only be called by the wallet itself using a self-referencing transaction. Calls to this method coming from other addresses, even if these addresses are signers of the wallet, will be rejected.

\n","isPage":false,"text":"\nNameTypeDescription_implementationaddressAddress of the new wallet implementation.\nThis method has the onlySelf modifier, which means that it can only be called by the wallet itself using a self-referencing transaction. Calls to this method coming from other addresses, even if these addresses are signers of the wallet, will be rejected.\n","title":"Parameters:","titles":["Modules & wallet update","Wallet implementation","_updateConfiguration"]},"406":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#reading-current-implementation","html":"\n

The wallet implementation is stored on the contract storage slot defined by the address of the wallet itself. Given that every wallet has a unique address, the implementation slot varies from wallet to wallet.

\n
import "ethers"\n \nconst address = "0x596af90cecdbf9a768886e771178fd5561dd27ab"\nconst provider = new ethers.providers.JsonRpcProvider("http://localhost:8545")\n \n// Read storage slot address(address)\nconst slot = await provider.getStorageAt(address, ethers.utils.defaultAbiCoder.encode(['address'], [address]))\n \n// Decode bytes32 as address value\nconst implementation = ethers.utils.defaultAbiCoder.decode(['address'], slot)[0]\n \nconsole.log(implementation)
\n","isPage":false,"text":"\nThe wallet implementation is stored on the contract storage slot defined by the address of the wallet itself. Given that every wallet has a unique address, the implementation slot varies from wallet to wallet.\nimport "ethers"\n \nconst address = "0x596af90cecdbf9a768886e771178fd5561dd27ab"\nconst provider = new ethers.providers.JsonRpcProvider("http://localhost:8545")\n \n// Read storage slot address(address)\nconst slot = await provider.getStorageAt(address, ethers.utils.defaultAbiCoder.encode(['address'], [address]))\n \n// Decode bytes32 as address value\nconst implementation = ethers.utils.defaultAbiCoder.decode(['address'], slot)[0]\n \nconsole.log(implementation)\n","title":"Reading current implementation","titles":["Modules & wallet update","Wallet implementation"]},"407":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#wallet-configuration-validation","html":"\n

:::info Fixed configuration\nSigner's configuration on wallets using MainModule can't be changed. The only way to change the set of signers or threshold is by updating the module of the wallet.\n:::

\n

All sequence modules must implement the ModuleAuth interface, this interface allows the rest of the module to validate signatures for the wallet. In the case of MainModule this interface is implemented as a counter-factual validation of hash passed to the factory during the contract wallet creation.

\n","isPage":false,"text":"\n:::info Fixed configuration\nSigner's configuration on wallets using MainModule can't be changed. The only way to change the set of signers or threshold is by updating the module of the wallet.\n:::\nAll sequence modules must implement the ModuleAuth interface, this interface allows the rest of the module to validate signatures for the wallet. In the case of MainModule this interface is implemented as a counter-factual validation of hash passed to the factory during the contract wallet creation.\n","title":"Wallet configuration validation","titles":["Modules & wallet update"]},"408":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#_isvalidimage","html":"\n
  function _isValidImage(\n    bytes32 _imageHash\n  ) internal override view returns (bool _isValid)
\n

Validates if the provided imageHash corresponds to the one configured in the wallet. This function is called internally to validate transaction and message signatures.

\n

The imageHash is a hash of the wallet configuration, which contains the wallet's threshold, signers and weights.

\n","isPage":false,"text":"\n function _isValidImage(\n bytes32 _imageHash\n ) internal override view returns (bool _isValid)\nValidates if the provided imageHash corresponds to the one configured in the wallet. This function is called internally to validate transaction and message signatures.\nThe imageHash is a hash of the wallet configuration, which contains the wallet's threshold, signers and weights.\n","title":"_isValidImage","titles":["Modules & wallet update","Wallet configuration validation"]},"409":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#parameters-1","html":"\n
NameTypeDescription
_imageHashbytes32Hash of wallet configuration to be validated.
\n","isPage":false,"text":"\nNameTypeDescription_imageHashbytes32Hash of wallet configuration to be validated.\n","title":"Parameters:","titles":["Modules & wallet update","Wallet configuration validation","_isValidImage"]},"410":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#return-values","html":"\n
NameTypeDescription
_isValidboolTrue if the given imageHash corresponds to the current wallet configuration.
\n","isPage":false,"text":"\nNameTypeDescription_isValidboolTrue if the given imageHash corresponds to the current wallet configuration.\n","title":"Return Values:","titles":["Modules & wallet update","Wallet configuration validation","_isValidImage"]},"411":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#mainmoduleupgradeable","html":"\n

MainModuleUpgradable is a module that mimics the behaviour of the MainModule but allows the wallet configuration to be updated.

\n","isPage":false,"text":"\nMainModuleUpgradable is a module that mimics the behaviour of the MainModule but allows the wallet configuration to be updated.\n","title":"MainModuleUpgradeable","titles":["Modules & wallet update"]},"412":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#updateimagehash","html":"\n

Updates the wallet imageHash, this is the hash that defines the wallet configuration (signers, weights, threshold).

\n
  function updateImageHash(\n    bytes32 _imageHash\n  ) external override onlySelf {
\n","isPage":false,"text":"\nUpdates the wallet imageHash, this is the hash that defines the wallet configuration (signers, weights, threshold).\n function updateImageHash(\n bytes32 _imageHash\n ) external override onlySelf {\n","title":"updateImageHash","titles":["Modules & wallet update","MainModuleUpgradeable"]},"413":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#parameters-2","html":"\n
NameTypeDescription
_imageHashbytes32Hash of the new configuration for the wallet.
\n

:::caution Unsanitized input\nThe imageHash is not validated, it is the responsibility of the caller to ensure that the hash is correct. Reasons for incorrect hashes include:

\n\n

In any of this cases the wallet will be rendered unusable.\n:::

\n

This method has the onlySelf modifier, which means that it can only be called by the wallet itself using a self-referencing transaction. Calls to this method coming from other addresses, even if these addresses are signers of the wallet, will be rejected.

\n","isPage":false,"text":"\nNameTypeDescription_imageHashbytes32Hash of the new configuration for the wallet.\n:::caution Unsanitized input\nThe imageHash is not validated, it is the responsibility of the caller to ensure that the hash is correct. Reasons for incorrect hashes include:\n\nThe combined weight of the signers is below the threshold.\nThe signers are not valid addresses.\nThe signers are smart contract wallets without proper support for EIP-1271.\nThe imageHash doesn't correspond to any wallet configuration (may be a random string).\nThe imageHash corresponds to an unknown wallet configuration.\n\nIn any of this cases the wallet will be rendered unusable.\n:::\nThis method has the onlySelf modifier, which means that it can only be called by the wallet itself using a self-referencing transaction. Calls to this method coming from other addresses, even if these addresses are signers of the wallet, will be rejected.\n","title":"Parameters:","titles":["Modules & wallet update","MainModuleUpgradeable","updateImageHash"]},"414":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#first-configuration-update","html":"\n

When Sequence wallets are created, the factory contract doesn't call an initialize function. The configuration is instead defined by the salt provided to the factory, the MainModule then checks the counterfactual validity of all signatures against the wallet address.

\n

This means there is no direct way to update the configuration of a wallet while still using the MainModule. Given that the first configuration update needs to also change the wallet implementation to the MainModuleUpgradable, the MainModule is updated to the MainModuleUpgradable and the updateImageHash method is called to update the wallet configuration.

\n
const transactions = [\n  {\n    delegateCall: false,\n    revertOnError: true,\n    to: wallet,\n    data: walletInterface.encodeFunctionData(\n      walletInterface.getFunction('updateImplementation'), [this.context.mainModuleUpgradable]\n    ),\n    value: ethers.constants.Zero,\n    gasLimit: ethers.constants.Zero,\n  },\n  {\n    delegateCall: false,\n    revertOnError: true,\n    to: wallet,\n    data: mainModuleInterface.encodeFunctionData(\n      mainModuleInterface.getFunction('updateImageHash'), [newImageHash]\n    ),\n    value: ethers.constants.Zero,\n    gasLimit: ethers.constants.Zero,\n  }\n]
\n","isPage":false,"text":"\nWhen Sequence wallets are created, the factory contract doesn't call an initialize function. The configuration is instead defined by the salt provided to the factory, the MainModule then checks the counterfactual validity of all signatures against the wallet address.\nThis means there is no direct way to update the configuration of a wallet while still using the MainModule. Given that the first configuration update needs to also change the wallet implementation to the MainModuleUpgradable, the MainModule is updated to the MainModuleUpgradable and the updateImageHash method is called to update the wallet configuration.\nconst transactions = [\n {\n delegateCall: false,\n revertOnError: true,\n to: wallet,\n data: walletInterface.encodeFunctionData(\n walletInterface.getFunction('updateImplementation'), [this.context.mainModuleUpgradable]\n ),\n value: ethers.constants.Zero,\n gasLimit: ethers.constants.Zero,\n },\n {\n delegateCall: false,\n revertOnError: true,\n to: wallet,\n data: mainModuleInterface.encodeFunctionData(\n mainModuleInterface.getFunction('updateImageHash'), [newImageHash]\n ),\n value: ethers.constants.Zero,\n gasLimit: ethers.constants.Zero,\n }\n]\n","title":"First configuration update","titles":["Modules & wallet update"]},"415":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#delegatecall-false","html":"\n

delegateCall is used to extend the wallet functionality beyond what's allowed by the module. In this case the called methods are defined on the modules themselves, so there is no need to use delegateCall.

\n","isPage":false,"text":"\ndelegateCall is used to extend the wallet functionality beyond what's allowed by the module. In this case the called methods are defined on the modules themselves, so there is no need to use delegateCall.\n","title":"delegateCall: false","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"416":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#revertonerror-true","html":"\n

revertOnError is used to revert the whole transaction bundle if a transaction flagged by it fails. In this case the operation should be atomic given that a partial wallet configuration update will render the wallet unusable.

\n","isPage":false,"text":"\nrevertOnError is used to revert the whole transaction bundle if a transaction flagged by it fails. In this case the operation should be atomic given that a partial wallet configuration update will render the wallet unusable.\n","title":"revertOnError: true","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"417":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#to-wallet","html":"\n

The methods being called are defined on the wallet itself, but need to be called externally, so the to address is the wallet itself.

\n","isPage":false,"text":"\nThe methods being called are defined on the wallet itself, but need to be called externally, so the to address is the wallet itself.\n","title":"to: wallet","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"418":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#value-ethersconstantszero","html":"\n

The value of the transaction is always zero, since the transaction is a self-referencing transaction and doesn't require transferring funds.

\n","isPage":false,"text":"\nThe value of the transaction is always zero, since the transaction is a self-referencing transaction and doesn't require transferring funds.\n","title":"value: ethers.constants.Zero","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"419":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#gaslimit-ethersconstantszero","html":"\n

The gasLimit of the transaction is always zero, since it represents an unlimited amount of gas.

\n

:::warning Dangerous operation

\n

When the wallet is first updated to the MainModuleUpgradable it doesn't have a valid imageHash yet. It's imperative that the imageHash is updated before the transaction bundle finishes executing.\nIf the imageHash is not updated before the transaction bundle finishes executing, the wallet will be rendered unusable.

\n

For this reason the following considerations should be taken when updating the wallet for the first time:

\n\n

:::

\n","isPage":false,"text":"\nThe gasLimit of the transaction is always zero, since it represents an unlimited amount of gas.\n:::warning Dangerous operation\nWhen the wallet is first updated to the MainModuleUpgradable it doesn't have a valid imageHash yet. It's imperative that the imageHash is updated before the transaction bundle finishes executing.\nIf the imageHash is not updated before the transaction bundle finishes executing, the wallet will be rendered unusable.\nFor this reason the following considerations should be taken when updating the wallet for the first time:\n\nAll transactions should be marked revertOnError = true.\nupdateImplementation and updateImageHash should both be declared on the same transaction bundle.\nThe gasLimit of both transactions should be set to unlimited (0).\n\n:::\n","title":"gasLimit: ethers.constants.Zero","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"420":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#subsequent-configuration-updates","html":"\n

Once the wallet is updated to the MainModuleUpgradable it can be updated by calling the updateImageHash method, without any additional transaction.

\n
const transactions = [\n  {\n    delegateCall: false,\n    revertOnError: true,\n    to: wallet,\n    data: mainModuleInterface.encodeFunctionData(\n      mainModuleInterface.getFunction('updateImageHash'), [newImageHash]\n    ),\n    value: ethers.constants.Zero,\n    gasLimit: ethers.constants.Zero,\n  }\n]
\n","isPage":false,"text":"\nOnce the wallet is updated to the MainModuleUpgradable it can be updated by calling the updateImageHash method, without any additional transaction.\nconst transactions = [\n {\n delegateCall: false,\n revertOnError: true,\n to: wallet,\n data: mainModuleInterface.encodeFunctionData(\n mainModuleInterface.getFunction('updateImageHash'), [newImageHash]\n ),\n value: ethers.constants.Zero,\n gasLimit: ethers.constants.Zero,\n }\n]\n","title":"Subsequent configuration updates","titles":["Modules & wallet update","First configuration update"]},"421":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#retrieving-the-current-configuration","html":"\n

If the wallet is updated to the MainModuleUpgradable it can be queried for the current configuration by calling the getImageHash method.

\n

This method should return the wallet's current configuration hash, which can be compared to a list of known wallet configurations to find the correct one.

\n","isPage":false,"text":"\nIf the wallet is updated to the MainModuleUpgradable it can be queried for the current configuration by calling the getImageHash method.\nThis method should return the wallet's current configuration hash, which can be compared to a list of known wallet configurations to find the correct one.\n","title":"Retrieving the current configuration","titles":["Modules & wallet update","First configuration update"]},"422":{"href":"/solutions/technical-references/internals/v1/05-modules-and-updates#retrieving-the-wallet-configuration","html":"\n

The imageHash method returns bytes32(0) if the wallet is not yet updated to the MainModuleUpgradable.\nIn this case the wallet is in a counter-factual state and the imageHash can't be directly queried.

\n

This is also the case for non-deployed wallets.

\n

To find the imageHash of a non-deployed or non-updated wallet, a candidate known imageHash needs to be compared against the wallet address.

\n

See Compute wallet address.

","isPage":false,"text":"\nThe imageHash method returns bytes32(0) if the wallet is not yet updated to the MainModuleUpgradable.\nIn this case the wallet is in a counter-factual state and the imageHash can't be directly queried.\nThis is also the case for non-deployed wallets.\nTo find the imageHash of a non-deployed or non-updated wallet, a candidate known imageHash needs to be compared against the wallet address.\nSee Compute wallet address.","title":"Retrieving the wallet configuration","titles":["Modules & wallet update","First configuration update","Retrieving the current configuration"]},"423":{"href":"/solutions/technical-references/internals/v1/06-main-module-upgradeable#mainmoduleupgradeable--configuration-migration","html":"","isPage":true,"text":"","title":"MainModuleUpgradeable & configuration migration","titles":[]},"424":{"href":"/solutions/technical-references/internals/v1/08-signature-encoding#signature-encoding","html":"\n

Sequence Wallets support ERC-1271 Standard Contract Signature Verification to allow signing of transactions and messages.

\n","isPage":true,"text":"\nSequence Wallets support ERC-1271 Standard Contract Signature Verification to allow signing of transactions and messages.\n","title":"Signature Encoding","titles":[]},"425":{"href":"/solutions/technical-references/internals/v1/08-signature-encoding#erc-191-ethereum-signed-data","html":"\n

Messages encoded with as ERC-191 Ethereum Signed Data are able to be created and signed as follows.

\n
import { Wallet } from '@0xsequence/wallet'\n \n// Construct your Sequence Wallet (out of scope for this section)\nconst wallet: Wallet\n \nconst message = "Hello, World!"\n \nconst prefixedMessage = "\\x19Ethereum Signed Message:\\n" + len(message) + message\nconst signature = await wallet.signMessage(prefixedMessage)
\n

The above will iterate through local, signing the message. If the threshold is reached, the signature is returned.\nOtherwise the library will iterate through the remote signers as well.\nThe resulting signatures are joined and encoded as a hex string.

\n","isPage":false,"text":"\nMessages encoded with as ERC-191 Ethereum Signed Data are able to be created and signed as follows.\nimport { Wallet } from '@0xsequence/wallet'\n \n// Construct your Sequence Wallet (out of scope for this section)\nconst wallet: Wallet\n \nconst message = "Hello, World!"\n \nconst prefixedMessage = "\\x19Ethereum Signed Message:\\n" + len(message) + message\nconst signature = await wallet.signMessage(prefixedMessage)\nThe above will iterate through local, signing the message. If the threshold is reached, the signature is returned.\nOtherwise the library will iterate through the remote signers as well.\nThe resulting signatures are joined and encoded as a hex string.\n","title":"ERC-191 Ethereum Signed Data","titles":["Signature Encoding"]},"426":{"href":"/solutions/technical-references/internals/v1/08-signature-encoding#erc-712-structured-data-signatures","html":"\n

ERC-712 Structured Data can also be signed in a similar fashion.

\n
import { Wallet } from '@0xsequence/wallet'\nimport { encodeTypedDataDigest } from '@0xsequence/utils'\n \n// Construct your Sequence Wallet (out of scope for this section)\nconst wallet: Wallet\n \n// Encode the typed data\nconst chainId = 1\nconst typedData = {\n\ttypes: {\n\t\tPerson: [\n\t\t\t{ name: 'name', type: 'string' },\n\t\t\t{ name: 'wallet', type: 'address' },\n\t\t\t{ name: 'count', type: 'uint8' }\n\t\t]\n\t},\n\tprimaryType: 'Person' as const,\n\tdomain: {\n\t\tname: 'Ether Mail',\n\t\tversion: '1',\n\t\tchainId: chainId,\n\t\tverifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC'\n\t},\n\tmessage: {\n\t\tname: 'Bob',\n\t\twallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n\t\tcount: 4\n\t}\n} \nconst hashedData = encodeTypedDataDigest(typedData)\n \nconst signature = await wallet.signMessage(hashedData)
\n

The above will iterate through local, signing the message. If the threshold is reached, the signature is returned.\nOtherwise the library will iterate through the remote signers as well.\nThe resulting signatures are joined and encoded as a hex string.

\n","isPage":false,"text":"\nERC-712 Structured Data can also be signed in a similar fashion.\nimport { Wallet } from '@0xsequence/wallet'\nimport { encodeTypedDataDigest } from '@0xsequence/utils'\n \n// Construct your Sequence Wallet (out of scope for this section)\nconst wallet: Wallet\n \n// Encode the typed data\nconst chainId = 1\nconst typedData = {\n\ttypes: {\n\t\tPerson: [\n\t\t\t{ name: 'name', type: 'string' },\n\t\t\t{ name: 'wallet', type: 'address' },\n\t\t\t{ name: 'count', type: 'uint8' }\n\t\t]\n\t},\n\tprimaryType: 'Person' as const,\n\tdomain: {\n\t\tname: 'Ether Mail',\n\t\tversion: '1',\n\t\tchainId: chainId,\n\t\tverifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC'\n\t},\n\tmessage: {\n\t\tname: 'Bob',\n\t\twallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n\t\tcount: 4\n\t}\n} \nconst hashedData = encodeTypedDataDigest(typedData)\n \nconst signature = await wallet.signMessage(hashedData)\nThe above will iterate through local, signing the message. If the threshold is reached, the signature is returned.\nOtherwise the library will iterate through the remote signers as well.\nThe resulting signatures are joined and encoded as a hex string.\n","title":"ERC-712 Structured Data Signatures","titles":["Signature Encoding"]},"427":{"href":"/solutions/technical-references/internals/v1/08-signature-encoding#verification","html":"\n

The signature can be verified by calling the isValidSignature method on the wallet.

\n
  /**\n   * @notice Verifies whether the provided signature is valid with respect to the provided hash\n   * @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n   *   > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256("isValidSignature(bytes32,bytes)"))\n   * @param _hash       keccak256 hash that was signed\n   * @param _signatures Signature byte array associated with _data.\n   *                    Encoded as abi.encode(Signature[], Configs)\n   * @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\n   */\n  function isValidSignature(\n    bytes32 _hash,\n    bytes calldata _signatures\n  ) public override virtual view returns (bytes4) {\n    // Validate signatures\n    (bool isValid,) = _signatureValidation(_hash, _signatures);\n    if (isValid) {\n      return SELECTOR_ERC1271_BYTES32_BYTES;\n    }\n\n    return bytes4(0);\n  }
\n

This will iterate through the combined signatures and validate that the resulting signature breaches the wallet's threshold.

","isPage":false,"text":"\nThe signature can be verified by calling the isValidSignature method on the wallet.\n /**\n * @notice Verifies whether the provided signature is valid with respect to the provided hash\n * @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n * > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256("isValidSignature(bytes32,bytes)"))\n * @param _hash keccak256 hash that was signed\n * @param _signatures Signature byte array associated with _data.\n * Encoded as abi.encode(Signature[], Configs)\n * @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\n */\n function isValidSignature(\n bytes32 _hash,\n bytes calldata _signatures\n ) public override virtual view returns (bytes4) {\n // Validate signatures\n (bool isValid,) = _signatureValidation(_hash, _signatures);\n if (isValid) {\n return SELECTOR_ERC1271_BYTES32_BYTES;\n }\n\n return bytes4(0);\n }\nThis will iterate through the combined signatures and validate that the resulting signature breaches the wallet's threshold.","title":"Verification","titles":["Signature Encoding"]},"428":{"href":"/solutions/technical-references/internals/v1/09-nested-transaction-batching#nested-transaction-batching","html":"","isPage":true,"text":"","title":"Nested Transaction Batching","titles":[]},"429":{"href":"/solutions/technical-references/internals/v1/10-guest-module#guestmodule-and-on-demand-deployment","html":"","isPage":true,"text":"","title":"GuestModule and on-demand deployment","titles":[]},"430":{"href":"/solutions/technical-references/internals/v1/11-wallet-context#wallet-context","html":"\n
export const sequenceContext: WalletContext = {\n  factory: '0xf9D09D634Fb818b05149329C1dcCFAeA53639d96',\n  mainModule: '0xd01F11855bCcb95f88D7A48492F66410d4637313',\n  mainModuleUpgradable: '0x7EFE6cE415956c5f80C6530cC6cc81b4808F6118',\n  guestModule: '0x02390F3E6E5FD1C6786CB78FD3027C117a9955A7',\n  sequenceUtils: '0xd130B43062D875a4B7aF3f8fc036Bc6e9D3E1B3E',\n  libs: {\n    requireFreshSigner: '0xE6B9B21C077F382333220a072e4c44280b873907'\n  }\n}
","isPage":true,"text":"\nexport const sequenceContext: WalletContext = {\n factory: '0xf9D09D634Fb818b05149329C1dcCFAeA53639d96',\n mainModule: '0xd01F11855bCcb95f88D7A48492F66410d4637313',\n mainModuleUpgradable: '0x7EFE6cE415956c5f80C6530cC6cc81b4808F6118',\n guestModule: '0x02390F3E6E5FD1C6786CB78FD3027C117a9955A7',\n sequenceUtils: '0xd130B43062D875a4B7aF3f8fc036Bc6e9D3E1B3E',\n libs: {\n requireFreshSigner: '0xE6B9B21C077F382333220a072e4c44280b873907'\n }\n}","title":"Wallet Context","titles":[]},"431":{"href":"/solutions/technical-references/internals/v1/12-contract-audits#contract-audits","html":"\n

Sequence wallet contracts underwent two independent audits by Consensys Diligence and Quantstamp.

\n

Note: Sequence Wallet was formerly known as "Arcadeum Wallet". Any references of "Arcadeum" in these reports are synonymous with "Sequence".

\n","isPage":true,"text":"\nSequence wallet contracts underwent two independent audits by Consensys Diligence and Quantstamp.\nNote: Sequence Wallet was formerly known as "Arcadeum Wallet". Any references of "Arcadeum" in these reports are synonymous with "Sequence".\n","title":"Contract Audits","titles":[]},"432":{"href":"/solutions/technical-references/internals/v1/12-contract-audits#quantstamp","html":"\n\n","isPage":false,"text":"\n\nJuly 2nd, 2020\nFeb 24th, 2021\n\n","title":"Quantstamp","titles":["Contract Audits"]},"433":{"href":"/solutions/technical-references/internals/v1/12-contract-audits#consensys-diligence","html":"\n\n","isPage":false,"text":"\n\nMay 2020\n\n","title":"Consensys Diligence","titles":["Contract Audits"]},"434":{"href":"/solutions/technical-references/internals/v1/12-contract-audits#zellic","html":"\n","isPage":false,"text":"\n\nMarch 2023\n","title":"Zellic","titles":["Contract Audits"]},"435":{"href":"/solutions/technical-references/internals/v2/04-configuration#wallet-configuration","html":"\n

In the context of Sequence Wallets, the "Wallet Configuration" is a set of parameters that defines the behavior of the wallet, primarily used to define the access control of the wallet, meaning who can sign transactions and how many signatures are needed.

\n","isPage":true,"text":"\nIn the context of Sequence Wallets, the "Wallet Configuration" is a set of parameters that defines the behavior of the wallet, primarily used to define the access control of the wallet, meaning who can sign transactions and how many signatures are needed.\n","title":"Wallet Configuration","titles":[]},"436":{"href":"/solutions/technical-references/internals/v2/04-configuration#top-level-properties","html":"\n

Sequence v2 configurations contain the following 3 properties:

\n\n","isPage":false,"text":"\nSequence v2 configurations contain the following 3 properties:\n\nthreshold - The required "weight sum" needed for a signature to be considered valid.\ncheckpoint - Used as a salt and ordering mechanism for wallet updates.\ntree - Determines the signers and their weights for the wallet.\n\n","title":"Top level properties","titles":["Wallet Configuration"]},"437":{"href":"/solutions/technical-references/internals/v2/04-configuration#threshold","html":"\n

The threshold is a uint16; it can have any value between 0 and 65535. Signatures are only considered valid or invalid if the sum of the weights of the signers that signed the transaction is greater or equal to the threshold.

\n","isPage":false,"text":"\nThe threshold is a uint16; it can have any value between 0 and 65535. Signatures are only considered valid or invalid if the sum of the weights of the signers that signed the transaction is greater or equal to the threshold.\n","title":"Threshold","titles":["Wallet Configuration","Top level properties"]},"438":{"href":"/solutions/technical-references/internals/v2/04-configuration#checkpoint","html":"\n

The checkpoint is a uint32. During wallet creation, a semi-random value can be provided to generate independent wallets with the same initial configuration. Then, during normal operation, the checkpoint is used by Light State Sync to ensure that wallet updates are applied in the correct order.

\n","isPage":false,"text":"\nThe checkpoint is a uint32. During wallet creation, a semi-random value can be provided to generate independent wallets with the same initial configuration. Then, during normal operation, the checkpoint is used by Light State Sync to ensure that wallet updates are applied in the correct order.\n","title":"Checkpoint","titles":["Wallet Configuration","Top level properties"]},"439":{"href":"/solutions/technical-references/internals/v2/04-configuration#tree","html":"\n

The tree is an unbalanced binary Merkle tree, where each leaf may contain a signer, a static signature, or a subtree. The tree can represent any combination of signers and weights and can be used to create complex multi-signature wallets.

\n

The possible leaf types are:

\n","isPage":false,"text":"\nThe tree is an unbalanced binary Merkle tree, where each leaf may contain a signer, a static signature, or a subtree. The tree can represent any combination of signers and weights and can be used to create complex multi-signature wallets.\nThe possible leaf types are:\n","title":"Tree","titles":["Wallet Configuration","Top level properties"]},"440":{"href":"/solutions/technical-references/internals/v2/04-configuration#signer","html":"\n

Signers are represented by a signer address and a uint8 weight. The weight is how much the signer contributes to the threshold.\nThe address can belong to either an ERC1271 compliant contract or an EOA wallet.

\n

The leaf hash is calculated as follows:

\n
bytes32(uint256(weight) << 160 | uint256(uint160(addr)))
\n","isPage":false,"text":"\nSigners are represented by a signer address and a uint8 weight. The weight is how much the signer contributes to the threshold.\nThe address can belong to either an ERC1271 compliant contract or an EOA wallet.\nThe leaf hash is calculated as follows:\nbytes32(uint256(weight) << 160 | uint256(uint160(addr)))\n","title":"Signer","titles":["Wallet Configuration","Top level properties","Tree"]},"441":{"href":"/solutions/technical-references/internals/v2/04-configuration#subdigest","html":"\n

This represents a static subdigest for which any signature is valid. If a signature for this subdigest is provided, the total weight of the signature is automatically set to Infinity.

\n

Notice static subdigests that exist within nested trees will have their "Infinity" weight reduced to the weight of the nested tree.

\n

The leaf hash is calculated as follows:

\n
keccak256(abi.encodePacked('Sequence static digest:\\n', subdigest));
\n","isPage":false,"text":"\nThis represents a static subdigest for which any signature is valid. If a signature for this subdigest is provided, the total weight of the signature is automatically set to Infinity.\nNotice static subdigests that exist within nested trees will have their "Infinity" weight reduced to the weight of the nested tree.\nThe leaf hash is calculated as follows:\nkeccak256(abi.encodePacked('Sequence static digest:\\n', subdigest));\n","title":"Subdigest","titles":["Wallet Configuration","Top level properties","Tree"]},"442":{"href":"/solutions/technical-references/internals/v2/04-configuration#subtree-nested-configuration","html":"\n

This represents a whole new wallet configuration, this "nested configuration" has its own:

\n\n

The way it works is that if a signature reaches the internal threshold within the subtree it is considered valid, and the external weight is added to the parent tree. Any number of nested configurations can be created, and it is possible to create multiple nesting levels.

\n

This pattern can be used, among other things, to express the following scenarios:

\n\n

The leaf hash is calculated as follows:

\n
keccak256(abi.encodePacked(\n  'Sequence nested config:\\n',\n  imageHash(tree),\n  threshold,\n  weight\n))
\n\n","isPage":false,"text":"\nThis represents a whole new wallet configuration, this "nested configuration" has its own:\n\nExternal weight (uint8)\nInternal threshold (uint16)\nInternal tree\n\nThe way it works is that if a signature reaches the internal threshold within the subtree it is considered valid, and the external weight is added to the parent tree. Any number of nested configurations can be created, and it is possible to create multiple nesting levels.\nThis pattern can be used, among other things, to express the following scenarios:\n\nNon-linear weight distribution, A and B signers can provide 1 weight each, but together they can provide 3 weight.\nLimited total weight contribution, A, B, and C signers can provide 1 weight each, but together they can only provide 2 weight.\n"Department configurations", N departments are required to sign, and each department has its own inner configuration.\n\nThe leaf hash is calculated as follows:\nkeccak256(abi.encodePacked(\n 'Sequence nested config:\\n',\n imageHash(tree),\n threshold,\n weight\n))\nThe wallet contracts have no way of validating the correctness of the configuration, the responsibility of ensuring the configuration is correct is on the SDKs interacting with the contracts.Things like threshold == 0 or threshold > total weight will result in fully unauthenticated wallets or inaccessible wallets respectively.\n","title":"Subtree (nested configuration)","titles":["Wallet Configuration","Top level properties","Tree"]},"443":{"href":"/solutions/technical-references/internals/v2/04-configuration#imagehash","html":"\n

The configuration is never stored as a whole; instead, the Merkle tree is hashed into a single bytes32 value, this is internally called the imageHash of the configuration.

\n

The imageHash is calculated as follows:

\n
imageHash := keccak256(abi.encode(\n  keccak256(abi.encode(\n    hashTree(tree),\n    threshold\n  )),\n  checkpoint\n))
\n

The hashTree function is a recursive function that hashes the tree into a single bytes32 value, pseudo code for the hashTree function is as follows:

\n
export function hashTree(node: Node | Leaf): string {\n  if (isSignerLeaf(node)) {\n    return ethers.utils.solidityPack(\n      ['uint96', 'address'],\n      [node.weight, node.address]\n    )\n  }\n \n  if (isSubdigestLeaf(node)) {\n    return ethers.utils.solidityKeccak256(\n      ['string', 'bytes32'],\n      ['Sequence static digest:\\n', node.subdigest]\n    )\n  }\n \n  if (isNestedLeaf(node)) {\n    const nested = hashTree(node.tree)\n    return ethers.utils.solidityKeccak256(\n      ['string', 'bytes32', 'uint256', 'uint256'],\n      ['Sequence nested config:\\n', nested, node.threshold, node.weight]\n    )\n  }\n \n  return ethers.utils.solidityKeccak256(\n    ['bytes32', 'bytes32'],\n    [hashTree(node.left), hashTree(node.right)]\n  )\n}
\n","isPage":false,"text":"\nThe configuration is never stored as a whole; instead, the Merkle tree is hashed into a single bytes32 value, this is internally called the imageHash of the configuration.\nThe imageHash is calculated as follows:\nimageHash := keccak256(abi.encode(\n keccak256(abi.encode(\n hashTree(tree),\n threshold\n )),\n checkpoint\n))\nThe hashTree function is a recursive function that hashes the tree into a single bytes32 value, pseudo code for the hashTree function is as follows:\nexport function hashTree(node: Node | Leaf): string {\n if (isSignerLeaf(node)) {\n return ethers.utils.solidityPack(\n ['uint96', 'address'],\n [node.weight, node.address]\n )\n }\n \n if (isSubdigestLeaf(node)) {\n return ethers.utils.solidityKeccak256(\n ['string', 'bytes32'],\n ['Sequence static digest:\\n', node.subdigest]\n )\n }\n \n if (isNestedLeaf(node)) {\n const nested = hashTree(node.tree)\n return ethers.utils.solidityKeccak256(\n ['string', 'bytes32', 'uint256', 'uint256'],\n ['Sequence nested config:\\n', nested, node.threshold, node.weight]\n )\n }\n \n return ethers.utils.solidityKeccak256(\n ['bytes32', 'bytes32'],\n [hashTree(node.left), hashTree(node.right)]\n )\n}\n","title":"ImageHash","titles":["Wallet Configuration"]},"444":{"href":"/solutions/technical-references/internals/v2/04-configuration#initial-configuration","html":"\n

All Sequence Wallets have an "initial configuration", implemented by using the imageHash of the initial configuration as the SALT during the CREATE2 deployment of the wallet.

\n

Wallets are deployed by calling the deploy function of the Factory contract, which takes the following parameters:

\n\n","isPage":false,"text":"\nAll Sequence Wallets have an "initial configuration", implemented by using the imageHash of the initial configuration as the SALT during the CREATE2 deployment of the wallet.\nWallets are deployed by calling the deploy function of the Factory contract, which takes the following parameters:\n\nmainModule: The address of the initial code implementation of the wallet.\nsalt: The imageHash of the initial configuration.\n\nThe MainModule should always be used as the initial code implementation of the wallet. The MainModule validates the imageHash (during signature validation) by re-computing the counterfactual address of the wallet, hence it does not require any storage initialization.If the imageHash is ever changed, MainModule will automatically replace the wallet code implementation with MainModuleUpgradeable, while handling the storage initialization.","title":"Initial Configuration","titles":["Wallet Configuration"]},"445":{"href":"/solutions/wallets/embedded-wallet/examples/03-manage-sessions#session-management","html":"\n

Sequence Auth + Embedded Wallet handles the following aspects of your application:

\n\n

This means you don't need to implement an account system yourself; instead, you interact with the Auth + WaaS SDK whenever you need to authenticate a user.

\n","isPage":true,"text":"\nSequence Auth + Embedded Wallet handles the following aspects of your application:\n\nUser creation\nUser authentication\nSession management\n\nThis means you don't need to implement an account system yourself; instead, you interact with the Auth + WaaS SDK whenever you need to authenticate a user.\n","title":"Session Management","titles":[]},"446":{"href":"/solutions/wallets/embedded-wallet/examples/03-manage-sessions#sign-in--sign-up","html":"\n

Signing in and signing up are the same operation; the account is automatically created if it doesn't already exist.

\n
import { SequenceWaaS } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);\n \n// Get a sessionHash\nconst sessionHash = await waas.getSessionHash();\n \n// Get an idToken using the social auth provider of your choice\n// (Google, Facebook, Twitter, etc.)\n// Note: remember to pass the sessionHash as a nonce!\n \n// Then sign in with Sequence WaaS\nconst res = await waas.signIn({ idToken }, "MacBook Pro - Chrome");\n \nconsole.log(res);
\n
{\n  "sessionId": "0x63A21cCa14ed7454B9cF6466af422B5c597c6b57",\n  "wallet": "0xd6043fe6f06d90ec2cB36cA5CD1B193A8515f350"\n}
\n\n","isPage":false,"text":"\nSigning in and signing up are the same operation; the account is automatically created if it doesn't already exist.\nimport { SequenceWaaS } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\n \n// Get a sessionHash\nconst sessionHash = await waas.getSessionHash();\n \n// Get an idToken using the social auth provider of your choice\n// (Google, Facebook, Twitter, etc.)\n// Note: remember to pass the sessionHash as a nonce!\n \n// Then sign in with Sequence WaaS\nconst res = await waas.signIn({ idToken }, "MacBook Pro - Chrome");\n \nconsole.log(res);\n{\n "sessionId": "0x63A21cCa14ed7454B9cF6466af422B5c597c6b57",\n "wallet": "0xd6043fe6f06d90ec2cB36cA5CD1B193A8515f350"\n}\nSessions opened with some providers might require a second step in order to be usable for sending transactions.See Email validation.\n","title":"Sign in / Sign Up","titles":["Session Management"]},"447":{"href":"/solutions/wallets/embedded-wallet/examples/03-manage-sessions#email-sign-in--sign-up","html":"\n

Email sign-in is directly supported by the SDK, as long as the used key has been generated with the email scope. Email logins work similarly to social logins, except that the idToken is generated by the SDK itself.

\n

To open a session using an email, you will need to provide an email for the user. The Embedded Wallet Nitro API will then send an email to the user with a One-Time Password (OTP) that can be used to open a session. This OTP has to be provided to the SDK to obtain an idToken.

\n

Once the idToken is obtained, the session can be opened as usual.

\n
import { SequenceWaaS } from "@0xsequence/waas";\n \n// Define the user's email address\nconst email = "user@example.com";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);\n \n// This will send an email to the user with an OTP\nconst { instance } = await waas.email.initiateAuth({ email });\n \n// Obtain the OTP from the user\nconst answer = "123456";\n \nconst sessionHash = await sequence.getSessionHash();\nconst { idToken } = await waas.email.finalizeAuth({\n  instance,\n  answer,\n  email,\n  sessionHash,\n});\n \n// Log in using the idToken, as usual\nawait waas.signIn({ idToken }, "Apple Vision Pro - Chrome");
\n","isPage":false,"text":"\nEmail sign-in is directly supported by the SDK, as long as the used key has been generated with the email scope. Email logins work similarly to social logins, except that the idToken is generated by the SDK itself.\nTo open a session using an email, you will need to provide an email for the user. The Embedded Wallet Nitro API will then send an email to the user with a One-Time Password (OTP) that can be used to open a session. This OTP has to be provided to the SDK to obtain an idToken.\nOnce the idToken is obtained, the session can be opened as usual.\nimport { SequenceWaaS } from "@0xsequence/waas";\n \n// Define the user's email address\nconst email = "user@example.com";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\n \n// This will send an email to the user with an OTP\nconst { instance } = await waas.email.initiateAuth({ email });\n \n// Obtain the OTP from the user\nconst answer = "123456";\n \nconst sessionHash = await sequence.getSessionHash();\nconst { idToken } = await waas.email.finalizeAuth({\n instance,\n answer,\n email,\n sessionHash,\n});\n \n// Log in using the idToken, as usual\nawait waas.signIn({ idToken }, "Apple Vision Pro - Chrome");\n","title":"Email Sign In / Sign Up","titles":["Session Management","Sign in / Sign Up"]},"448":{"href":"/solutions/wallets/embedded-wallet/examples/03-manage-sessions#google--apple-auth","html":"\n

Google and Apple auth are directly supported by the SDK. The idToken is obtained from the social auth provider and used to open a session. You can see a sample React application using Google auth below. To see a complete application, see the demo-waas-auth repository. A functional demo is also available here.

\n

Begin with a simple main.tsx file that sets up the WaaS SDK, the router, and the Google OAuth provider.

\n
import { SequenceWaaS } from "@0xsequence/waas";\nimport { GoogleOAuthProvider } from "@react-oauth/google";\nimport { createHashRouter, RouterProvider } from "react-router-dom";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);\n \nexport const router = createHashRouter([\n  {\n    path: "/login",\n    element: <Login />,\n  },\n  {\n    path: "/",\n    element: <App />,\n  },\n]);\n \nReactDOM.createRoot(document.getElementById("root")!).render(\n  <React.StrictMode>\n    <GoogleOAuthProvider clientId={GOOGLE_CLIENT_ID}>\n      <RouterProvider router={router} />\n    </GoogleOAuthProvider>\n  </React.StrictMode>\n);
\n

The useSessionHash hook is used to obtain a session hash that is used to prevent replay attacks. The sequence.getSessionHash function is used to obtain the session hash, and the sequence.onSessionStateChanged function is used to update the session hash when the session state changes.

\n
import { sequence } from "./main";\nimport { useEffect, useState } from "react";\n \nexport function useSessionHash() {\n  const [sessionHash, setSessionHash] = useState("");\n  const [error, setError] = useState<any>(undefined);\n \n  useEffect(() => {\n    const handler = async () => {\n      try {\n        setSessionHash(await sequence.getSessionHash());\n      } catch (error) {\n        console.error(error);\n        setError(error);\n      }\n    };\n    handler();\n    return sequence.onSessionStateChanged(handler);\n  }, [setSessionHash, setError]);\n \n  return {\n    sessionHash,\n    error,\n    loading: !!sessionHash,\n  };\n}
\n

To handle the Google login, you can use the GoogleLogin component from the @react-oauth/google package. The handleGoogleLogin function is called when the user successfully logs in.

\n
import { router, sequence } from './main'\nimport { CredentialResponse, GoogleLogin } from '@react-oauth/google'\nimport { useSessionHash } from "./useSessionHash.ts";\n \nfunction Login() {\n  const { sessionHash } = useSessionHash()\n  const [signingIn, setSigningIn] = useState(false)\n \n  useEffect(() => {\n    (async () => {\n      if (await sequence.isSignedIn()) {\n        router.navigate('/')\n      }\n    })()\n  }, [])\n \n  const handleGoogleLogin = async (tokenResponse: CredentialResponse) => {\n    const walletAddress = await sequence.signIn({\n      idToken: tokenResponse.credential!\n    }, "MacBook Pro - Chrome")\n \n    console.log(`Wallet address: ${walletAddress}`)\n    router.navigate('/')\n  }\n \n  return (\n    {!!sessionHash && (<>\n      <GoogleLogin onSuccess={handleGoogleLogin} shape="circle" width={230} nonce={sessionHash} />\n    </>)}\n )\n}\n \nexport default Login
\n","isPage":false,"text":"\nGoogle and Apple auth are directly supported by the SDK. The idToken is obtained from the social auth provider and used to open a session. You can see a sample React application using Google auth below. To see a complete application, see the demo-waas-auth repository. A functional demo is also available here.\nBegin with a simple main.tsx file that sets up the WaaS SDK, the router, and the Google OAuth provider.\nimport { SequenceWaaS } from "@0xsequence/waas";\nimport { GoogleOAuthProvider } from "@react-oauth/google";\nimport { createHashRouter, RouterProvider } from "react-router-dom";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\n \nexport const router = createHashRouter([\n {\n path: "/login",\n element: <Login />,\n },\n {\n path: "/",\n element: <App />,\n },\n]);\n \nReactDOM.createRoot(document.getElementById("root")!).render(\n <React.StrictMode>\n <GoogleOAuthProvider clientId={GOOGLE_CLIENT_ID}>\n <RouterProvider router={router} />\n </GoogleOAuthProvider>\n </React.StrictMode>\n);\nThe useSessionHash hook is used to obtain a session hash that is used to prevent replay attacks. The sequence.getSessionHash function is used to obtain the session hash, and the sequence.onSessionStateChanged function is used to update the session hash when the session state changes.\nimport { sequence } from "./main";\nimport { useEffect, useState } from "react";\n \nexport function useSessionHash() {\n const [sessionHash, setSessionHash] = useState("");\n const [error, setError] = useState<any>(undefined);\n \n useEffect(() => {\n const handler = async () => {\n try {\n setSessionHash(await sequence.getSessionHash());\n } catch (error) {\n console.error(error);\n setError(error);\n }\n };\n handler();\n return sequence.onSessionStateChanged(handler);\n }, [setSessionHash, setError]);\n \n return {\n sessionHash,\n error,\n loading: !!sessionHash,\n };\n}\nTo handle the Google login, you can use the GoogleLogin component from the @react-oauth/google package. The handleGoogleLogin function is called when the user successfully logs in.\nimport { router, sequence } from './main'\nimport { CredentialResponse, GoogleLogin } from '@react-oauth/google'\nimport { useSessionHash } from "./useSessionHash.ts";\n \nfunction Login() {\n const { sessionHash } = useSessionHash()\n const [signingIn, setSigningIn] = useState(false)\n \n useEffect(() => {\n (async () => {\n if (await sequence.isSignedIn()) {\n router.navigate('/')\n }\n })()\n }, [])\n \n const handleGoogleLogin = async (tokenResponse: CredentialResponse) => {\n const walletAddress = await sequence.signIn({\n idToken: tokenResponse.credential!\n }, "MacBook Pro - Chrome")\n \n console.log(`Wallet address: ${walletAddress}`)\n router.navigate('/')\n }\n \n return (\n {!!sessionHash && (<>\n <GoogleLogin onSuccess={handleGoogleLogin} shape="circle" width={230} nonce={sessionHash} />\n </>)}\n )\n}\n \nexport default Login\n","title":"Google / Apple Auth","titles":["Session Management","Sign in / Sign Up"]},"449":{"href":"/solutions/wallets/embedded-wallet/examples/03-manage-sessions#list-sessions","html":"\n

This function returns a list of sessions for the current user and only includes sessions that are still valid.

\n
import { SequenceWaaS } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);\n \nawait waas.signIn({ idToken }, "MacBook Pro - Chrome");\n \nconst sessions = await waas.listSessions();\nconsole.log(sessions);
\n
[\n  {\n    "id": "0x574372ff1A0Eede68B5358Cce7bbb93155A9dfe0",\n    "address": "0x574372ff1a0eede68b5358cce7bbb93155a9dfe0",\n    "userId": "42#https://accounts.google.com#109234880945084120673",\n    "projectId": 42,\n    "issuer": "https://accounts.google.com",\n    "subject": "109234880945084120673",\n    "friendlyName": "Pixel 3 - Brave",\n    "createdAt": "2023-11-02T18:22:03.102950917Z",\n    "refreshedAt": "2023-11-02T18:22:03.109787921Z",\n    "expiresAt": "2123-10-09T18:22:03.102951017Z",\n    "isThis": false\n  },\n  {\n    "id": "0x3C4E11E4dbF23B87C14bd75d0Da9C75707392D21",\n    "address": "0x3c4e11e4dbf23b87c14bd75d0da9c75707392d21",\n    "userId": "42#https://accounts.google.com#109234880945084120673",\n    "projectId": 42,\n    "issuer": "https://accounts.google.com",\n    "subject": "109234880945084120673",\n    "friendlyName": "MacBook Pro - Chrome",\n    "createdAt": "2023-11-02T18:50:32.815189174Z",\n    "refreshedAt": "2023-11-02T18:50:32.819722082Z",\n    "expiresAt": "2123-10-09T18:50:32.815189234Z",\n    "isThis": true\n  }\n]
\n","isPage":false,"text":"\nThis function returns a list of sessions for the current user and only includes sessions that are still valid.\nimport { SequenceWaaS } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\n \nawait waas.signIn({ idToken }, "MacBook Pro - Chrome");\n \nconst sessions = await waas.listSessions();\nconsole.log(sessions);\n[\n {\n "id": "0x574372ff1A0Eede68B5358Cce7bbb93155A9dfe0",\n "address": "0x574372ff1a0eede68b5358cce7bbb93155a9dfe0",\n "userId": "42#https://accounts.google.com#109234880945084120673",\n "projectId": 42,\n "issuer": "https://accounts.google.com",\n "subject": "109234880945084120673",\n "friendlyName": "Pixel 3 - Brave",\n "createdAt": "2023-11-02T18:22:03.102950917Z",\n "refreshedAt": "2023-11-02T18:22:03.109787921Z",\n "expiresAt": "2123-10-09T18:22:03.102951017Z",\n "isThis": false\n },\n {\n "id": "0x3C4E11E4dbF23B87C14bd75d0Da9C75707392D21",\n "address": "0x3c4e11e4dbf23b87c14bd75d0da9c75707392d21",\n "userId": "42#https://accounts.google.com#109234880945084120673",\n "projectId": 42,\n "issuer": "https://accounts.google.com",\n "subject": "109234880945084120673",\n "friendlyName": "MacBook Pro - Chrome",\n "createdAt": "2023-11-02T18:50:32.815189174Z",\n "refreshedAt": "2023-11-02T18:50:32.819722082Z",\n "expiresAt": "2123-10-09T18:50:32.815189234Z",\n "isThis": true\n }\n]\n","title":"List Sessions","titles":["Session Management"]},"450":{"href":"/solutions/wallets/embedded-wallet/examples/03-manage-sessions#close-session","html":"\n

A session can be closed using the id of the session. Any session can be closed from any device with an active session.

\n
import { SequenceWaaS } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);\n \nawait waas.signIn({ idToken }, "MacBook Pro - Chrome");\n \nconst sessions = await waas.listSessions();\nawait waas.dropSession({ sessionId: sessions[0].id });
","isPage":false,"text":"\nA session can be closed using the id of the session. Any session can be closed from any device with an active session.\nimport { SequenceWaaS } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\n \nawait waas.signIn({ idToken }, "MacBook Pro - Chrome");\n \nconst sessions = await waas.listSessions();\nawait waas.dropSession({ sessionId: sessions[0].id });","title":"Close Session","titles":["Session Management"]},"451":{"href":"/solutions/wallets/embedded-wallet/examples/05-validation#validation","html":"\n

Users with Auth + Embedded Wallet go through two distinct flows based on the login method:

\n","isPage":true,"text":"\nUsers with Auth + Embedded Wallet go through two distinct flows based on the login method:\n","title":"Validation","titles":[]},"452":{"href":"/solutions/wallets/embedded-wallet/examples/05-validation#email-login-one-time-code","html":"\n

For users logging in with an email, Amazon Cognito sends a one-time code to validate their identity. This is a trusted method that does not require additional verification.

\n","isPage":false,"text":"\nFor users logging in with an email, Amazon Cognito sends a one-time code to validate their identity. This is a trusted method that does not require additional verification.\n","title":"Email login (one-time code)","titles":["Validation",null]},"453":{"href":"/solutions/wallets/embedded-wallet/examples/05-validation#social-login","html":"\n

Users who log in via established social auth providers like Google or Facebook don't need additional validation. However, when logging in using a custom provider, we cannot guarantee sufficient protection of user's identity. Due to this, we might require additional verification by asking the user to provide a one-time code we send to their email address.

\n

Please contact Sequence support if you wish to discuss whether your authentication provider can be considered trusted.

\n","isPage":false,"text":"\nUsers who log in via established social auth providers like Google or Facebook don't need additional validation. However, when logging in using a custom provider, we cannot guarantee sufficient protection of user's identity. Due to this, we might require additional verification by asking the user to provide a one-time code we send to their email address.\nPlease contact Sequence support if you wish to discuss whether your authentication provider can be considered trusted.\n","title":"Social login","titles":["Validation",null]},"454":{"href":"/solutions/wallets/embedded-wallet/examples/05-validation#validation-status","html":"\n

To check the validation status of the current session, use the isSessionValid method. This returns true for email login and trusted social logins and false for custom logins until email validation is complete.

\n
const isValid = await waas.isSessionValid();\nconsole.log(isValid);
\n
true
\n","isPage":false,"text":"\nTo check the validation status of the current session, use the isSessionValid method. This returns true for email login and trusted social logins and false for custom logins until email validation is complete.\nconst isValid = await waas.isSessionValid();\nconsole.log(isValid);\ntrue\n","title":"Validation status","titles":["Validation"]},"455":{"href":"/solutions/wallets/embedded-wallet/examples/05-validation#trigger-session-validation","html":"\n

Manually trigger a session validation with the validateSession method. This will send a code to the user's email. If validated within 10 minutes, the method returns true; otherwise, it returns false.

\n
const result = await waas.validateSession();
\n
true
\n

Once user receives the code, he can validate the session with the finishValidateSession method that takes the code as an argument. If the code is valid, the method returns true; otherwise, it returns false.

\n
const result = await waas.finishValidateSession("123456");
\n
true
\n","isPage":false,"text":"\nManually trigger a session validation with the validateSession method. This will send a code to the user's email. If validated within 10 minutes, the method returns true; otherwise, it returns false.\nconst result = await waas.validateSession();\ntrue\nOnce user receives the code, he can validate the session with the finishValidateSession method that takes the code as an argument. If the code is valid, the method returns true; otherwise, it returns false.\nconst result = await waas.finishValidateSession("123456");\ntrue\n","title":"Trigger session validation","titles":["Validation","Validation status"]},"456":{"href":"/solutions/wallets/embedded-wallet/examples/05-validation#onvalidationrequired-callback","html":"\n

The onValidationRequired callback is triggered when a session validation is required. This can happen when a user tries to perform an action that requires validation, such as sending a transaction or signing a message. It determines whether the session validation should be triggered or not. If the callback returns true, the session validation is triggered. If it returns false, the action is cancelled.

\n
const tx = await waas.sendERC20({\n  validation: {\n    onValidationRequired: () => true,\n  },\n  chainId: 42161,\n  token: "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI\n  to: "0x27CabC9700EE6Db2797b6AC1e1eCe81C72A2cD8D", // Recipient\n  value: "200000000000000000000", // 200 DAI\n});
\n","isPage":false,"text":"\nThe onValidationRequired callback is triggered when a session validation is required. This can happen when a user tries to perform an action that requires validation, such as sending a transaction or signing a message. It determines whether the session validation should be triggered or not. If the callback returns true, the session validation is triggered. If it returns false, the action is cancelled.\nconst tx = await waas.sendERC20({\n validation: {\n onValidationRequired: () => true,\n },\n chainId: 42161,\n token: "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI\n to: "0x27CabC9700EE6Db2797b6AC1e1eCe81C72A2cD8D", // Recipient\n value: "200000000000000000000", // 200 DAI\n});\n","title":"onValidationRequired callback","titles":["Validation","Validation status","Trigger session validation"]},"457":{"href":"/solutions/wallets/embedded-wallet/examples/05-validation#listen-for-session-validations","html":"\n

Events like transaction sends may silently prompt session validation. Use the onValidationRequired hook to catch such instances.

\n
waas.onValidationRequired(() => {\n  console.log("Session has been triggered for validation");\n});\n \nawait waas.sendTransaction({ chainId: 1 }, { to: "0x...", value: "1" });
\n
Session has been triggered for validation
\n","isPage":false,"text":"\nEvents like transaction sends may silently prompt session validation. Use the onValidationRequired hook to catch such instances.\nwaas.onValidationRequired(() => {\n console.log("Session has been triggered for validation");\n});\n \nawait waas.sendTransaction({ chainId: 1 }, { to: "0x...", value: "1" });\nSession has been triggered for validation\n","title":"Listen for session validations","titles":["Validation","Validation status"]},"458":{"href":"/solutions/wallets/embedded-wallet/examples/05-validation#automatic-session-validation","html":"\n

Session validation is automatic when certain actions requiring validation are performed. This can be managed using the onValidationRequired hook.

\n
const tx = await waas.sendTransaction({\n  chainId: 1,\n  validation: {\n    onValidationRequired: () => {\n      console.log("Session has been triggered for validation");\n      return true;\n    },\n  },\n  to: "0x061150e5574716DBb1a2cdf54b3DcE9F94395f65",\n  value: "1",\n});
\n

By returning true or false from the onValidationRequired hook, you either continue or cancel the action, respectively.

","isPage":false,"text":"\nSession validation is automatic when certain actions requiring validation are performed. This can be managed using the onValidationRequired hook.\nconst tx = await waas.sendTransaction({\n chainId: 1,\n validation: {\n onValidationRequired: () => {\n console.log("Session has been triggered for validation");\n return true;\n },\n },\n to: "0x061150e5574716DBb1a2cdf54b3DcE9F94395f65",\n value: "1",\n});\nBy returning true or false from the onValidationRequired hook, you either continue or cancel the action, respectively.","title":"Automatic session validation","titles":["Validation"]},"459":{"href":"/solutions/wallets/embedded-wallet/examples/06-transaction-receipts#transaction-receipts","html":"\n

Any methods that involve sending transactions will return either successful or failed transaction receipts. Failed transaction receipts are generated without executing the transaction.

\n","isPage":true,"text":"\nAny methods that involve sending transactions will return either successful or failed transaction receipts. Failed transaction receipts are generated without executing the transaction.\n","title":"Transaction receipts","titles":[]},"460":{"href":"/solutions/wallets/embedded-wallet/examples/06-transaction-receipts#successful-transaction-response","html":"\n

Any transaction that is successfully included in a block will return a SentTransactionResponse object. This must be checked for before accessing the transaction hash, using the isSentTransactionResponse type guard.

\n
import { Sequence, isSentTransactionResponse } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);\n \nawait waas.signIn({ idToken }, "Session name");\n \nconst tx = await waas.sendTransaction({\n  chainId: 42161,\n  transactions: [\n    {\n      to: "0xD72C236Be524Ec24F72329317e2785E687105B69",\n      value: "0",\n    },\n  ],\n});\n \nif (isSentTransactionResponse(tx)) {\n  console.log(tx);\n}
\n

The relevant fields are:

\n\n

To view the full response object, see the [Transaction Receipt Response] section.

\n
{\n  "code": "transactionReceipt",\n  "data": {\n    "txHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n    "metaTxHash": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n    "nativeReceipt": { ... },\n    "receipt": {\n      "id": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n      "index": 0,\n      "logs": [\n        {\n          "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n          "data": "0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",\n          "topics": [\n            "0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881"\n          ]\n        },\n        {\n          "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n          "data": "0x0000000000000000000000000000000000000000000000000000000000000000",\n          "topics": [\n            "0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",\n            "0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0"\n          ]\n        }\n      ],\n      "receipts": [ ... ],\n      "revertReason": null,\n      "status": "SUCCEEDED"\n    },\n    "request": { ... },\n    "simulations": [ ... ]\n  }\n}
\n","isPage":false,"text":"\nAny transaction that is successfully included in a block will return a SentTransactionResponse object. This must be checked for before accessing the transaction hash, using the isSentTransactionResponse type guard.\nimport { Sequence, isSentTransactionResponse } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\n \nawait waas.signIn({ idToken }, "Session name");\n \nconst tx = await waas.sendTransaction({\n chainId: 42161,\n transactions: [\n {\n to: "0xD72C236Be524Ec24F72329317e2785E687105B69",\n value: "0",\n },\n ],\n});\n \nif (isSentTransactionResponse(tx)) {\n console.log(tx);\n}\nThe relevant fields are:\n\ntxHash: The transaction hash of the transaction that was sent to the network.\nreceipt.logs: Logs emitted by the transaction.\nreceipt.status: The status of the transaction. SUCCEEDED or FAILED.\nreceipt.revertReason: If the transaction was executed but reverted, it includes the reason.\n\nTo view the full response object, see the [Transaction Receipt Response] section.\n{\n "code": "transactionReceipt",\n "data": {\n "txHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n "metaTxHash": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n "nativeReceipt": { ... },\n "receipt": {\n "id": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n "index": 0,\n "logs": [\n {\n "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n "data": "0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",\n "topics": [\n "0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881"\n ]\n },\n {\n "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n "data": "0x0000000000000000000000000000000000000000000000000000000000000000",\n "topics": [\n "0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",\n "0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0"\n ]\n }\n ],\n "receipts": [ ... ],\n "revertReason": null,\n "status": "SUCCEEDED"\n },\n "request": { ... },\n "simulations": [ ... ]\n }\n}\n","title":"Successful transaction response","titles":["Transaction receipts"]},"461":{"href":"/solutions/wallets/embedded-wallet/examples/06-transaction-receipts#failed-transaction-response","html":"\n

An Embedded Wallet will try to catch any failing transactions before they are sent to the network. This is done by simulating the transaction on the network before sending it. If the simulation fails, the transaction will not be sent to the network and a FailedTransactionResponse will be returned.

\n

To view the full response object, see the TODO: link to wallet API [Transaction Receipt Response] section.

\n
import { Sequence, isSentTransactionResponse } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "mumbai",\n  },\n  defaults.TEST\n);\n \nawait waas.signIn({ idToken }, "Session name");\n \nconst tx = await waas.sendTransaction({\n  chainId: 137,\n  transactions: [\n    {\n      // This address always fails on Polygon, give it a try :D\n      to: "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n      value: "0",\n    },\n  ],\n});\n \nif (isSentTransactionResponse(tx)) {\n  // ... This will never be executed\n} else {\n  // tx can only be `SentTransactionResponse` or `FailedTransactionResponse`\n  console.log(tx);\n}
\n
{\n  "code": "transactionFailed",\n  "data": {\n    "error": "This is an error message",\n    "request": {\n      "code": "sendTransaction",\n      "expires": 1699443005,\n      "identifier": "ts-sdk-1699442705965-0x153824576D03629b264683B430bBF9AcEA1d0975",\n      "issued": 1699442705,\n      "network": "137",\n      "transactions": [\n        {\n          "data": "0x",\n          "to": "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n          "type": "transaction",\n          "value": "0x00"\n        }\n      ],\n      "wallet": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6"\n    },\n    "simulations": [\n      {\n        "executed": true,\n        "gasLimit": 7908,\n        "gasUsed": 5931,\n        "reason": "This is an error message :)",\n        "result": null,\n        "succeeded": false\n      }\n    ]\n  }\n}
","isPage":false,"text":"\nAn Embedded Wallet will try to catch any failing transactions before they are sent to the network. This is done by simulating the transaction on the network before sending it. If the simulation fails, the transaction will not be sent to the network and a FailedTransactionResponse will be returned.\nTo view the full response object, see the TODO: link to wallet API [Transaction Receipt Response] section.\nimport { Sequence, isSentTransactionResponse } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "mumbai",\n },\n defaults.TEST\n);\n \nawait waas.signIn({ idToken }, "Session name");\n \nconst tx = await waas.sendTransaction({\n chainId: 137,\n transactions: [\n {\n // This address always fails on Polygon, give it a try :D\n to: "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n value: "0",\n },\n ],\n});\n \nif (isSentTransactionResponse(tx)) {\n // ... This will never be executed\n} else {\n // tx can only be `SentTransactionResponse` or `FailedTransactionResponse`\n console.log(tx);\n}\n{\n "code": "transactionFailed",\n "data": {\n "error": "This is an error message",\n "request": {\n "code": "sendTransaction",\n "expires": 1699443005,\n "identifier": "ts-sdk-1699442705965-0x153824576D03629b264683B430bBF9AcEA1d0975",\n "issued": 1699442705,\n "network": "137",\n "transactions": [\n {\n "data": "0x",\n "to": "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n "type": "transaction",\n "value": "0x00"\n }\n ],\n "wallet": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6"\n },\n "simulations": [\n {\n "executed": true,\n "gasLimit": 7908,\n "gasUsed": 5931,\n "reason": "This is an error message :)",\n "result": null,\n "succeeded": false\n }\n ]\n }\n}","title":"Failed transaction response","titles":["Transaction receipts"]},"462":{"href":"/solutions/wallets/universal-wallet/examples/02-auth-address#authenticate-users-with-message-signature","html":"\n","isPage":true,"text":"\n","title":"Authenticate Users with Message Signature","titles":[]},"463":{"href":"/solutions/wallets/universal-wallet/examples/02-auth-address#ask-for-the-wallet-address","html":"\n

To get the user's Sequence wallet address:

\n
const wallet = sequence.getWallet()\nconst address = wallet.getAddress()\nconsole.log(address)
\n","isPage":false,"text":"\nTo get the user's Sequence wallet address:\nconst wallet = sequence.getWallet()\nconst address = wallet.getAddress()\nconsole.log(address)\n","title":"Ask for the wallet address","titles":["Authenticate Users with Message Signature"]},"464":{"href":"/solutions/wallets/universal-wallet/examples/02-auth-address#authenticate-wallet","html":"\n

In many cases, you'll want your users to connect and then verify they do control this wallet address. Applications typically do this by asking the user\nto sign a message with their wallet, and then verify the signature from the user to ensure its integrity.

\n

As this is such a common workflow, Sequence can automatically authenticate the account address at the same time\nwhile the user is prompt to connect their wallet to your dapp. This allows the user experience to be simpler and\nmore seamless.

\n
import { sequence } from '0xsequence'\n \nconst wallet = sequence.getWallet()\n \nconst connectDetails = await wallet.connect({\n  app: 'Your Dapp name',\n  authorize: true // <---<<< this will automatically sign+verify a EIP712 message when user clicks "Connect"\n})
\n

It will look like this to your users:

\n\"Sequence\n

In the above example, we pass authorize: true to the connect() function, which will automatically have the user\nsign a EIP712 signed message to prove their identity. This allows you to then easily authenticate the connected\nwallet address with absolute certainty.

\n

You can find the signed message proof returned in connectDetails.proof, which is an EIP712 signed object using\na simple convention from ethauth. NOTE: EIP712 allows you to use an actual object for\nsigning instead of just a plain-text string.

\n","isPage":false,"text":"\nIn many cases, you'll want your users to connect and then verify they do control this wallet address. Applications typically do this by asking the user\nto sign a message with their wallet, and then verify the signature from the user to ensure its integrity.\nAs this is such a common workflow, Sequence can automatically authenticate the account address at the same time\nwhile the user is prompt to connect their wallet to your dapp. This allows the user experience to be simpler and\nmore seamless.\nimport { sequence } from '0xsequence'\n \nconst wallet = sequence.getWallet()\n \nconst connectDetails = await wallet.connect({\n app: 'Your Dapp name',\n authorize: true // <---<<< this will automatically sign+verify a EIP712 message when user clicks "Connect"\n})\nIt will look like this to your users:\n\nIn the above example, we pass authorize: true to the connect() function, which will automatically have the user\nsign a EIP712 signed message to prove their identity. This allows you to then easily authenticate the connected\nwallet address with absolute certainty.\nYou can find the signed message proof returned in connectDetails.proof, which is an EIP712 signed object using\na simple convention from ethauth. NOTE: EIP712 allows you to use an actual object for\nsigning instead of just a plain-text string.\n","title":"Authenticate wallet","titles":["Authenticate Users with Message Signature"]},"465":{"href":"/solutions/wallets/universal-wallet/examples/02-auth-address#authenticate-wallet-server-side","html":"\n

The above example demonstrates how to connect and verify the user's identity in your dapp on the client-side,\nbut if you'd like to authenticate the Sequence authorization proof on your server, then you can do so with the following snippet:

\n
import { ValidateSequenceWalletProof } from '@0xsequence/auth'\nimport { commons, v2 } from '@0xsequence/core'\nimport { ETHAuth } from '@0xsequence/ethauth'\nimport { trackers } from '@0xsequence/sessions'\nimport * as ethers from 'ethers'\n \n// ...\n \nconst rpcUrl = 'https://polygon-mainnet.infura.io/v3/<your infura key here>'\nconst provider = new ethers.providers.JsonRpcProvider(rpcUrl)\n \n// create an EIP-6492-aware ETHAuth proof validator\nconst validator = ValidateSequenceWalletProof(\n  () => new commons.reader.OnChainReader(provider),\n  new trackers.remote.RemoteConfigTracker('https://sessions.sequence.app'),\n  v2.DeployedWalletContext\n)\nconst ethauth = new ETHAuth(validator)\nawait ethauth.configJsonRpcProvider(rpcUrl)\n \ntry {\n  const proof = await ethAuth.decodeProof(connectDetails.proof.proofString)\n  console.log(`proof for address ${proof.address} is valid`)\n} catch (err) {\n  console.log(`invalid proof -- do not trust address: ${err}`)\n}
\n

See the Go Sequence SDK on using Sequence in your Go applications.

\n

If your server is written in a language other than Javascript/Typescript or Go, all you have to do is validate\nthe signature with EIP1271, the standard method for validating signed messages for a smart wallet.

\n

As always, if you have any questions or require help, reach out to us on Discord.

","isPage":false,"text":"\nThe above example demonstrates how to connect and verify the user's identity in your dapp on the client-side,\nbut if you'd like to authenticate the Sequence authorization proof on your server, then you can do so with the following snippet:\nimport { ValidateSequenceWalletProof } from '@0xsequence/auth'\nimport { commons, v2 } from '@0xsequence/core'\nimport { ETHAuth } from '@0xsequence/ethauth'\nimport { trackers } from '@0xsequence/sessions'\nimport * as ethers from 'ethers'\n \n// ...\n \nconst rpcUrl = 'https://polygon-mainnet.infura.io/v3/<your infura key here>'\nconst provider = new ethers.providers.JsonRpcProvider(rpcUrl)\n \n// create an EIP-6492-aware ETHAuth proof validator\nconst validator = ValidateSequenceWalletProof(\n () => new commons.reader.OnChainReader(provider),\n new trackers.remote.RemoteConfigTracker('https://sessions.sequence.app'),\n v2.DeployedWalletContext\n)\nconst ethauth = new ETHAuth(validator)\nawait ethauth.configJsonRpcProvider(rpcUrl)\n \ntry {\n const proof = await ethAuth.decodeProof(connectDetails.proof.proofString)\n console.log(`proof for address ${proof.address} is valid`)\n} catch (err) {\n console.log(`invalid proof -- do not trust address: ${err}`)\n}\nSee the Go Sequence SDK on using Sequence in your Go applications.\nIf your server is written in a language other than Javascript/Typescript or Go, all you have to do is validate\nthe signature with EIP1271, the standard method for validating signed messages for a smart wallet.\nAs always, if you have any questions or require help, reach out to us on Discord.","title":"Authenticate wallet server-side","titles":["Authenticate Users with Message Signature"]},"466":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#no-wallet-confirmation-signatures","html":"\n

It is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using session keys, or ephemeral keys.

\n
","isPage":true,"text":"\nIt is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using session keys, or ephemeral keys.\n","title":"No-Wallet-Confirmation Signatures","titles":[]},"467":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#session-keys","html":"
\n

Session keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet.

\n

By signing a message with their primary wallet (e.g., Sequence Wallet), users can authorize a session key to act on their behalf for a limited time or scope. Applications can then interpret signed messages from the session key as if they were coming directly from the user's wallet, streamlining the user experience.

\n

Session keys are particularly useful for applications that require frequent user interactions, as they help reduce the number of wallet confirmations needed, while still maintaining a secure and verifiable authentication process.

\n
","isPage":false,"text":"\nSession keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet.\nBy signing a message with their primary wallet (e.g., Sequence Wallet), users can authorize a session key to act on their behalf for a limited time or scope. Applications can then interpret signed messages from the session key as if they were coming directly from the user's wallet, streamlining the user experience.\nSession keys are particularly useful for applications that require frequent user interactions, as they help reduce the number of wallet confirmations needed, while still maintaining a secure and verifiable authentication process.\n","title":"Session Keys","titles":[]},"468":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#using-session-keys-with-sequence","html":"
\n","isPage":false,"text":"\n","title":"Using Session keys with Sequence","titles":[]},"469":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#1-initialize-sequence-wallet-and-connect","html":"\n
import { Wallet } from '@0xsequence/wallet'\nimport { ethers } from 'ethers'\n \nconst wallet = new Wallet()\nawait wallet.connect()\n \nconst signer = wallet.getSigner()\nconst userAddress = signer.getAddress()
\n","isPage":false,"text":"\nimport { Wallet } from '@0xsequence/wallet'\nimport { ethers } from 'ethers'\n \nconst wallet = new Wallet()\nawait wallet.connect()\n \nconst signer = wallet.getSigner()\nconst userAddress = signer.getAddress()\n","title":"1. Initialize Sequence Wallet and Connect","titles":["Using Session keys with Sequence",null]},"470":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#2-generate-a-session-key","html":"\n

Create a new ephemeral private key, store it in local storage, and derive the associated address:

\n
const sessionPrivateKey = ethers.utils.randomBytes(32)\nlocalStorage.setItem('sessionPrivateKey', ethers.utils.hexlify(sessionPrivateKey))\nconst sessionWallet = new ethers.Wallet(sessionPrivateKey)\nconst sessionAddress = await sessionWallet.getAddress()
\n","isPage":false,"text":"\nCreate a new ephemeral private key, store it in local storage, and derive the associated address:\nconst sessionPrivateKey = ethers.utils.randomBytes(32)\nlocalStorage.setItem('sessionPrivateKey', ethers.utils.hexlify(sessionPrivateKey))\nconst sessionWallet = new ethers.Wallet(sessionPrivateKey)\nconst sessionAddress = await sessionWallet.getAddress()\n","title":"2. Generate a Session Key","titles":["Using Session keys with Sequence",null]},"471":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#3-sign-authorization-message","html":"\n

Sign a message with the user's Sequence Wallet to authorize the session key:

\n
const authorizationMessage = `Authorize this device to play this game.`\nconst signature = await signer.signMessage(authorizationMessage)
\n","isPage":false,"text":"\nSign a message with the user's Sequence Wallet to authorize the session key:\nconst authorizationMessage = `Authorize this device to play this game.`\nconst signature = await signer.signMessage(authorizationMessage)\n","title":"3. Sign Authorization Message","titles":["Using Session keys with Sequence",null]},"472":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#4-verify-authorization-signature","html":"\n

Verify the signature on the server or client side using Sequence utility functions:

\n
const provider = wallet.getProvider()\nconst chainId = await wallet.getChainId()\n \nconst isValid = await wallet.utils.isValidMessageSignature(\n  userAddress,\n  authorizationMessage,\n  signature,\n  chainId\n)\n \nif (isValid) {\n  console.log('Session key authorized')\n} else {\n  console.log('Session key not authorized')\n}
\n","isPage":false,"text":"\nVerify the signature on the server or client side using Sequence utility functions:\nconst provider = wallet.getProvider()\nconst chainId = await wallet.getChainId()\n \nconst isValid = await wallet.utils.isValidMessageSignature(\n userAddress,\n authorizationMessage,\n signature,\n chainId\n)\n \nif (isValid) {\n console.log('Session key authorized')\n} else {\n console.log('Session key not authorized')\n}\n","title":"4. Verify Authorization Signature","titles":["Using Session keys with Sequence",null]},"473":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#5-sign-message-with-session-key","html":"\n

Use the session key to sign a message client-side without user interaction:

\n
const message = 'Perform action without wallet confirmation'\nconst sessionSignature = await sessionWallet.signMessage(message)
\n","isPage":false,"text":"\nUse the session key to sign a message client-side without user interaction:\nconst message = 'Perform action without wallet confirmation'\nconst sessionSignature = await sessionWallet.signMessage(message)\n","title":"5. Sign Message with Session Key","titles":["Using Session keys with Sequence",null]},"474":{"href":"/solutions/wallets/universal-wallet/examples/04-session-keys#6-verify-session-signature","html":"\n

Verify the session signature on the server or client side:

\n
const recoveredSessionAddress = ethers.utils.verifyMessage(message, sessionSignature)\nif (recoveredSessionAddress === sessionAddress) {\n  console.log('Session signature valid')\n} else {\n  console.log('Session signature invalid')\n}
\n

Note: You should retrieve the session key stored in local storage upon loading the application and only create a new session key if none can be found.

","isPage":false,"text":"\nVerify the session signature on the server or client side:\nconst recoveredSessionAddress = ethers.utils.verifyMessage(message, sessionSignature)\nif (recoveredSessionAddress === sessionAddress) {\n console.log('Session signature valid')\n} else {\n console.log('Session signature invalid')\n}\nNote: You should retrieve the session key stored in local storage upon loading the application and only create a new session key if none can be found.","title":"6. Verify Session Signature","titles":["Using Session keys with Sequence",null]},"475":{"href":"/solutions/wallets/universal-wallet/examples/05-send-transaction#sending-transactions","html":"\n

Signing a transaction will only retrieve the signed payload.\nIf you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from signTransactions to sendTransaction):

\n
const transaction = {\n  to: recipientAddress,\n  value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSigning a transaction will only retrieve the signed payload.\nIf you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from signTransactions to sendTransaction):\nconst transaction = {\n to: recipientAddress,\n value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n ","title":"Sending Transactions","titles":[]},"476":{"href":"/solutions/wallets/universal-wallet/examples/06-send-erc20#sending-erc-20-tokens","html":"\n

You can ask the wallet to send a single ERC-20 token transfer:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\n \n// Encode an ERC-20 token transfer to recipient of the specified amount\nconst data = erc20Interface.encodeFunctionData(\n  'transfer', [recipientAddress, amount]\n)\n \nconst transaction = {\n  to: daiContractAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\n \n// Encode two different ERC-20 token transfers\nconst data1 = erc20Interface.encodeFunctionData(\n  'transfer', [recipient1Address, amount1]\n)\nconst data2 = erc20Interface.encodeFunctionData(\n  'transfer', [recipient2Address, amount2]\n)\n \nconst transaction1 = {\n  to: daiContractAddress,\n  data: data1\n}\n \nconst transaction2 = {\n  to: daiContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nYou can ask the wallet to send a single ERC-20 token transfer:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\n \n// Encode an ERC-20 token transfer to recipient of the specified amount\nconst data = erc20Interface.encodeFunctionData(\n 'transfer', [recipientAddress, amount]\n)\n \nconst transaction = {\n to: daiContractAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\n \n// Encode two different ERC-20 token transfers\nconst data1 = erc20Interface.encodeFunctionData(\n 'transfer', [recipient1Address, amount1]\n)\nconst data2 = erc20Interface.encodeFunctionData(\n 'transfer', [recipient2Address, amount2]\n)\n \nconst transaction1 = {\n to: daiContractAddress,\n data: data1\n}\n \nconst transaction2 = {\n to: daiContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-20 Tokens","titles":[]},"477":{"href":"/solutions/wallets/universal-wallet/examples/07-send-erc721#sending-erc-721-nft-tokens","html":"\n

Sending an ERC-721 NFT is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:

\n
const erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode the transfer of the NFT tokenId to recipient\nconst address = await wallet.getAddress()\nconst data = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipientAddress, tokenId]\n)\n \nconst transaction = {\n  to: erc721TokenAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode two different ERC-721 token transfers\nconst data1 = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient1Address, amount1]\n)\nconst data2 = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient2Address, amount2]\n)\n \nconst transaction1 = {\n  to: erc721ContractAddress,\n  data: data1\n}\n \nconst transaction2 = {\n  to: erc721ContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSending an ERC-721 NFT is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode the transfer of the NFT tokenId to recipient\nconst address = await wallet.getAddress()\nconst data = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipientAddress, tokenId]\n)\n \nconst transaction = {\n to: erc721TokenAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode two different ERC-721 token transfers\nconst data1 = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient1Address, amount1]\n)\nconst data2 = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient2Address, amount2]\n)\n \nconst transaction1 = {\n to: erc721ContractAddress,\n data: data1\n}\n \nconst transaction2 = {\n to: erc721ContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-721 (NFT) Tokens","titles":[]},"478":{"href":"/solutions/wallets/universal-wallet/examples/08-send-erc1155#sending-erc-1155-collectible-tokens","html":"\n

Sending an ERC-1155 collectible is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:

\n
const erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode the transfer of the collectible to recipient\nconst address = await wallet.getAddress()\nconst data = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipientAddress, tokenId, amount, '0x']\n)\n \nconst transaction = {\n  to: erc1155TokenAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode two different ERC-1155 token transfers\nconst data1 = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient1Address, token1Id, amount1, '0x']\n)\nconst data2 = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient2Address, token2Id, amount2, '0x']\n)\n \nconst transaction1 = {\n  to: erc1155ContractAddress,\n  data: data1\n}\nconst transaction2 = {\n  to: erc1155ContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSending an ERC-1155 collectible is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode the transfer of the collectible to recipient\nconst address = await wallet.getAddress()\nconst data = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipientAddress, tokenId, amount, '0x']\n)\n \nconst transaction = {\n to: erc1155TokenAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode two different ERC-1155 token transfers\nconst data1 = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient1Address, token1Id, amount1, '0x']\n)\nconst data2 = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient2Address, token2Id, amount2, '0x']\n)\n \nconst transaction1 = {\n to: erc1155ContractAddress,\n data: data1\n}\nconst transaction2 = {\n to: erc1155ContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-1155 (Collectible) Tokens","titles":[]},"479":{"href":"/solutions/wallets/universal-wallet/examples/09-send-batch-transactions#sending-a-batch-of-transactions","html":"\n

Likewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:

\n
const transaction1 = {\n  to: recipient1Address,\n  value: 1000000000000000000\n}\n \nconst transaction2 = {\n  to: recipient2Address,\n  value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(response)
\n

The transactions don't have to be the same token or even token standard either.\nYou can mix and match:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\nconst erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\nconst erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \nconst erc20Data = erc20Interface.encodeFunctionData(\n  'transfer', [recipient2Address, amount2]\n)\nconst erc721Data = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient3Address, amount3]\n)\nconst erc1155Data = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient4Address, token4Id, amount4, '0x']\n)\n \nconst transactions = [\n  { to: recipient1Address, value: '1000000000000000000' },\n  { to: daiContractAddress, data: erc20Data },\n  { to: erc721ContractAddress, data: erc721Data },\n  { to: erc1155ContractAddress, data: erc1155Data }\n]\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction(transactions)\nconsole.log(response)
","isPage":true,"text":"\nLikewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:\nconst transaction1 = {\n to: recipient1Address,\n value: 1000000000000000000\n}\n \nconst transaction2 = {\n to: recipient2Address,\n value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(response)\nThe transactions don't have to be the same token or even token standard either.\nYou can mix and match:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \nconst erc20Data = erc20Interface.encodeFunctionData(\n 'transfer', [recipient2Address, amount2]\n)\nconst erc721Data = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient3Address, amount3]\n)\nconst erc1155Data = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient4Address, token4Id, amount4, '0x']\n)\n \nconst transactions = [\n { to: recipient1Address, value: '1000000000000000000' },\n { to: daiContractAddress, data: erc20Data },\n { to: erc721ContractAddress, data: erc721Data },\n { to: erc1155ContractAddress, data: erc1155Data }\n]\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction(transactions)\nconsole.log(response)","title":"Sending a Batch of Transactions","titles":[]},"480":{"href":"/solutions/wallets/universal-wallet/examples/10-building-backends#building-backends-with-sequence","html":"\n","isPage":true,"text":"\n","title":"Building Backends with Sequence","titles":[]},"481":{"href":"/solutions/wallets/universal-wallet/examples/10-building-backends#nodejs","html":"\n

The 0xsequence package which is available for browser / client use, also works perfectly on nodejs backends\nwritten in Javascript or Typescript.

\n","isPage":false,"text":"\nThe 0xsequence package which is available for browser / client use, also works perfectly on nodejs backends\nwritten in Javascript or Typescript.\n","title":"nodejs","titles":["Building Backends with Sequence",null]},"482":{"href":"/solutions/wallets/universal-wallet/examples/10-building-backends#go","html":"\n

A complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.

\n

go-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.

\n","isPage":false,"text":"\nA complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.\ngo-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.\n","title":"Go","titles":["Building Backends with Sequence",null]},"483":{"href":"/solutions/wallets/universal-wallet/examples/10-building-backends#ethkit","html":"\n

As part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.

\n","isPage":false,"text":"\nAs part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.\n","title":"ethkit","titles":["Building Backends with Sequence",null]},"484":{"href":"/solutions/wallets/universal-wallet/examples/10-building-backends#support-for-other-backend-languages","html":"\n

If your backend services are written in a language other than JS or Go, you can still easily integrate Sequence,\nas Sequence is really just a standard Ethereum client library with some extra features. In many cases, the extra\nfeatures are best utilized on the client-side / dapp.

\n

If your situation for example is a Python or Java backend where you'd like to verify signatures from a Sequence Wallet,\nwell then, you can call the standard EIP1271 function for the account address\nfrom your backend.

\n

If you'd like to use the Sequence's Meta-Transaction capabilities, see Building Relaying Server with Sequence.

","isPage":false,"text":"\nIf your backend services are written in a language other than JS or Go, you can still easily integrate Sequence,\nas Sequence is really just a standard Ethereum client library with some extra features. In many cases, the extra\nfeatures are best utilized on the client-side / dapp.\nIf your situation for example is a Python or Java backend where you'd like to verify signatures from a Sequence Wallet,\nwell then, you can call the standard EIP1271 function for the account address\nfrom your backend.\nIf you'd like to use the Sequence's Meta-Transaction capabilities, see Building Relaying Server with Sequence.","title":"Support for other backend languages","titles":["Building Backends with Sequence",null]}},"dirtCount":0,"index":[["zellic",{"0":{"434":1}}],["zero",{"0":{"418":1,"419":1},"2":{"414":4,"418":1,"419":1,"420":2}}],["^5",{"2":{"247":1,"376":1}}],["^1",{"2":{"247":1,"376":1}}],["❤️",{"2":{"131":1}}],["🖼️",{"2":{"102":1,"251":1,"379":1}}],["👛",{"2":{"102":1,"251":1,"379":1}}],["🔐🪪",{"2":{"102":1,"251":1,"379":1}}],["⛓️",{"2":{"102":1,"251":1,"379":1}}],["🪙",{"2":{"102":1,"251":1,"379":1}}],["🦊",{"2":{"102":1,"251":1,"379":1}}],["🧰",{"2":{"101":1,"250":1,"378":1}}],["7908",{"2":{"461":1}}],["712",{"0":{"426":1},"2":{"426":1}}],["7f1",{"2":{"145":2}}],["7",{"0":{"343":1},"2":{"91":1,"105":3,"247":1,"248":1,"376":1,"377":1}}],["721",{"0":{"47":1,"239":1,"477":1},"2":{"41":1,"67":1,"239":2,"477":2}}],["5931",{"2":{"461":1}}],["50",{"2":{"449":3}}],["500",{"2":{"86":1}}],["5",{"0":{"235":1,"341":1,"473":1},"2":{"91":1,"105":3,"148":1,"167":1,"197":2,"248":1,"259":1,"269":1,"352":1,"377":1,"396":2,"397":3}}],["~0",{"2":{"79":1}}],["`failedtransactionresponse`",{"2":{"461":1}}],["`wallet",{"2":{"448":1}}],["`walletproxybytecode`",{"2":{"401":1}}],["`mainmodule`",{"2":{"401":1}}],["`authorize",{"2":{"233":1,"471":1}}],["`invalid",{"2":{"226":1,"465":1}}],["`proof",{"2":{"226":1,"465":1}}],["`senttransactionresponse`",{"2":{"461":1}}],["`sequenceconfig`",{"2":{"145":2}}],["`something",{"2":{"86":2}}],["`https",{"2":{"91":3}}],["`block",{"2":{"86":1}}],["`unauthorized",{"2":{"86":1}}],["`unauthorized`",{"2":{"86":1}}],["`unexpected",{"2":{"72":2,"78":1}}],["`$",{"2":{"86":1,"98":2,"372":2,"446":2,"447":2,"448":2,"449":2,"450":2,"460":2,"461":2}}],["`your",{"2":{"83":1}}],["`",{"2":{"72":2,"78":1,"83":1,"86":5,"91":2,"98":2,"173":4,"178":6,"181":4,"226":1,"233":1,"372":2,"446":2,"447":2,"448":3,"449":2,"450":2,"460":2,"461":2,"465":1,"471":1}}],["815189234z",{"2":{"449":1}}],["815189174z",{"2":{"449":1}}],["819722082z",{"2":{"449":1}}],["8545",{"2":{"406":1}}],["8",{"0":{"344":1},"2":{"68":1,"145":2}}],["qmw5gvygwb98gsn8vjtrwu4pln6jryexnxzknwpphvwtdm",{"2":{"345":1}}],["qmdjzqexj2wnny7pnnn4kauzckjh4va5xhoxmmis919ev3",{"2":{"338":1}}],["qmuqgkka8ew7exiuhnmwz4uoxa11wv7nfjhaogvabassyy",{"2":{"67":1}}],["qr",{"2":{"222":2}}],["quantstamp",{"0":{"432":1},"2":{"431":1}}],["quantityremaining",{"2":{"391":1}}],["quantityraw",{"2":{"127":1}}],["quantity",{"2":{"391":1}}],["quicker",{"2":{"165":1}}],["quickly",{"2":{"94":1,"351":1,"368":1,"375":1}}],["quickstart",{"0":{"92":1,"349":1,"366":1,"373":1},"1":{"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"350":1,"351":1,"352":1,"367":1,"368":1,"369":1,"370":1,"371":1,"372":1,"374":1,"375":1,"376":1,"377":1},"2":{"194":1,"198":1}}],["quite",{"2":{"55":1}}],["quote",{"2":{"12":1,"13":1}}],["quot",{"2":{"4":4,"7":8,"10":88,"12":10,"13":8,"14":22,"29":26,"30":30,"34":8,"36":16,"38":24,"43":30,"45":28,"47":26,"48":2,"49":46,"53":8,"56":78,"61":2,"62":44,"63":56,"67":93,"68":68,"72":8,"78":8,"79":4,"81":2,"83":14,"86":40,"87":8,"89":12,"90":12,"91":2,"135":8,"136":14,"137":4,"139":2,"145":58,"149":8,"150":10,"156":12,"159":2,"160":2,"163":2,"164":2,"173":14,"185":2,"200":38,"211":2,"212":2,"213":12,"214":2,"215":6,"216":4,"217":2,"222":2,"225":2,"247":13,"248":4,"255":6,"295":8,"296":2,"297":2,"310":4,"311":4,"314":4,"316":4,"318":4,"320":6,"329":8,"331":4,"337":12,"338":12,"341":2,"342":2,"347":4,"348":2,"352":32,"372":4,"376":13,"377":4,"391":60,"394":4,"395":10,"396":28,"401":20,"406":6,"425":4,"427":2,"431":6,"435":2,"436":2,"441":2,"442":4,"444":2,"446":14,"447":10,"448":26,"449":86,"450":6,"455":2,"456":6,"457":6,"458":6,"460":74,"461":76,"464":2}}],["queried",{"2":{"187":1,"391":1,"421":1,"422":1}}],["queries",{"2":{"33":1,"34":1,"41":1,"328":1}}],["querycontractmessagesender",{"2":{"331":1}}],["querycontract",{"2":{"331":2}}],["queryclientprovider",{"2":{"106":3,"107":5,"123":2,"130":2}}],["queryclient",{"2":{"106":4,"107":5,"123":1,"130":1}}],["querying",{"0":{"331":1},"2":{"36":1,"56":1,"67":1,"68":1,"70":1,"328":1,"331":1,"333":1}}],["query",{"0":{"16":1},"2":{"2":1,"29":1,"30":1,"31":1,"33":1,"34":1,"38":1,"39":3,"43":1,"45":6,"47":6,"48":2,"51":1,"55":3,"56":6,"61":2,"105":3,"106":1,"107":1,"331":3}}],["questions",{"2":{"226":1,"249":1,"465":1}}],["question",{"2":{"0":1}}],["911",{"2":{"345":1}}],["9",{"0":{"345":1},"2":{"67":3}}],["96",{"2":{"9":2}}],["🌄",{"2":{"32":1}}],["\tmessage",{"2":{"426":1}}],["\tdomain",{"2":{"426":1}}],["\tprimarytype",{"2":{"426":1}}],["\ttypes",{"2":{"426":1}}],["\ttry",{"2":{"91":1}}],["\ttokenbalances",{"2":{"29":1,"38":1}}],["\treturn",{"2":{"91":1}}],["\tconst",{"2":{"91":12}}],["\tcontractaddress",{"2":{"30":1,"45":1,"47":1}}],["\t\twallet",{"2":{"426":1}}],["\t\tverifyingcontract",{"2":{"426":1}}],["\t\tversion",{"2":{"426":1}}],["\t\tcount",{"2":{"426":1}}],["\t\tcontractaddress",{"2":{"45":1,"47":1}}],["\t\tchainid",{"2":{"426":1}}],["\t\tname",{"2":{"426":2}}],["\t\tnetworks",{"2":{"91":1}}],["\t\tperson",{"2":{"426":1}}],["\t\tposition",{"2":{"111":1}}],["\t\tprojectaccesskey",{"2":{"91":1}}],["\t\tdefaulttheme",{"2":{"111":1}}],["\t\tthrow",{"2":{"91":1}}],["\t\treturn",{"2":{"91":1}}],["\t\tsigner",{"2":{"91":1}}],["\t\tsettings",{"2":{"91":1}}],["\t\t",{"2":{"91":3,"111":1,"426":1}}],["\t\t\t\t",{"2":{"91":1}}],["\t\t\t\t\turl",{"2":{"91":1}}],["\t\t\t\tprovider",{"2":{"91":1}}],["\t\t\t\turl",{"2":{"91":1}}],["\t\t\trelayer",{"2":{"91":1}}],["\t\t\trpcurl",{"2":{"91":1}}],["\t\t\tprovider",{"2":{"91":1}}],["\t\t\t",{"2":{"91":2,"426":3}}],["\t\taccountaddress",{"2":{"43":1}}],["\t\tlog",{"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1}}],["\tfilter",{"2":{"43":2,"45":2,"47":1}}],["\tfmt",{"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1}}],["\tverifiedonly",{"2":{"34":1}}],["\tnftbalances",{"2":{"30":1}}],["\tif",{"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1}}],["\tincludemetadata",{"2":{"29":2,"30":2,"38":1,"43":2,"45":1,"47":2}}],["\tseqindexer",{"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1}}],["\t",{"2":{"29":6,"30":6,"34":1,"38":7,"43":9,"45":9,"47":8,"49":1,"53":1,"62":1,"63":2,"91":11,"111":1,"426":3}}],["\taccountaddress",{"2":{"29":1,"30":1,"38":1,"43":1}}],["42",{"2":{"449":4}}],["42161",{"2":{"72":1,"78":1,"456":1,"460":1}}],["401",{"2":{"86":2}}],["400",{"2":{"86":6}}],["4",{"0":{"91":1,"234":1,"340":1,"472":1},"2":{"56":1,"80":1,"81":1,"352":1,"396":1,"426":1}}],["462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b",{"2":{"14":4}}],["486",{"2":{"4":8}}],["230",{"2":{"448":1}}],["24th",{"2":{"432":1}}],["2nd",{"2":{"432":1}}],["255",{"2":{"395":1}}],["2fa",{"2":{"140":2}}],["22",{"2":{"56":2,"449":3}}],["2123",{"2":{"449":2}}],["21",{"2":{"56":2,"58":1}}],["2020",{"2":{"432":1,"433":1}}],["2023",{"2":{"145":4,"434":1,"449":4}}],["2022",{"2":{"145":3}}],["2021",{"2":{"133":1,"145":1,"432":1}}],["200000000000000000000",{"2":{"456":1}}],["200",{"2":{"86":1,"218":1,"456":1}}],["20",{"0":{"238":1,"476":1},"2":{"56":8,"58":2,"72":1,"79":2,"80":1,"238":3,"239":1,"240":1,"476":3,"477":1,"478":1}}],["2",{"0":{"77":1,"83":1,"141":1,"232":1,"300":1,"338":1,"364":1,"470":1},"1":{"84":1,"85":1,"142":1,"143":1,"144":1,"145":1,"146":1},"2":{"12":1,"13":1,"56":1,"62":1,"63":2,"68":1,"83":1,"91":1,"105":3,"135":1,"145":2,"167":1,"197":1,"298":1,"337":1,"352":1,"362":2,"364":2,"396":2,"397":4,"399":2,"442":1}}],["6492",{"2":{"226":1,"465":1}}],["6f1",{"2":{"133":1}}],["66597",{"2":{"127":1}}],["65548",{"2":{"68":3}}],["65535",{"2":{"437":1}}],["65535required",{"2":{"394":1}}],["65539",{"2":{"62":2,"63":1}}],["65538",{"2":{"62":2,"63":1}}],["65537",{"2":{"62":2,"63":1}}],["65556",{"2":{"56":1}}],["6x",{"2":{"56":1,"68":1}}],["6",{"0":{"236":1,"342":1,"474":1},"2":{"10":1,"140":1,"353":1,"385":1}}],["09t18",{"2":{"449":2}}],["03",{"2":{"449":3}}],["02t18",{"2":{"449":4}}],["0a1",{"2":{"145":1}}],["0b3",{"2":{"145":1}}],["0x3c4e11e4dbf23b87c14bd75d0da9c75707392d21",{"2":{"449":2}}],["0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",{"2":{"460":1}}],["0x574372ff1a0eede68b5358cce7bbb93155a9dfe0",{"2":{"449":2}}],["0x596af90cecdbf9a768886e771178fd5561dd27ab",{"2":{"396":1,"397":2,"406":1}}],["0xe6b9b21c077f382333220a072e4c44280b873907",{"2":{"430":1}}],["0xec9a7204a43d3f4a82c84fde92d25bfc9110981e",{"2":{"396":1,"397":1}}],["0xd72c236be524ec24f72329317e2785e687105b69",{"2":{"460":1}}],["0xd6043fe6f06d90ec2cb36ca5cd1b193a8515f350",{"2":{"446":1}}],["0xd130b43062d875a4b7af3f8fc036bc6e9d3e1b3e",{"2":{"430":1}}],["0xd01f11855bccb95f88d7a48492f66410d4637313",{"2":{"401":1,"430":1}}],["0x061150e5574716dbb1a2cdf54b3dce9f94395f65",{"2":{"458":1}}],["0x02390f3e6e5fd1c6786cb78fd3027c117a9955a7",{"2":{"430":1}}],["0x0",{"2":{"427":1}}],["0x0000000000000000000000000000000000000000000000000000000000000000",{"2":{"460":1}}],["0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",{"2":{"460":1}}],["0x00",{"2":{"91":1,"346":1,"461":1}}],["0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",{"2":{"460":1}}],["0xff",{"2":{"401":1}}],["0xf9d09d634fb818b05149329c1dccfaea53639d96",{"2":{"401":1,"430":1}}],["0x6b175474e89094c44da98b954eedeac495271d0f",{"2":{"456":1}}],["0x63a21cca14ed7454b9cf6466af422b5c597c6b57",{"2":{"446":1}}],["0x631998e91476da5b870d741192fc5cbc55f5a52e",{"2":{"30":2,"36":1,"45":3,"47":3,"49":3,"53":1,"56":7,"58":3,"62":3,"63":3,"127":1}}],["0x603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3",{"2":{"401":1}}],["0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1",{"2":{"396":1,"397":2}}],["0x4d4ee1b8583e31fe789eaf2e1b6e011c220c10b6",{"2":{"460":2,"461":1}}],["0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea",{"2":{"396":1,"397":2}}],["0x468e8e29f6cfb0f6b7ff10ec6a1ab516ec849c04",{"2":{"12":1,"13":1}}],["0xcccccccccccccccccccccccccccccccccccccccc",{"2":{"426":1}}],["0xc2be9cf6d9ee4fd211f88620760e829792659b16",{"2":{"391":2}}],["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",{"2":{"10":2}}],["0x153824576d03629b264683b430bbf9acea1d0975",{"2":{"461":1}}],["0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881",{"2":{"460":1}}],["0x1626ba7e",{"2":{"427":2}}],["0x1693ffc74edbb50d6138517fe5cd64fd1c917709",{"2":{"352":1,"391":2}}],["0x17b66009af459dc8ebf37acf8a8b355379be2fe5",{"2":{"49":2}}],["0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",{"2":{"426":1}}],["0xb537a160472183f2150d42eb1c3dd6684a55f74c",{"2":{"352":1,"391":2}}],["0xb392c99d9f8e3e0b248e5c283818be5bf5cecca7",{"2":{"348":1}}],["0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",{"2":{"67":2}}],["0x9766bf76b2e3e7bcb8c61410a3fc873f1e89b43f",{"2":{"149":2}}],["0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",{"2":{"83":1}}],["0x",{"2":{"86":1,"90":1,"240":3,"241":1,"457":1,"461":1,"478":3,"479":1}}],["0x7efe6ce415956c5f80c6530cc6cc81b4808f6118",{"2":{"430":1}}],["0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d",{"2":{"49":2}}],["0x7227e371540cf7b8e512544ba6871472031f3335",{"2":{"49":2,"67":1}}],["0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0",{"2":{"10":1}}],["0x27cabc9700ee6db2797b6ac1e1ece81c72a2cd8d",{"2":{"456":1}}],["0x27a11c1563a5dda238379b95c91b3abbad9c0cf6",{"2":{"68":2}}],["0x2791bca1f2de4661ed88a30c99a7a9449aa84174",{"2":{"49":2,"72":1,"126":1}}],["0x2953399124f0cbb46d2cbacd8a89cf0599974963",{"2":{"49":2}}],["0x839ee023b21f4ffe2294025de0ac30ba7278d6fd",{"2":{"461":2}}],["0x8f3cf7ad23cd3cadbd9735aff958023239c6a063",{"2":{"49":2}}],["0x8bb759bb68995343ff1e9d57ac85ff5c5fb79334",{"2":{"36":1}}],["0x8e3e38fe7367dd3b52d1e281e4e8400447c8d8b9",{"2":{"29":1,"30":1,"38":1,"43":1}}],["0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",{"2":{"460":1}}],["0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7",{"2":{"352":1,"391":2}}],["0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4",{"2":{"49":2}}],["0xabc",{"2":{"29":1,"30":1,"38":1,"43":1}}],["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",{"2":{"10":2}}],["0xsequence",{"0":{"200":1},"2":{"12":1,"29":2,"30":2,"33":5,"34":2,"36":1,"38":2,"43":2,"45":2,"47":2,"49":2,"52":4,"53":2,"62":2,"63":4,"72":2,"78":1,"83":1,"86":5,"91":2,"96":1,"98":1,"99":2,"105":10,"106":2,"107":4,"108":1,"109":1,"123":4,"124":1,"128":1,"130":1,"135":1,"199":1,"200":3,"225":1,"226":4,"231":1,"243":1,"244":2,"247":7,"248":3,"253":1,"254":5,"255":1,"260":4,"263":1,"264":5,"265":1,"271":4,"273":1,"274":2,"281":2,"283":1,"289":1,"291":1,"295":1,"370":1,"372":1,"376":7,"377":3,"425":1,"426":2,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1,"464":1,"465":4,"469":1,"481":1,"482":2}}],["0",{"0":{"260":1,"271":1},"2":{"10":3,"14":1,"67":1,"89":1,"90":1,"132":3,"135":1,"145":2,"156":2,"164":1,"166":3,"247":3,"254":2,"260":3,"271":3,"352":1,"364":1,"376":3,"406":1,"419":1,"422":1,"427":1,"437":1,"442":1,"450":1,"460":2,"461":1}}],["$",{"2":{"10":1,"72":2,"78":1,"83":1,"86":4,"91":2,"226":2,"448":1,"465":2}}],["||",{"2":{"9":1,"86":4}}],["|",{"2":{"9":4,"10":1,"14":1,"440":1,"443":1}}],["+=",{"2":{"147":1,"148":2,"159":1,"160":2}}],["+1",{"2":{"68":2}}],["+",{"2":{"8":1,"30":1,"135":1,"137":1,"173":1,"185":1,"199":1,"220":1,"253":2,"262":2,"263":3,"272":2,"273":2,"279":1,"289":1,"291":1,"328":1,"345":1,"390":1,"397":4,"425":2,"445":2,"451":1}}],["=0",{"2":{"262":1}}],["==",{"2":{"13":1,"442":1}}],["===",{"2":{"12":1,"72":1,"86":10,"236":1,"474":1}}],["=",{"0":{"260":1,"271":1},"2":{"7":3,"12":15,"13":9,"14":2,"29":7,"30":8,"33":2,"34":5,"38":7,"43":8,"45":9,"47":8,"49":4,"52":1,"53":2,"62":4,"63":8,"72":20,"78":9,"79":6,"83":8,"86":14,"87":4,"88":1,"91":17,"98":1,"106":8,"107":10,"108":6,"109":5,"111":1,"123":2,"124":6,"125":1,"126":2,"129":4,"130":3,"151":2,"153":2,"155":2,"158":1,"160":2,"173":7,"178":2,"181":2,"200":11,"201":1,"224":2,"225":2,"226":6,"231":3,"232":3,"233":2,"234":3,"235":2,"236":1,"237":3,"238":12,"239":13,"240":13,"241":13,"254":1,"255":2,"260":1,"265":1,"271":1,"275":3,"283":2,"284":5,"294":3,"295":3,"299":2,"300":1,"302":1,"303":1,"304":1,"305":1,"306":1,"307":2,"308":1,"310":2,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1,"320":2,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1,"327":2,"328":1,"329":10,"331":6,"332":2,"333":7,"372":1,"391":2,"397":3,"399":3,"401":6,"406":4,"414":1,"419":1,"420":1,"425":3,"426":4,"427":1,"430":1,"443":2,"446":3,"447":6,"448":14,"449":2,"450":2,"454":1,"455":2,"456":2,"457":1,"458":2,"460":2,"461":2,"463":2,"464":2,"465":6,"469":3,"470":3,"471":2,"472":3,"473":2,"474":1,"475":3,"476":12,"477":13,"478":13,"479":13}}],["yet",{"2":{"165":1,"419":1,"422":1}}],["yes",{"2":{"136":1}}],["y",{"2":{"132":1,"166":1}}],["yarn",{"2":{"7":1,"33":1,"105":1,"123":1,"247":1,"254":1,"260":1,"264":1,"271":1,"274":1,"376":1}}],["you",{"2":{"1":1,"3":4,"4":5,"6":2,"10":4,"12":1,"29":2,"30":1,"31":1,"32":3,"33":3,"34":2,"38":1,"39":1,"40":1,"41":1,"43":1,"45":3,"47":2,"52":1,"55":1,"56":6,"59":1,"68":1,"69":2,"71":2,"72":5,"73":4,"79":4,"80":3,"81":3,"82":1,"83":4,"84":1,"88":2,"89":3,"90":3,"91":2,"96":1,"97":2,"98":2,"100":1,"103":1,"104":1,"105":1,"108":1,"110":1,"111":1,"128":2,"129":3,"130":2,"133":1,"135":5,"136":6,"137":8,"138":4,"139":2,"142":1,"143":1,"145":4,"147":5,"148":6,"149":3,"150":3,"151":5,"152":3,"153":5,"154":3,"155":5,"156":13,"157":3,"158":1,"159":4,"160":8,"161":4,"163":1,"164":5,"165":4,"169":4,"170":2,"171":7,"173":5,"174":3,"175":5,"178":4,"180":7,"181":2,"183":1,"184":1,"185":2,"186":3,"187":1,"188":2,"193":4,"194":2,"196":2,"197":2,"199":2,"200":9,"222":1,"225":4,"226":4,"236":1,"237":1,"238":2,"239":1,"240":1,"241":1,"245":1,"246":4,"247":3,"249":6,"252":1,"254":1,"260":1,"271":1,"296":2,"300":2,"301":1,"305":3,"306":3,"307":2,"308":4,"310":2,"327":1,"328":4,"329":7,"330":2,"331":3,"332":2,"333":4,"334":2,"336":1,"337":4,"340":1,"343":1,"344":4,"345":4,"346":1,"347":1,"348":5,"353":2,"361":1,"363":3,"364":2,"370":1,"371":2,"372":2,"376":2,"380":1,"385":2,"445":3,"447":1,"448":2,"453":1,"458":1,"464":4,"465":4,"474":1,"475":1,"476":2,"477":1,"478":1,"479":1,"483":1,"484":4}}],["yourself",{"2":{"363":1,"445":1}}],["yoursite",{"2":{"200":2,"212":1}}],["yours",{"2":{"193":1}}],["yourcallshowauthfailurescreen",{"2":{"173":1}}],["yourcallreadytoreceivecode",{"2":{"173":1}}],["your",{"0":{"131":1,"200":1,"220":1,"250":1,"337":1,"339":1,"342":1,"378":1},"1":{"251":1,"379":1},"2":{"0":1,"3":2,"4":3,"5":1,"6":2,"7":2,"8":2,"10":2,"12":8,"17":1,"28":1,"29":1,"31":2,"32":2,"34":1,"36":4,"37":1,"38":1,"39":3,"41":1,"42":1,"44":1,"46":1,"48":1,"52":2,"53":1,"55":1,"56":1,"61":1,"65":2,"69":1,"71":2,"72":11,"73":3,"78":3,"79":2,"80":1,"81":5,"83":7,"84":2,"86":4,"87":2,"88":1,"89":4,"90":5,"101":2,"102":3,"103":1,"104":1,"106":3,"123":1,"129":2,"130":2,"131":2,"132":1,"135":3,"136":2,"137":3,"138":3,"139":2,"145":1,"147":1,"150":2,"151":1,"153":1,"155":1,"156":1,"157":1,"160":4,"161":2,"163":2,"164":3,"165":1,"171":5,"173":1,"174":4,"175":1,"178":4,"180":1,"182":1,"183":1,"185":2,"186":2,"187":1,"188":2,"192":2,"193":7,"195":1,"196":1,"197":1,"198":1,"199":2,"200":8,"212":1,"222":1,"225":4,"226":5,"246":3,"247":4,"249":2,"250":2,"251":3,"252":1,"296":1,"308":3,"309":1,"327":1,"333":2,"334":1,"336":1,"337":2,"338":2,"339":2,"340":1,"341":3,"342":2,"343":1,"344":3,"346":2,"347":1,"348":1,"363":1,"364":1,"376":4,"378":2,"379":3,"380":1,"383":1,"425":1,"426":1,"445":1,"446":1,"453":1,"464":4,"465":5,"484":3}}],["risks",{"2":{"390":1}}],["ripped",{"2":{"136":1}}],["right",{"2":{"114":3,"132":1,"164":1,"188":1,"196":1,"443":1}}],["rotation",{"2":{"359":1}}],["rotate",{"2":{"178":1}}],["root",{"2":{"138":1,"448":1}}],["router=",{"2":{"448":1}}],["routerprovider",{"2":{"448":2}}],["router",{"2":{"261":6,"262":2,"270":6,"272":2,"448":7}}],["route",{"2":{"137":1,"328":1}}],["robust",{"2":{"101":1,"250":1,"378":1}}],["role",{"2":{"83":6}}],["runtime",{"2":{"402":1}}],["runs",{"2":{"200":2}}],["running",{"2":{"185":1,"201":1,"295":1}}],["run",{"2":{"81":1,"133":1,"185":4,"199":1}}],["rainbow",{"2":{"263":1,"265":1,"357":1}}],["rainbowkit",{"0":{"263":1},"1":{"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1},"2":{"249":1,"257":1,"263":3,"264":3,"265":3,"267":1,"270":1,"272":1}}],["ramps",{"0":{"353":1,"385":1}}],["ramp",{"2":{"200":2,"216":1,"353":5,"385":5}}],["ration",{"2":{"212":1}}],["ratio",{"2":{"200":2}}],["rather",{"2":{"148":1,"328":1}}],["randomly",{"2":{"81":1,"82":1}}],["randomnoncespace2",{"2":{"79":2}}],["randomnoncespace1",{"2":{"79":2}}],["randombytes",{"2":{"79":2,"232":1,"470":1}}],["random",{"2":{"68":1,"79":1,"299":1,"413":1,"438":1}}],["range",{"2":{"13":1,"314":1}}],["rawtransactions",{"2":{"151":1,"153":1,"155":1}}],["rawtransaction",{"0":{"149":1},"2":{"149":1,"151":2,"153":2,"155":2,"157":2}}],["raw",{"2":{"10":1,"149":2}}],["rpcurl",{"2":{"7":2,"12":2,"91":2,"226":3,"465":3}}],["rpc",{"0":{"59":1,"60":1},"2":{"6":2,"7":2,"10":1,"14":1,"29":2,"30":2,"32":2,"36":3,"38":2,"43":2,"45":2,"47":2,"49":2,"55":6,"57":3,"59":2,"60":1,"62":2,"63":4,"308":2,"352":1,"361":1,"391":2}}],["rejected",{"2":{"405":1,"413":1}}],["region",{"2":{"353":1,"385":1}}],["registers",{"2":{"185":1}}],["registersession",{"2":{"178":1,"180":1}}],["registering",{"2":{"179":1}}],["registered",{"2":{"174":1,"180":1}}],["register",{"2":{"141":2,"178":2}}],["registry",{"2":{"39":1}}],["rewrite",{"2":{"333":2}}],["remaining",{"2":{"387":1}}],["remember",{"2":{"185":1,"446":1}}],["removed",{"2":{"390":1}}],["remove",{"2":{"390":1}}],["removing",{"2":{"156":1}}],["remoteconfigtracker",{"2":{"226":1,"465":1}}],["remotely",{"2":{"199":1}}],["remote",{"0":{"20":1},"2":{"226":1,"425":1,"426":1,"465":1}}],["relevant",{"2":{"460":1}}],["release",{"2":{"137":1}}],["reload",{"2":{"348":1}}],["rely",{"2":{"130":1}}],["relayed",{"2":{"78":1}}],["relayerfeeoption",{"2":{"13":1}}],["relayerurl",{"2":{"12":2,"91":2}}],["relayer",{"0":{"8":1,"80":1},"1":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1},"2":{"8":6,"10":6,"12":4,"13":4,"14":5,"17":2,"72":2,"79":1,"80":2,"83":4,"91":1}}],["relaying",{"0":{"71":1},"1":{"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1},"2":{"73":1,"246":1,"484":1}}],["redirect",{"2":{"203":1}}],["reducing",{"2":{"178":1}}],["reduced",{"2":{"441":1}}],["reduce",{"2":{"29":1,"30":1,"43":1,"47":1,"229":1,"398":1,"467":1}}],["reddit",{"2":{"147":1,"148":1,"159":1,"160":1}}],["redeploy",{"2":{"89":1,"91":1}}],["reports",{"2":{"431":1}}],["repo",{"2":{"220":1}}],["repository",{"2":{"81":1,"110":1,"448":1}}],["represent",{"2":{"439":1}}],["represents",{"2":{"189":1,"191":1,"419":1,"441":1,"442":1}}],["represented",{"2":{"70":1,"149":2,"440":1}}],["replay",{"2":{"9":1,"207":1,"448":1}}],["replaced",{"2":{"161":1}}],["replace",{"0":{"227":1},"2":{"7":1,"89":1,"90":1,"136":1,"138":1,"145":1,"161":1,"387":1,"390":1,"444":1}}],["reflect",{"2":{"222":1}}],["referencing",{"2":{"405":1,"413":1,"418":1}}],["references",{"2":{"33":1,"34":1,"431":1}}],["reference",{"0":{"55":1},"1":{"56":1,"57":1,"58":1,"59":1,"60":1},"2":{"32":2,"59":2,"139":1,"151":1,"153":1,"155":1}}],["referred",{"2":{"154":1}}],["refer",{"2":{"96":1,"106":1,"129":1,"182":1,"183":1,"370":1}}],["refreshedat",{"2":{"449":2}}],["refreshes",{"2":{"164":1}}],["refreshjobstatus",{"2":{"63":3}}],["refreshjob",{"2":{"63":1}}],["refresh",{"0":{"208":1},"2":{"63":3,"64":2,"208":2,"348":3}}],["refreshing",{"0":{"63":1},"1":{"64":1}}],["rendered",{"2":{"211":1,"293":1,"294":1,"295":4,"413":1,"419":1}}],["rendering",{"2":{"43":1,"261":1,"270":1,"293":1,"294":2}}],["render",{"2":{"39":2,"47":1,"293":1,"416":1,"448":1}}],["reason",{"2":{"419":1,"460":1,"461":1}}],["reasons",{"2":{"413":1}}],["reaches",{"2":{"442":1}}],["reached",{"2":{"425":1,"426":1}}],["reach",{"2":{"165":1,"226":1,"249":1,"465":1}}],["reactdom",{"2":{"448":1}}],["react",{"0":{"110":1,"280":1},"1":{"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1},"2":{"105":3,"106":1,"107":1,"109":1,"249":1,"280":3,"281":1,"283":2,"284":1,"288":1,"448":8}}],["really",{"2":{"246":1,"310":1,"484":1}}],["realm",{"2":{"101":1,"157":1,"250":1,"378":1}}],["real",{"2":{"36":1,"39":1,"187":2,"361":1}}],["reader",{"2":{"226":1,"465":1}}],["reading",{"0":{"406":1},"2":{"158":1}}],["readable",{"2":{"150":1,"156":1}}],["ready",{"2":{"103":1,"174":1,"252":1,"343":1,"348":1,"380":1}}],["read",{"0":{"158":1},"2":{"32":1,"51":1,"59":1,"67":1,"79":1,"137":2,"150":2,"200":1,"331":1,"348":1,"406":1}}],["recursive",{"2":{"443":1}}],["recent",{"2":{"261":1,"270":1,"313":1}}],["receives",{"2":{"455":1}}],["received",{"2":{"147":1,"180":1}}],["receive",{"2":{"83":1,"140":1,"157":1,"160":1,"174":1,"305":2,"306":2,"328":1,"330":1}}],["receipts",{"0":{"14":1,"459":1},"1":{"460":1,"461":1},"2":{"306":1,"459":2,"460":1}}],["receipt",{"2":{"13":4,"14":4,"157":1,"304":1,"306":1,"326":1,"327":1,"329":5,"332":1,"333":2,"460":5,"461":1}}],["recovery",{"2":{"359":1,"365":1}}],["recoveredsessionaddress",{"2":{"236":2,"474":2}}],["recognize",{"2":{"137":1,"160":1}}],["recommendations",{"2":{"390":1}}],["recommended",{"0":{"135":1},"1":{"136":1},"2":{"148":1,"150":1,"151":1,"153":1,"155":1,"156":1,"159":1,"160":1,"265":1,"294":1,"295":1,"307":1,"310":1,"320":1,"327":1,"328":1,"333":1}}],["recommend",{"2":{"33":1,"36":1,"52":1,"55":1,"57":1,"69":1,"139":2,"156":1,"158":1,"160":1,"197":1}}],["recipient4address",{"2":{"241":1,"479":1}}],["recipient3address",{"2":{"241":1,"479":1}}],["recipient2address",{"2":{"238":1,"239":1,"240":1,"241":2,"476":1,"477":1,"478":1,"479":2}}],["recipient2",{"2":{"79":1}}],["recipient1address",{"2":{"238":1,"239":1,"240":1,"241":2,"476":1,"477":1,"478":1,"479":2}}],["recipient1",{"2":{"79":1}}],["recipient",{"2":{"72":1,"238":1,"239":1,"240":1,"456":1,"476":1,"477":1,"478":1}}],["recipientaddress",{"2":{"72":1,"78":1,"237":1,"238":1,"239":1,"240":1,"327":1,"475":1,"476":1,"477":1,"478":1}}],["re",{"2":{"33":1,"39":1,"52":1,"71":1,"80":1,"103":1,"132":1,"147":2,"148":1,"150":1,"156":3,"159":1,"160":1,"166":1,"175":1,"199":1,"208":1,"252":1,"380":1,"444":1}}],["revert",{"2":{"416":1}}],["reverted",{"2":{"72":1,"460":1}}],["revertreason",{"2":{"14":1,"460":2}}],["revertonerror",{"0":{"416":1},"2":{"13":1,"414":2,"416":1,"419":1,"420":1}}],["resource",{"2":{"136":1}}],["resources",{"2":{"135":1,"138":6}}],["res",{"2":{"86":4,"145":2,"391":3,"446":2}}],["resulting",{"2":{"425":1,"426":1,"427":1}}],["result",{"2":{"56":1,"80":1,"82":1,"83":1,"148":2,"149":1,"160":3,"170":2,"178":1,"331":1,"404":1,"442":1,"455":2,"461":1}}],["results",{"2":{"36":3,"164":1}}],["restofonboardparams",{"2":{"275":1}}],["restwallets",{"2":{"275":1}}],["restarted",{"2":{"145":1}}],["rest",{"0":{"55":1,"58":1},"1":{"56":1,"57":1,"58":1,"59":1,"60":1},"2":{"51":1,"55":3,"57":2,"58":1,"294":1,"295":1,"300":1,"363":1,"407":1}}],["respect",{"2":{"427":1}}],["respectively",{"2":{"442":1,"458":1}}],["respective",{"2":{"35":1,"54":1,"249":1}}],["responsibility",{"2":{"413":1,"442":1}}],["responsible",{"2":{"171":1}}],["responsive",{"2":{"178":1,"308":1}}],["responses",{"2":{"56":1}}],["response",{"0":{"460":1,"461":1},"2":{"13":2,"14":1,"29":1,"30":1,"43":2,"47":1,"56":2,"67":1,"86":19,"181":2,"241":4,"328":1,"391":1,"460":2,"461":2,"479":4}}],["responds",{"2":{"13":1}}],["resilient",{"2":{"6":1,"39":1}}],["retrieving",{"0":{"421":1,"422":1},"1":{"422":1}}],["retrieve",{"2":{"200":1,"236":1,"237":1,"391":1,"474":1,"475":1}}],["retrieved",{"2":{"10":1}}],["returning",{"2":{"72":2,"458":1}}],["returns",{"2":{"13":1,"48":1,"80":2,"151":1,"153":1,"155":1,"302":1,"408":1,"422":1,"427":1,"449":1,"454":1,"455":4,"456":2}}],["return",{"0":{"410":1},"2":{"4":1,"12":1,"29":3,"30":1,"43":1,"47":1,"67":1,"68":1,"72":2,"78":1,"86":17,"89":1,"90":1,"91":2,"106":1,"107":2,"108":1,"109":1,"123":1,"124":1,"129":2,"130":1,"149":1,"206":1,"294":2,"295":2,"321":1,"326":1,"331":1,"421":1,"427":5,"443":4,"448":3,"458":1,"459":1,"460":1}}],["returned",{"2":{"4":2,"36":1,"63":1,"141":1,"180":1,"210":1,"225":1,"425":1,"426":1,"461":1,"464":1}}],["requiring",{"2":{"200":1,"228":1,"229":1,"333":1,"458":1,"466":1,"467":1}}],["requirefreshsigner",{"2":{"430":1}}],["requirements",{"0":{"133":1,"167":1},"2":{"141":1}}],["required",{"2":{"13":2,"88":1,"132":1,"144":1,"173":1,"199":1,"317":1,"328":1,"362":1,"364":1,"436":1,"442":1,"456":1}}],["require",{"2":{"8":1,"181":1,"226":1,"229":1,"293":1,"295":1,"333":1,"389":1,"418":1,"444":1,"446":1,"452":1,"453":1,"465":1,"467":1}}],["requires",{"2":{"2":1,"3":1,"5":1,"29":1,"33":1,"49":1,"52":1,"62":1,"161":1,"178":1,"237":1,"247":1,"308":1,"376":1,"456":1,"475":1}}],["requests",{"0":{"191":1},"2":{"17":1,"32":1,"59":1,"83":1,"186":1,"187":1,"191":1,"222":1,"308":1}}],["request",{"2":{"3":1,"4":1,"5":1,"29":1,"30":1,"38":1,"43":1,"45":1,"47":1,"48":1,"49":1,"56":2,"61":1,"62":1,"63":3,"86":20,"89":1,"91":6,"131":1,"157":1,"222":1,"352":1,"391":1,"460":1,"461":1}}],["vulnerate",{"2":{"365":1}}],["v6",{"0":{"280":1},"1":{"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1},"2":{"280":2,"281":1,"283":1,"288":1}}],["v3",{"2":{"226":1,"465":1}}],["vocs",{"0":{"227":1}}],["volume",{"2":{"187":1}}],["void",{"2":{"147":1,"148":3,"159":2,"160":3,"173":5,"181":2}}],["v2",{"2":{"72":2,"226":2,"290":1,"436":1,"465":2}}],["v1",{"2":{"72":1}}],["v18",{"2":{"33":1,"52":1}}],["ve",{"2":{"65":1,"69":1,"136":1,"142":1,"143":1,"147":2,"151":1,"152":1,"153":1,"155":1,"156":1,"164":1,"173":2,"174":1,"178":2,"180":1,"199":2,"249":1,"296":1,"308":1,"333":1,"344":1,"347":1}}],["verifies",{"2":{"427":1}}],["verified",{"2":{"29":1,"30":1,"36":3,"43":1,"47":1,"148":1,"204":1,"365":1,"427":1}}],["verifiedonly",{"2":{"29":2,"30":2,"36":2,"43":2,"47":2}}],["verifiable",{"2":{"229":1,"467":1}}],["verification",{"0":{"427":1},"2":{"86":1,"424":1,"452":1,"453":1}}],["verifying",{"2":{"364":1}}],["verifymessage",{"2":{"236":1,"474":1}}],["verify",{"0":{"234":1,"236":1,"472":1,"474":1},"2":{"86":5,"225":2,"226":1,"234":1,"236":1,"246":1,"363":1,"464":2,"465":1,"472":1,"474":1,"484":1}}],["version=",{"2":{"145":2}}],["versioning",{"2":{"132":1,"166":1}}],["versions",{"0":{"260":1,"271":1,"294":1},"2":{"72":1,"145":3,"262":1,"280":1,"293":1}}],["version",{"0":{"295":1},"2":{"72":2,"132":3,"136":1,"137":1,"164":1,"166":3,"247":1,"254":2,"260":2,"262":2,"271":2,"293":1,"376":1}}],["versus",{"2":{"72":1}}],["versa",{"2":{"69":1}}],["very",{"2":{"36":1,"138":1,"149":1,"160":1,"181":1,"185":1,"199":1}}],["vs",{"0":{"69":1},"2":{"55":1}}],["v",{"2":{"12":1,"63":2}}],["virtual",{"2":{"358":1,"427":1}}],["virtually",{"2":{"9":1}}],["vision",{"2":{"447":1}}],["visibility",{"2":{"178":1}}],["visible",{"2":{"178":1,"353":1,"385":1}}],["visualizations",{"2":{"187":1}}],["viem",{"2":{"105":4,"260":1,"271":1}}],["viewable",{"2":{"148":1}}],["viewer",{"0":{"90":1},"2":{"90":1}}],["view",{"2":{"32":1,"82":1,"121":3,"145":2,"171":1,"178":2,"343":1,"408":1,"427":1,"460":1,"461":1}}],["vice",{"2":{"69":1}}],["via",{"0":{"222":1},"2":{"10":1,"14":1,"63":2,"64":1,"102":1,"128":1,"137":3,"138":1,"141":2,"160":2,"164":1,"186":1,"189":1,"190":1,"193":1,"199":4,"222":3,"248":1,"251":1,"254":1,"264":1,"281":1,"303":1,"304":1,"305":1,"306":1,"333":1,"353":3,"364":1,"377":1,"379":1,"385":3,"387":1,"453":1}}],["video",{"2":{"4":2,"194":1,"249":1}}],["valuable",{"2":{"186":1}}],["valueasstring",{"2":{"156":2,"157":1}}],["value=",{"2":{"145":2}}],["value",{"0":{"418":1},"2":{"12":1,"13":2,"67":8,"68":1,"90":1,"149":4,"150":1,"188":1,"204":1,"237":1,"238":2,"240":2,"241":5,"287":1,"330":1,"406":1,"414":2,"418":1,"420":1,"427":3,"437":1,"438":1,"443":2,"456":1,"457":1,"458":1,"460":1,"461":2,"475":1,"476":2,"478":2,"479":5}}],["values",{"0":{"410":1},"2":{"4":1,"113":1,"114":1,"119":1,"120":1,"138":1,"149":1,"156":1,"164":1,"310":1,"311":1,"314":1,"316":1,"318":1,"320":1,"401":1}}],["validity",{"2":{"414":1}}],["valid`",{"2":{"226":1,"465":1}}],["validating",{"2":{"226":1,"442":1,"465":1}}],["validations",{"0":{"457":1}}],["validation",{"0":{"407":1,"451":1,"454":1,"455":1,"458":1},"1":{"408":1,"409":1,"410":1,"452":1,"453":1,"454":1,"455":2,"456":3,"457":2,"458":1},"2":{"86":1,"407":1,"444":1,"446":1,"453":1,"454":2,"455":1,"456":5,"457":3,"458":4}}],["validatesession",{"2":{"455":2}}],["validatesequencewalletproof",{"2":{"226":2,"465":2}}],["validates",{"2":{"408":1,"444":1}}],["validated",{"2":{"398":2,"409":1,"413":1,"455":1}}],["validate",{"2":{"226":1,"401":1,"407":1,"408":1,"427":2,"452":1,"455":1,"465":1}}],["validator",{"2":{"226":3,"465":3}}],["valid",{"0":{"397":1},"2":{"86":2,"173":1,"180":1,"200":1,"236":1,"346":1,"391":1,"394":1,"413":1,"419":1,"427":4,"436":1,"437":1,"441":1,"442":1,"449":1,"455":1,"474":1}}],["vary",{"2":{"247":1,"376":1}}],["vars",{"2":{"87":2}}],["varies",{"2":{"406":1}}],["variety",{"2":{"8":1,"32":1,"192":1,"194":1,"196":1}}],["variable",{"2":{"156":1}}],["variables",{"0":{"87":1},"2":{"86":1,"87":1,"156":1,"181":2}}],["variation",{"2":{"151":1,"153":1,"155":1}}],["various",{"2":{"105":1,"114":1,"262":1,"392":1}}],["var",{"2":{"13":1}}],["joined",{"2":{"425":1,"426":1}}],["job",{"2":{"63":2}}],["jobid",{"2":{"63":1}}],["july",{"2":{"432":1}}],["jump",{"2":{"196":1}}],["just",{"2":{"36":1,"56":1,"70":1,"73":1,"90":1,"102":1,"136":1,"147":1,"156":2,"171":1,"173":1,"178":1,"199":3,"225":1,"246":1,"251":1,"347":1,"379":1,"464":1,"484":1}}],["java",{"2":{"246":1,"484":1}}],["javascript",{"2":{"32":1,"83":1,"226":1,"243":1,"465":1,"481":1}}],["jacket",{"2":{"67":1}}],["jpg",{"2":{"56":1}}],["js",{"0":{"33":1,"52":1,"220":2,"248":1,"293":1,"294":1,"295":1,"377":1},"2":{"29":1,"30":1,"32":1,"33":1,"38":1,"43":1,"45":1,"47":1,"49":1,"52":1,"59":1,"62":1,"63":2,"100":1,"199":2,"245":1,"246":1,"247":3,"248":3,"249":1,"293":2,"295":1,"376":1,"377":3,"391":1,"483":1,"484":1}}],["jsonrpcprovider",{"2":{"7":1,"83":1,"91":2,"226":1,"406":1,"465":1}}],["json",{"2":{"4":2,"10":1,"12":1,"13":1,"14":1,"29":3,"30":3,"38":3,"43":3,"45":3,"47":3,"49":3,"56":1,"62":3,"63":6,"67":1,"68":1,"81":1,"86":5,"89":1,"90":1,"137":2,"247":2,"337":3,"338":2,"339":1,"340":1,"344":1,"345":3,"346":1,"352":1,"376":2,"391":7}}],["jq",{"2":{"10":1,"14":1}}],["jwt",{"2":{"3":1,"4":1,"140":1}}],["1699442705",{"2":{"461":1}}],["1699442705965",{"2":{"461":1}}],["1699443005",{"2":{"461":1}}],["160",{"2":{"9":2,"440":1}}],["191",{"0":{"425":1},"2":{"425":1}}],["11",{"0":{"347":1},"2":{"449":4}}],["1155",{"0":{"47":1,"240":1,"478":1},"2":{"29":2,"41":1,"56":2,"67":2,"68":2,"240":2,"342":1,"344":1,"478":2}}],["102951017z",{"2":{"449":1}}],["102950917z",{"2":{"449":1}}],["109787921z",{"2":{"449":1}}],["109234880945084120673",{"2":{"449":4}}],["10",{"0":{"346":1},"2":{"449":2,"455":1}}],["10^decimals",{"2":{"149":1}}],["10^18",{"2":{"149":1}}],["100",{"2":{"127":1,"218":1}}],["10000000000",{"2":{"126":1}}],["1000000000000000000",{"2":{"12":1,"13":1,"149":1,"237":1,"241":3,"475":1,"479":3}}],["1447300",{"2":{"145":1}}],["14",{"2":{"135":1}}],["158456331411102687640546264635",{"2":{"67":1}}],["1271",{"2":{"395":1,"413":1,"424":1}}],["123",{"2":{"207":1,"345":2}}],["123456",{"2":{"447":1,"455":1}}],["1234",{"2":{"63":3}}],["1200x400",{"2":{"200":2,"212":1}}],["12",{"0":{"260":1,"271":1,"348":1},"2":{"68":2,"260":1,"262":1,"271":1,"401":1}}],["128",{"2":{"10":1}}],["13+",{"2":{"293":1}}],["13",{"0":{"295":1},"2":{"293":1,"295":1}}],["131092",{"2":{"56":1}}],["137",{"2":{"49":1,"56":1,"62":1,"63":1,"72":3,"78":2,"79":2,"106":1,"107":1,"126":1,"130":1,"275":1,"283":1,"461":2}}],["18",{"2":{"10":2,"149":2,"150":1}}],["1",{"0":{"76":1,"81":1,"140":1,"231":1,"299":1,"337":1,"363":1,"469":1},"1":{"82":1},"2":{"4":13,"10":3,"49":1,"62":2,"63":3,"72":4,"78":2,"83":1,"91":1,"132":1,"142":1,"143":1,"145":3,"149":4,"156":1,"157":1,"166":1,"183":1,"200":2,"205":1,"212":1,"254":1,"259":1,"260":2,"269":1,"271":2,"305":1,"306":1,"327":1,"333":2,"337":1,"346":1,"348":1,"352":1,"364":1,"391":2,"396":1,"397":1,"399":2,"426":2,"442":2,"457":2,"458":2}}],["3rd",{"2":{"364":1}}],["32",{"2":{"232":1,"401":1,"449":3,"470":1}}],["36000",{"2":{"205":1}}],["30",{"2":{"80":1,"188":1}}],["3",{"0":{"78":1,"86":1,"233":1,"339":1,"471":1},"1":{"87":1,"88":1,"89":1,"90":1},"2":{"4":1,"133":1,"145":2,"200":2,"212":1,"352":1,"387":1,"396":1,"397":2,"399":2,"436":1,"442":1,"449":1}}],["x19ethereum",{"2":{"425":1}}],["xattr",{"2":{"185":1}}],["xavier",{"2":{"68":1}}],["xavi",{"2":{"68":1}}],["xcodeproj",{"2":{"185":3}}],["xcode",{"0":{"185":1},"2":{"185":2}}],["xmlns",{"2":{"145":4}}],["xml",{"2":{"145":6}}],["xyz",{"2":{"33":1,"34":1,"86":1,"87":1,"158":1}}],["x",{"0":{"260":1,"271":1},"2":{"3":1,"10":1,"14":1,"29":2,"30":2,"33":1,"38":2,"43":2,"45":2,"47":2,"49":2,"52":1,"62":2,"63":4,"89":1,"90":1,"132":1,"166":1,"178":1,"260":1,"262":1,"271":1,"348":1,"364":2,"391":1}}],["x27",{"2":{"0":1,"4":1,"8":1,"10":4,"12":14,"13":6,"14":6,"29":16,"30":17,"32":2,"33":8,"34":1,"36":1,"38":13,"43":13,"45":13,"47":14,"49":24,"52":7,"55":1,"56":5,"59":1,"62":16,"63":22,"65":1,"67":1,"68":2,"69":1,"72":18,"79":1,"80":1,"81":2,"84":1,"86":2,"88":1,"89":2,"90":2,"91":8,"97":1,"98":6,"99":1,"103":1,"106":18,"107":22,"108":5,"109":2,"111":5,"113":4,"119":9,"120":9,"123":2,"124":2,"126":6,"127":6,"129":6,"130":17,"132":2,"133":1,"135":1,"136":2,"137":2,"138":1,"142":1,"143":1,"145":8,"147":6,"148":1,"150":1,"151":4,"152":1,"153":4,"155":4,"156":7,"159":1,"160":3,"161":1,"163":1,"164":3,"165":1,"166":1,"171":3,"173":3,"174":2,"175":2,"178":5,"179":1,"180":1,"181":1,"186":1,"199":3,"200":5,"202":2,"204":1,"207":1,"222":2,"224":1,"225":5,"226":16,"229":2,"231":4,"232":2,"233":1,"234":4,"235":2,"236":4,"238":10,"239":10,"240":16,"241":17,"244":1,"246":3,"249":2,"252":1,"265":10,"275":4,"278":1,"283":4,"284":4,"294":4,"295":3,"296":1,"308":1,"310":1,"329":6,"331":3,"333":1,"337":1,"339":3,"346":1,"347":1,"352":4,"358":2,"363":3,"364":3,"365":2,"371":1,"372":2,"380":1,"388":1,"391":4,"398":1,"399":8,"400":1,"402":1,"404":1,"406":4,"407":2,"408":1,"413":1,"414":5,"415":1,"418":1,"419":2,"420":2,"421":1,"422":1,"425":2,"426":28,"427":1,"430":12,"441":2,"442":2,"443":24,"445":1,"446":1,"447":1,"448":8,"453":2,"455":1,"463":1,"464":5,"465":16,"467":2,"469":4,"470":2,"471":1,"472":4,"473":2,"474":4,"476":10,"477":10,"478":16,"479":17,"482":1,"484":3}}],["human",{"2":{"150":1,"156":1}}],["html",{"2":{"145":1}}],["http",{"2":{"29":1,"30":1,"32":2,"38":1,"43":1,"45":1,"47":1,"59":1,"106":2,"107":2,"145":4,"406":1}}],["https",{"2":{"4":8,"7":1,"10":5,"12":2,"14":1,"29":3,"30":3,"32":2,"33":2,"34":2,"36":2,"38":3,"43":3,"45":3,"47":3,"49":2,"50":1,"52":1,"56":7,"58":6,"60":1,"62":2,"63":5,"67":6,"68":4,"72":1,"73":1,"78":1,"80":2,"82":1,"83":1,"86":2,"87":1,"89":1,"90":1,"99":1,"135":1,"145":2,"158":1,"199":1,"200":2,"212":1,"226":2,"244":1,"248":2,"253":1,"263":1,"273":1,"289":1,"291":1,"295":1,"345":1,"348":2,"352":1,"377":2,"382":1,"383":1,"391":2,"449":4,"465":2,"482":1}}],["hint",{"2":{"204":1}}],["hit",{"2":{"185":2}}],["hides",{"2":{"178":1}}],["hide",{"2":{"178":1}}],["hidden",{"2":{"139":1}}],["highly",{"2":{"293":1,"308":1,"310":1,"328":1}}],["high",{"2":{"39":1,"185":1,"187":1,"188":1}}],["higher",{"2":{"5":1}}],["history",{"0":{"42":1,"43":1,"44":1,"45":1},"1":{"43":1,"45":1},"2":{"39":1,"41":2,"43":6,"45":6,"161":1}}],["horizon",{"2":{"389":3}}],["horik",{"2":{"68":1}}],["home",{"2":{"196":1,"294":3}}],["hope",{"2":{"164":1,"165":1}}],["hooks",{"2":{"294":2}}],["hook",{"2":{"108":2,"109":1,"124":1,"294":1,"448":1,"457":1,"458":2}}],["hosting",{"2":{"336":1,"389":1}}],["hosted",{"2":{"80":1,"363":1,"364":1}}],["hosts",{"2":{"33":1,"34":1}}],["host",{"2":{"32":1,"204":1}}],["however",{"2":{"67":1,"128":1,"136":1,"137":1,"161":1,"333":1,"453":1}}],["how",{"0":{"162":1,"187":1,"197":1,"294":1,"295":1,"335":1},"1":{"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"4":1,"31":1,"48":2,"51":1,"56":1,"61":2,"65":1,"79":1,"80":1,"111":1,"129":2,"137":1,"139":1,"147":1,"150":2,"152":1,"154":1,"156":1,"171":1,"178":1,"179":1,"181":1,"183":1,"199":1,"226":1,"297":1,"310":1,"330":1,"348":1,"353":1,"385":1,"390":1,"435":1,"440":1,"465":1}}],["he",{"2":{"455":1}}],["hence",{"2":{"444":1}}],["henrique",{"2":{"68":1}}],["hesitate",{"2":{"165":1}}],["heavily",{"2":{"296":1}}],["head",{"2":{"338":1,"347":1}}],["headless",{"2":{"196":1,"197":1}}],["header",{"2":{"185":1,"352":1}}],["headers",{"2":{"3":1,"86":5,"391":1}}],["heard",{"2":{"152":1}}],["hello",{"2":{"81":1,"82":1,"425":1}}],["helps",{"2":{"181":1,"183":1}}],["helper",{"2":{"149":1}}],["helpful",{"2":{"36":1,"45":1,"47":1,"194":1,"297":1}}],["help",{"2":{"29":1,"30":1,"36":1,"43":1,"47":1,"65":1,"136":1,"139":1,"164":1,"165":1,"226":1,"229":1,"249":1,"336":1,"389":1,"465":1,"467":1}}],["hex",{"2":{"425":1,"426":1}}],["hexdataslice",{"2":{"401":1}}],["hexzeropad",{"2":{"401":1}}],["hexadecimal",{"2":{"149":1,"160":1,"307":2,"310":2,"311":1,"313":1,"314":1,"315":1,"316":2,"318":1,"320":1}}],["hexlify",{"2":{"79":2,"232":1,"470":1}}],["hextoaddress",{"2":{"12":1}}],["here",{"2":{"32":1,"40":1,"41":1,"45":1,"47":1,"67":1,"68":1,"79":1,"91":1,"111":1,"129":1,"158":1,"160":1,"179":1,"200":1,"226":1,"258":1,"262":4,"268":1,"272":3,"279":1,"288":1,"291":1,"295":2,"448":1,"465":1}}],["h",{"2":{"10":1,"14":1,"29":2,"30":2,"38":2,"43":2,"45":2,"47":2,"49":2,"62":2,"63":4,"89":1,"90":1,"169":2,"173":2,"181":1,"183":1,"391":1}}],["had",{"2":{"390":1}}],["happen",{"2":{"364":1,"456":1}}],["happens",{"2":{"185":1}}],["hardware",{"2":{"363":1}}],["harmoniously",{"2":{"261":1,"270":1}}],["handling",{"2":{"444":1}}],["handlegooglelogin",{"2":{"448":3}}],["handlers",{"2":{"200":1}}],["handler",{"2":{"148":1,"159":1,"160":1,"448":3}}],["handlerequest",{"2":{"86":2}}],["handles",{"2":{"148":1,"445":1}}],["handle",{"2":{"7":2,"58":1,"86":8,"87":1,"91":6,"147":1,"156":1,"448":1}}],["hand",{"2":{"68":1,"185":1}}],["hat",{"2":{"67":2}}],["having",{"2":{"6":1,"71":1,"79":1,"80":1,"139":1,"200":1}}],["haven",{"2":{"135":1,"137":1}}],["have",{"2":{"1":1,"6":1,"9":1,"36":1,"65":1,"67":1,"70":1,"72":1,"73":3,"83":1,"86":2,"90":1,"98":1,"135":1,"136":1,"145":1,"149":1,"151":1,"153":1,"155":1,"156":1,"165":2,"171":2,"178":2,"180":1,"181":1,"185":1,"188":1,"199":1,"200":1,"225":1,"226":2,"241":1,"300":1,"309":1,"333":1,"334":1,"337":1,"346":1,"372":1,"398":1,"419":1,"437":1,"441":1,"442":1,"444":1,"464":1,"465":2,"479":1}}],["hasn",{"2":{"178":1,"363":1}}],["hashtree",{"2":{"443":7}}],["hasheddata",{"2":{"426":2}}],["hashed",{"2":{"398":1,"443":1}}],["hashes",{"2":{"43":1,"305":1,"413":1,"443":1}}],["hash",{"0":{"398":1,"399":1},"1":{"399":1,"401":1},"2":{"13":1,"80":1,"86":2,"91":1,"305":1,"312":1,"321":1,"324":1,"325":1,"326":1,"401":2,"407":1,"408":1,"412":1,"413":1,"421":1,"427":6,"440":1,"441":1,"442":1,"448":3,"460":2}}],["has",{"2":{"0":1,"36":1,"100":1,"150":2,"178":1,"194":1,"198":1,"217":1,"222":1,"245":1,"334":1,"388":1,"393":1,"396":1,"405":1,"406":1,"413":1,"442":2,"447":2,"457":2,"458":1,"483":1}}],["kind",{"2":{"364":1}}],["kinds",{"2":{"33":1,"34":1,"249":1}}],["kitcheckoutprovider",{"2":{"123":4}}],["kitconfig",{"2":{"107":1,"111":2,"130":2}}],["kitwalletprovider",{"2":{"107":7}}],["kitprovider",{"2":{"106":4,"107":6,"111":3,"123":2,"130":2}}],["kit",{"0":{"104":1,"105":1,"106":1,"128":1,"250":1,"378":1},"1":{"105":1,"129":1,"251":1,"379":1},"2":{"101":1,"102":1,"103":2,"104":1,"105":8,"106":3,"107":4,"108":1,"109":1,"110":1,"111":2,"113":1,"123":6,"124":1,"128":3,"129":2,"130":3,"131":1,"249":1,"250":1,"251":1,"252":2,"378":1,"379":1,"380":2}}],["kitexavier",{"2":{"68":1}}],["keccak256",{"2":{"83":2,"399":5,"401":2,"427":2,"441":1,"442":1,"443":2}}],["keepwalletopened",{"0":{"209":1},"2":{"209":2}}],["keeps",{"2":{"36":1}}],["keep",{"2":{"3":1,"181":1,"209":1}}],["keyboard",{"2":{"135":1}}],["keypair",{"2":{"83":1}}],["keyword",{"2":{"81":1,"156":1}}],["keystore",{"2":{"183":1}}],["keys",{"0":{"229":1,"230":1,"388":1,"467":1,"468":1},"1":{"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"469":1,"470":1,"471":1,"472":1,"473":1,"474":1},"2":{"3":1,"97":1,"138":2,"145":1,"169":1,"199":1,"228":2,"229":3,"359":1,"365":1,"371":1,"386":3,"387":6,"388":1,"390":3,"466":2,"467":3}}],["key",{"0":{"102":1,"232":1,"235":1,"251":1,"379":1,"386":1,"389":1,"390":1,"470":1,"473":1},"1":{"387":1,"388":1,"389":1,"390":1},"2":{"3":4,"7":2,"12":2,"17":1,"28":1,"29":3,"30":1,"31":1,"33":1,"37":1,"38":2,"39":1,"42":1,"43":2,"44":1,"45":1,"46":1,"47":1,"49":2,"52":2,"62":2,"63":3,"72":2,"78":1,"83":3,"86":5,"87":2,"91":2,"97":2,"98":2,"106":1,"107":1,"130":1,"138":1,"169":2,"170":3,"183":1,"185":2,"186":1,"188":1,"200":1,"226":1,"229":2,"232":1,"233":1,"234":2,"235":1,"236":2,"299":2,"308":1,"355":1,"359":1,"364":1,"371":2,"372":2,"386":3,"387":9,"388":1,"389":6,"390":6,"446":2,"447":3,"448":2,"449":2,"450":2,"460":2,"461":2,"465":1,"467":2,"470":1,"471":1,"472":2,"473":1,"474":2}}],["known",{"2":{"156":1,"329":2,"331":2,"401":1,"421":1,"422":1,"431":1}}],["knowledge",{"2":{"80":1}}],["know",{"2":{"0":1,"83":1,"247":1,"376":1}}],["pseudo",{"2":{"443":1}}],["python",{"2":{"246":1,"484":1}}],["philosophy",{"2":{"386":1}}],["phone",{"2":{"199":2,"364":1,"382":1,"383":1}}],["phase",{"2":{"185":2}}],["pc",{"0":{"144":1},"2":{"133":1,"167":1}}],["pkey",{"2":{"86":4,"87":1,"91":1}}],["person",{"2":{"426":1}}],["personalized",{"2":{"392":1}}],["perspective",{"2":{"222":1}}],["per",{"2":{"391":1}}],["period",{"2":{"189":1}}],["perfectly",{"2":{"243":1,"481":1}}],["perfect",{"2":{"164":2}}],["performs",{"2":{"364":1}}],["performed",{"2":{"309":1,"458":1}}],["perform",{"2":{"81":1,"82":1,"86":1,"89":1,"164":1,"206":1,"235":1,"456":1,"473":1}}],["permission",{"2":{"3":1,"83":1}}],["pixel",{"2":{"449":1}}],["pinata",{"0":{"338":1},"2":{"336":1,"338":2,"339":1,"340":1,"345":1,"346":1}}],["piece",{"2":{"39":1}}],["pick",{"2":{"36":1,"133":1,"200":1,"215":1}}],["plugin",{"2":{"169":1,"171":1,"175":1,"179":1,"264":3,"265":1}}],["plugins",{"2":{"145":1,"171":3}}],["plain",{"2":{"225":1,"464":1}}],["places",{"2":{"161":1}}],["place",{"2":{"123":1,"138":1,"183":2,"364":1,"365":1}}],["placed",{"2":{"86":1,"295":1}}],["platforms",{"0":{"381":1},"1":{"382":1,"383":1,"384":1},"2":{"140":1,"141":1}}],["platformspecificsetup",{"2":{"133":1}}],["platform",{"2":{"81":1,"141":1,"173":1,"178":1,"363":1}}],["players",{"2":{"196":1,"197":1}}],["playercontroller",{"2":{"178":1}}],["player",{"2":{"142":2,"143":2,"145":3}}],["playground",{"2":{"113":1}}],["play",{"2":{"56":1,"135":1,"136":1,"137":1,"233":1,"471":1}}],["plan",{"2":{"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1,"156":1}}],["please",{"2":{"2":1,"5":1,"29":1,"31":1,"49":1,"51":1,"63":2,"96":1,"106":1,"137":1,"139":1,"145":3,"147":1,"149":1,"150":1,"156":1,"161":1,"164":1,"165":1,"180":2,"182":1,"185":1,"198":1,"220":1,"249":2,"280":1,"370":1,"391":1,"453":1}}],["png",{"2":{"10":3,"56":2,"68":1,"200":2,"212":1}}],["pnpm",{"2":{"7":1,"33":1,"81":2,"86":1,"91":1,"96":1,"105":1,"123":1,"247":1,"370":1,"376":1}}],["pair",{"2":{"355":1}}],["paid",{"2":{"73":1,"78":1,"318":1}}],["packaging",{"0":{"182":1},"1":{"183":1,"184":1,"185":1},"2":{"182":1,"185":2}}],["packaged",{"2":{"185":1}}],["packages",{"0":{"105":1},"2":{"91":1,"105":1,"247":2,"376":2}}],["package",{"0":{"135":1},"1":{"136":1},"2":{"81":1,"105":2,"128":1,"135":5,"136":1,"137":6,"164":1,"185":1,"199":1,"243":1,"247":5,"254":2,"264":1,"273":1,"281":1,"376":4,"448":1,"481":1}}],["pawn",{"2":{"171":6,"178":2}}],["pattern",{"2":{"442":1}}],["patterns",{"2":{"194":1,"198":1}}],["path",{"2":{"145":1,"185":1,"200":3,"448":2}}],["path=",{"2":{"135":1}}],["patch",{"2":{"132":2,"166":2}}],["pasting",{"2":{"156":1}}],["pasted",{"2":{"222":1}}],["paste",{"2":{"135":1,"145":1,"160":1,"338":1,"345":1}}],["password",{"2":{"447":1}}],["passes",{"2":{"305":1,"306":1}}],["passed",{"2":{"36":1,"86":1,"119":2,"120":2,"173":1,"207":1,"257":1,"258":1,"267":1,"407":1}}],["passing",{"2":{"111":1,"113":1,"121":1}}],["pass",{"2":{"3":1,"4":3,"29":1,"36":1,"48":1,"61":1,"87":1,"124":1,"130":1,"157":1,"173":2,"200":3,"225":1,"305":1,"306":1,"446":1,"464":1}}],["palette",{"2":{"113":1}}],["pageprops",{"2":{"295":2}}],["pagesize",{"2":{"391":1}}],["pages",{"0":{"294":1},"2":{"261":3,"262":1,"270":3,"272":1,"293":2}}],["page",{"2":{"83":1,"90":1,"107":1,"119":1,"120":1,"123":1,"140":1,"194":2,"198":1,"217":1,"293":1,"294":2,"310":1,"391":4}}],["parent",{"2":{"442":1}}],["parentheses",{"2":{"156":1}}],["param",{"2":{"427":2}}],["parametersasobjectarray",{"2":{"156":2,"157":1}}],["parameters",{"0":{"256":1,"266":1,"276":1,"405":1,"409":1,"413":1},"1":{"257":1,"258":1,"259":1,"267":1,"268":1,"269":1,"277":1,"278":1},"2":{"156":5,"201":1,"435":1,"444":1}}],["parameter",{"2":{"114":1,"147":1,"149":1,"150":1,"156":1,"173":1,"174":1,"257":1,"267":1,"308":1,"310":1,"328":1}}],["parallelize",{"2":{"8":1}}],["parallel",{"0":{"79":1},"2":{"8":1,"9":1,"79":1}}],["parse",{"2":{"65":1,"69":1,"86":1}}],["partner",{"2":{"365":3}}],["party",{"2":{"363":1,"364":1}}],["parts",{"2":{"179":2}}],["partial",{"2":{"91":2,"365":1,"416":1}}],["particularly",{"2":{"229":1,"293":1,"296":1,"467":1}}],["particular",{"0":{"47":1},"2":{"41":2,"45":1}}],["part",{"2":{"8":1,"100":1,"245":1,"483":1}}],["paytrie",{"2":{"353":1,"385":1}}],["paypal",{"2":{"199":1}}],["payload",{"2":{"185":1,"237":1,"475":1}}],["payable",{"2":{"156":3}}],["payments",{"2":{"122":1}}],["payment",{"2":{"10":2,"80":1,"216":2,"217":2,"353":1,"385":1}}],["pay",{"2":{"8":1,"10":2,"13":1,"72":5,"359":1}}],["purchasing",{"2":{"219":1}}],["purchase",{"2":{"218":1,"219":2,"353":2,"385":2}}],["purpose",{"2":{"132":1,"148":1,"179":1}}],["purple",{"2":{"67":1}}],["pull",{"2":{"131":1}}],["publishing",{"2":{"145":1}}],["published",{"2":{"36":1}}],["publishcollection",{"2":{"4":1}}],["publicclient",{"2":{"255":1}}],["publically",{"2":{"148":1}}],["public",{"2":{"3":1,"4":1,"6":1,"147":1,"148":3,"159":2,"160":3,"427":1}}],["publicly",{"2":{"3":2,"363":1}}],["putting",{"2":{"156":1}}],["put",{"2":{"4":3,"86":1,"137":1}}],["portrait",{"2":{"178":2}}],["potentially",{"2":{"296":1,"309":1}}],["potential",{"2":{"102":1,"197":1,"251":1,"379":1}}],["power",{"2":{"102":1,"251":1,"379":1}}],["powered",{"2":{"56":1,"145":5}}],["points",{"2":{"161":1}}],["point",{"2":{"81":1,"129":1,"149":1,"178":1,"309":1,"310":1,"344":1}}],["popups",{"2":{"200":1}}],["popup",{"2":{"200":2}}],["popular",{"0":{"357":1},"2":{"36":2,"56":1,"65":1,"101":1,"102":1,"196":1,"250":1,"251":1,"296":1,"378":1,"379":1}}],["pop",{"2":{"196":1}}],["pops",{"2":{"3":1}}],["polygonindexer",{"2":{"158":1}}],["polygon",{"0":{"38":1},"2":{"12":1,"14":1,"29":5,"30":5,"32":2,"34":1,"38":5,"43":5,"45":6,"47":5,"49":5,"53":1,"56":6,"58":3,"62":4,"63":4,"67":1,"68":1,"72":2,"78":1,"89":1,"106":2,"107":2,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":2,"157":1,"158":1,"159":1,"160":1,"200":1,"226":1,"255":1,"265":1,"307":1,"308":1,"461":1,"465":1}}],["position",{"0":{"114":1},"2":{"114":1}}],["possibilities",{"2":{"101":1,"157":1,"250":1,"378":1}}],["possible",{"2":{"3":1,"113":1,"114":1,"178":1,"200":1,"222":1,"228":2,"331":1,"362":1,"365":1,"439":1,"442":1,"466":2}}],["post",{"2":{"10":1,"14":1,"29":2,"30":2,"38":2,"43":2,"45":2,"47":2,"49":2,"62":2,"63":5,"80":1,"86":5,"89":1,"90":1,"91":1,"135":1,"147":1,"148":1,"159":1,"160":1,"352":1,"391":3}}],["prudent",{"2":{"388":1}}],["pr",{"2":{"161":1,"165":1}}],["practices",{"2":{"65":1}}],["practice",{"2":{"65":1,"67":1,"69":2,"296":1}}],["primitive",{"2":{"355":1}}],["primary",{"2":{"229":2,"467":2}}],["primarily",{"2":{"196":1,"435":1}}],["pricepertoken",{"2":{"391":1}}],["price",{"2":{"322":1,"391":1}}],["pricesort",{"2":{"352":1}}],["prices",{"2":{"161":1}}],["pricing",{"0":{"5":1},"2":{"8":1}}],["privatekeystring",{"2":{"299":1}}],["privatekey",{"2":{"83":4}}],["private",{"2":{"83":2,"86":1,"87":1,"91":1,"166":1,"169":1,"170":1,"229":1,"232":1,"299":2,"386":3,"387":1,"390":1,"467":1,"470":1}}],["privately",{"2":{"4":1}}],["print",{"2":{"82":1,"83":1}}],["println",{"2":{"13":2,"29":1,"30":1,"38":1,"43":1,"45":1,"47":1}}],["prism",{"2":{"68":1}}],["priority",{"2":{"323":1}}],["prioritizing",{"2":{"197":1}}],["prior",{"2":{"2":1,"4":1,"91":1,"145":2,"173":1,"178":1}}],["prepared",{"2":{"358":1}}],["prepare",{"0":{"337":1}}],["pre",{"2":{"333":1,"334":1}}],["presented",{"2":{"187":1}}],["press",{"2":{"81":1,"90":1,"135":1}}],["prefixedmessage",{"2":{"425":2}}],["prefilling",{"2":{"218":1}}],["prefabs",{"2":{"139":1,"161":1}}],["prefab",{"2":{"139":2,"161":1}}],["preference",{"2":{"390":1}}],["preferred",{"2":{"196":1}}],["prefer",{"2":{"4":1,"308":1}}],["preview",{"2":{"345":1}}],["previously",{"2":{"91":1,"222":1,"299":1}}],["previous",{"2":{"4":1,"72":1,"237":1,"475":1}}],["prevent",{"0":{"86":1},"1":{"87":1,"88":1,"89":1,"90":1},"2":{"80":1,"88":1,"219":1,"448":1}}],["proxy",{"2":{"401":2,"404":1}}],["pros",{"0":{"356":1,"359":1}}],["proper",{"2":{"413":1}}],["properly",{"2":{"183":1}}],["properties",{"0":{"69":1,"436":1},"1":{"437":1,"438":1,"439":1,"440":1,"441":1,"442":1},"2":{"56":1,"67":4,"68":2,"69":6,"436":1}}],["progressively",{"2":{"199":1}}],["progress",{"2":{"161":1}}],["program",{"2":{"63":1,"402":1}}],["produce",{"0":{"293":1},"2":{"293":1}}],["produced",{"2":{"83":1}}],["products",{"2":{"195":1}}],["product",{"2":{"161":1}}],["prone",{"2":{"156":1}}],["proceed",{"2":{"140":1}}],["process",{"2":{"72":1,"86":1,"98":2,"102":1,"135":1,"156":3,"164":1,"181":2,"185":1,"194":1,"200":1,"229":1,"251":1,"346":1,"372":2,"379":1,"446":2,"447":2,"448":2,"449":2,"450":2,"460":2,"461":2,"467":1}}],["provisioning",{"2":{"184":1}}],["providing",{"2":{"83":1,"101":1,"151":1,"153":1,"155":1,"156":1,"250":1,"363":1,"378":1}}],["provided",{"2":{"72":1,"78":1,"81":1,"97":1,"121":3,"136":1,"149":1,"151":1,"153":1,"155":1,"211":1,"296":1,"307":1,"308":1,"310":3,"329":2,"333":1,"334":1,"371":1,"402":1,"408":1,"414":1,"427":4,"438":1,"441":1,"447":1}}],["provides",{"2":{"56":1,"61":1,"113":1,"128":1,"132":1,"140":1,"157":1,"166":1,"192":1,"296":1,"301":1,"363":1,"365":1}}],["provide",{"2":{"32":1,"36":1,"59":1,"96":1,"102":1,"129":1,"130":1,"139":1,"156":3,"161":3,"170":2,"194":1,"196":1,"197":1,"198":1,"229":1,"251":1,"296":1,"310":1,"326":1,"328":2,"329":1,"330":1,"333":1,"345":1,"354":1,"363":1,"370":1,"379":1,"442":4,"447":1,"453":1,"467":1}}],["providerurl",{"2":{"178":1,"180":2}}],["provider",{"2":{"7":4,"12":3,"72":2,"78":1,"83":2,"91":5,"123":1,"180":1,"200":1,"213":2,"217":1,"226":2,"234":1,"295":1,"353":1,"385":1,"406":2,"446":1,"448":2,"453":2,"465":2,"472":1}}],["providers",{"2":{"6":1,"7":1,"83":1,"86":1,"91":3,"105":1,"196":1,"213":1,"216":2,"217":1,"226":1,"353":4,"385":4,"406":1,"446":1,"453":1,"465":1}}],["prove",{"2":{"90":1,"225":1,"464":1}}],["proofstring",{"2":{"86":1,"226":1,"465":1}}],["proof",{"2":{"80":1,"86":5,"89":5,"90":4,"200":2,"205":1,"206":1,"225":2,"226":6,"464":2,"465":6}}],["prompted",{"2":{"222":1,"345":1}}],["prompt",{"2":{"135":1,"137":1,"222":1,"225":1,"278":1,"457":1,"464":1}}],["prompts",{"2":{"17":1,"81":1}}],["promise",{"2":{"79":1,"86":4,"91":2}}],["probably",{"2":{"152":1}}],["probability",{"2":{"79":1}}],["problem",{"2":{"79":1}}],["problems",{"2":{"0":1,"181":1}}],["pro",{"2":{"29":1,"48":1,"55":1,"61":1,"185":1,"446":1,"447":1,"448":1,"449":2,"450":1}}],["protocol",{"2":{"199":1,"203":1,"391":1}}],["protocols",{"2":{"1":1,"222":1}}],["protected",{"2":{"363":1}}],["protects",{"2":{"362":1,"365":1}}],["protection",{"2":{"207":1,"365":1,"389":1,"453":1}}],["protect",{"2":{"9":1,"390":1}}],["projectfilesios",{"2":{"185":1}}],["projectname",{"0":{"117":1}}],["projectaccesskey",{"2":{"12":6,"72":2,"78":1,"83":1,"98":1,"106":2,"107":2,"130":1,"169":1,"200":3,"372":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["projectid",{"2":{"4":2,"449":2}}],["project",{"0":{"97":1,"371":1},"2":{"3":1,"5":1,"7":1,"10":2,"12":3,"17":1,"36":1,"56":1,"69":2,"81":7,"82":1,"83":1,"86":5,"87":1,"91":1,"97":1,"98":1,"117":1,"136":5,"137":2,"138":1,"142":1,"143":1,"145":2,"171":2,"185":8,"186":1,"187":1,"188":1,"191":1,"198":1,"247":2,"249":1,"341":1,"364":1,"371":1,"372":1,"376":2,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["projects",{"2":{"0":1,"4":10,"8":1,"65":3,"69":1}}],["circle",{"2":{"448":1}}],["cid",{"2":{"338":1,"339":1}}],["certain",{"2":{"392":1,"458":1}}],["certainty",{"2":{"225":1,"464":1}}],["center",{"2":{"114":3}}],["c++",{"2":{"171":3,"173":1}}],["cpp",{"2":{"170":1,"173":2,"181":1}}],["cs",{"2":{"147":1}}],["cdn",{"0":{"248":1,"377":1},"2":{"248":1,"377":1}}],["cd",{"2":{"81":1,"82":1}}],["c",{"0":{"76":1,"77":1,"78":1},"2":{"138":2,"160":1,"330":1,"442":1}}],["custodial",{"2":{"147":1,"195":1,"197":1,"361":1,"390":1}}],["customization",{"0":{"165":1},"2":{"193":1,"390":1}}],["customizable",{"2":{"163":1,"197":1}}],["customizability",{"0":{"163":1},"1":{"164":1,"165":1}}],["customize",{"2":{"111":1,"129":1,"165":1,"193":1,"200":1}}],["custom",{"0":{"128":1,"129":1,"130":1,"131":1,"173":1},"1":{"129":1},"2":{"128":2,"129":6,"130":5,"131":2,"133":1,"141":2,"145":1,"151":1,"153":1,"155":1,"157":1,"171":3,"178":1,"194":1,"203":1,"295":1,"296":1,"350":1,"392":1,"453":1,"454":1}}],["cut",{"2":{"68":1}}],["curious",{"2":{"147":1,"156":1}}],["currencies",{"2":{"149":1}}],["currencyaddress",{"2":{"391":1}}],["currencyaddresses",{"2":{"352":1,"391":3}}],["currency",{"2":{"72":1,"149":2,"217":2,"219":4,"310":1,"327":1,"391":2}}],["currently",{"2":{"97":1,"141":1,"298":1,"353":1,"365":1,"371":1,"385":1,"387":1}}],["current",{"0":{"406":1,"421":1},"1":{"422":1},"2":{"64":1,"410":1,"421":2,"449":1,"454":1}}],["curl",{"2":{"10":1,"14":1,"29":1,"30":1,"32":1,"38":1,"43":1,"45":1,"47":1,"49":1,"62":1,"63":2,"89":2,"90":1,"348":1,"352":1,"391":1}}],["c3bgcu3lkfr9bp9jfsslenpaaaaaaaaaa",{"2":{"29":3,"30":4,"33":1,"34":1,"38":3,"43":3,"45":4,"47":4,"49":4,"52":1,"53":1,"62":4,"63":4}}],["claim",{"2":{"207":1}}],["class",{"2":{"98":1,"151":1,"153":1,"155":1,"158":2,"171":2,"333":1,"372":1}}],["closing",{"2":{"179":1}}],["close",{"0":{"450":1},"2":{"108":1,"209":1}}],["closed",{"2":{"97":1,"371":1,"391":1,"450":2}}],["cloud",{"0":{"338":1},"2":{"81":1,"338":1,"345":1,"346":1}}],["cloudflare",{"0":{"25":1,"81":1,"87":1},"1":{"82":1},"2":{"17":2,"80":3,"81":3,"86":1}}],["clone",{"2":{"81":1}}],["clothes",{"2":{"67":1}}],["clipboard",{"2":{"90":1,"222":2}}],["cli",{"0":{"81":1},"1":{"82":1},"2":{"80":2,"81":1}}],["clientid=",{"2":{"448":1}}],["client=",{"2":{"106":1,"107":2,"123":1,"130":1,"295":1}}],["clients",{"0":{"308":1},"1":{"309":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1,"320":1,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1},"2":{"57":1}}],["client",{"0":{"59":1},"2":{"32":2,"57":3,"59":2,"89":1,"156":1,"170":2,"183":6,"226":1,"229":1,"234":1,"235":1,"236":1,"243":1,"246":2,"294":2,"295":9,"303":2,"304":2,"305":2,"306":2,"308":4,"309":1,"310":2,"311":1,"312":1,"313":1,"314":1,"315":2,"316":1,"317":1,"318":1,"319":2,"320":2,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1,"327":2,"329":7,"331":3,"332":1,"333":5,"448":1,"465":1,"467":1,"472":1,"473":1,"474":1,"481":1,"484":2}}],["clicks",{"2":{"102":1,"225":1,"251":1,"379":1,"464":1}}],["clicking",{"2":{"83":1,"188":1}}],["click",{"2":{"3":3,"56":1,"135":3,"136":3,"137":1,"138":1,"164":2,"185":7,"295":1,"340":1,"341":1,"343":1,"345":1,"347":1}}],["ctx",{"2":{"12":1,"13":3,"14":1,"86":3}}],["cross",{"2":{"391":1}}],["cr",{"2":{"185":1}}],["cryptography",{"2":{"390":1}}],["cryptographically",{"2":{"299":1,"363":1}}],["crypto",{"0":{"126":1},"2":{"363":1}}],["cryptocurrencies",{"2":{"353":1,"385":1}}],["cryptocurrency",{"2":{"10":1,"122":1,"126":1}}],["cryptocheckout",{"0":{"126":1},"2":{"125":1,"126":2}}],["credential",{"2":{"448":1}}],["credentialresponse",{"2":{"448":2}}],["credentialsin",{"2":{"171":1,"173":3,"178":2,"180":2}}],["credentials",{"0":{"169":1},"2":{"97":1,"169":2,"171":3,"173":3,"174":2,"178":2,"179":1,"180":2,"371":1,"390":1}}],["credit",{"2":{"73":1,"353":1,"385":1}}],["creator",{"2":{"344":1}}],["creators",{"2":{"154":1}}],["creation",{"2":{"17":1,"361":1,"363":1,"398":1,"401":1,"407":1,"438":1,"445":1}}],["creating",{"0":{"4":1,"129":1},"2":{"128":1,"129":1,"131":1,"147":1,"148":1,"151":1,"153":1,"155":1,"158":1,"185":1,"196":1,"308":1,"328":2}}],["createroot",{"2":{"448":1}}],["createrandom",{"2":{"83":1}}],["createhashrouter",{"2":{"448":2}}],["create2",{"2":{"401":1,"444":1}}],["creates",{"2":{"387":1}}],["createtransaction",{"2":{"327":2}}],["createtoken",{"2":{"4":1}}],["createclient",{"2":{"295":1}}],["createconnector",{"2":{"129":2}}],["createconfig",{"2":{"106":2,"107":2,"130":1,"255":1}}],["createcollection",{"2":{"4":1}}],["createasset",{"2":{"4":1}}],["createdat",{"2":{"391":1,"449":2}}],["createdby",{"2":{"391":1}}],["created",{"2":{"4":2,"136":1,"138":1,"151":1,"153":1,"155":1,"164":1,"299":1,"300":1,"333":1,"340":1,"344":1,"361":2,"387":1,"391":2,"414":1,"425":1,"442":1,"446":1}}],["create",{"0":{"74":1},"2":{"3":1,"4":1,"7":2,"10":1,"12":1,"71":1,"72":5,"78":2,"79":1,"81":4,"83":2,"86":1,"91":5,"98":1,"129":3,"130":1,"136":1,"138":4,"145":1,"151":2,"153":2,"155":2,"157":1,"164":2,"171":2,"173":1,"178":1,"183":1,"198":1,"226":1,"232":1,"236":1,"295":1,"299":1,"308":2,"327":1,"329":5,"331":1,"333":2,"338":1,"341":1,"372":1,"386":2,"439":1,"442":1,"465":1,"470":1,"474":1}}],["craft",{"2":{"72":1,"78":1}}],["cheap",{"2":{"356":1}}],["checkpoint",{"0":{"438":1},"2":{"436":1,"438":2,"443":1}}],["checks",{"2":{"414":1}}],["checked",{"2":{"398":1,"460":1}}],["checking",{"2":{"36":1,"126":1,"180":1}}],["check",{"2":{"32":1,"64":2,"72":2,"78":1,"86":2,"103":1,"147":1,"148":1,"159":1,"160":1,"173":1,"194":1,"198":1,"200":1,"252":1,"310":1,"350":1,"380":1,"454":1}}],["checkoutconfig",{"2":{"126":1}}],["checkoutsettings",{"2":{"124":2,"125":2}}],["checkout",{"0":{"26":1,"124":1,"125":1,"126":1},"1":{"126":1,"127":1},"2":{"103":1,"122":1,"123":6,"124":3,"125":1,"252":1,"380":1}}],["chrome",{"0":{"221":1},"2":{"199":2,"220":1,"221":1,"384":1,"446":1,"447":1,"448":1,"449":2,"450":1}}],["chiefly",{"2":{"195":1}}],["children",{"2":{"295":2}}],["child",{"2":{"171":1,"295":1}}],["choosing",{"2":{"344":1}}],["chooses",{"2":{"222":1}}],["choose",{"2":{"7":1,"161":1,"222":1,"353":1,"385":1,"390":1}}],["choice",{"2":{"193":1,"341":1,"446":1}}],["chose",{"2":{"137":1,"175":1,"222":1,"328":1}}],["chop",{"2":{"56":1}}],["chart",{"2":{"188":1}}],["chance",{"2":{"185":1}}],["changed",{"2":{"136":1,"407":1,"444":1}}],["changes",{"2":{"8":1,"64":1,"132":2,"137":2,"164":1,"166":2,"185":1,"199":1,"280":1,"448":1}}],["change",{"2":{"3":1,"56":2,"188":1,"237":1,"400":1,"402":1,"407":1,"414":1,"475":1}}],["challenge",{"2":{"140":2}}],["challenging",{"2":{"137":1}}],["chainindexer",{"2":{"158":3}}],["chainid",{"0":{"286":1,"315":1},"2":{"10":3,"12":5,"14":1,"49":3,"56":1,"62":3,"63":3,"72":1,"78":1,"86":4,"91":4,"121":1,"126":1,"234":2,"283":1,"307":2,"315":2,"426":2,"456":1,"457":1,"458":1,"460":1,"461":1,"472":2}}],["chainconfig",{"2":{"86":2}}],["chain",{"2":{"3":1,"7":1,"12":1,"13":1,"33":2,"34":2,"36":1,"39":4,"49":1,"58":2,"61":1,"62":1,"63":1,"79":1,"86":10,"87":3,"91":6,"106":5,"107":5,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":2,"157":1,"158":1,"159":1,"160":1,"219":1,"238":1,"239":1,"240":1,"286":1,"307":5,"308":2,"310":2,"315":2,"319":2,"342":1,"345":1,"348":1,"476":1,"477":1,"478":1}}],["chains",{"0":{"257":1,"267":1},"2":{"2":1,"39":3,"51":1,"55":2,"106":4,"107":4,"130":1,"247":1,"255":1,"257":1,"265":1,"267":1,"299":1}}],["calculated",{"2":{"440":1,"441":1,"442":1,"443":1}}],["caller",{"2":{"413":1}}],["called",{"2":{"12":1,"50":1,"63":1,"67":1,"68":1,"197":1,"200":1,"247":1,"364":1,"376":1,"405":1,"408":1,"413":1,"414":1,"415":1,"417":2,"443":1,"448":1}}],["callfunction",{"2":{"329":7}}],["callable",{"2":{"171":2}}],["calldata",{"2":{"91":1,"240":2,"241":1,"427":1,"478":2,"479":1}}],["callcontractfunction",{"2":{"151":1,"153":1,"155":1,"329":4,"333":1}}],["callcontract",{"2":{"86":3,"91":2}}],["callshowauthsuccessscreen",{"2":{"173":4}}],["calls",{"2":{"36":2,"67":1,"173":2,"178":1,"180":1,"296":2,"405":1,"413":1}}],["callbacks",{"2":{"181":2}}],["callback",{"0":{"456":1},"2":{"12":1,"72":2,"181":2,"456":2}}],["calling",{"0":{"329":1},"2":{"2":1,"10":1,"36":1,"86":1,"148":1,"156":3,"159":1,"160":1,"171":1,"178":1,"328":1,"329":1,"404":1,"420":1,"421":1,"427":1,"444":1}}],["call",{"0":{"352":1},"2":{"2":1,"3":1,"4":1,"7":1,"14":1,"32":1,"64":1,"79":1,"86":3,"148":1,"156":5,"159":1,"160":2,"173":5,"174":1,"178":1,"180":2,"195":1,"246":1,"329":1,"348":1,"414":1,"484":1}}],["capturables",{"2":{"181":1}}],["capturable",{"2":{"181":2}}],["capabilities",{"2":{"12":1,"13":2,"59":1,"246":1,"484":1}}],["cater",{"2":{"197":1}}],["category",{"2":{"145":12,"173":5}}],["catch",{"2":{"7":1,"72":1,"86":3,"91":1,"226":1,"296":2,"448":1,"457":1,"461":1,"465":1}}],["causes",{"2":{"295":1}}],["cause",{"2":{"132":3,"138":1,"166":3}}],["caution",{"2":{"72":1,"200":1,"413":1}}],["came",{"2":{"86":1}}],["carefully",{"2":{"199":1}}],["care",{"2":{"78":1}}],["cardtype",{"2":{"68":1}}],["cards",{"2":{"56":2,"68":2,"188":1}}],["card",{"2":{"56":2,"68":1,"73":1,"353":2,"385":2}}],["cast",{"2":{"68":1}}],["case",{"2":{"31":1,"67":1,"79":1,"121":1,"157":1,"173":1,"329":2,"331":2,"389":1,"407":1,"415":1,"416":1,"422":2}}],["cases",{"2":{"8":1,"69":1,"137":1,"160":1,"179":1,"225":1,"246":1,"413":1,"464":1,"484":1}}],["cancel",{"2":{"458":1}}],["cancelled",{"2":{"391":1,"456":1}}],["canvas",{"2":{"139":4}}],["cannot",{"2":{"72":1,"141":1,"280":1,"328":1,"365":1,"453":1}}],["candidate",{"2":{"12":1,"422":1}}],["can",{"0":{"197":1},"2":{"4":3,"6":1,"8":1,"10":7,"33":1,"34":1,"36":1,"39":1,"40":1,"41":1,"45":1,"47":1,"56":3,"68":1,"69":1,"70":2,"71":2,"72":4,"73":2,"79":5,"80":1,"81":2,"82":1,"83":4,"84":1,"86":1,"89":2,"90":1,"91":1,"96":1,"98":1,"100":1,"108":1,"110":1,"111":2,"113":1,"121":1,"128":1,"129":3,"130":1,"131":1,"132":1,"136":3,"137":1,"139":1,"147":1,"148":3,"149":2,"150":3,"151":1,"152":2,"153":1,"154":3,"155":1,"156":2,"159":2,"160":4,"161":2,"164":2,"166":1,"169":3,"170":1,"171":1,"173":1,"175":3,"180":1,"181":2,"185":2,"186":1,"193":4,"196":3,"197":1,"199":1,"200":6,"201":1,"204":1,"216":1,"219":1,"222":3,"225":2,"226":1,"229":3,"236":1,"238":2,"239":1,"240":1,"241":1,"245":1,"246":2,"247":2,"248":1,"249":1,"254":1,"259":1,"263":1,"269":1,"273":1,"284":1,"289":1,"290":1,"293":1,"294":2,"295":6,"296":2,"297":1,"307":1,"308":2,"309":2,"329":2,"331":1,"332":1,"333":1,"336":1,"337":2,"344":1,"348":2,"353":3,"358":2,"361":2,"362":1,"363":3,"364":4,"370":1,"372":1,"376":1,"377":1,"385":3,"386":2,"387":2,"389":1,"390":2,"392":1,"400":1,"402":1,"403":2,"405":1,"407":1,"413":1,"420":1,"421":2,"422":1,"426":1,"427":1,"435":1,"437":1,"438":1,"439":2,"440":1,"442":6,"447":2,"448":2,"450":2,"453":1,"455":1,"456":1,"458":1,"461":1,"464":2,"465":1,"467":3,"474":1,"476":2,"477":1,"478":1,"479":1,"483":1,"484":2}}],["cost",{"2":{"398":1}}],["coding",{"2":{"193":1}}],["codehash",{"2":{"401":2}}],["codeat",{"0":{"316":1},"2":{"316":1}}],["codein",{"2":{"173":1,"174":1}}],["code",{"0":{"227":1,"452":1},"2":{"29":1,"32":1,"33":1,"49":1,"59":1,"62":1,"73":1,"78":1,"81":1,"83":1,"86":1,"91":1,"107":1,"140":1,"147":1,"150":1,"152":1,"154":1,"156":3,"160":2,"174":2,"185":2,"198":1,"200":1,"222":3,"253":1,"263":1,"273":1,"289":1,"294":1,"295":1,"316":1,"363":1,"364":1,"401":2,"404":1,"443":1,"444":3,"452":1,"453":1,"455":4,"460":1,"461":2}}],["co",{"2":{"154":1}}],["cognito",{"2":{"140":2,"452":1}}],["coinquantity",{"2":{"126":1}}],["coinbase",{"2":{"120":1}}],["coins",{"2":{"102":1,"251":1,"379":1}}],["coingecko",{"2":{"36":1}}],["copied",{"2":{"90":1}}],["copy",{"2":{"3":1,"90":1,"156":1,"171":2,"222":1,"338":1,"339":1,"340":1}}],["corrupt",{"2":{"404":1}}],["corruption",{"2":{"404":1}}],["corresponds",{"2":{"408":1,"410":1,"413":1}}],["correspond",{"2":{"119":1,"120":1,"413":1}}],["corresponding",{"2":{"2":1,"32":1,"45":1,"47":1,"119":1,"120":1,"198":1,"393":1,"394":1}}],["correctness",{"2":{"442":1}}],["correct",{"2":{"72":1,"261":1,"270":1,"413":1,"421":1,"427":1,"438":1,"442":1}}],["corner",{"2":{"188":1}}],["core",{"2":{"105":1,"106":1,"123":1,"226":1,"284":1,"404":1,"465":1}}],["cors",{"2":{"86":1}}],["counterfactual",{"2":{"414":1,"444":1}}],["counter",{"2":{"401":1,"407":1,"422":1}}],["count",{"2":{"189":1,"426":1}}],["could",{"2":{"72":2,"330":1,"337":1,"365":1,"390":1}}],["course",{"2":{"39":1,"56":1,"199":1}}],["covalenthq",{"2":{"10":2}}],["colleted",{"2":{"175":1}}],["collect",{"2":{"174":1,"183":1}}],["collected",{"2":{"173":2,"174":1}}],["collectibleinterface",{"2":{"91":2}}],["collectibleinfo",{"2":{"62":1}}],["collectible",{"0":{"91":1,"240":1,"478":1},"2":{"80":2,"91":1,"240":2,"478":2}}],["collectibles",{"0":{"15":1,"19":1,"80":1},"1":{"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1},"2":{"102":1,"127":1,"251":1,"379":1}}],["collectionaddress",{"2":{"352":1,"391":3}}],["collectionid",{"2":{"4":4}}],["collection",{"2":{"4":5,"30":2,"342":1,"391":3}}],["collections",{"0":{"4":1,"30":1},"2":{"2":1,"4":10}}],["collision",{"2":{"79":1}}],["colorschememanager",{"2":{"164":4}}],["colors",{"2":{"113":2,"164":1,"193":1}}],["color",{"0":{"164":1},"2":{"10":1,"113":1,"164":3}}],["comes",{"2":{"386":1}}],["come",{"2":{"56":1}}],["combine",{"2":{"249":1}}],["combined",{"2":{"247":1,"376":1,"387":1,"394":1,"397":4,"413":1,"427":1}}],["combinations",{"0":{"397":1}}],["combination",{"2":{"56":1,"295":1,"397":1,"439":1}}],["combat",{"2":{"36":1}}],["coming",{"0":{"26":1,"165":1},"2":{"86":1,"146":1,"161":1,"229":1,"405":1,"413":1,"467":1}}],["communicating",{"2":{"364":1}}],["communication",{"2":{"17":1,"364":1,"383":1}}],["communicate",{"2":{"199":1}}],["command",{"2":{"63":1,"81":1,"82":1,"185":1,"254":1,"260":1,"271":1,"295":1}}],["commands",{"2":{"32":1,"133":2}}],["comma",{"2":{"56":1}}],["commons",{"2":{"226":2,"465":2}}],["common",{"2":{"12":1,"65":1,"194":1,"196":1,"198":1,"225":1,"247":1,"464":1}}],["com",{"2":{"10":3,"29":1,"30":1,"34":2,"36":1,"38":1,"43":1,"45":1,"47":1,"49":1,"53":2,"62":1,"63":2,"67":2,"68":2,"99":1,"135":1,"137":1,"145":8,"200":2,"212":1,"214":1,"244":1,"248":1,"253":1,"263":1,"273":1,"289":1,"291":1,"295":1,"377":1,"447":1,"449":4,"482":1}}],["computing",{"2":{"401":1,"444":1}}],["computed",{"2":{"400":1}}],["compute",{"0":{"399":1,"401":1},"2":{"401":1,"422":1}}],["computer",{"2":{"339":1,"382":1}}],["compared",{"2":{"386":1,"421":1,"422":1}}],["compat",{"2":{"88":1}}],["compatible",{"2":{"2":1,"8":2,"39":5,"51":1,"55":1,"67":1,"88":1,"199":1,"200":1,"249":1,"290":2,"361":2}}],["composed",{"2":{"247":1,"355":1,"376":1}}],["component",{"2":{"139":1,"171":1,"178":2,"295":12,"448":1}}],["components",{"0":{"297":1},"2":{"106":1,"107":1,"162":1,"294":1,"295":6,"297":1}}],["compromised",{"2":{"365":3,"386":1,"387":2,"389":1,"390":3}}],["comprised",{"2":{"162":1}}],["comprehensive",{"2":{"102":1,"251":1,"379":1}}],["compiled",{"2":{"160":1}}],["compile",{"2":{"160":1}}],["compliant",{"2":{"440":1}}],["complicated",{"2":{"156":2}}],["complexity",{"2":{"148":1,"193":1}}],["complex",{"0":{"151":1,"153":1,"155":1},"2":{"148":1,"156":1,"157":1,"439":1}}],["completeness",{"2":{"309":1}}],["completes",{"2":{"140":1}}],["completely",{"2":{"67":1,"69":1,"136":1,"195":1}}],["complete",{"2":{"36":1,"80":2,"81":1,"83":2,"91":1,"99":1,"107":1,"193":1,"196":1,"200":1,"244":1,"448":1,"454":1,"482":1}}],["completed",{"2":{"3":1,"91":1,"178":1,"401":1}}],["convention",{"2":{"225":1,"464":1}}],["convenient",{"2":{"197":1,"198":1,"229":1,"467":1}}],["convenience",{"2":{"55":1,"57":1,"151":1,"153":1,"155":1,"165":1,"197":1,"333":1,"334":2}}],["conversely",{"2":{"193":1,"196":1}}],["converted",{"2":{"330":1}}],["convert",{"2":{"150":1,"156":1}}],["congratulations",{"2":{"147":1,"347":1}}],["conflicts",{"2":{"129":1}}],["configs",{"2":{"427":1}}],["configjsonrpcprovider",{"2":{"226":1,"465":1}}],["config=",{"2":{"106":1,"107":3,"111":1,"123":1,"130":2}}],["configuring",{"0":{"125":1},"1":{"126":1,"127":1},"2":{"136":1}}],["configure",{"2":{"106":1,"111":1,"115":1,"125":1,"353":1,"364":1,"385":1}}],["configured",{"2":{"86":4,"142":1,"143":1,"408":1}}],["configurations",{"2":{"106":1,"130":1,"421":1,"436":1,"442":2}}],["configuration",{"0":{"111":1,"115":1,"126":1,"127":1,"393":1,"394":1,"398":1,"400":1,"407":1,"414":1,"420":1,"421":1,"422":1,"423":1,"435":1,"442":1,"444":1},"1":{"116":1,"117":1,"118":1,"119":1,"120":1,"394":1,"395":2,"396":2,"397":2,"398":2,"399":3,"400":1,"401":3,"408":1,"409":1,"410":1,"415":1,"416":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":2,"436":1,"437":1,"438":1,"439":1,"440":1,"441":1,"442":1,"443":1,"444":1},"2":{"97":1,"103":1,"106":1,"111":1,"126":1,"127":1,"130":2,"142":1,"143":1,"252":1,"362":1,"371":1,"380":1,"393":1,"398":1,"399":2,"400":1,"407":2,"408":1,"409":1,"410":1,"411":1,"412":1,"413":3,"414":4,"416":1,"421":2,"435":1,"438":1,"442":5,"443":2,"444":3}}],["config",{"2":{"12":4,"14":1,"98":1,"106":2,"107":3,"123":1,"130":1,"136":1,"138":2,"169":3,"183":2,"372":1,"442":1,"443":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["confirms",{"2":{"222":1}}],["confirmations",{"2":{"229":1,"467":1}}],["confirmation",{"0":{"228":1,"466":1},"2":{"80":1,"222":1,"228":1,"235":1,"466":1,"473":1}}],["confirmed",{"2":{"13":1}}],["confirm",{"2":{"3":1,"229":1,"467":1}}],["connectweb3react",{"2":{"284":1}}],["connectoptions",{"2":{"201":2}}],["connector",{"0":{"129":1,"294":1,"295":1},"2":{"119":2,"120":2,"129":12,"130":3,"197":1,"253":1,"254":5,"255":2,"260":3,"261":2,"263":1,"264":1,"265":1,"271":3,"280":2,"281":2,"283":2,"284":1}}],["connectorsforwallets",{"2":{"265":2}}],["connectors",{"0":{"128":1,"130":1,"131":1,"249":1},"1":{"129":1},"2":{"105":4,"106":3,"107":3,"119":2,"120":2,"128":4,"129":5,"130":5,"131":2,"249":4,"255":4,"265":2,"283":1,"284":2,"293":1,"295":3}}],["connectdetails",{"2":{"200":3,"201":1,"210":1,"225":2,"226":1,"464":2,"465":1}}],["connected",{"0":{"189":1},"2":{"147":1,"186":1,"189":2,"200":1,"222":1,"225":1,"315":1,"319":1,"464":1}}],["connecttowaas",{"2":{"147":1}}],["connecting",{"0":{"147":1,"200":1,"220":1,"221":1,"222":1},"2":{"106":1,"147":1,"209":2,"210":1,"212":1,"222":1}}],["connections",{"2":{"102":1,"251":1,"379":1}}],["connection",{"2":{"7":1,"104":1,"108":1,"222":3,"258":2,"268":1,"284":1,"287":1,"309":1}}],["connect",{"0":{"108":1,"199":1,"201":1,"231":1,"258":1,"268":1,"469":1},"1":{"200":1,"201":1,"202":2,"203":2,"204":2,"205":2,"206":2,"207":2,"208":2,"209":2,"210":2,"211":2,"212":2,"213":2,"214":2,"215":2,"216":2,"217":2,"218":2,"219":2,"220":1,"221":1,"222":1},"2":{"81":1,"90":2,"102":1,"106":1,"107":1,"108":1,"120":1,"130":1,"199":3,"200":7,"201":2,"202":2,"205":1,"206":1,"207":1,"208":3,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"222":1,"225":5,"226":1,"231":1,"251":1,"253":1,"255":1,"258":1,"259":1,"263":1,"265":1,"268":2,"269":1,"273":1,"277":1,"278":1,"286":1,"289":1,"290":2,"353":1,"379":1,"385":1,"464":5,"465":1,"469":1}}],["consensys",{"0":{"433":1},"2":{"431":1}}],["consent",{"2":{"136":1,"361":1}}],["consulted",{"2":{"295":1}}],["consumption",{"2":{"43":1}}],["considered",{"2":{"394":1,"397":1,"436":1,"437":1,"442":1,"453":1}}],["consider",{"2":{"296":1}}],["considerations",{"2":{"261":1,"270":1,"419":1}}],["consists",{"2":{"9":1}}],["cons",{"2":{"126":1}}],["console",{"2":{"7":2,"12":1,"13":1,"29":1,"30":1,"38":1,"43":1,"45":1,"47":1,"49":1,"62":1,"63":2,"72":3,"78":2,"83":1,"86":1,"126":1,"200":2,"224":1,"226":2,"234":2,"236":2,"237":1,"238":2,"239":2,"240":2,"241":2,"391":1,"406":1,"446":1,"448":2,"449":1,"454":1,"457":1,"458":1,"460":1,"461":1,"463":1,"465":2,"472":2,"474":2,"475":1,"476":2,"477":2,"478":2,"479":2}}],["constants",{"0":{"418":1,"419":1},"2":{"414":4,"420":2}}],["constraints",{"2":{"364":1}}],["constructions",{"2":{"361":1}}],["constructor",{"2":{"333":1}}],["construct",{"2":{"327":1,"331":1,"425":1,"426":1}}],["const",{"2":{"7":3,"12":4,"13":3,"14":1,"29":3,"30":4,"33":2,"38":3,"43":3,"45":4,"47":3,"49":2,"52":1,"62":2,"63":4,"72":14,"78":7,"79":6,"83":7,"86":11,"91":3,"98":1,"106":6,"107":7,"108":4,"109":3,"111":1,"123":1,"124":4,"125":1,"129":2,"130":3,"173":6,"174":1,"175":1,"181":4,"200":11,"201":1,"224":2,"225":2,"226":5,"231":3,"232":3,"233":2,"234":3,"235":2,"236":1,"237":3,"238":12,"239":13,"240":13,"241":13,"255":2,"265":1,"275":3,"283":2,"284":3,"294":2,"295":2,"372":1,"391":1,"399":2,"401":6,"406":4,"414":1,"420":1,"425":4,"426":6,"430":1,"443":1,"446":3,"447":6,"448":9,"449":2,"450":2,"454":1,"455":2,"456":1,"458":1,"460":2,"461":2,"463":2,"464":2,"465":5,"469":3,"470":3,"471":2,"472":3,"473":2,"474":1,"475":3,"476":12,"477":13,"478":13,"479":13}}],["continue",{"2":{"458":1}}],["contains",{"2":{"67":1,"68":1,"69":1,"110":1,"185":1,"364":1,"404":1,"408":1}}],["contain",{"2":{"67":1,"68":1,"145":1,"436":1,"439":1}}],["containing",{"2":{"62":1,"63":1,"295":1,"387":1}}],["contact",{"2":{"5":1,"29":1,"49":1,"62":1,"63":2,"97":1,"371":1,"391":1,"453":1}}],["contribution",{"2":{"442":1}}],["contributes",{"2":{"440":1}}],["contribute",{"2":{"131":1}}],["controlling",{"2":{"178":1,"390":1}}],["controlled",{"2":{"72":2,"78":1,"83":1,"386":1}}],["control",{"2":{"36":1,"86":3,"129":1,"137":1,"193":1,"225":1,"386":1,"388":1,"389":1,"390":1,"435":1,"464":1}}],["contractbytecodeasstring",{"2":{"332":1}}],["contractdeploymentresult",{"2":{"332":1}}],["contractdeploymentreturn",{"2":{"160":1}}],["contractdeployer",{"2":{"332":2}}],["contractcall",{"2":{"329":3,"333":1}}],["contractabi",{"2":{"329":2,"331":2}}],["contractabiasstring",{"2":{"156":2,"157":1}}],["contractaddresses",{"2":{"43":1,"49":3}}],["contractaddress",{"2":{"10":3,"13":1,"29":2,"30":6,"43":1,"45":4,"47":6,"56":1,"58":3,"62":3,"63":3,"67":1,"68":1,"72":1,"91":2,"121":1,"126":1,"127":1,"156":2,"157":1,"316":1,"328":1,"329":2,"331":2,"332":1,"333":1}}],["contracturi",{"2":{"50":1,"70":1}}],["contractinfo",{"2":{"49":1,"53":1}}],["contractmetadata",{"2":{"49":2}}],["contracts",{"0":{"328":1,"331":1,"332":1,"354":1},"1":{"329":1,"330":1,"331":1,"332":1,"355":1,"356":1,"357":1,"358":1,"359":1,"360":1},"2":{"8":2,"10":1,"13":1,"29":1,"30":1,"36":2,"43":1,"47":1,"49":1,"60":1,"63":1,"67":2,"68":1,"83":2,"157":1,"160":1,"330":1,"341":1,"358":2,"363":1,"398":1,"431":1,"442":2}}],["contract",{"0":{"15":1,"16":1,"19":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":2,"50":1,"62":1,"83":1,"85":1,"160":1,"329":1,"342":1,"343":1,"344":1,"358":1,"431":1},"1":{"45":1,"47":1,"49":1,"50":1,"84":1,"85":1,"359":1,"432":1,"433":1,"434":1},"2":{"4":4,"8":1,"17":2,"29":2,"30":4,"36":1,"39":1,"41":3,"43":3,"45":8,"47":9,"48":5,"49":2,"50":1,"51":1,"55":3,"56":10,"58":1,"60":5,"61":3,"62":1,"63":1,"67":2,"68":2,"70":3,"71":1,"72":3,"73":4,"80":1,"83":4,"84":1,"85":2,"86":7,"87":2,"91":2,"126":2,"147":1,"150":2,"151":2,"152":1,"153":2,"154":2,"155":2,"156":4,"157":2,"160":5,"197":1,"239":1,"240":1,"316":1,"328":8,"329":8,"331":9,"332":1,"333":5,"334":1,"336":1,"341":1,"342":2,"343":1,"344":3,"345":1,"348":1,"354":2,"358":1,"362":1,"364":1,"391":4,"395":1,"398":2,"401":2,"402":2,"406":1,"407":1,"413":1,"414":1,"424":1,"440":1,"444":1,"477":1,"478":1}}],["contrast",{"2":{"3":1}}],["context",{"0":{"430":1},"2":{"29":2,"30":2,"34":1,"38":2,"43":2,"45":2,"47":2,"49":1,"53":1,"62":1,"63":2,"298":1,"308":1,"401":1,"414":1,"435":1}}],["content",{"2":{"10":1,"14":1,"29":2,"30":2,"38":2,"43":2,"45":2,"47":2,"49":2,"62":2,"63":4,"64":1,"86":1,"89":1,"90":1,"171":3,"294":1,"295":2,"338":1,"352":1,"391":3}}],["ubiquitous",{"2":{"333":1}}],["umd",{"2":{"248":3,"377":3}}],["ue",{"2":{"173":1}}],["ufunction",{"2":{"173":6,"181":1}}],["ufunctions",{"2":{"173":1}}],["uobject",{"2":{"173":3,"178":1,"180":1}}],["uauthenticator",{"2":{"173":5,"175":1,"180":2,"181":1}}],["utf",{"2":{"145":2}}],["utility",{"2":{"130":1,"234":1,"472":1}}],["utilizing",{"2":{"4":1}}],["utilized",{"2":{"193":1,"246":1,"484":1}}],["utilize",{"2":{"3":1,"69":1,"106":1,"108":1}}],["utils",{"2":{"72":1,"78":1,"79":4,"83":2,"91":1,"232":2,"234":1,"236":1,"238":2,"239":2,"240":2,"241":3,"399":3,"401":7,"406":2,"426":1,"443":4,"470":2,"472":1,"474":1,"476":2,"477":2,"478":2,"479":3}}],["ui",{"0":{"161":1,"163":1,"173":1},"1":{"162":1,"163":1,"164":2,"165":2},"2":{"137":1,"139":2,"161":6,"162":1,"163":2,"164":1,"165":1,"171":1,"173":1,"174":1,"178":6,"193":1,"197":1}}],["uint96",{"2":{"443":1}}],["uint32",{"2":{"438":1}}],["uint160",{"2":{"440":1}}],["uint16",{"2":{"437":1,"442":1}}],["uint80",{"2":{"395":1}}],["uint8",{"2":{"330":1,"399":4,"426":1,"440":1,"442":1}}],["uint64",{"2":{"63":1,"391":1}}],["uint",{"2":{"63":1,"330":1}}],["uint256",{"2":{"9":1,"67":1,"68":1,"72":1,"78":1,"91":2,"156":1,"238":2,"239":2,"240":4,"241":4,"328":1,"346":2,"399":2,"440":2,"443":2,"476":2,"477":2,"478":4,"479":4}}],["ultimate",{"2":{"101":1,"250":1,"378":1}}],["ux",{"2":{"93":1,"367":1}}],["u",{"2":{"34":1,"53":1}}],["unauthenticated",{"2":{"442":1}}],["unauthorized",{"2":{"388":1}}],["unbalanced",{"2":{"439":1}}],["unbuffered",{"2":{"79":1}}],["unusable",{"2":{"413":1,"416":1,"419":1}}],["unpkg",{"2":{"248":1,"377":1}}],["unparalleled",{"2":{"154":1}}],["unfamiliar",{"2":{"147":1,"148":1,"159":1,"160":1}}],["unexpected",{"2":{"138":1}}],["unnoticed",{"2":{"137":1}}],["unless",{"2":{"133":1,"156":1,"310":1}}],["unleash",{"2":{"102":1,"251":1,"379":1}}],["unlock",{"2":{"101":1,"250":1,"378":1,"387":2}}],["unlimited",{"2":{"9":1,"394":1,"419":2}}],["unlike",{"2":{"9":1}}],["until",{"2":{"98":1,"178":1,"294":1,"372":1,"454":1}}],["unknown",{"2":{"86":1,"413":1}}],["unsanitized",{"2":{"413":1}}],["unsafe",{"2":{"296":1}}],["unsupported",{"2":{"86":1}}],["unstoppable",{"2":{"56":1}}],["underwent",{"2":{"431":1}}],["underlying",{"2":{"358":1,"402":1,"404":1}}],["understand",{"2":{"297":1,"330":1}}],["understands",{"2":{"165":1}}],["understanding",{"0":{"330":1},"2":{"156":1}}],["under",{"2":{"83":1,"136":1,"138":1,"139":3,"145":1,"150":1,"161":2,"169":2,"185":2,"345":1,"346":1,"397":1}}],["undefined",{"2":{"12":1,"13":1,"72":1,"78":1,"86":5,"121":1,"448":1}}],["unwanted",{"2":{"72":1}}],["uniswap",{"2":{"222":1}}],["universal",{"2":{"102":1,"195":1,"196":1,"197":1,"198":1,"251":1,"374":1,"379":1}}],["unit",{"2":{"56":1,"68":1}}],["unityactivity",{"2":{"145":2}}],["unitythemeselector",{"2":{"145":2}}],["unityplayer",{"2":{"145":2}}],["unityplayeractivity",{"2":{"145":2}}],["unitypackage",{"2":{"137":2}}],["unity3d",{"2":{"145":3}}],["unity",{"0":{"35":1,"54":1},"2":{"35":1,"54":1,"96":3,"132":3,"133":1,"135":2,"136":3,"137":3,"145":4,"147":1,"148":1,"158":2,"159":1,"160":3,"163":1,"164":2,"193":1,"196":1,"203":1,"296":3,"370":3}}],["unique",{"0":{"47":1},"2":{"41":1,"129":1,"138":1,"337":1,"406":1}}],["unverified",{"2":{"36":1}}],["unreal",{"0":{"35":1,"54":1,"179":1,"185":1},"2":{"35":1,"54":1,"166":3,"167":1,"175":1,"179":1,"185":5,"193":1,"196":1,"203":1}}],["uri",{"0":{"345":1},"2":{"67":2,"68":4}}],["uris",{"2":{"4":1}}],["url",{"0":{"340":1},"2":{"4":2,"7":2,"56":2,"63":1,"68":1,"82":2,"90":1,"91":2,"116":1,"133":1,"135":2,"138":1,"141":2,"142":2,"143":2,"145":3,"180":1,"212":1,"308":2,"340":1,"344":1,"345":2,"352":1}}],["upgradeability",{"2":{"359":1}}],["upgraded",{"2":{"358":1}}],["upi",{"2":{"353":1,"385":1}}],["upon",{"2":{"236":1,"258":1,"278":1,"474":1}}],["ups",{"2":{"196":1}}],["uproject",{"2":{"171":1}}],["updating",{"0":{"348":1},"2":{"87":1,"136":1,"137":1,"403":1,"407":1,"419":1}}],["updateimagehash",{"0":{"412":1},"1":{"413":1,"415":1,"416":1,"417":1,"418":1,"419":1},"2":{"412":1,"414":2,"419":1,"420":2}}],["updateimplementation",{"2":{"404":3,"414":1,"419":1}}],["updateconfiguration",{"0":{"404":1},"1":{"405":1}}],["updated",{"2":{"222":1,"398":1,"411":1,"414":1,"419":3,"420":2,"421":1,"422":2}}],["updates",{"0":{"420":1},"2":{"63":1,"161":1,"400":1,"412":1,"436":1,"438":1}}],["update",{"0":{"83":1,"84":1,"344":1,"402":1,"414":1},"1":{"84":1,"85":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1,"412":1,"413":1,"414":1,"415":2,"416":2,"417":2,"418":2,"419":2,"420":2,"421":2,"422":2},"2":{"2":1,"3":1,"4":1,"80":1,"83":2,"84":1,"136":1,"171":1,"338":1,"348":1,"404":1,"414":3,"416":1,"448":1}}],["uptime",{"2":{"39":1}}],["uploaded",{"2":{"340":1,"346":1}}],["uploading",{"2":{"17":1}}],["upload",{"0":{"339":1},"2":{"4":6,"338":1,"339":2}}],["up",{"0":{"106":1,"107":1,"338":1,"341":1,"446":1,"447":1},"1":{"447":1,"448":1},"2":{"3":1,"28":1,"31":1,"36":1,"37":1,"39":1,"42":1,"44":1,"46":1,"133":1,"141":1,"145":1,"178":1,"179":1,"182":1,"185":1,"278":1,"341":1,"346":1,"446":1,"448":1}}],["usual",{"2":{"447":2}}],["usually",{"2":{"156":1,"346":1}}],["us",{"2":{"156":1,"165":1,"193":1,"226":1,"363":1,"465":1}}],["usable",{"2":{"8":1,"446":1}}],["usage",{"0":{"5":1,"55":1,"57":1,"255":1,"265":1,"275":1,"282":1,"290":1},"1":{"56":1,"57":1,"58":1,"59":1,"60":1,"283":1,"284":1},"2":{"51":1,"249":1,"361":1,"398":1}}],["usdc",{"2":{"8":1,"10":2,"12":2,"13":2,"72":4,"217":1,"359":1}}],["using",{"0":{"24":1,"73":1,"80":1,"90":1,"130":1,"230":1,"253":1,"260":1,"261":1,"263":1,"270":1,"271":1,"273":1,"280":1,"289":1,"294":1,"295":1,"468":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1,"290":1,"291":1,"469":1,"470":1,"471":1,"472":1,"473":1,"474":1},"2":{"3":1,"6":1,"7":1,"12":1,"13":2,"29":1,"30":1,"33":2,"36":1,"38":1,"43":1,"45":1,"47":1,"48":1,"49":1,"52":3,"61":1,"62":1,"64":3,"72":1,"79":1,"83":2,"86":1,"89":2,"97":1,"98":1,"108":1,"109":1,"111":1,"125":1,"128":1,"130":1,"133":1,"136":1,"137":1,"139":1,"150":2,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"161":2,"174":1,"178":1,"180":2,"181":1,"199":2,"200":1,"222":2,"225":1,"226":1,"228":1,"234":1,"249":2,"253":1,"254":1,"259":1,"260":1,"261":3,"262":1,"263":1,"269":1,"270":3,"271":1,"273":1,"289":1,"293":2,"295":4,"299":1,"307":1,"308":3,"359":1,"361":1,"364":1,"371":1,"372":1,"375":1,"383":1,"386":1,"387":1,"390":1,"400":1,"405":1,"407":1,"413":1,"414":1,"444":1,"446":1,"447":2,"448":1,"450":1,"453":1,"458":1,"460":1,"464":1,"465":1,"466":1,"472":1}}],["useismounted",{"2":{"294":2}}],["useeffect",{"2":{"294":1,"448":3}}],["useweb3react",{"2":{"284":2}}],["usequencewallet",{"0":{"180":1},"2":{"178":6,"180":4}}],["usecheckoutmodal",{"2":{"124":3}}],["useopenwalletmodal",{"2":{"109":3}}],["useopenconnectmodal",{"2":{"108":3}}],["useaccount",{"2":{"108":3}}],["usefulness",{"2":{"154":1}}],["useful",{"2":{"55":1,"113":1,"136":2,"149":1,"160":1,"219":1,"229":1,"467":1}}],["usestate",{"2":{"448":4}}],["usesessionhash",{"2":{"448":5}}],["uses",{"2":{"39":1,"67":1,"68":1,"138":1,"141":1,"193":1,"261":3,"270":3,"390":1,"402":1}}],["userid",{"2":{"449":2}}],["useraddress",{"2":{"231":1,"234":1,"391":3,"469":1,"472":1}}],["userwallet",{"2":{"178":1}}],["user",{"2":{"10":3,"80":1,"98":1,"108":2,"140":3,"141":1,"147":1,"174":1,"193":2,"199":1,"200":5,"202":1,"210":1,"213":2,"214":3,"215":1,"222":9,"224":1,"225":6,"226":1,"229":4,"233":1,"235":1,"361":1,"363":3,"364":4,"365":2,"372":1,"386":2,"387":4,"389":2,"390":4,"391":3,"445":3,"447":6,"448":1,"449":1,"453":2,"455":2,"456":1,"463":1,"464":6,"465":1,"467":4,"471":1,"473":1}}],["users",{"0":{"223":1,"462":1},"1":{"224":1,"225":1,"226":1,"463":1,"464":1,"465":1},"2":{"8":2,"71":1,"101":1,"102":2,"137":1,"141":1,"161":1,"173":1,"193":1,"196":4,"197":3,"199":8,"200":3,"212":1,"216":2,"217":1,"219":3,"225":2,"228":1,"229":2,"250":1,"251":2,"290":1,"296":1,"309":1,"353":3,"365":1,"378":1,"379":2,"383":1,"385":3,"386":1,"388":1,"389":1,"390":3,"392":1,"451":1,"452":1,"453":1,"464":2,"466":1,"467":2}}],["usedisconnect",{"2":{"108":1}}],["used",{"0":{"293":1},"2":{"3":1,"70":1,"72":1,"78":1,"81":1,"98":1,"113":1,"115":1,"136":1,"151":1,"153":1,"155":1,"170":1,"173":1,"205":1,"253":1,"280":1,"289":1,"294":1,"296":1,"300":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"319":1,"320":1,"322":1,"323":1,"324":1,"325":1,"372":1,"390":1,"398":1,"401":1,"415":1,"416":1,"435":1,"436":1,"438":1,"439":1,"442":1,"444":1,"447":2,"448":5}}],["use",{"0":{"86":1,"294":1,"295":1},"1":{"87":1,"88":1,"89":1,"90":1},"2":{"1":1,"4":4,"6":1,"9":1,"32":1,"39":1,"45":2,"47":2,"51":1,"67":3,"69":3,"71":1,"72":3,"79":1,"80":1,"81":1,"83":1,"86":1,"110":1,"124":1,"129":2,"130":1,"137":1,"139":2,"145":1,"148":1,"149":1,"150":2,"151":1,"152":1,"153":1,"154":1,"155":1,"156":2,"157":1,"159":1,"160":3,"161":1,"164":1,"169":1,"170":1,"171":2,"175":2,"178":1,"179":1,"180":2,"181":1,"183":1,"186":1,"200":2,"210":1,"218":1,"225":1,"235":1,"243":1,"246":1,"249":1,"260":1,"261":1,"270":1,"271":1,"290":1,"294":1,"295":4,"300":1,"307":1,"308":2,"309":1,"327":1,"329":5,"331":4,"332":1,"333":2,"334":1,"339":1,"346":1,"356":1,"387":1,"392":1,"415":1,"448":1,"454":1,"457":1,"464":1,"473":1,"481":1,"484":1}}],["effectively",{"2":{"388":1}}],["efforts",{"2":{"161":1}}],["effortlessly",{"2":{"101":1,"102":1,"250":1,"251":1,"378":1,"379":1}}],["ecdsa",{"2":{"355":1}}],["ecosystem",{"2":{"65":1,"131":1}}],["equal",{"2":{"305":1,"306":1,"437":1}}],["equally",{"2":{"241":1,"479":1}}],["equivalent",{"2":{"99":1,"244":1,"482":1}}],["ephemeral",{"2":{"228":1,"229":1,"232":1,"466":1,"467":1,"470":1}}],["eye",{"2":{"181":1}}],["eyes",{"2":{"67":1}}],["estimate",{"2":{"317":1}}],["estimategas",{"0":{"317":1},"2":{"317":1}}],["established",{"2":{"453":1}}],["establish",{"2":{"140":1}}],["establishing",{"2":{"139":1}}],["esocialsignintype",{"2":{"173":1}}],["essentially",{"2":{"158":1,"160":1,"345":1}}],["essentials",{"2":{"135":1,"137":1}}],["edit",{"2":{"137":1,"142":1,"143":1,"145":1,"164":1}}],["editor",{"2":{"135":1,"141":1}}],["emitted",{"2":{"460":1}}],["empower",{"2":{"137":1}}],["emailauth",{"2":{"174":1}}],["emailcode",{"2":{"173":1,"174":1}}],["emailin",{"2":{"173":1,"174":1}}],["emaillogin",{"2":{"173":1,"174":1}}],["emailed",{"2":{"140":1}}],["email",{"0":{"140":1,"174":1,"447":1,"452":1},"2":{"118":1,"140":1,"147":1,"173":1,"174":3,"210":1,"214":3,"215":1,"363":1,"364":1,"387":2,"390":2,"446":1,"447":13,"452":1,"453":1,"454":2,"455":1}}],["embedded",{"0":{"23":1,"107":1,"109":1,"361":1},"1":{"362":1,"363":1,"364":1,"365":1},"2":{"93":1,"94":1,"96":2,"97":3,"98":1,"102":2,"104":1,"105":1,"107":1,"109":1,"121":1,"132":2,"139":2,"251":2,"337":1,"361":2,"362":1,"367":1,"368":1,"370":2,"371":3,"372":1,"379":2,"445":1,"447":1,"451":1,"461":1}}],["elsewhere",{"2":{"293":1}}],["else",{"2":{"86":2,"173":1,"234":1,"236":1,"363":1,"461":1,"472":1,"474":1}}],["elements",{"2":{"139":1}}],["element",{"2":{"68":1,"142":1,"143":1,"448":2}}],["eoas",{"2":{"354":1,"355":1,"358":1}}],["eoawallet",{"2":{"299":2}}],["eoa",{"0":{"86":1},"1":{"87":1,"88":1,"89":1,"90":1},"2":{"72":7,"78":2,"80":1,"83":5,"86":1,"87":1,"91":1,"100":1,"245":1,"299":1,"300":1,"395":1,"440":1,"483":1}}],["eip1271",{"2":{"226":1,"246":1,"465":1,"484":1}}],["eip1155",{"2":{"65":1}}],["eip712",{"2":{"206":1,"225":4,"464":4}}],["eip721",{"2":{"65":1}}],["eips",{"2":{"67":4,"68":2}}],["eip",{"2":{"67":3,"68":2,"226":1,"395":1,"413":1,"465":1}}],["either",{"2":{"10":1,"57":1,"64":1,"67":1,"69":2,"83":1,"90":1,"130":1,"147":1,"156":1,"157":1,"175":1,"178":1,"180":1,"241":1,"305":1,"306":1,"364":1,"386":1,"403":1,"440":1,"458":1,"459":1,"479":1}}],["evm",{"2":{"32":1,"39":1,"61":1,"149":1,"150":1,"156":2,"200":1,"296":2,"299":1,"330":1,"361":1}}],["ever",{"2":{"178":1,"328":1,"444":1}}],["everywhere",{"2":{"199":1}}],["every",{"2":{"39":2,"228":1,"393":1,"395":1,"398":1,"402":1,"406":1,"466":1}}],["everything",{"2":{"4":1,"36":1,"296":1}}],["event",{"2":{"147":1,"159":1,"170":1,"185":1,"200":1}}],["events",{"2":{"39":1,"147":1,"148":2,"159":1,"160":3,"187":1,"190":1,"457":1}}],["even",{"2":{"8":1,"29":1,"30":1,"39":1,"43":1,"47":1,"136":1,"193":1,"241":1,"330":1,"386":1,"390":1,"405":1,"413":1,"479":1}}],["ealiest",{"2":{"311":1,"314":1,"316":1,"318":1,"320":1}}],["earliest",{"2":{"310":2}}],["earlier",{"2":{"136":1,"345":1}}],["earring",{"2":{"67":1}}],["each",{"0":{"197":1},"2":{"29":1,"79":1,"157":2,"173":1,"179":1,"185":1,"229":1,"305":1,"306":1,"337":1,"338":3,"361":2,"362":1,"386":2,"439":1,"442":3,"467":1}}],["easier",{"2":{"165":1}}],["easily",{"2":{"8":1,"39":2,"56":1,"122":1,"137":1,"150":2,"152":1,"154":1,"225":1,"246":1,"289":1,"299":1,"300":1,"336":1,"464":1,"484":1}}],["ease",{"2":{"12":1}}],["easy",{"2":{"1":1,"39":2,"43":1,"65":1,"139":1,"157":1,"181":1,"196":1,"241":1,"356":1,"479":1}}],["ethtransaction",{"2":{"303":1,"304":1,"305":2,"306":2,"327":1,"329":4,"333":2}}],["ethauth",{"2":{"205":1,"206":1,"207":1,"225":1,"226":7,"464":1,"465":7}}],["ethauthproofstring",{"2":{"86":2}}],["ethauthproof",{"0":{"86":1,"90":1},"1":{"87":1,"88":1,"89":1,"90":1},"2":{"80":1,"90":1}}],["ethkit",{"0":{"100":1,"245":1,"483":1},"2":{"100":2,"245":2,"483":2}}],["eth",{"0":{"37":1,"38":1},"1":{"38":1},"2":{"149":3,"200":1,"327":1}}],["ethrpc",{"2":{"12":1}}],["ethwallet",{"2":{"12":1,"299":4,"300":1,"305":2,"306":2}}],["ether",{"2":{"10":1,"426":1}}],["etherscan",{"2":{"156":1}}],["ethers",{"0":{"220":1,"418":1,"419":1},"2":{"7":7,"12":3,"33":3,"72":4,"78":2,"79":6,"83":7,"86":2,"91":8,"100":1,"105":3,"199":1,"226":3,"231":2,"232":3,"236":1,"238":2,"239":2,"240":2,"241":3,"245":1,"247":5,"248":2,"254":2,"260":3,"264":2,"271":3,"274":2,"281":1,"376":4,"377":2,"399":3,"401":7,"406":4,"414":4,"420":2,"443":4,"465":3,"469":2,"470":3,"474":1,"476":2,"477":2,"478":2,"479":3,"483":1}}],["ethereum",{"0":{"38":1,"221":1,"425":1},"2":{"2":1,"8":2,"9":2,"32":1,"39":4,"51":1,"55":2,"56":1,"67":2,"68":1,"72":1,"78":1,"100":1,"199":3,"200":1,"245":1,"246":1,"247":1,"249":1,"296":1,"309":1,"354":1,"355":1,"361":1,"383":1,"425":1,"483":1,"484":1}}],["etc",{"0":{"37":1,"38":1},"1":{"38":1},"2":{"8":1,"12":1,"49":1,"62":1,"63":1,"258":1,"259":1,"269":1,"337":1,"363":1,"364":1,"446":1}}],["err",{"2":{"29":3,"30":3,"34":1,"38":3,"43":3,"45":3,"47":3,"49":1,"53":1,"62":1,"63":2,"86":7,"91":2,"226":2,"465":2}}],["errors",{"2":{"178":1,"293":1}}],["error",{"0":{"293":1},"2":{"7":1,"72":2,"83":1,"156":1,"173":1,"181":2,"185":1,"448":6,"461":3}}],["erc1271",{"2":{"427":1,"440":1}}],["erc1155data",{"2":{"241":2,"479":2}}],["erc1155contractaddress",{"2":{"240":2,"241":1,"478":2,"479":1}}],["erc1155interface",{"2":{"240":5,"241":2,"478":5,"479":2}}],["erc1155tokenaddress",{"2":{"154":1,"157":1,"240":1,"478":1}}],["erc1155s",{"2":{"136":1}}],["erc1155",{"0":{"29":1,"30":1,"45":1,"49":1,"62":1,"68":1,"83":1,"155":1},"1":{"84":1,"85":1},"2":{"4":1,"30":1,"36":1,"39":3,"41":1,"43":1,"45":1,"47":2,"48":2,"55":1,"56":1,"60":4,"61":3,"67":2,"68":2,"69":1,"80":1,"86":1,"87":1,"154":5,"155":9,"333":1,"334":1}}],["erc21",{"2":{"153":1}}],["erc20contract",{"2":{"329":6,"331":4}}],["erc20data",{"2":{"241":2,"479":2}}],["erc20tokenaddress",{"2":{"150":1,"157":2}}],["erc20interface",{"2":{"79":2,"238":5,"241":2,"476":5,"479":2}}],["erc20",{"0":{"29":1,"45":1,"47":1,"49":1,"70":1,"151":1},"2":{"10":3,"36":1,"39":3,"41":2,"43":1,"45":1,"47":2,"48":2,"55":1,"60":2,"70":3,"150":5,"151":9,"156":1,"157":1,"328":1,"329":2,"331":2,"333":8,"334":1,"359":1}}],["erc",{"0":{"238":1,"239":1,"240":1,"425":1,"426":1,"476":1,"477":1,"478":1},"2":{"67":1,"68":1,"72":1,"238":3,"239":3,"240":3,"342":1,"344":1,"424":1,"425":1,"426":1,"476":3,"477":3,"478":3}}],["erc721data",{"2":{"241":2,"479":2}}],["erc721contractaddress",{"2":{"239":2,"241":1,"477":2,"479":1}}],["erc721tokenaddress",{"2":{"72":1,"78":1,"152":1,"157":1,"239":1,"477":1}}],["erc721interface",{"2":{"72":2,"78":2,"239":5,"241":2,"477":5,"479":2}}],["erc721",{"0":{"29":1,"30":1,"45":1,"49":1,"62":1,"67":1,"153":1},"2":{"4":1,"29":2,"30":1,"36":1,"39":3,"43":1,"45":1,"47":2,"48":2,"55":1,"60":4,"61":3,"67":1,"69":1,"86":1,"87":1,"152":3,"153":8,"333":1,"334":1}}],["e",{"2":{"4":1,"12":1,"72":1,"78":1,"126":1,"145":1,"151":1,"153":1,"155":1,"161":1,"229":1,"259":1,"269":1,"328":1,"359":1,"363":1,"467":1}}],["enum",{"2":{"391":1}}],["ensuring",{"2":{"193":1,"442":1}}],["ensures",{"2":{"78":1}}],["ensure",{"2":{"4":1,"7":1,"8":1,"135":1,"180":2,"185":1,"225":1,"390":2,"413":1,"438":1,"464":1}}],["engines",{"2":{"193":1,"196":1}}],["enclave",{"2":{"363":1}}],["encrypted",{"2":{"363":1}}],["encrypt",{"2":{"170":1}}],["encryption",{"2":{"170":1}}],["encourage",{"2":{"163":1,"334":1}}],["encoding",{"0":{"424":1},"1":{"425":1,"426":1,"427":1},"2":{"156":2,"328":1}}],["encoding=",{"2":{"145":2}}],["encodepacked",{"2":{"441":1,"442":1}}],["encodetypeddatadigest",{"2":{"426":2}}],["encodefunctiondata",{"2":{"72":1,"78":1,"79":2,"91":1,"238":3,"239":3,"240":3,"241":3,"414":2,"420":1,"476":3,"477":3,"478":3,"479":3}}],["encode",{"2":{"13":1,"156":1,"238":2,"239":2,"240":2,"399":5,"406":1,"426":1,"427":1,"443":2,"476":2,"477":2,"478":2}}],["encoded",{"2":{"9":1,"156":1,"425":2,"426":1,"427":1}}],["enabling",{"2":{"102":1,"251":1,"295":1,"363":1,"379":1}}],["enable",{"2":{"141":1,"145":1,"171":1}}],["enabled",{"2":{"29":1,"30":1,"43":1,"47":1,"247":1}}],["enables",{"2":{"6":1,"122":1,"361":1}}],["enjoy",{"2":{"102":1,"131":1,"196":1,"251":1,"379":1}}],["env",{"2":{"86":20,"91":11,"98":2,"372":2,"446":2,"447":2,"448":2,"449":2,"450":2,"460":2,"461":2}}],["environment",{"0":{"81":1,"87":1},"1":{"82":1},"2":{"80":1,"81":1,"86":5,"87":1,"88":1}}],["entire",{"2":{"156":1,"295":1,"328":1,"339":1}}],["entirely",{"2":{"70":1,"163":1}}],["entered",{"2":{"140":1}}],["enter",{"2":{"81":1,"82":1,"135":1,"140":1,"142":1,"143":1,"346":1}}],["enqueuetokensforrefresh",{"2":{"63":6}}],["enforce",{"2":{"9":1,"72":3,"364":1}}],["endingblocknumber",{"2":{"314":1}}],["endian",{"2":{"9":1}}],["endpoint",{"2":{"4":2,"6":1,"7":2,"10":1,"14":2,"32":2,"55":1,"56":1,"58":1,"60":1,"89":1,"348":2}}],["endpointssequence",{"2":{"55":1}}],["endpoints",{"0":{"40":1,"58":1},"2":{"2":3,"6":1,"8":1,"32":3,"55":3,"64":1}}],["end",{"2":{"4":2}}],["examine",{"2":{"156":1}}],["examples",{"0":{"262":1,"272":1,"357":1,"360":1},"2":{"32":1,"33":1,"34":1,"58":1,"200":1}}],["example",{"0":{"56":1,"110":1,"279":1,"288":1,"291":1,"392":1,"396":1},"2":{"1":1,"4":3,"29":1,"30":1,"32":1,"36":1,"38":1,"41":1,"43":1,"45":2,"47":2,"49":1,"56":2,"58":2,"62":1,"67":2,"68":1,"73":1,"78":2,"79":1,"91":1,"110":1,"126":1,"127":1,"129":2,"148":1,"149":2,"151":1,"153":1,"155":1,"156":1,"157":1,"159":1,"171":1,"193":1,"200":1,"202":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"225":1,"226":1,"237":1,"246":1,"249":1,"253":1,"261":2,"262":1,"263":1,"270":2,"273":1,"279":1,"289":1,"291":1,"294":3,"295":4,"329":3,"330":1,"331":3,"333":3,"364":1,"387":1,"391":1,"396":1,"447":1,"464":1,"465":1,"475":1,"484":1}}],["exists",{"2":{"171":1}}],["exist",{"2":{"145":2,"441":1,"446":1}}],["existing",{"2":{"8":1,"83":1,"129":1,"141":1,"196":1,"197":1}}],["excellent",{"2":{"199":1}}],["exception",{"2":{"309":1,"330":1}}],["exceptions",{"2":{"296":3}}],["except",{"2":{"141":1,"447":1}}],["exclude",{"2":{"156":1}}],["excluding",{"2":{"133":1}}],["external",{"2":{"363":1,"404":1,"412":1,"442":2}}],["externally",{"0":{"355":1},"1":{"356":1,"357":1},"2":{"354":1,"355":1,"417":1}}],["extension",{"0":{"221":1,"384":1},"2":{"70":1,"199":2,"220":1,"221":1,"384":1}}],["extensions",{"2":{"56":1,"200":1}}],["extend",{"2":{"69":1,"137":1,"415":1}}],["extra",{"2":{"246":2,"296":1,"484":2}}],["extremely",{"2":{"139":1,"157":1}}],["executing",{"2":{"419":2,"459":1}}],["executioncontext",{"2":{"86":2}}],["executed",{"2":{"9":1,"71":1,"79":2,"238":1,"239":1,"240":1,"460":1,"461":2,"476":1,"477":1,"478":1}}],["expires",{"2":{"461":1}}],["expiresat",{"2":{"449":2}}],["expiry",{"0":{"205":1},"2":{"205":2,"391":2}}],["express",{"2":{"442":1}}],["explicitly",{"2":{"295":1}}],["explanation",{"2":{"261":2,"270":2}}],["explain",{"2":{"183":1}}],["explorer",{"2":{"156":1}}],["explore",{"2":{"102":1,"251":1,"379":1}}],["expose",{"2":{"158":1}}],["exposes",{"2":{"148":1}}],["exposed",{"2":{"3":1}}],["exported=",{"2":{"145":1}}],["export",{"2":{"86":2,"129":1,"283":1,"294":1,"295":1,"430":1,"443":1,"448":3}}],["expanding",{"2":{"131":1}}],["expand",{"2":{"83":1,"142":1,"143":1,"185":1,"345":1,"346":1}}],["experimental",{"2":{"293":1,"295":1}}],["experiment",{"2":{"164":1}}],["experience",{"2":{"80":1,"101":1,"102":1,"111":1,"193":4,"196":2,"197":1,"199":1,"225":1,"229":1,"250":1,"251":1,"296":1,"378":1,"379":1,"390":1,"464":1,"467":1}}],["experiences",{"2":{"0":1,"196":2,"363":1,"392":1}}],["expects",{"2":{"330":1}}],["expect",{"2":{"160":1,"161":1}}],["expected",{"2":{"72":1,"307":1}}],["blueprintcallable",{"2":{"173":5}}],["blueprint",{"2":{"171":2}}],["blob",{"2":{"67":2,"68":1,"295":1}}],["blockcount",{"2":{"318":2}}],["blockchains",{"2":{"296":1}}],["blockchain",{"0":{"148":1,"158":1},"1":{"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1},"2":{"31":1,"36":1,"39":2,"41":1,"102":1,"148":3,"158":1,"193":1,"196":2,"200":1,"247":1,"251":1,"361":1,"379":1,"386":1}}],["blockrange",{"0":{"314":1},"2":{"314":2}}],["blockhash",{"2":{"312":1,"325":1}}],["blockbyhash",{"0":{"312":1},"2":{"312":1}}],["blockbynumber",{"0":{"311":1},"2":{"311":1}}],["blocknative",{"2":{"273":1}}],["blocknumbers",{"2":{"314":1}}],["blocknumber",{"0":{"313":1},"2":{"80":1,"310":5,"311":2,"313":2,"314":1,"316":3,"318":2,"320":3}}],["blocking",{"2":{"200":2}}],["blocks",{"2":{"36":1,"296":2,"314":1,"318":1}}],["block",{"2":{"7":4,"91":1,"156":1,"200":1,"310":3,"311":4,"312":4,"313":1,"314":2,"325":2,"460":1}}],["bp",{"2":{"171":1,"178":1}}],["bd",{"2":{"166":1}}],["b",{"0":{"75":1},"2":{"135":1,"138":2,"145":1,"171":1,"442":2}}],["bsc",{"0":{"38":1}}],["bnb",{"0":{"38":1}}],["breaches",{"2":{"427":1}}],["breaking",{"2":{"132":3,"166":3,"280":1}}],["breaks",{"2":{"67":1}}],["break",{"2":{"13":1}}],["brave",{"2":{"449":1}}],["branded",{"2":{"364":1}}],["branding",{"2":{"193":1}}],["brackets",{"2":{"328":1}}],["broken",{"2":{"179":1}}],["broadcast",{"2":{"173":1}}],["browsable",{"2":{"145":2}}],["browse",{"2":{"91":1,"145":1}}],["browsers",{"2":{"200":3,"382":1}}],["browser",{"0":{"384":1},"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1,"49":1,"57":1,"62":1,"63":2,"82":1,"175":1,"193":2,"199":3,"200":1,"243":1,"293":1,"295":4,"383":1,"388":1,"391":1,"481":1}}],["brown",{"2":{"67":1}}],["bring",{"2":{"165":1}}],["bob",{"2":{"426":1}}],["box",{"2":{"185":1}}],["bounded",{"2":{"394":1}}],["bounds",{"2":{"358":1}}],["bound",{"2":{"173":1}}],["bool",{"2":{"173":1,"330":2,"391":2,"408":1,"427":1}}],["boolean",{"2":{"29":2,"30":2,"43":2,"47":2,"86":1}}],["bonus",{"0":{"334":1},"2":{"161":1}}],["bow",{"2":{"68":1}}],["bored",{"2":{"67":2}}],["body",{"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1,"49":1,"62":1,"63":2,"86":3,"181":2,"391":2}}],["both",{"2":{"4":1,"29":1,"30":1,"32":1,"38":1,"43":1,"45":1,"47":1,"49":1,"55":1,"62":1,"63":2,"65":1,"67":1,"69":5,"195":1,"197":1,"362":1,"363":1,"387":1,"391":1,"419":2}}],["bottom",{"2":{"0":1,"114":3}}],["binaries",{"2":{"185":1}}],["binary",{"2":{"156":1,"439":1}}],["bindufunction",{"2":{"173":1}}],["bind",{"2":{"171":1,"173":3}}],["bin",{"2":{"81":1}}],["biginteger",{"2":{"320":1,"330":1}}],["bigintegar",{"2":{"310":2,"317":1,"320":1,"322":1,"323":1,"325":1,"331":6,"333":1}}],["bignumber",{"2":{"79":2}}],["big",{"2":{"9":1,"12":1}}],["bits",{"2":{"9":2}}],["bit",{"2":{"9":2,"185":1}}],["buy",{"2":{"190":1}}],["bug",{"2":{"145":1,"295":1}}],["bugfixes",{"2":{"132":1,"166":1}}],["built",{"2":{"32":1,"39":1,"99":1,"100":1,"101":1,"132":1,"163":1,"166":1,"171":1,"178":1,"185":1,"199":1,"244":1,"245":1,"250":1,"378":1,"482":1,"483":1}}],["builds",{"2":{"132":1,"133":1,"166":1}}],["building",{"0":{"71":1,"242":1,"480":1},"1":{"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"243":1,"244":1,"245":1,"246":1,"481":1,"482":1,"483":1,"484":1},"2":{"193":1,"194":1,"196":1,"246":1,"249":1,"484":1}}],["builder",{"0":{"24":1,"73":1,"83":1,"186":1,"335":1,"341":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1,"84":1,"85":1,"187":1,"188":1,"189":1,"190":1,"191":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"2":1,"3":1,"7":1,"10":1,"12":2,"13":2,"17":1,"28":3,"29":1,"31":3,"33":1,"36":1,"37":3,"39":3,"42":3,"44":3,"46":3,"49":1,"52":1,"62":1,"63":1,"78":1,"80":2,"83":2,"113":1,"138":2,"150":3,"152":2,"154":2,"160":1,"169":1,"186":1,"187":1,"188":1,"198":1,"308":1,"336":1,"341":1,"342":1}}],["build",{"2":{"1":1,"10":1,"36":1,"56":1,"73":1,"80":1,"86":1,"87":2,"135":2,"137":1,"139":1,"145":1,"185":4,"186":1,"193":2,"228":1,"249":1,"296":1,"337":1,"382":1,"383":1,"392":1,"466":1}}],["burn",{"0":{"22":1},"2":{"157":1}}],["bundling",{"2":{"241":1,"479":1}}],["bundle",{"0":{"9":1},"2":{"9":1,"10":1,"238":1,"239":1,"240":1,"416":1,"419":3,"476":1,"477":1,"478":1}}],["bunch",{"2":{"8":1,"199":1}}],["bump",{"2":{"8":1}}],["button",{"2":{"83":1,"90":1,"108":2,"109":2,"124":2,"290":1}}],["but",{"2":{"5":1,"36":2,"39":1,"45":2,"47":2,"55":2,"57":1,"65":1,"67":1,"70":1,"78":2,"98":1,"99":1,"100":1,"137":1,"148":1,"156":1,"161":1,"164":1,"199":2,"226":1,"244":1,"245":1,"247":1,"249":1,"309":1,"334":1,"363":1,"364":1,"365":1,"372":1,"398":1,"411":1,"417":1,"442":2,"460":1,"465":1,"482":1,"483":1}}],["banner",{"2":{"200":2,"212":3}}],["bannerurl",{"0":{"212":1},"2":{"200":2,"212":1}}],["bar",{"2":{"138":1,"164":1}}],["basis",{"2":{"129":1}}],["basics",{"2":{"337":1}}],["basic",{"2":{"80":1,"106":1,"149":2,"151":1,"153":1,"155":1,"164":1}}],["bash",{"2":{"81":1}}],["based",{"0":{"174":1,"175":1,"176":1},"2":{"156":1,"174":2,"175":2,"178":1,"193":3,"260":1,"270":3,"271":1,"272":2,"293":1,"294":1,"296":1,"451":1}}],["baseuri",{"2":{"64":1}}],["baseuris",{"2":{"4":1}}],["basecardid",{"2":{"56":1,"68":1}}],["base",{"0":{"345":1},"2":{"4":1,"344":1,"345":1}}],["batching",{"0":{"428":1},"2":{"79":1,"157":1,"238":1,"239":1,"240":1,"476":1,"477":1,"478":1}}],["batch",{"0":{"157":1,"241":1,"479":1},"2":{"60":2,"79":3,"157":3}}],["batched",{"2":{"8":1,"56":1,"79":1,"157":1,"305":1,"306":1}}],["balancequery",{"2":{"331":3}}],["balanceof",{"2":{"331":2,"333":1}}],["balanceat",{"0":{"310":1},"2":{"309":1,"310":2}}],["balance",{"0":{"38":1},"2":{"38":3,"310":5,"331":3,"333":1}}],["balances",{"0":{"17":1,"30":1,"37":1},"1":{"38":1},"2":{"29":2,"30":1,"39":1}}],["back",{"2":{"56":1,"188":1,"222":1,"387":1}}],["background",{"2":{"29":1,"30":1,"34":1,"38":1,"43":1,"45":1,"47":1,"49":1,"53":1,"62":1,"63":2,"67":1}}],["backends",{"0":{"242":1,"480":1},"1":{"243":1,"244":1,"245":1,"246":1,"481":1,"482":1,"483":1,"484":1},"2":{"8":1,"31":1,"99":1,"100":1,"243":1,"244":1,"245":1,"481":1,"482":1,"483":1}}],["backend",{"0":{"246":1,"484":1},"2":{"3":1,"32":1,"171":2,"173":1,"174":1,"193":1,"246":3,"293":1,"365":1,"484":3}}],["backup",{"2":{"0":1,"356":1}}],["byte",{"2":{"330":1,"427":1}}],["bytecode",{"2":{"160":5,"316":1}}],["bytes4",{"2":{"427":4}}],["bytes1",{"2":{"401":1}}],["bytesn",{"2":{"330":1}}],["bytes",{"2":{"91":1,"240":2,"241":1,"330":2,"346":1,"401":1,"427":3,"478":2,"479":1}}],["bytes32",{"2":{"83":1,"399":1,"401":3,"406":1,"408":1,"412":1,"422":1,"427":3,"440":1,"443":6}}],["by",{"2":{"4":1,"6":1,"8":1,"9":1,"10":2,"29":2,"36":2,"56":1,"63":1,"67":1,"70":3,"71":1,"72":4,"73":1,"78":3,"80":1,"81":1,"83":4,"84":1,"87":1,"88":1,"89":1,"102":1,"111":1,"113":1,"121":1,"130":1,"131":2,"136":2,"137":1,"138":1,"139":2,"145":6,"149":1,"151":2,"153":2,"154":1,"155":2,"156":1,"157":1,"158":1,"164":1,"169":1,"178":1,"180":1,"183":1,"188":1,"191":1,"194":1,"200":3,"211":1,"216":1,"217":1,"219":1,"222":2,"225":1,"229":1,"249":1,"251":1,"257":1,"267":1,"287":1,"290":1,"294":1,"295":2,"298":1,"308":1,"309":2,"310":1,"312":1,"314":1,"324":1,"325":1,"358":1,"363":3,"364":3,"365":1,"379":1,"386":1,"387":1,"389":1,"390":1,"391":2,"393":1,"394":1,"401":2,"403":2,"405":1,"406":1,"407":1,"413":1,"414":1,"415":1,"416":1,"420":1,"421":1,"427":1,"431":1,"438":1,"440":1,"444":3,"447":2,"448":1,"453":1,"458":1,"460":1,"461":1,"464":1,"467":1}}],["beautifully",{"2":{"382":1,"383":1}}],["beautify",{"2":{"163":1}}],["beauty",{"2":{"199":1}}],["beyond",{"2":{"188":1,"415":1}}],["being",{"2":{"157":1,"170":2,"171":1,"293":1,"391":1,"417":1}}],["bespoke",{"2":{"157":1}}],["best",{"2":{"8":1,"90":1,"197":1,"200":2,"212":1,"246":1,"296":1,"484":1}}],["beneficial",{"2":{"157":1}}],["benefit",{"2":{"80":1,"131":1}}],["benefits",{"0":{"197":1},"2":{"6":1,"8":1,"199":1}}],["behalf",{"2":{"229":1,"467":1}}],["behavior",{"2":{"435":1}}],["behaviour",{"2":{"138":1,"404":1,"411":1}}],["behaves",{"2":{"222":1}}],["behind",{"2":{"39":1,"327":1}}],["becomes",{"2":{"386":1}}],["become",{"2":{"137":1}}],["because",{"2":{"136":1,"137":1,"358":1,"365":1,"402":1}}],["belong",{"2":{"440":1}}],["below",{"2":{"2":1,"4":2,"29":1,"31":1,"32":2,"33":1,"34":1,"48":1,"55":1,"56":1,"59":1,"61":1,"65":1,"67":1,"73":1,"89":1,"106":1,"107":1,"123":1,"179":1,"185":1,"201":1,"249":2,"262":1,"294":1,"295":1,"413":1,"448":1}}],["bells",{"2":{"296":1}}],["believers",{"2":{"154":1}}],["believe",{"2":{"136":1}}],["begin",{"2":{"448":1}}],["beginning",{"2":{"73":1}}],["began",{"2":{"136":1}}],["better",{"2":{"156":1,"165":2,"181":1}}],["beta",{"2":{"97":1,"166":1,"371":1}}],["between",{"0":{"193":1,"196":1},"2":{"79":1,"139":1,"200":1,"437":1}}],["before",{"2":{"73":2,"86":1,"157":1,"169":1,"180":1,"185":1,"294":2,"419":2,"460":1,"461":2}}],["been",{"2":{"36":1,"178":1,"363":1,"398":1,"447":1,"457":2,"458":1}}],["be",{"2":{"1":1,"3":4,"4":1,"8":1,"9":1,"10":1,"13":1,"29":2,"30":2,"36":4,"43":2,"47":2,"55":1,"58":1,"63":1,"69":1,"71":2,"72":7,"78":1,"79":3,"80":2,"81":1,"83":1,"84":1,"88":1,"90":1,"97":1,"98":1,"113":1,"116":1,"117":1,"118":1,"119":3,"120":3,"121":3,"132":1,"136":3,"137":2,"138":1,"147":1,"148":1,"150":1,"151":1,"153":1,"155":1,"156":3,"161":2,"164":1,"166":1,"169":2,"170":2,"171":3,"173":3,"174":1,"178":2,"180":3,"181":1,"183":1,"185":1,"193":2,"200":1,"202":1,"204":2,"207":1,"210":1,"211":1,"213":1,"214":1,"215":1,"216":1,"217":1,"219":2,"222":2,"225":1,"229":1,"236":1,"241":2,"248":1,"254":1,"257":1,"258":1,"259":1,"263":1,"267":1,"269":1,"273":1,"280":1,"281":1,"283":1,"284":1,"287":1,"289":1,"293":1,"294":2,"295":9,"296":1,"297":1,"300":1,"305":3,"306":3,"307":1,"309":2,"311":1,"314":1,"316":1,"318":1,"320":1,"330":1,"333":1,"345":2,"346":1,"353":3,"358":1,"361":2,"362":1,"364":2,"365":3,"371":1,"372":1,"377":1,"385":3,"386":2,"388":1,"389":1,"390":5,"394":1,"395":1,"400":1,"401":1,"403":2,"405":2,"407":1,"409":1,"411":1,"413":4,"416":1,"417":1,"419":5,"420":1,"421":2,"422":2,"425":1,"426":1,"427":1,"436":1,"438":1,"439":1,"442":2,"444":1,"446":1,"447":3,"450":2,"453":1,"456":1,"458":1,"460":1,"461":4,"464":1,"467":1,"474":1,"479":2}}],["gnosis",{"2":{"360":1}}],["guestmodule",{"0":{"429":1},"2":{"430":1}}],["guess",{"2":{"337":1}}],["guarantee",{"2":{"363":1,"453":1}}],["guarantees",{"2":{"361":1}}],["guard",{"0":{"364":1,"389":1},"2":{"68":1,"364":4,"365":2,"387":2,"389":2,"390":1,"460":1}}],["gui",{"2":{"174":2,"178":3}}],["guides",{"2":{"158":1,"194":1}}],["guide",{"2":{"80":1,"81":1,"83":1,"84":1,"85":1,"103":1,"104":1,"128":1,"129":1,"183":1,"194":1,"252":1,"336":1,"380":1}}],["got",{"2":{"345":1}}],["goerli",{"2":{"259":1,"269":1}}],["goes",{"2":{"156":1}}],["good",{"2":{"129":1}}],["googlelogin",{"2":{"448":3}}],["googleoauthprovider",{"2":{"448":3}}],["googleclientid",{"2":{"183":1}}],["google",{"0":{"183":1,"448":1},"2":{"102":1,"119":1,"130":2,"141":1,"183":1,"200":1,"213":2,"215":1,"251":1,"364":1,"379":1,"390":1,"446":1,"448":8,"449":4,"453":1}}],["golang",{"2":{"99":1,"244":1,"482":1}}],["goldcardid",{"2":{"56":1}}],["go",{"0":{"34":1,"53":1,"99":1,"244":1,"482":1},"2":{"29":1,"30":1,"32":2,"34":3,"38":1,"43":1,"45":1,"47":2,"49":1,"53":3,"57":1,"59":1,"62":1,"63":2,"99":6,"100":2,"137":1,"171":1,"179":1,"226":3,"244":6,"245":2,"246":1,"328":1,"451":1,"465":3,"482":6,"483":2,"484":1}}],["greater",{"2":{"437":1}}],["great",{"2":{"147":1,"148":1,"159":1,"160":1,"196":1}}],["grin",{"2":{"67":1}}],["grantrole",{"2":{"83":1}}],["grade",{"2":{"56":1}}],["grab",{"2":{"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1}}],["groupname",{"2":{"265":1}}],["groups",{"0":{"227":1}}],["group",{"2":{"8":1}}],["geared",{"2":{"196":1}}],["genericfailure",{"2":{"178":1}}],["generated",{"2":{"81":1,"82":1,"83":2,"90":1,"229":1,"299":1,"337":1,"387":2,"390":2,"447":2,"459":1,"467":1}}],["generate",{"0":{"232":1,"470":1},"2":{"79":2,"83":2,"90":2,"183":2,"299":1,"390":1,"438":1}}],["generating",{"2":{"17":1,"83":1}}],["general",{"2":{"58":1,"137":1,"148":1,"160":1,"185":1,"296":2}}],["getelementbyid",{"2":{"448":1}}],["getetherbalance",{"2":{"38":5}}],["getimagehash",{"2":{"421":1}}],["getfunction",{"2":{"414":2,"420":1}}],["getuseractivities",{"0":{"391":1},"1":{"392":1},"2":{"391":4,"392":1}}],["getchainid",{"2":{"234":1,"472":1}}],["getcomponentinchildren",{"2":{"139":1}}],["getcontractinfo",{"2":{"49":1,"53":1,"60":1}}],["getcontractinfobatch",{"2":{"49":5,"60":1}}],["getcollection",{"2":{"4":1}}],["getprovider",{"2":{"234":1,"472":1}}],["getaddress",{"0":{"302":1},"2":{"224":1,"231":1,"232":1,"239":1,"240":1,"302":1,"310":2,"320":2,"329":2,"333":1,"401":1,"463":1,"469":1,"470":1,"477":1,"478":1}}],["getwallet",{"2":{"200":5,"224":1,"225":1,"463":1,"464":1}}],["getvalid",{"2":{"180":1}}],["getloginurl",{"2":{"173":1}}],["getlatestblock",{"2":{"7":2}}],["getsessionhash",{"2":{"446":1,"447":1,"448":2}}],["getstorageat",{"2":{"406":1}}],["getstoredcredentials",{"2":{"180":2}}],["getstoredkey",{"2":{"170":1}}],["getsigner",{"2":{"12":1,"72":2,"78":1,"79":2,"83":1,"91":1,"231":1,"237":1,"238":2,"239":2,"240":2,"241":2,"469":1,"475":1,"476":2,"477":2,"478":2,"479":2}}],["getkitconnectwallets",{"2":{"130":2}}],["getdefaultconnectors",{"2":{"106":2,"107":2,"130":1}}],["gettoporders",{"2":{"352":1}}],["gettokenrefreshstatus",{"2":{"63":5}}],["gettokenmetadatabatch",{"2":{"60":1}}],["gettokenmetadata",{"2":{"60":1,"62":6}}],["gettokensupplies",{"2":{"47":7}}],["gettokenbalances",{"2":{"29":9,"30":7,"33":1,"34":1,"38":2}}],["gettransactionhistory",{"2":{"43":7,"45":7}}],["getting",{"0":{"41":1,"95":1,"104":1,"194":1,"198":1,"369":1},"1":{"96":1,"97":1,"98":1,"105":1,"370":1,"371":1,"372":1},"2":{"103":1,"193":1,"252":1,"380":1}}],["getmetatxnreceipt",{"2":{"14":2}}],["getblocknumber",{"2":{"86":3,"91":3}}],["getblock",{"2":{"7":1}}],["get",{"0":{"340":1},"2":{"0":1,"4":1,"7":1,"28":1,"31":1,"34":1,"36":1,"37":1,"39":1,"42":1,"44":1,"46":1,"53":1,"58":3,"72":2,"78":2,"80":1,"86":4,"88":1,"91":2,"94":1,"105":1,"136":1,"156":1,"166":2,"175":1,"180":1,"185":1,"194":2,"198":2,"224":1,"307":1,"310":4,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"318":1,"319":1,"320":1,"322":1,"323":1,"324":1,"325":1,"348":1,"351":1,"368":1,"375":1,"382":1,"383":1,"446":2,"463":1}}],["g",{"2":{"12":1,"72":1,"126":1,"151":1,"153":1,"155":1,"161":1,"229":1,"259":1,"269":1,"328":1,"359":1,"363":1,"467":1}}],["git",{"2":{"81":1,"135":3}}],["github",{"2":{"29":1,"30":1,"34":2,"36":1,"38":1,"43":1,"45":1,"47":1,"49":1,"53":2,"62":1,"63":2,"67":2,"68":1,"99":1,"110":1,"135":1,"244":1,"253":1,"263":1,"273":1,"289":1,"291":1,"294":1,"295":2,"482":1}}],["githubusercontent",{"2":{"10":1}}],["gives",{"2":{"171":1}}],["give",{"0":{"7":1},"2":{"68":1,"164":2,"180":1,"193":1,"461":1}}],["given",{"2":{"3":1,"138":1,"169":1,"303":2,"304":2,"305":2,"306":2,"307":1,"310":2,"316":1,"317":1,"320":2,"321":1,"406":1,"410":1,"414":1,"416":1}}],["gain",{"2":{"365":2}}],["gather",{"2":{"337":1,"339":1}}],["gate",{"2":{"164":1}}],["gateway",{"0":{"6":1},"1":{"7":1},"2":{"6":1,"308":1}}],["gaming",{"2":{"196":1}}],["gameobject",{"2":{"139":1,"164":1}}],["game",{"0":{"15":1,"21":1,"22":1},"2":{"32":2,"39":1,"41":1,"56":1,"80":1,"136":5,"166":2,"192":1,"193":6,"195":1,"196":4,"197":1,"198":1,"233":1,"247":1,"249":1,"342":1,"471":1}}],["games",{"2":{"0":1,"31":1,"39":1,"132":1,"154":1,"166":1,"196":2}}],["gasused",{"2":{"461":1}}],["gaslist",{"2":{"394":1}}],["gaslimit",{"0":{"419":1},"2":{"327":1,"329":1,"414":2,"419":2,"420":1,"461":1}}],["gaslimitestimator",{"2":{"327":1}}],["gasless",{"0":{"80":1},"1":{"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1},"2":{"197":1}}],["gastipcap",{"2":{"323":1}}],["gasprice",{"2":{"322":1,"327":1,"329":1}}],["gas",{"0":{"10":1,"73":1,"76":1,"77":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1},"2":{"8":7,"12":1,"13":2,"17":1,"72":3,"78":2,"80":1,"149":3,"157":1,"310":1,"317":2,"318":1,"322":1,"323":1,"327":1,"398":1,"419":1}}],["gt",{"2":{"3":2,"7":2,"9":3,"12":1,"58":10,"69":2,"72":6,"78":2,"82":2,"83":2,"86":7,"89":2,"90":4,"91":5,"106":9,"107":21,"108":6,"109":4,"111":3,"123":10,"124":4,"126":1,"129":2,"130":8,"133":3,"135":2,"137":1,"138":4,"139":1,"142":2,"143":2,"145":42,"161":1,"164":3,"169":1,"173":10,"178":1,"180":1,"181":2,"185":3,"200":1,"226":2,"247":1,"248":4,"254":1,"284":2,"294":4,"295":6,"314":2,"330":6,"331":5,"339":1,"348":3,"376":1,"377":4,"391":1,"427":1,"442":1,"448":16,"456":1,"457":1,"458":1,"465":2}}],["due",{"2":{"164":1,"185":1,"280":1,"294":1,"453":1}}],["during",{"2":{"138":1,"169":1,"185":1,"398":1,"407":1,"438":2,"444":2}}],["dropsession",{"2":{"450":1}}],["dropdown",{"2":{"3":1}}],["drawer",{"2":{"171":1}}],["drag",{"2":{"137":1,"139":1,"185":1}}],["ddos",{"0":{"86":1},"1":{"87":1,"88":1,"89":1,"90":1},"2":{"80":1}}],["d",{"2":{"10":1,"14":1,"29":2,"30":2,"32":1,"33":1,"34":1,"38":2,"43":2,"45":2,"47":1,"49":1,"56":2,"59":1,"62":1,"63":2,"89":1,"90":1,"156":1,"226":1,"246":2,"249":1,"391":1,"461":1,"465":1,"484":2}}],["digest",{"2":{"441":1,"443":1}}],["digit",{"2":{"140":1}}],["diligence",{"0":{"433":1},"2":{"431":1}}],["dive",{"2":{"103":1,"252":1,"380":1}}],["difficult",{"2":{"296":1}}],["difficulty",{"2":{"80":1}}],["differs",{"2":{"261":1,"270":1,"402":1}}],["differing",{"2":{"179":1}}],["difference",{"2":{"239":1,"240":1,"477":1,"478":1}}],["differences",{"0":{"193":1,"196":1},"2":{"65":1}}],["different",{"2":{"179":1,"200":1,"238":1,"239":1,"240":1,"249":1,"354":1,"362":1,"364":1,"476":1,"477":1,"478":1}}],["dictionary",{"2":{"68":1,"69":1}}],["dice",{"2":{"68":1}}],["die",{"2":{"68":1}}],["discuss",{"2":{"453":1}}],["discouraged",{"2":{"293":1}}],["disconnectweb3react",{"2":{"284":1}}],["disconnect",{"2":{"208":1,"222":1}}],["discord",{"2":{"102":1,"141":1,"213":1,"226":1,"251":1,"379":1,"465":1}}],["disk",{"2":{"173":1,"179":1}}],["disabled",{"2":{"139":1}}],["displayedassets",{"0":{"121":1}}],["displayed",{"2":{"119":1,"120":1,"121":4,"178":1,"222":1,"287":1,"353":1,"385":1}}],["displaying",{"2":{"104":1}}],["dispatched",{"2":{"14":1,"79":1}}],["dispatches",{"2":{"10":1}}],["dispatch",{"2":{"8":1,"10":1,"71":1,"72":2,"79":1,"237":1,"475":1}}],["dispatching",{"2":{"8":1}}],["dist",{"2":{"248":1,"377":1}}],["distribution",{"0":{"248":1,"377":1},"2":{"248":1,"377":1,"442":1}}],["district",{"2":{"67":1}}],["distractions",{"2":{"196":1}}],["distinct",{"2":{"79":2,"189":1,"451":1}}],["directive",{"2":{"295":4}}],["direct",{"2":{"201":1,"364":1,"414":1}}],["directory",{"0":{"294":1,"295":1},"2":{"36":2,"81":1,"86":1,"171":1,"293":2,"295":2}}],["directly",{"2":{"10":1,"32":1,"35":1,"39":1,"48":2,"54":1,"55":1,"61":2,"148":1,"159":1,"160":1,"229":1,"247":1,"329":1,"353":1,"364":1,"376":1,"385":1,"398":2,"422":1,"447":1,"448":1,"467":1}}],["dangerous",{"2":{"404":1,"419":1}}],["days",{"2":{"188":1}}],["dark",{"2":{"113":1,"200":1}}],["dashboard",{"2":{"81":1,"364":1}}],["damage",{"2":{"56":1,"365":1}}],["datatypes",{"2":{"330":2}}],["data2",{"2":{"238":2,"239":2,"240":2,"476":2,"477":2,"478":2}}],["data1",{"2":{"238":2,"239":2,"240":2,"476":2,"477":2,"478":2}}],["databeat",{"2":{"187":2}}],["database",{"2":{"148":2,"187":2}}],["data",{"0":{"330":1,"425":1,"426":1},"2":{"13":3,"31":1,"36":2,"39":2,"63":1,"68":1,"69":3,"72":2,"78":2,"79":2,"91":3,"145":4,"149":1,"173":1,"187":1,"188":2,"238":4,"239":4,"240":6,"241":4,"329":1,"331":1,"346":1,"352":1,"363":1,"391":1,"414":2,"420":1,"425":1,"426":2,"427":1,"460":3,"461":2,"476":4,"477":4,"478":6,"479":4}}],["dapps",{"2":{"8":1,"201":1,"222":1,"249":1,"262":1,"383":1}}],["dapp",{"0":{"74":1,"75":1,"90":1,"200":1,"220":1,"221":1},"2":{"8":1,"32":1,"39":1,"41":1,"83":1,"89":1,"90":1,"199":3,"200":9,"202":1,"204":1,"206":1,"212":1,"220":2,"222":6,"225":2,"226":1,"246":1,"247":1,"249":3,"253":2,"263":2,"273":2,"289":2,"291":1,"295":1,"376":1,"383":1,"464":2,"465":1,"484":1}}],["daicontractaddress",{"2":{"238":3,"241":1,"476":3,"479":1}}],["daily",{"2":{"186":1}}],["dai",{"2":{"8":1,"72":1,"456":2}}],["debit",{"2":{"353":1,"385":1}}],["debugging",{"2":{"296":1}}],["deactivate",{"2":{"284":1}}],["deactivated",{"2":{"284":1}}],["deactivation",{"0":{"284":1}}],["deal",{"2":{"156":1}}],["derive",{"2":{"232":1,"470":1}}],["denoted",{"2":{"156":1}}],["deep",{"2":{"141":2,"145":3}}],["delightful",{"2":{"200":1}}],["delivering",{"2":{"196":1}}],["delivery",{"2":{"8":1}}],["del",{"2":{"173":3}}],["delegatecall",{"0":{"415":1},"2":{"414":2,"415":2,"420":1}}],["delegates",{"2":{"173":2}}],["delegate",{"2":{"171":1,"173":1,"331":1}}],["delete",{"2":{"86":1,"185":3}}],["delayed",{"2":{"156":1}}],["delayedencodedata",{"2":{"156":2,"157":1}}],["delayedencode",{"0":{"156":1},"2":{"156":4,"157":1}}],["departments",{"2":{"442":1}}],["department",{"2":{"442":2}}],["deprecated",{"2":{"385":1}}],["depth",{"2":{"258":1,"268":1}}],["depends",{"2":{"294":1}}],["depending",{"2":{"261":1,"270":1,"344":1}}],["depend",{"2":{"247":1,"293":1,"376":1}}],["dependent",{"2":{"173":1}}],["dependencies",{"2":{"105":1,"247":1,"376":1}}],["dependency",{"2":{"79":1,"247":1,"376":1}}],["dependant",{"2":{"164":1}}],["deploycontract",{"2":{"160":4}}],["deploymentresult",{"2":{"332":2}}],["deployment",{"0":{"160":1,"429":1},"2":{"81":1,"160":1,"403":1,"444":1}}],["deploying",{"0":{"332":1},"2":{"17":1,"63":1,"157":1,"160":2}}],["deployedwalletcontext",{"2":{"226":1,"465":1}}],["deployedcontractaddress",{"2":{"160":1}}],["deployed",{"2":{"8":1,"73":2,"86":2,"87":1,"328":1,"344":1,"422":2,"444":1}}],["deploy",{"0":{"15":1,"19":1,"20":1,"25":1,"81":1,"82":1,"83":1,"89":1,"342":1},"1":{"82":1,"84":1,"85":1},"2":{"4":2,"6":1,"17":1,"80":2,"81":1,"82":1,"83":1,"88":1,"89":1,"91":1,"150":1,"152":1,"154":1,"160":2,"332":2,"341":1,"342":1,"444":1}}],["defi",{"2":{"202":1}}],["defines",{"2":{"404":1,"412":1,"435":1}}],["define",{"2":{"364":1,"435":1,"447":1}}],["defined",{"2":{"69":2,"173":1,"259":1,"269":1,"298":1,"308":1,"333":1,"334":1,"393":1,"401":2,"406":1,"414":1,"415":1,"417":1}}],["definition",{"2":{"156":1}}],["defense",{"2":{"136":2,"364":1}}],["defaultabicoder",{"2":{"399":1,"406":2}}],["defaultpurchaseamount",{"0":{"218":1},"2":{"218":1}}],["defaultfundingcurrency",{"0":{"217":1},"2":{"200":2,"217":1,"219":2}}],["defaulting",{"2":{"149":1}}],["defaultnetwork",{"0":{"259":1,"269":1},"2":{"130":1,"200":1,"255":1,"265":1}}],["defaulttheme",{"0":{"113":1},"2":{"113":1}}],["defaultchainid",{"2":{"106":1,"107":1}}],["defaults",{"2":{"98":1,"164":1,"320":1,"372":1,"390":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["default",{"2":{"29":2,"30":1,"36":1,"43":1,"47":1,"71":1,"86":1,"139":1,"145":3,"161":1,"178":1,"188":1,"205":1,"209":1,"216":1,"217":1,"218":2,"219":2,"259":2,"268":1,"269":2,"277":1,"286":1,"290":1,"294":1,"295":1,"310":2,"333":1,"390":1,"448":1}}],["demand",{"0":{"429":1},"2":{"199":2,"220":1,"361":1}}],["demos",{"2":{"194":1,"198":1}}],["demo",{"0":{"93":1,"350":1,"367":1,"374":1},"2":{"93":1,"102":1,"106":1,"107":1,"136":3,"164":2,"200":2,"220":1,"249":1,"251":1,"253":1,"255":1,"262":4,"263":1,"265":1,"272":3,"273":1,"279":1,"283":1,"288":1,"289":1,"291":2,"295":1,"350":1,"367":1,"374":1,"379":1,"448":2}}],["demonstrated",{"2":{"294":1}}],["demonstrates",{"2":{"226":1,"465":1}}],["demonstrate",{"2":{"55":1}}],["demonstrating",{"2":{"4":1}}],["demystify",{"2":{"65":1}}],["desc",{"2":{"352":1}}],["described",{"2":{"70":1,"201":1,"294":1,"295":1}}],["describe",{"2":{"65":1}}],["description",{"2":{"56":3,"67":2,"68":1,"258":1,"268":1,"337":2,"338":2}}],["destinations",{"2":{"185":1}}],["desktop",{"0":{"175":1},"2":{"175":2,"178":1,"199":1}}],["desired",{"2":{"164":1}}],["design",{"2":{"157":1,"359":1}}],["designed",{"2":{"1":1,"36":1,"187":1,"199":1}}],["decoding",{"2":{"328":1}}],["decode",{"2":{"406":2}}],["decodeproof",{"2":{"226":1,"465":1}}],["decoded",{"2":{"43":1}}],["declare",{"2":{"295":1}}],["declared",{"2":{"295":1,"419":1}}],["declaration",{"2":{"295":1}}],["decline",{"2":{"81":1}}],["decentralized",{"2":{"229":1,"467":1}}],["decrypt",{"2":{"170":1}}],["decimalnormalizer",{"2":{"149":2,"150":1,"151":1,"156":2,"157":2,"327":1,"333":2}}],["decimals",{"2":{"10":3,"56":1,"67":1,"68":1,"70":1,"149":3,"150":4}}],["determining",{"2":{"327":1}}],["determined",{"2":{"204":1}}],["determine",{"2":{"121":1,"329":1}}],["determines",{"2":{"113":1,"114":1,"118":1,"119":1,"120":1,"400":1,"436":1,"456":1}}],["detect",{"2":{"108":1}}],["detects",{"2":{"39":1}}],["detail",{"2":{"70":1}}],["details",{"0":{"16":1,"343":1},"2":{"43":1,"45":1,"47":3,"67":1,"68":1,"83":1,"129":1,"222":1,"258":1,"343":1,"346":1,"364":1}}],["devices",{"2":{"383":1,"388":1}}],["device",{"2":{"233":1,"386":1,"387":1,"450":1,"471":1}}],["deviate",{"2":{"65":1}}],["developing",{"2":{"296":1}}],["developer",{"2":{"353":1,"385":1}}],["developers",{"2":{"111":1,"122":1,"199":1,"392":1}}],["developed",{"2":{"199":1,"249":1}}],["development",{"2":{"12":1,"81":1,"192":1,"193":1,"198":1,"247":1,"364":1}}],["dev",{"2":{"0":1,"81":2,"82":1,"89":1,"90":1,"100":1,"245":1,"352":1,"391":2,"427":1,"483":1}}],["dom",{"2":{"448":1}}],["doing",{"2":{"333":1}}],["doubt",{"2":{"156":1}}],["don",{"2":{"156":1,"164":1,"165":1,"186":1,"222":1,"241":1,"329":1,"398":1,"400":1,"445":1,"453":1,"479":1}}],["done",{"2":{"3":1,"83":1,"84":1,"97":1,"147":2,"158":1,"160":1,"174":1,"175":1,"181":1,"222":1,"371":1,"387":1,"461":1}}],["download",{"2":{"137":1}}],["down",{"2":{"81":1,"119":1,"120":1,"142":1,"143":1,"328":1}}],["downside",{"2":{"36":1}}],["do",{"0":{"294":1,"295":1},"2":{"56":1,"67":1,"70":1,"79":1,"83":2,"90":1,"135":1,"137":2,"138":1,"147":1,"148":2,"159":1,"160":2,"165":1,"170":2,"178":1,"186":1,"225":2,"226":3,"249":1,"294":1,"328":2,"338":1,"358":1,"464":2,"465":3}}],["documented",{"2":{"158":1}}],["document",{"2":{"156":1,"448":1}}],["documentation",{"2":{"1":1,"2":1,"8":1,"39":1,"96":1,"106":1,"136":2,"149":1,"150":1,"152":1,"154":1,"309":1,"310":1,"370":1}}],["docs",{"2":{"33":1,"34":1,"50":2,"67":2,"86":1,"87":1,"139":1,"145":1,"158":1,"183":1,"184":1,"249":1}}],["doesn",{"2":{"8":1,"133":1,"145":2,"178":1,"402":1,"413":1,"414":1,"418":1,"419":1,"446":1}}],["does",{"0":{"293":1},"2":{"0":1,"141":1,"149":1,"364":1,"444":1,"452":1}}],["lv7xncqh",{"2":{"68":1}}],["loss",{"2":{"404":1}}],["lost",{"2":{"387":3,"389":1}}],["longer",{"2":{"391":1}}],["long",{"2":{"200":1,"346":1,"447":1}}],["locking",{"2":{"219":1}}],["lockfundingcurrencytodefault",{"0":{"219":1},"2":{"200":2}}],["locate",{"2":{"138":1,"139":1,"164":1}}],["located",{"2":{"56":1,"138":1}}],["location",{"2":{"114":1}}],["localhost",{"2":{"406":1}}],["localstorage",{"2":{"232":1,"470":1}}],["locally",{"2":{"83":1}}],["local",{"2":{"81":4,"83":1,"90":1,"229":1,"232":1,"236":1,"425":1,"426":1,"467":1,"470":1,"474":1}}],["lots",{"2":{"181":2}}],["loading",{"2":{"236":1,"448":1,"474":1}}],["load",{"2":{"138":2}}],["love",{"2":{"131":1}}],["look",{"2":{"86":1,"103":1,"107":1,"156":1,"188":1,"225":1,"247":1,"252":1,"329":1,"331":1,"337":1,"338":1,"345":2,"376":1,"380":1,"464":1}}],["looking",{"2":{"69":1}}],["lookup",{"2":{"56":1}}],["logic",{"2":{"358":1}}],["logically",{"2":{"297":1}}],["loginpanel",{"2":{"139":5}}],["logins",{"2":{"102":1,"196":1,"251":1,"379":1,"387":1,"447":2,"454":2}}],["login",{"0":{"201":1,"387":1,"452":1,"453":1},"1":{"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"388":1,"389":1,"390":1},"2":{"81":3,"89":1,"141":1,"147":1,"171":1,"173":5,"196":1,"197":1,"363":3,"365":1,"386":1,"387":2,"390":1,"448":5,"451":1,"454":1}}],["logging",{"2":{"212":1,"452":1,"453":1}}],["logged",{"2":{"81":1}}],["logtemp",{"2":{"173":1}}],["logs",{"2":{"14":1,"448":1,"460":3}}],["logolight",{"2":{"129":2}}],["logodark",{"2":{"129":2}}],["logouri",{"2":{"56":1}}],["logourl",{"0":{"116":1},"2":{"10":3}}],["logo",{"2":{"56":1,"116":1}}],["logos",{"2":{"10":2,"193":1}}],["log",{"2":{"7":1,"12":1,"13":1,"29":2,"30":2,"38":2,"43":2,"45":2,"47":2,"49":1,"62":1,"63":2,"72":3,"78":2,"83":1,"86":1,"126":1,"173":1,"200":2,"224":1,"226":2,"234":2,"236":2,"237":1,"238":2,"239":2,"240":2,"241":2,"391":1,"406":1,"446":1,"447":1,"448":1,"449":1,"453":1,"454":1,"457":1,"458":1,"460":1,"461":1,"463":1,"465":2,"472":2,"474":2,"475":1,"476":2,"477":2,"478":2,"479":2}}],["len",{"2":{"425":1}}],["length",{"2":{"305":2,"306":2}}],["lemur",{"2":{"345":1}}],["left",{"2":{"111":1,"114":3,"185":2,"443":1}}],["leaf",{"2":{"439":2,"440":1,"441":1,"442":1,"443":1}}],["lead",{"2":{"404":1}}],["leading",{"2":{"102":1,"251":1,"379":1}}],["least",{"2":{"387":1}}],["leaked",{"2":{"365":1}}],["leave",{"2":{"193":1}}],["leaving",{"2":{"193":1}}],["learning",{"2":{"110":1}}],["learn",{"2":{"48":2,"51":1,"61":2,"150":1,"152":1,"154":1,"156":1,"353":1,"385":1}}],["leverage",{"0":{"197":1},"2":{"196":1,"197":1}}],["leveraged",{"2":{"193":1}}],["leverages",{"2":{"140":1}}],["leveraging",{"2":{"94":1,"194":1,"351":1,"368":1,"374":1}}],["levels",{"2":{"442":1}}],["level",{"0":{"50":1,"436":1},"1":{"437":1,"438":1,"439":1,"440":1,"441":1,"442":1},"2":{"4":4,"48":3,"50":1,"51":1,"56":3,"58":2,"72":1,"188":1,"199":1}}],["let",{"2":{"56":2,"156":1,"399":1}}],["layout",{"0":{"394":1,"395":1},"1":{"395":1,"396":2,"397":2,"398":1,"399":1}}],["label",{"2":{"192":1,"193":3,"194":1}}],["landscape",{"2":{"178":1}}],["languages",{"0":{"246":1,"484":1}}],["language",{"2":{"32":1,"59":1,"226":1,"246":1,"465":1,"484":1}}],["launched",{"2":{"193":1}}],["launcher",{"2":{"145":2}}],["launching",{"2":{"193":1}}],["launch",{"2":{"171":1,"348":1}}],["later",{"2":{"133":1,"167":1,"280":1,"329":1,"331":1,"333":1}}],["latestblock",{"2":{"7":2}}],["latest",{"2":{"7":5,"34":1,"53":1,"137":1,"248":1,"254":2,"310":3,"311":1,"314":1,"316":1,"318":1,"320":3,"377":1}}],["lastest",{"2":{"262":1}}],["last",{"2":{"73":1,"81":1,"185":1,"188":1}}],["lt",{"0":{"260":1,"271":1},"2":{"7":2,"9":3,"58":10,"69":2,"72":2,"78":1,"82":2,"83":1,"86":4,"89":2,"90":4,"91":3,"106":8,"107":19,"108":4,"109":2,"111":3,"123":9,"124":2,"130":8,"145":38,"173":1,"181":2,"200":1,"225":4,"226":1,"247":1,"248":4,"260":1,"262":1,"271":1,"294":3,"295":5,"314":2,"331":5,"348":3,"376":1,"377":4,"440":2,"448":11,"464":4,"465":1}}],["little",{"2":{"336":1}}],["literally",{"2":{"193":1}}],["live",{"2":{"253":2,"263":2,"273":2,"289":2}}],["lives",{"2":{"136":1}}],["libs",{"2":{"430":1}}],["libraries",{"2":{"249":2,"262":1,"270":3,"272":2,"293":4,"294":1}}],["library",{"0":{"98":1,"294":1,"295":1,"372":1},"2":{"7":1,"98":1,"101":1,"132":1,"151":1,"153":1,"155":1,"246":1,"250":1,"294":1,"295":2,"296":3,"297":1,"300":1,"330":1,"372":1,"378":1,"425":1,"426":1,"484":1}}],["lib",{"2":{"248":1,"377":1}}],["limitation",{"2":{"294":2}}],["limited",{"2":{"229":1,"365":1,"442":1,"467":1}}],["limit",{"2":{"200":1,"215":1}}],["limits",{"2":{"5":2,"364":1}}],["lightweight",{"2":{"296":1}}],["light",{"2":{"111":1,"113":1,"200":1,"211":1,"438":1}}],["linux",{"2":{"143":2}}],["links",{"2":{"182":1}}],["linking",{"2":{"141":1,"145":3}}],["linked",{"2":{"83":1}}],["link",{"2":{"56":1,"73":1,"96":1,"141":1,"370":1,"461":1}}],["linear",{"2":{"442":1}}],["line",{"2":{"0":1,"63":1,"88":2,"364":1}}],["likewise",{"2":{"241":1,"479":1}}],["like",{"2":{"9":1,"29":1,"30":1,"32":1,"33":1,"34":1,"36":1,"38":1,"43":1,"45":1,"56":3,"59":1,"65":1,"81":1,"86":1,"89":1,"100":1,"102":1,"107":1,"156":1,"173":5,"197":2,"199":2,"200":2,"225":1,"226":1,"245":1,"246":2,"247":1,"251":1,"270":1,"329":1,"331":1,"337":2,"338":1,"345":1,"361":1,"376":1,"379":1,"386":1,"442":1,"453":1,"457":1,"464":1,"465":1,"483":1,"484":2}}],["listsessions",{"2":{"449":1,"450":1}}],["listing",{"2":{"391":1}}],["listen",{"0":{"45":1,"457":1},"2":{"39":1}}],["list",{"0":{"29":1,"449":1},"2":{"9":1,"10":1,"12":1,"29":1,"30":1,"32":1,"33":1,"34":1,"40":1,"43":5,"47":1,"119":1,"120":1,"121":2,"127":1,"130":1,"185":1,"216":1,"255":1,"265":1,"314":2,"393":1,"421":1,"449":1}}],["ll",{"2":{"0":1,"29":1,"32":1,"68":1,"80":1,"84":1,"88":1,"97":1,"98":1,"138":1,"147":1,"151":3,"153":3,"155":3,"160":2,"161":1,"171":2,"173":1,"174":1,"178":1,"179":1,"225":1,"310":1,"329":5,"331":3,"337":1,"371":1,"372":1,"464":1}}],["nitro",{"2":{"363":1,"447":1}}],["nil",{"2":{"12":1,"29":3,"30":2,"34":3,"38":3,"43":2,"45":2,"47":2,"63":1}}],["npx",{"2":{"295":1}}],["npm",{"2":{"33":1,"52":2,"80":1,"105":1,"123":1,"199":1,"247":2,"254":2,"260":1,"264":2,"271":1,"274":2,"281":2,"376":2}}],["n",{"2":{"68":3,"142":1,"143":1,"330":1,"425":1,"441":1,"442":2,"443":2}}],["nuget",{"2":{"137":1}}],["numbers",{"2":{"149":2}}],["number",{"2":{"49":1,"55":1,"56":1,"62":1,"63":1,"86":3,"91":3,"121":1,"186":1,"190":1,"191":1,"205":1,"207":1,"229":1,"259":1,"269":1,"286":1,"301":1,"309":1,"311":1,"313":1,"325":1,"329":1,"346":1,"364":1,"391":4,"442":1,"467":1}}],["null",{"2":{"14":1,"56":1,"67":1,"68":1,"294":1,"460":1,"461":1}}],["navigating",{"2":{"164":1}}],["navigate",{"2":{"3":1,"83":1,"138":1,"145":1,"341":1,"344":1,"448":2}}],["nametypedescription",{"2":{"405":1,"409":1,"410":1,"413":1}}],["nametyperangedescription",{"2":{"395":1}}],["nametyperangedescriptionthresholduint161",{"2":{"394":1}}],["named",{"2":{"337":1}}],["namely",{"2":{"192":1}}],["name=",{"2":{"145":14}}],["names",{"2":{"81":1,"156":2,"347":1}}],["name",{"2":{"10":3,"49":1,"56":3,"62":1,"63":1,"67":3,"68":3,"70":1,"86":1,"87":1,"117":1,"129":2,"137":1,"145":1,"156":1,"164":1,"185":1,"200":3,"202":1,"211":1,"225":1,"247":2,"258":1,"268":1,"278":1,"328":1,"337":2,"338":2,"340":1,"342":1,"348":1,"376":2,"426":4,"460":1,"461":1,"464":1}}],["nativereceipt",{"2":{"460":1}}],["native",{"0":{"37":1,"38":1,"248":1,"377":1},"1":{"38":1},"2":{"10":1,"72":1,"158":1,"196":2,"197":1,"238":1,"239":1,"240":1,"241":1,"362":1,"476":1,"477":1,"478":1,"479":1}}],["nobody",{"2":{"165":1,"363":1}}],["none",{"2":{"236":1,"310":1,"474":1}}],["non",{"2":{"132":1,"147":1,"152":1,"156":1,"166":1,"174":1,"195":1,"197":1,"361":1,"390":1,"422":3,"442":1}}],["nonce=",{"2":{"448":1}}],["nonceat",{"0":{"320":1},"2":{"320":2}}],["nonce",{"2":{"9":7,"79":4,"207":1,"320":4,"327":1,"329":1,"446":1}}],["noncespace",{"2":{"79":2}}],["nonces",{"2":{"8":1,"9":2}}],["no",{"0":{"228":1,"466":1},"2":{"67":1,"79":1,"81":1,"121":1,"132":1,"139":1,"144":1,"156":1,"161":1,"170":1,"193":1,"196":1,"199":1,"310":1,"364":1,"391":1,"414":1,"415":1,"442":1}}],["nodeurl",{"2":{"91":4}}],["nodejs",{"0":{"72":1,"73":1,"243":1,"481":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1},"2":{"78":1,"243":1,"481":1}}],["nodes",{"2":{"7":1,"12":1,"83":1,"91":2,"309":1}}],["node",{"0":{"6":1,"33":1,"52":1},"1":{"7":1},"2":{"6":1,"29":1,"30":1,"32":1,"33":2,"38":1,"39":1,"43":1,"45":1,"47":1,"49":1,"52":2,"57":1,"59":1,"62":1,"63":2,"81":1,"88":1,"308":1,"391":1,"443":13}}],["now",{"2":{"4":1,"28":1,"37":1,"39":1,"42":1,"44":1,"46":1,"73":1,"79":1,"86":1,"89":1,"185":1,"339":1,"344":1,"348":1}}],["normally",{"2":{"295":1}}],["normalizeasbiginteger",{"2":{"151":1,"157":1,"333":2}}],["normalize",{"2":{"149":2,"150":1,"156":2,"157":1,"327":1}}],["normal",{"2":{"3":1,"438":1}}],["notable",{"2":{"239":1,"240":1,"477":1,"478":1}}],["nothing",{"2":{"173":1,"222":1}}],["noted",{"2":{"88":1,"90":1}}],["notes",{"0":{"36":1}}],["note",{"2":{"33":1,"52":1,"67":1,"70":1,"98":1,"135":1,"136":1,"137":3,"139":1,"141":1,"145":2,"149":1,"150":1,"154":1,"164":1,"178":2,"200":1,"225":1,"236":1,"237":1,"280":1,"307":1,"309":1,"310":1,"311":1,"314":1,"316":1,"318":1,"320":1,"329":1,"372":1,"431":1,"446":1,"464":1,"474":1,"475":1}}],["notice",{"2":{"29":1,"161":1,"329":1,"427":1,"441":1}}],["not",{"2":{"0":1,"3":3,"6":1,"13":2,"36":1,"68":1,"70":1,"72":4,"73":1,"78":1,"79":1,"80":1,"90":1,"138":1,"139":1,"141":1,"149":2,"150":2,"151":1,"153":1,"155":1,"156":1,"170":1,"173":1,"178":1,"218":1,"226":1,"234":1,"296":1,"307":1,"309":1,"328":1,"333":1,"358":1,"364":2,"413":2,"419":1,"422":1,"444":1,"452":1,"456":1,"461":1,"465":1,"472":1}}],["nfts",{"2":{"39":1,"41":1,"152":1}}],["nftbalances",{"2":{"30":4}}],["nft",{"0":{"26":1,"239":1,"477":1},"2":{"2":1,"4":2,"30":1,"31":1,"39":3,"51":1,"55":1,"239":2,"344":1,"364":1,"391":1,"477":2}}],["never",{"2":{"193":1,"398":2,"443":1,"461":1}}],["nesting",{"2":{"181":1,"442":1}}],["nested",{"0":{"428":1,"442":1},"2":{"181":1,"441":2,"442":3,"443":3}}],["neon",{"2":{"67":1}}],["nethereum",{"2":{"132":1,"296":1}}],["net",{"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1,"56":4,"68":1}}],["networkid",{"0":{"319":1},"2":{"319":2}}],["networks",{"0":{"40":1},"2":{"8":1,"32":2,"39":2,"40":1,"45":1,"47":1,"56":1,"58":1,"86":1,"91":1}}],["network",{"0":{"37":1,"38":1,"277":1},"1":{"38":1},"2":{"7":2,"8":1,"10":2,"12":2,"45":2,"47":2,"56":4,"58":4,"72":2,"78":2,"83":1,"86":3,"90":1,"98":1,"149":1,"156":2,"157":1,"237":1,"258":1,"259":2,"268":1,"269":2,"275":1,"277":1,"321":1,"327":1,"341":1,"372":1,"390":2,"446":1,"447":1,"448":1,"449":1,"450":1,"460":2,"461":5,"475":1}}],["necessary",{"2":{"12":1,"105":1,"175":1}}],["nextjs",{"0":{"261":1,"270":1,"292":1,"294":1},"1":{"293":1,"294":1,"295":1},"2":{"261":2,"262":2,"270":2,"272":2,"293":3,"294":1,"295":6}}],["next",{"0":{"103":1,"252":1,"293":1,"294":1,"295":1,"380":1},"2":{"3":1,"72":1,"81":1,"84":1,"130":1,"136":1,"138":1,"140":1,"174":1,"293":2,"295":2,"310":1,"338":1}}],["needs",{"2":{"165":1,"193":1,"222":1,"414":1,"422":1}}],["needed",{"2":{"72":1,"129":1,"137":1,"147":1,"194":1,"198":1,"229":1,"247":1,"387":1,"435":1,"436":1,"467":1}}],["needing",{"2":{"10":1,"79":1}}],["need",{"2":{"1":1,"3":1,"39":1,"72":1,"80":1,"84":1,"97":1,"98":1,"130":1,"136":1,"138":1,"151":1,"153":1,"155":1,"156":1,"160":1,"164":1,"169":1,"171":2,"173":1,"178":1,"183":1,"184":1,"186":1,"222":1,"249":1,"296":1,"309":1,"328":1,"333":1,"337":1,"363":1,"371":1,"372":1,"386":1,"415":1,"417":1,"445":2,"447":1,"453":1}}],["newimagehash",{"2":{"414":1,"420":1}}],["newindexer",{"2":{"29":1,"30":1,"34":1,"38":1,"43":1,"45":1,"47":1}}],["newint",{"2":{"12":1}}],["newestblock",{"2":{"318":2}}],["newer",{"2":{"33":1,"52":1,"136":1}}],["newobject",{"2":{"173":1}}],["newlydeployedcontractaddress",{"2":{"160":1,"332":1}}],["newly",{"2":{"138":1,"164":1,"329":1}}],["newtonsoft",{"2":{"137":2}}],["newmetadata",{"2":{"49":1,"53":1,"62":1,"63":2}}],["newrpcrelayer",{"2":{"12":1}}],["newprovider",{"2":{"12":1}}],["newwalletsingleowner",{"2":{"12":1}}],["newwalletfrommnemonic",{"2":{"12":1}}],["new",{"0":{"75":1},"2":{"0":1,"3":1,"7":1,"10":1,"29":1,"30":1,"33":1,"38":1,"43":1,"45":1,"47":1,"49":1,"52":1,"62":1,"63":3,"72":6,"78":2,"83":3,"86":12,"91":4,"98":2,"106":1,"107":1,"132":1,"142":1,"143":1,"145":2,"147":1,"149":2,"150":2,"151":4,"152":2,"153":4,"154":4,"155":4,"156":7,"157":12,"158":1,"164":1,"166":1,"185":2,"193":1,"197":1,"199":1,"226":4,"231":1,"232":2,"236":1,"238":2,"239":2,"240":2,"241":3,"255":1,"283":1,"295":1,"299":2,"300":1,"308":1,"318":1,"328":1,"329":4,"331":2,"333":2,"340":1,"341":1,"372":2,"390":1,"405":1,"406":1,"413":1,"442":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1,"465":4,"469":1,"470":2,"474":1,"476":2,"477":2,"478":2,"479":3}}],["myetherwallet",{"2":{"357":1}}],["mypinata",{"2":{"345":1}}],["mypage",{"2":{"106":3,"107":3}}],["myapp",{"2":{"295":1}}],["mytokenaddress",{"2":{"151":2,"153":2,"155":2}}],["mytoken",{"2":{"151":3,"153":3,"155":3}}],["my",{"0":{"293":1},"2":{"129":2,"130":3,"202":1,"247":1,"275":1,"376":1}}],["mycustomlogolight",{"2":{"129":1}}],["mycustomlogodark",{"2":{"129":1}}],["mycustomconnectoroptions",{"2":{"129":1}}],["mycustomconnector",{"2":{"129":2,"130":1}}],["mycomponent",{"2":{"109":1,"124":1}}],["myreactcomponent",{"2":{"108":1}}],["mkdir",{"2":{"81":1}}],["md",{"2":{"67":2,"68":1}}],["mimics",{"2":{"411":1}}],["mitm",{"2":{"365":1}}],["might",{"2":{"348":1,"446":1,"453":1}}],["migrated",{"2":{"72":1}}],["migration",{"0":{"423":1},"2":{"72":4}}],["mistakes",{"2":{"348":1}}],["miss",{"2":{"181":1}}],["missing",{"2":{"88":1}}],["missed",{"2":{"31":1}}],["millions",{"2":{"197":1}}],["mix",{"2":{"193":1,"241":1,"479":1}}],["mixed",{"2":{"67":1}}],["middle",{"2":{"114":2}}],["middleware",{"2":{"86":1}}],["minimum",{"2":{"337":1}}],["minimize",{"2":{"193":1}}],["min",{"2":{"248":2,"377":2}}],["minor",{"2":{"132":2,"166":2}}],["minutes",{"2":{"80":1,"193":1,"455":1}}],["minted",{"2":{"347":2}}],["minter",{"0":{"20":1,"25":1},"2":{"80":1,"83":4}}],["mints",{"2":{"80":1,"344":1}}],["mint",{"0":{"21":1,"24":1,"80":1,"91":1},"1":{"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1},"2":{"80":1,"83":1,"91":4,"150":1,"151":2,"152":1,"154":1,"155":2,"156":3,"333":1,"344":1,"345":1,"346":3,"348":1}}],["minting",{"0":{"346":1},"2":{"17":1,"126":1,"348":1}}],["mined",{"2":{"8":1,"36":1}}],["mind",{"2":{"3":1}}],["much",{"2":{"136":1,"440":1}}],["mutable",{"2":{"136":1}}],["mumbai",{"2":{"98":1,"348":1,"372":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["multisignature",{"2":{"386":1}}],["multisig",{"2":{"362":1}}],["multisigs",{"2":{"362":1}}],["multi",{"2":{"39":1,"86":1,"87":1,"154":1,"439":1}}],["multiple",{"2":{"0":1,"6":1,"9":1,"72":1,"79":1,"154":2,"157":1,"164":1,"195":1,"199":1,"222":1,"238":2,"239":2,"240":2,"241":1,"359":1,"386":2,"442":1,"476":2,"477":2,"478":2,"479":1}}],["must",{"2":{"29":1,"58":1,"83":2,"119":1,"120":1,"138":1,"141":1,"148":1,"161":1,"170":2,"283":1,"293":1,"294":1,"295":1,"365":1,"401":1,"407":1,"427":1,"460":1}}],["mnemonic",{"2":{"12":6}}],["move",{"0":{"343":1},"2":{"310":1}}],["mounted",{"2":{"294":2}}],["mouth",{"2":{"67":1}}],["moonpay",{"2":{"200":2,"216":1,"353":1,"385":1}}],["mobile",{"0":{"176":1,"383":1},"2":{"178":2,"199":2,"200":1,"249":1,"383":2}}],["moments",{"2":{"185":1}}],["moment",{"2":{"166":1}}],["mocks",{"2":{"161":1}}],["mocked",{"2":{"86":3,"90":1,"91":1}}],["monobehaviour",{"2":{"139":1,"164":1}}],["mono",{"2":{"133":2}}],["money",{"2":{"6":1}}],["more",{"0":{"165":1},"2":{"29":1,"56":2,"67":1,"70":1,"72":1,"78":1,"79":1,"96":1,"102":1,"129":1,"135":1,"137":1,"139":1,"145":2,"149":1,"165":1,"194":1,"196":1,"200":1,"222":1,"225":1,"251":1,"258":1,"261":1,"268":1,"270":1,"295":1,"353":1,"359":1,"370":1,"379":1,"385":1,"386":2,"391":2,"464":1}}],["most",{"2":{"29":1,"57":1,"137":1,"149":2,"200":1,"301":1,"309":1,"313":1,"355":1}}],["modifier",{"2":{"405":1,"413":1}}],["modification",{"2":{"237":1,"475":1}}],["modify",{"2":{"64":1,"137":1,"333":1,"344":1,"345":1}}],["moduleauth",{"2":{"407":1}}],["module",{"2":{"123":1,"274":1,"363":1,"402":1,"403":1,"407":2,"411":1,"415":1}}],["modules",{"0":{"402":1},"1":{"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1,"412":1,"413":1,"414":1,"415":1,"416":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1},"2":{"81":1,"88":1,"402":3,"403":1,"407":1,"415":1}}],["modular",{"2":{"39":3,"105":1,"247":1}}],["modern",{"2":{"199":1,"382":1}}],["moderately",{"2":{"386":1}}],["moderate",{"2":{"5":1}}],["modes",{"2":{"178":1}}],["mode",{"2":{"137":1,"139":1,"164":1,"178":2}}],["model",{"0":{"365":1},"2":{"8":1,"365":1}}],["modals",{"2":{"114":1,"196":1}}],["modal",{"0":{"108":1,"109":1,"115":1,"124":1,"125":1},"1":{"116":1,"117":1,"118":1,"119":1,"120":1,"126":1,"127":1},"2":{"3":1,"104":1,"108":2,"113":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"124":1,"125":1}}],["march",{"2":{"434":1}}],["marked",{"2":{"419":1}}],["marketplaces",{"0":{"192":1},"1":{"193":1,"194":1},"2":{"69":1}}],["marketplace",{"0":{"1":1,"23":1,"190":1},"2":{"1":4,"126":1,"190":2,"192":3,"193":8,"194":4,"350":1,"351":1,"352":2,"391":5}}],["mail",{"2":{"426":1}}],["mainmoduleinterface",{"2":{"414":2,"420":2}}],["mainmoduleupgradable",{"2":{"411":1,"414":3,"419":1,"420":1,"421":1,"422":1,"430":1}}],["mainmoduleupgradeable",{"0":{"411":1,"423":1},"1":{"412":1,"413":1},"2":{"444":1}}],["mainmodule",{"2":{"400":1,"401":2,"402":1,"407":2,"411":1,"414":3,"430":1,"444":4}}],["maintaining",{"2":{"199":1,"229":1,"467":1}}],["main",{"2":{"121":3,"145":3,"297":1,"448":3}}],["mainnet",{"2":{"10":1,"12":1,"32":2,"33":1,"49":1,"62":1,"63":1,"67":1,"72":2,"78":2,"83":1,"106":2,"107":2,"200":1,"226":1,"259":1,"269":1,"465":1}}],["malicious",{"2":{"386":1,"389":1,"390":1}}],["max",{"2":{"323":1}}],["making",{"2":{"157":1,"161":1,"173":1,"296":1,"390":1}}],["makes",{"2":{"39":2,"83":1,"363":1}}],["make",{"2":{"32":1,"33":1,"34":1,"41":1,"45":1,"47":1,"57":1,"72":2,"81":1,"86":4,"88":1,"129":1,"137":1,"139":1,"145":1,"148":1,"150":1,"163":1,"175":1,"178":3,"180":3,"181":1,"185":1,"222":1,"309":1,"328":1,"348":1}}],["match",{"2":{"193":1,"241":1,"479":1}}],["material",{"2":{"157":1}}],["matic",{"0":{"37":1,"38":1},"1":{"38":1},"2":{"10":3,"38":2,"72":1,"149":3,"200":1}}],["magicvalue",{"2":{"427":1}}],["magic",{"2":{"157":1,"427":3}}],["macbook",{"2":{"446":1,"448":1,"449":2,"450":1}}],["machine",{"2":{"135":1,"358":1}}],["macos",{"0":{"143":1},"2":{"133":1,"135":1,"182":1,"185":1}}],["mac",{"2":{"133":1,"143":3,"167":1,"173":2,"185":1}}],["made",{"2":{"132":1,"136":1,"160":1,"166":1,"173":3,"187":1,"296":1}}],["major",{"2":{"132":2,"166":2}}],["mapped",{"2":{"330":1}}],["mappings",{"0":{"330":1}}],["map",{"2":{"69":2}}],["mandatory",{"2":{"196":1}}],["manifest",{"2":{"145":5}}],["manual",{"0":{"137":1},"2":{"145":1}}],["manually",{"0":{"24":1},"2":{"138":1,"455":1}}],["many",{"2":{"69":1,"150":1,"225":1,"246":1,"249":1,"435":1,"464":1,"484":1}}],["mana",{"2":{"68":1}}],["managing",{"0":{"4":1}}],["manages",{"2":{"173":1}}],["manager",{"0":{"135":1,"164":1},"1":{"136":1},"2":{"135":4,"136":1,"137":5,"164":1}}],["management",{"0":{"386":1,"445":1},"1":{"387":1,"388":1,"389":1,"390":1,"446":1,"447":1,"448":1,"449":1,"450":1},"2":{"17":1,"361":1,"363":1,"445":1}}],["managed",{"2":{"2":1,"4":1,"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1,"458":1}}],["manage",{"0":{"335":1},"1":{"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"2":1,"8":1,"102":1,"179":1,"251":1,"336":1,"379":1}}],["master",{"2":{"10":1,"67":2,"68":1,"295":1}}],["may",{"2":{"8":1,"32":1,"39":1,"45":1,"47":1,"72":1,"136":1,"156":1,"164":2,"200":1,"247":1,"249":2,"281":1,"293":1,"295":1,"296":1,"300":1,"305":1,"306":1,"333":2,"354":1,"376":1,"395":1,"404":1,"413":1,"433":1,"439":1,"457":1}}],["merkle",{"2":{"439":1,"443":1}}],["mechanism",{"2":{"436":1}}],["measures",{"2":{"199":1}}],["meaning",{"2":{"435":1}}],["meant",{"2":{"164":1,"364":1}}],["means",{"2":{"36":1,"90":1,"199":1,"364":1,"365":1,"383":1,"387":1,"405":1,"413":1,"414":1,"445":1}}],["memory",{"2":{"181":1}}],["members",{"2":{"0":1}}],["menu",{"2":{"142":1,"143":1,"222":1}}],["mentioned",{"2":{"58":1,"86":1}}],["message",{"0":{"223":1,"233":1,"235":1,"462":1,"471":1,"473":1},"1":{"224":1,"225":1,"226":1,"463":1,"464":1,"465":1},"2":{"136":1,"159":2,"225":4,"229":1,"233":1,"235":3,"236":1,"307":4,"408":1,"425":5,"426":1,"456":1,"461":2,"464":4,"467":1,"471":1,"473":3,"474":1}}],["messages",{"0":{"159":1},"2":{"72":1,"226":1,"228":1,"229":1,"424":1,"425":1,"465":1,"466":1,"467":1}}],["media",{"2":{"84":1}}],["me",{"2":{"68":1,"265":1}}],["metric",{"2":{"188":3}}],["metrics",{"2":{"186":1,"187":1,"188":1}}],["metamask",{"2":{"102":1,"120":1,"129":1,"130":1,"197":1,"199":2,"220":1,"249":1,"251":1,"253":1,"263":1,"273":1,"357":1,"379":1}}],["metal",{"2":{"68":1}}],["metatransactionids",{"2":{"43":1}}],["metatxhash",{"2":{"460":1}}],["metatxid",{"2":{"14":2}}],["metatxnid",{"2":{"13":2}}],["meta",{"2":{"8":3,"13":1,"43":1,"145":2,"246":1,"247":1,"359":1,"364":1,"376":1,"484":1}}],["metadataclient",{"2":{"49":2,"62":2,"63":4}}],["metadatawhen",{"2":{"48":1,"61":1}}],["metadataoptions",{"2":{"29":1,"30":1,"34":3,"36":3,"43":1,"47":1}}],["metadatafield",{"2":{"4":1}}],["metadata",{"0":{"2":1,"4":1,"29":1,"30":1,"36":1,"48":1,"49":1,"50":1,"51":1,"55":1,"60":1,"61":1,"62":1,"63":1,"65":1,"66":1,"83":1,"84":1,"335":1,"337":1,"339":1,"345":1,"348":1},"1":{"3":1,"4":1,"5":1,"49":1,"50":1,"52":1,"53":1,"54":1,"56":1,"57":1,"58":1,"59":1,"60":1,"62":1,"63":1,"64":2,"65":1,"66":1,"67":2,"68":2,"69":2,"70":2,"84":1,"85":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"2":5,"3":1,"4":18,"5":1,"17":2,"29":2,"30":2,"36":3,"39":2,"41":1,"43":2,"47":3,"48":4,"49":8,"50":1,"51":5,"52":5,"53":2,"54":1,"55":9,"56":10,"57":1,"58":8,"59":4,"60":7,"61":6,"62":10,"63":21,"64":6,"65":3,"67":6,"68":4,"69":2,"70":1,"80":1,"84":1,"336":1,"337":1,"338":1,"339":1,"344":1,"345":1,"348":4}}],["methods",{"0":{"60":1,"181":1,"301":1,"309":1},"1":{"302":1,"303":1,"304":1,"305":1,"306":1,"307":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1,"320":1,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1},"2":{"36":1,"60":1,"70":1,"86":1,"91":1,"139":1,"151":1,"153":1,"155":1,"296":1,"301":1,"309":2,"334":2,"344":1,"415":1,"417":1,"459":1}}],["method",{"2":{"4":1,"29":2,"30":1,"38":1,"43":1,"45":1,"47":1,"49":1,"62":1,"63":2,"67":2,"68":2,"83":1,"86":1,"139":1,"148":1,"150":1,"151":1,"153":1,"155":1,"156":4,"159":1,"160":1,"161":1,"200":1,"226":1,"293":1,"294":1,"295":1,"307":1,"328":1,"329":2,"331":1,"391":1,"405":2,"413":2,"414":1,"420":1,"421":2,"422":1,"427":1,"451":1,"452":1,"454":1,"455":4,"465":1}}],["otp",{"2":{"364":1,"447":4}}],["otherrainbowkitwallets",{"2":{"265":1}}],["otherconnectors",{"2":{"255":1}}],["others",{"2":{"131":1,"178":1}}],["otherwise",{"2":{"83":1,"310":1,"425":1,"426":1,"427":1,"455":2}}],["other",{"0":{"246":1,"484":1},"2":{"8":1,"105":1,"129":1,"130":1,"139":1,"142":1,"143":1,"180":1,"196":2,"219":1,"226":1,"246":1,"249":1,"255":1,"257":1,"265":1,"267":1,"283":1,"284":1,"346":1,"364":2,"402":1,"405":1,"413":1,"442":1,"465":1,"484":1}}],["oauth",{"2":{"364":1,"448":4}}],["omit",{"2":{"307":1}}],["omitted",{"2":{"36":2,"204":1}}],["older",{"0":{"260":1,"271":1},"2":{"260":1,"261":1,"262":2,"270":1,"271":1,"272":1}}],["oldsilver",{"2":{"56":1}}],["os",{"2":{"222":2}}],["occure",{"2":{"190":1}}],["oidc",{"2":{"139":1,"141":1}}],["o",{"2":{"72":2}}],["okay",{"2":{"67":1}}],["ogimage",{"2":{"56":1}}],["opcode",{"2":{"401":1}}],["operated",{"2":{"363":1}}],["operate",{"2":{"362":1}}],["operation",{"2":{"404":1,"416":1,"419":1,"438":1,"446":1}}],["operations",{"2":{"259":1,"269":1}}],["operational",{"2":{"98":1,"372":1}}],["openwithoptions",{"2":{"200":2}}],["openwalletintent",{"2":{"200":1}}],["openwallet",{"2":{"200":3}}],["opened",{"2":{"161":1,"446":1,"447":1}}],["openidauthentication",{"2":{"133":1}}],["opening",{"0":{"124":1},"2":{"136":1,"157":1,"204":1}}],["openning",{"2":{"72":2}}],["open",{"2":{"72":2,"78":1,"83":2,"100":1,"109":2,"124":1,"135":1,"139":2,"142":1,"143":1,"161":1,"185":2,"200":2,"209":1,"217":1,"245":1,"249":1,"340":1,"391":1,"447":2,"448":1,"483":1}}],["opensea",{"2":{"36":1,"50":2,"67":3,"70":1}}],["optionality",{"2":{"197":1}}],["optionally",{"2":{"43":5,"149":1,"151":1,"153":1,"155":1,"200":1,"248":1,"377":1}}],["optional",{"0":{"258":1,"259":1,"268":1,"269":1,"277":1,"278":1,"287":1},"2":{"29":4,"30":4,"43":4,"47":4,"72":2,"78":1,"107":1,"150":1,"173":1,"207":1,"307":1}}],["option",{"2":{"12":3,"13":4,"36":1,"55":1,"72":2,"90":1,"188":1,"199":2,"201":1,"214":1,"219":1,"222":1,"295":1,"333":1}}],["options",{"0":{"12":1,"111":1,"112":1,"193":1,"196":1,"201":1,"258":1,"259":1,"285":1},"1":{"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"286":1,"287":1},"2":{"7":1,"12":6,"13":1,"29":1,"30":1,"36":1,"43":1,"47":1,"72":2,"78":1,"86":1,"103":1,"111":2,"119":2,"120":2,"129":2,"192":1,"193":2,"195":1,"197":1,"200":2,"215":1,"252":1,"255":1,"258":1,"268":2,"283":2,"353":2,"380":1,"385":2,"386":1}}],["optimal",{"2":{"8":1}}],["obvious",{"2":{"156":1}}],["objectdark",{"2":{"113":1}}],["objects",{"2":{"69":1,"154":1}}],["object",{"0":{"88":1},"2":{"29":1,"30":1,"43":2,"45":1,"47":1,"68":2,"69":1,"73":1,"88":1,"91":1,"113":2,"115":1,"124":1,"125":1,"135":2,"137":1,"148":1,"151":1,"153":1,"155":1,"156":1,"159":1,"160":1,"164":3,"175":1,"201":1,"225":2,"307":1,"308":1,"328":2,"329":3,"460":2,"461":1,"464":2}}],["obtained",{"2":{"447":1,"448":1}}],["obtain",{"2":{"3":1,"139":1,"148":1,"159":1,"160":1,"447":2,"448":2}}],["obtaining",{"0":{"3":1},"2":{"2":1}}],["outlined",{"2":{"91":1}}],["out",{"2":{"86":1,"91":1,"93":1,"102":1,"103":1,"126":1,"136":2,"147":1,"148":1,"159":1,"160":1,"164":1,"165":1,"193":1,"194":1,"196":1,"198":1,"200":1,"226":1,"249":1,"251":1,"252":1,"350":1,"367":1,"374":1,"379":1,"380":1,"425":1,"426":1,"465":1}}],["outside",{"2":{"17":1,"151":1,"153":1,"155":1,"200":1}}],["ours",{"2":{"178":1}}],["our",{"2":{"2":1,"3":2,"4":1,"6":1,"7":1,"28":1,"29":1,"31":1,"36":1,"37":1,"39":1,"42":1,"44":1,"46":1,"49":1,"56":1,"62":1,"63":2,"70":1,"72":1,"93":2,"94":1,"100":1,"101":1,"102":1,"103":1,"132":1,"133":1,"136":3,"137":1,"139":2,"141":1,"150":2,"151":1,"152":2,"153":1,"154":2,"155":1,"157":1,"158":1,"164":2,"165":1,"186":1,"187":1,"192":2,"193":3,"194":2,"195":2,"196":2,"197":3,"198":2,"245":1,"249":3,"250":1,"251":1,"252":1,"295":1,"296":1,"308":1,"309":1,"328":1,"329":2,"331":2,"333":1,"350":1,"351":1,"367":2,"368":1,"374":1,"378":1,"379":1,"380":1,"391":1,"483":1}}],["ownable",{"0":{"334":1},"2":{"334":4}}],["ownership",{"2":{"72":1,"90":1}}],["owner",{"2":{"72":1,"361":1}}],["owned",{"0":{"355":1},"1":{"356":1,"357":1},"2":{"29":1,"121":1,"354":1,"355":1,"389":1}}],["own",{"2":{"6":1,"56":1,"102":1,"129":1,"132":1,"161":1,"163":1,"165":1,"171":1,"175":1,"193":2,"251":1,"296":1,"308":1,"333":1,"348":1,"379":1,"386":1,"442":2}}],["override",{"2":{"113":1,"404":1,"408":1,"412":1,"427":1}}],["overwritten",{"2":{"113":1,"137":1}}],["overview",{"0":{"122":1,"188":1,"192":1,"195":1,"362":1},"1":{"189":1,"190":1,"191":1,"193":1,"194":1,"196":1,"197":1,"198":1,"363":1,"364":1},"2":{"31":1,"188":1}}],["over",{"2":{"6":1,"171":1,"181":1,"338":1,"347":1,"389":1,"390":1}}],["orchestration",{"2":{"193":1}}],["origin",{"0":{"204":1},"2":{"86":1,"204":1}}],["originaddress",{"2":{"56":1}}],["orgs",{"2":{"71":1,"80":1}}],["organizations",{"2":{"39":1}}],["or",{"0":{"35":1,"49":1,"54":1,"62":1,"220":1},"2":{"4":4,"7":1,"8":2,"10":1,"29":1,"30":1,"32":2,"33":3,"36":1,"38":1,"39":1,"41":1,"43":1,"45":1,"47":2,"48":1,"49":4,"52":2,"55":1,"56":2,"57":1,"58":1,"59":1,"60":4,"61":2,"62":4,"63":7,"64":1,"67":1,"69":2,"72":4,"78":1,"80":2,"83":4,"84":1,"86":3,"87":1,"90":1,"103":1,"105":2,"113":1,"123":2,"126":1,"129":1,"130":1,"133":1,"135":3,"137":1,"139":1,"141":1,"145":2,"147":1,"148":1,"149":2,"156":3,"157":1,"159":1,"160":3,"165":1,"167":1,"170":1,"173":1,"175":1,"178":2,"180":1,"186":1,"193":2,"196":3,"197":1,"199":1,"200":1,"212":1,"219":1,"226":2,"228":1,"229":1,"234":1,"236":1,"241":1,"243":1,"246":2,"247":2,"249":3,"252":1,"254":1,"260":1,"261":1,"264":1,"270":3,"271":1,"274":1,"305":2,"306":2,"311":1,"314":1,"316":1,"318":1,"320":1,"327":1,"328":1,"329":2,"330":1,"331":1,"333":1,"346":1,"354":1,"361":1,"363":1,"364":1,"365":2,"376":2,"380":1,"382":1,"383":1,"386":1,"387":3,"390":3,"391":2,"392":1,"395":1,"403":1,"407":1,"422":1,"437":2,"439":1,"440":1,"442":2,"453":1,"456":2,"458":2,"459":1,"460":1,"461":1,"465":2,"466":1,"467":1,"472":1,"474":1,"479":1,"481":1,"484":2}}],["orderid",{"2":{"391":1}}],["ordering",{"2":{"9":1,"436":1}}],["orderbook",{"2":{"391":1}}],["orderbookorder",{"2":{"391":1}}],["orderbookcontractaddress",{"2":{"352":1,"391":4}}],["orderstatus",{"2":{"391":2}}],["orders",{"2":{"391":4}}],["ordersummaryitems",{"0":{"127":1},"2":{"125":1,"127":2}}],["order",{"0":{"127":1},"2":{"0":1,"2":1,"3":1,"4":1,"29":1,"72":1,"79":1,"80":1,"81":1,"83":1,"85":1,"86":1,"119":1,"120":1,"127":1,"136":1,"141":1,"156":1,"171":1,"179":1,"183":1,"326":1,"327":1,"329":1,"362":1,"391":8,"401":1,"438":1,"446":1}}],["onvalidationrequired",{"0":{"456":1},"2":{"456":2,"457":2,"458":3}}],["onmeta",{"2":{"353":1,"385":1}}],["onmigration",{"2":{"72":1}}],["onboard",{"0":{"273":1},"1":{"274":1,"275":1,"276":1,"277":1,"278":1,"279":1},"2":{"199":1,"249":1,"273":3,"274":2,"275":3,"279":1}}],["onboarding",{"2":{"101":1,"102":1,"138":1,"169":1,"199":1,"250":1,"251":1,"378":1,"379":1}}],["onfailuretest",{"2":{"181":1}}],["onresponse",{"2":{"181":1}}],["onramp",{"0":{"27":1}}],["ondeploycontractfailedhandler",{"2":{"160":2}}],["ondeploycontractfailed",{"2":{"160":2}}],["ondeploycontractcompletehandler",{"2":{"160":2}}],["ondeploycontractcomplete",{"2":{"160":2}}],["onsessionstatechanged",{"2":{"448":2}}],["onsendtransactionfailedhandler",{"2":{"148":2}}],["onsendtransactionfailed",{"2":{"148":2,"160":1}}],["onsendtransactioncompletehandler",{"2":{"148":2}}],["onsendtransactioncomplete",{"2":{"148":2,"160":1}}],["onsuccess=",{"2":{"448":1}}],["onsuccess",{"2":{"178":1}}],["onsignmessagecompletehandler",{"2":{"159":2}}],["onsignmessagecomplete",{"2":{"159":2}}],["onwaaswalletcreatedhander",{"2":{"148":1,"159":1,"160":1}}],["onwaaswalletcreatedhandler",{"2":{"147":3}}],["onwaaswalletcreated",{"2":{"147":2}}],["onclick=",{"2":{"108":1,"109":1,"124":1}}],["onclick",{"2":{"108":2,"109":2,"124":2,"200":1}}],["onchainreader",{"2":{"226":1,"465":1}}],["onchain",{"2":{"17":1,"64":1}}],["once",{"2":{"3":1,"13":1,"72":1,"81":1,"91":1,"97":1,"108":1,"140":1,"141":1,"147":1,"171":2,"178":1,"180":1,"185":1,"193":1,"200":1,"222":1,"294":1,"300":1,"305":1,"306":1,"343":1,"371":1,"387":1,"420":1,"447":1,"455":1}}],["onlyself",{"2":{"404":1,"405":1,"412":1,"413":1}}],["only",{"0":{"295":1},"2":{"10":1,"12":1,"29":1,"30":1,"43":1,"47":1,"83":2,"97":1,"105":1,"121":1,"133":2,"137":2,"147":1,"157":1,"166":1,"173":1,"213":1,"219":1,"236":1,"237":2,"239":1,"240":1,"247":1,"293":1,"294":1,"305":1,"306":1,"328":1,"333":1,"353":1,"361":1,"364":3,"371":1,"376":1,"385":1,"386":2,"390":1,"403":1,"405":1,"407":1,"413":1,"437":1,"442":1,"449":1,"461":1,"474":1,"475":2,"477":1,"478":1}}],["on",{"0":{"25":1,"26":1,"27":1,"36":1,"38":4,"175":1,"176":1,"338":1,"341":1,"353":1,"385":1,"429":1},"2":{"3":2,"8":1,"10":1,"13":1,"29":2,"30":2,"31":1,"32":2,"36":2,"38":2,"39":2,"43":2,"45":4,"47":3,"49":1,"55":1,"56":2,"61":1,"67":3,"68":2,"70":1,"72":1,"79":1,"80":1,"81":1,"89":1,"90":1,"96":1,"101":1,"114":1,"129":2,"130":1,"133":1,"135":5,"136":2,"137":1,"138":1,"139":1,"140":2,"141":1,"149":1,"150":1,"156":5,"161":1,"163":1,"164":1,"166":1,"170":1,"173":2,"179":4,"181":1,"185":7,"188":1,"193":1,"196":2,"197":1,"199":5,"200":3,"202":1,"219":1,"220":1,"226":4,"229":1,"234":1,"236":1,"238":1,"239":1,"240":1,"243":1,"246":1,"247":2,"249":1,"250":1,"260":1,"261":3,"270":3,"271":1,"293":4,"294":2,"295":1,"296":2,"310":3,"333":1,"334":1,"337":1,"339":1,"340":2,"341":2,"342":1,"343":1,"344":2,"345":1,"353":5,"355":1,"361":1,"363":1,"365":1,"370":1,"376":2,"378":1,"382":1,"383":2,"385":5,"386":2,"391":1,"398":1,"402":1,"406":1,"407":1,"415":1,"417":1,"419":1,"427":1,"442":1,"451":1,"461":2,"465":4,"467":1,"472":1,"474":1,"476":1,"477":1,"478":1,"481":1,"484":1}}],["ones",{"2":{"193":1}}],["one",{"0":{"452":1},"2":{"0":1,"4":1,"29":1,"36":1,"56":1,"58":1,"72":3,"78":1,"81":1,"83":3,"145":1,"149":1,"157":1,"160":1,"178":1,"181":1,"185":1,"188":1,"211":1,"222":1,"238":1,"239":1,"240":1,"249":1,"294":1,"295":1,"305":1,"306":1,"344":1,"362":1,"386":1,"387":1,"403":1,"408":1,"421":1,"447":1,"452":1,"453":1,"476":1,"477":1,"478":1}}],["official",{"2":{"119":1,"120":1,"128":1,"129":1,"294":1}}],["off",{"2":{"68":1}}],["offered",{"2":{"158":1}}],["offer",{"2":{"57":1,"193":1,"199":1,"249":1,"363":1,"391":1}}],["offers",{"2":{"1":1,"2":1,"8":1,"32":1,"51":1,"55":1,"59":1,"195":1,"361":1}}],["often",{"2":{"65":1,"154":1}}],["of",{"0":{"9":1,"17":1,"29":1,"30":1,"49":1,"197":1,"241":1,"260":1,"271":1,"294":1,"397":1,"479":1},"2":{"0":3,"4":3,"6":1,"8":7,"9":3,"10":1,"12":2,"14":1,"29":4,"30":5,"32":3,"33":2,"34":2,"35":1,"36":3,"38":1,"39":3,"40":1,"41":2,"43":7,"45":5,"47":5,"49":3,"54":1,"55":2,"56":4,"58":3,"59":2,"60":6,"62":3,"63":2,"67":4,"68":1,"69":3,"70":1,"72":3,"78":1,"79":2,"80":1,"81":1,"83":2,"86":2,"90":1,"93":1,"98":1,"99":2,"100":2,"101":2,"102":2,"114":1,"116":1,"117":1,"119":1,"120":1,"121":1,"127":1,"129":2,"130":2,"131":1,"136":4,"137":1,"138":1,"148":2,"149":4,"151":3,"152":1,"153":3,"154":1,"155":3,"156":4,"157":4,"158":3,"160":1,"161":2,"162":1,"164":1,"165":1,"171":1,"173":4,"175":1,"178":1,"179":3,"180":2,"181":4,"186":1,"188":1,"189":1,"190":1,"191":1,"192":2,"193":1,"194":2,"196":2,"197":3,"199":7,"200":1,"202":1,"204":1,"211":2,"212":1,"216":1,"217":1,"220":1,"222":1,"225":1,"229":1,"238":1,"239":1,"240":1,"244":2,"245":2,"247":2,"249":3,"250":2,"251":2,"254":2,"255":1,"258":1,"260":3,"261":1,"262":3,"265":1,"268":2,"270":1,"271":3,"278":1,"279":2,"280":1,"287":1,"293":1,"294":3,"295":5,"297":1,"298":2,"300":1,"301":2,"305":2,"306":2,"307":1,"308":1,"309":3,"310":2,"317":1,"325":1,"328":1,"329":2,"331":1,"333":5,"338":1,"340":2,"341":1,"344":3,"346":1,"355":2,"358":2,"361":3,"362":4,"364":4,"365":3,"367":1,"372":1,"376":1,"378":2,"379":2,"386":3,"387":2,"388":1,"389":1,"390":2,"391":12,"392":1,"393":1,"394":2,"395":3,"396":1,"397":4,"398":2,"399":1,"400":2,"401":2,"402":3,"404":3,"405":2,"406":1,"407":5,"408":1,"409":1,"411":1,"413":5,"414":2,"418":1,"419":3,"421":1,"422":1,"424":1,"425":1,"426":1,"431":1,"435":4,"437":2,"439":1,"441":2,"442":4,"443":1,"444":8,"445":1,"446":1,"449":1,"450":1,"453":1,"454":1,"460":2,"464":1,"467":1,"476":1,"477":1,"478":1,"482":2,"483":2}}],["i32",{"2":{"391":2}}],["ignored",{"2":{"200":1,"213":1,"214":1,"215":1,"397":1}}],["iwallet",{"2":{"161":1,"298":2,"299":2,"300":2,"301":1}}],["iindexer",{"2":{"158":2}}],["icon",{"2":{"135":1,"137":1,"185":1}}],["icons",{"2":{"10":1,"56":1}}],["ipfs",{"2":{"67":2,"336":1,"337":1,"338":3,"345":1}}],["ios",{"0":{"142":1,"184":1},"2":{"133":1,"135":1,"142":2,"167":1,"182":1,"184":1,"185":1}}],["io",{"2":{"50":1,"67":1,"226":1,"248":1,"377":1,"465":1}}],["identifier",{"2":{"338":1,"461":1}}],["identity",{"2":{"225":1,"226":1,"364":1,"365":1,"452":1,"453":1,"464":1,"465":1}}],["ideas",{"2":{"165":2}}],["ideal",{"2":{"137":1,"193":2}}],["idea",{"2":{"8":1}}],["idtokenin",{"2":{"173":1,"175":1}}],["idtoken",{"2":{"139":1,"140":1,"141":1,"147":1,"446":2,"447":6,"448":2,"449":1,"450":1,"460":1,"461":1}}],["ids",{"0":{"30":1},"2":{"43":1,"56":2,"62":1,"63":1,"154":1,"391":2}}],["idsyou",{"2":{"29":1}}],["id",{"2":{"12":1,"13":1,"14":1,"49":1,"56":3,"58":1,"62":1,"63":3,"64":1,"67":1,"68":2,"70":1,"72":1,"78":1,"106":2,"107":2,"119":1,"120":1,"129":2,"130":1,"173":1,"175":2,"183":6,"240":2,"241":1,"258":1,"268":1,"286":1,"307":3,"315":1,"319":1,"337":1,"344":1,"345":2,"346":1,"348":1,"364":1,"391":1,"448":1,"449":2,"450":2,"460":1,"478":2,"479":1}}],["iethclient",{"2":{"308":2,"309":1}}],["ierc20",{"2":{"13":1}}],["ie",{"0":{"37":1},"1":{"38":1},"2":{"4":1,"8":1,"49":1,"62":1,"63":1,"208":1}}],["i",{"0":{"197":1,"294":1,"295":1},"2":{"4":1,"68":2,"78":1,"145":1}}],["imperative",{"2":{"419":1}}],["improved",{"2":{"386":1}}],["improperly",{"2":{"296":1}}],["implicit",{"2":{"141":1}}],["implementing",{"2":{"334":1}}],["implemented",{"2":{"80":1,"151":1,"153":1,"155":1,"170":1,"173":1,"309":1,"354":1,"358":1,"407":1,"444":1}}],["implements",{"2":{"78":1,"171":1}}],["implementationaddressaddress",{"2":{"405":1}}],["implementations",{"2":{"298":1}}],["implementation",{"0":{"392":1,"403":1,"406":1},"1":{"404":1,"405":1,"406":1},"2":{"32":1,"59":1,"80":1,"91":1,"158":1,"170":1,"175":2,"402":1,"404":4,"405":1,"406":4,"414":1,"444":3}}],["implement",{"0":{"88":1},"2":{"32":1,"59":1,"91":1,"139":1,"356":1,"358":2,"407":1,"445":1}}],["important",{"0":{"297":1},"2":{"138":1,"139":1,"162":1,"301":1,"330":1}}],["importantly",{"2":{"3":1}}],["imported",{"2":{"138":2,"164":1,"255":1,"265":1,"295":1}}],["importing",{"2":{"136":1}}],["import",{"2":{"7":2,"12":2,"29":2,"30":2,"33":1,"34":1,"38":2,"43":2,"45":2,"47":2,"49":2,"52":1,"53":1,"62":2,"63":4,"72":2,"78":1,"83":2,"86":2,"91":2,"98":1,"106":6,"107":8,"108":2,"109":1,"123":1,"124":1,"130":1,"135":4,"136":2,"137":3,"200":2,"225":1,"226":5,"231":2,"255":1,"265":2,"275":1,"283":1,"284":2,"294":2,"295":2,"372":1,"391":1,"406":1,"425":1,"426":2,"446":1,"447":1,"448":8,"449":1,"450":1,"460":1,"461":1,"464":1,"465":5,"469":2}}],["immediately",{"2":{"13":1,"79":1}}],["imagehashbytes32hash",{"2":{"409":1,"413":1}}],["imagehash",{"0":{"398":1,"443":1},"1":{"399":1,"401":1},"2":{"398":2,"399":1,"400":1,"401":1,"408":3,"410":1,"412":2,"413":3,"419":3,"422":4,"442":1,"443":3,"444":4}}],["images",{"0":{"337":1},"2":{"17":1,"56":1,"337":1,"338":1,"347":1}}],["image",{"0":{"399":1},"2":{"4":7,"56":1,"67":1,"68":1,"200":2,"212":3,"337":1,"338":1}}],["iterate",{"2":{"425":2,"426":2,"427":1}}],["item",{"0":{"335":1},"1":{"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"185":2,"337":1,"342":1}}],["items",{"2":{"30":1,"336":1}}],["itself",{"2":{"239":1,"240":1,"390":1,"405":1,"406":1,"413":1,"417":2,"447":1,"477":1,"478":1}}],["its",{"2":{"130":1,"154":1,"200":1,"225":1,"295":1,"442":2,"464":1}}],["it",{"0":{"7":1,"162":1,"187":1},"2":{"3":3,"10":1,"31":1,"36":2,"39":4,"55":1,"56":1,"67":2,"68":1,"72":3,"83":2,"86":2,"88":1,"89":1,"90":3,"98":1,"100":1,"130":1,"136":3,"137":3,"138":1,"139":3,"145":3,"147":1,"150":1,"156":5,"157":1,"161":1,"163":2,"164":2,"171":5,"173":1,"174":2,"178":2,"181":1,"185":2,"187":1,"199":1,"200":1,"225":1,"228":1,"232":1,"245":1,"247":1,"249":1,"253":1,"259":1,"261":1,"263":1,"269":1,"270":1,"273":1,"289":1,"295":1,"297":1,"300":1,"303":1,"304":1,"310":1,"327":1,"328":3,"329":1,"330":1,"331":2,"333":1,"338":2,"343":1,"344":1,"345":3,"346":3,"348":1,"358":1,"363":2,"364":5,"365":3,"372":1,"382":1,"383":1,"391":2,"395":1,"402":3,"403":1,"405":1,"413":2,"416":1,"419":3,"420":1,"421":1,"437":1,"442":3,"444":1,"446":1,"455":2,"456":2,"460":1,"461":2,"464":1,"466":1,"470":1,"483":1}}],["isthis",{"2":{"449":2}}],["issenttransactionresponse",{"2":{"460":3,"461":2}}],["issessionvalid",{"2":{"454":2}}],["issignedin",{"2":{"448":1}}],["issignerleaf",{"2":{"443":1}}],["issubdigestleaf",{"2":{"443":1}}],["issued",{"2":{"461":1}}],["issuer",{"2":{"449":2}}],["issue",{"2":{"293":1}}],["islisting",{"2":{"352":1,"391":1}}],["ismounted",{"2":{"294":2}}],["isbound",{"2":{"173":1}}],["isnestedleaf",{"2":{"443":1}}],["isn",{"2":{"137":1,"164":1}}],["isconnected",{"2":{"108":2}}],["isvalidsignature",{"2":{"427":3}}],["isvalidbooltrue",{"2":{"410":1}}],["isvalidimage",{"0":{"408":1},"1":{"409":1,"410":1},"2":{"408":1}}],["isvalidmessagesignature",{"2":{"234":1,"472":1}}],["isvalidethauthproof",{"2":{"86":1}}],["isvalid",{"2":{"86":2,"234":2,"408":1,"427":2,"454":2,"472":2}}],["isfeerequired",{"2":{"10":1}}],["is",{"2":{"1":1,"2":1,"3":3,"4":4,"5":1,"8":1,"9":1,"12":2,"14":1,"28":1,"29":1,"30":1,"31":2,"32":3,"35":1,"36":3,"37":1,"39":4,"41":2,"42":1,"43":1,"44":1,"45":1,"46":1,"47":2,"54":1,"55":2,"56":2,"57":1,"58":1,"67":5,"68":2,"69":5,"72":2,"78":2,"79":2,"80":1,"81":1,"83":2,"86":6,"90":2,"97":2,"98":1,"99":4,"100":1,"101":1,"105":1,"106":1,"115":1,"129":1,"136":4,"137":2,"138":2,"139":3,"141":1,"145":1,"147":2,"148":3,"149":4,"150":3,"152":1,"154":1,"156":2,"157":2,"158":3,"159":2,"160":4,"161":3,"162":1,"163":1,"164":1,"166":1,"171":1,"173":9,"174":2,"179":1,"180":2,"181":1,"185":2,"193":3,"196":3,"199":6,"200":2,"205":2,"207":1,"209":1,"213":1,"214":1,"215":1,"218":1,"222":6,"225":3,"226":3,"228":2,"238":1,"239":3,"240":3,"241":1,"243":1,"244":4,"245":1,"246":2,"247":2,"249":1,"250":1,"253":1,"254":1,"255":1,"257":1,"258":1,"260":1,"262":3,"263":1,"264":1,"265":1,"267":1,"268":1,"271":1,"272":3,"273":1,"274":1,"279":1,"280":1,"288":1,"289":1,"290":2,"291":1,"293":4,"294":5,"295":5,"296":2,"298":1,"299":2,"300":2,"305":5,"306":5,"307":1,"308":1,"310":4,"315":1,"319":1,"327":1,"328":3,"330":1,"333":2,"343":1,"344":1,"346":2,"348":1,"354":1,"363":3,"364":2,"365":4,"371":2,"372":1,"376":1,"378":1,"386":2,"387":3,"389":1,"390":3,"391":4,"397":1,"398":4,"402":1,"406":1,"407":2,"408":2,"411":1,"412":1,"413":4,"414":4,"415":2,"416":1,"417":1,"418":2,"419":4,"420":1,"421":1,"422":3,"425":2,"426":2,"427":5,"435":1,"437":2,"438":2,"439":1,"440":2,"441":4,"442":7,"443":6,"444":1,"446":1,"447":3,"448":7,"452":1,"454":1,"455":1,"456":4,"458":1,"460":1,"461":3,"464":3,"465":3,"466":2,"476":1,"477":3,"478":3,"479":1,"481":1,"482":4,"483":1,"484":2}}],["iframe",{"2":{"17":1}}],["if",{"2":{"0":1,"4":1,"5":1,"12":1,"13":3,"29":1,"30":1,"32":1,"33":1,"36":1,"43":1,"47":1,"52":1,"56":1,"59":1,"68":1,"69":1,"72":7,"73":1,"78":3,"79":2,"86":9,"88":1,"89":1,"91":1,"103":1,"121":1,"129":2,"135":2,"136":1,"137":4,"138":1,"145":2,"147":2,"148":2,"150":2,"151":1,"153":1,"155":1,"156":3,"159":2,"160":2,"171":2,"173":2,"180":1,"181":2,"185":1,"193":1,"197":1,"199":3,"200":4,"213":1,"214":1,"215":1,"218":1,"219":1,"222":2,"226":3,"229":1,"234":1,"236":2,"237":1,"246":3,"247":1,"249":2,"252":1,"254":1,"260":1,"271":1,"294":1,"305":4,"306":4,"307":2,"308":1,"310":1,"328":1,"329":2,"330":2,"331":2,"332":1,"345":1,"348":1,"358":1,"365":1,"376":1,"380":1,"386":1,"387":2,"389":2,"390":2,"391":3,"405":1,"408":1,"410":1,"413":1,"416":1,"419":1,"421":1,"422":1,"425":1,"426":1,"427":3,"437":1,"441":1,"442":1,"443":3,"444":1,"446":1,"448":1,"453":1,"455":2,"456":2,"460":2,"461":2,"465":3,"467":1,"472":1,"474":2,"475":1,"484":3}}],["inaccessible",{"2":{"442":1}}],["inactive",{"2":{"365":1}}],["inner",{"2":{"442":1}}],["individual",{"2":{"386":1}}],["indicating",{"2":{"295":1}}],["indexing",{"2":{"39":1}}],["indexeddb",{"2":{"388":2}}],["indexeable",{"2":{"63":1}}],["indexes",{"2":{"39":2}}],["indexer",{"0":{"31":1,"39":1},"1":{"32":1,"33":1,"34":1,"35":1,"40":1,"41":1},"2":{"28":1,"29":12,"30":12,"31":4,"32":9,"33":6,"34":5,"35":1,"36":3,"37":1,"38":12,"39":8,"42":1,"43":13,"44":1,"45":15,"46":1,"47":14,"48":2,"55":1,"61":2,"63":1,"132":1,"158":3,"166":1}}],["index",{"2":{"14":1,"86":1,"460":1}}],["independently",{"2":{"363":1,"364":1,"365":1}}],["independent",{"2":{"8":1,"9":2,"79":1,"386":2,"431":1,"438":1}}],["inherit",{"2":{"294":1,"334":1}}],["inherits",{"2":{"171":1}}],["incorrect",{"2":{"413":1}}],["increase",{"2":{"199":1}}],["increment",{"2":{"132":3,"166":3}}],["including",{"0":{"47":1},"2":{"41":2,"130":1,"154":1,"258":1,"268":1,"327":1,"391":1}}],["includes",{"2":{"43":1,"72":1,"199":1,"449":1,"460":1}}],["includecontracts",{"2":{"29":1,"30":1,"36":1,"43":1,"47":1}}],["includedpaymentproviders",{"0":{"216":1},"2":{"200":2,"216":1}}],["included",{"2":{"29":2,"30":2,"43":2,"47":2,"309":1,"460":1}}],["includemetadata",{"2":{"29":3,"30":3,"34":2,"38":1,"43":3,"45":2,"47":3,"48":1,"61":1}}],["include",{"2":{"4":1,"10":1,"36":1,"56":1,"65":1,"73":1,"113":1,"114":1,"149":1,"150":1,"157":1,"329":1,"413":1}}],["input",{"2":{"118":1,"149":1,"178":1,"413":1}}],["inputted",{"2":{"83":1}}],["inline",{"2":{"118":1}}],["involve",{"2":{"459":1}}],["involves",{"2":{"160":1}}],["invoking",{"0":{"109":1}}],["invoke",{"2":{"108":1}}],["invalid",{"2":{"89":1,"236":1,"397":1,"404":1,"437":1,"474":1}}],["investigate",{"2":{"0":1}}],["initiateauth",{"2":{"447":1}}],["initiated",{"2":{"222":1}}],["initiating",{"2":{"287":1}}],["initialization",{"0":{"283":1},"2":{"444":2}}],["initializes",{"2":{"295":1}}],["initialized",{"2":{"129":1,"283":1,"284":1,"295":1}}],["initialize",{"0":{"231":1,"469":1},"2":{"72":1,"81":2,"414":1}}],["initial",{"0":{"400":1,"444":1},"1":{"401":1},"2":{"178":1,"193":1,"400":1,"402":1,"403":1,"438":1,"444":5}}],["initwallet",{"2":{"200":2}}],["init",{"2":{"81":3}}],["infinity",{"2":{"441":2}}],["infura",{"2":{"226":2,"465":2}}],["infer",{"2":{"70":1}}],["informed",{"2":{"390":1}}],["informs",{"2":{"295":1}}],["information",{"2":{"29":1,"32":1,"39":1,"56":1,"67":1,"70":1,"96":1,"170":3,"194":1,"295":1,"370":1,"389":1}}],["info",{"2":{"49":1,"67":1,"71":1,"73":1,"80":1,"81":1,"145":2,"200":1,"390":1,"407":1}}],["infrastructure",{"2":{"6":2,"39":1,"99":1,"196":1,"244":1,"482":1}}],["insightful",{"2":{"187":1}}],["insights",{"2":{"186":1}}],["inside",{"2":{"8":1,"35":1,"54":1}}],["insecurely",{"2":{"170":1}}],["inspector",{"2":{"164":2}}],["instead",{"2":{"67":1,"130":1,"145":1,"225":1,"260":1,"271":1,"308":1,"329":1,"386":1,"398":2,"414":1,"443":1,"445":1,"464":1}}],["instructions",{"0":{"64":1},"2":{"31":1,"183":1}}],["instantiating",{"2":{"200":1}}],["instantiate",{"2":{"91":1}}],["instances",{"2":{"457":1}}],["instance",{"2":{"29":1,"98":1,"158":1,"200":2,"372":1,"447":2}}],["installing",{"0":{"105":1},"2":{"104":1,"137":1}}],["installed",{"2":{"81":1,"135":1,"199":1,"248":1,"254":2,"264":1,"281":1,"377":1}}],["installation",{"0":{"31":1,"32":1,"33":1,"34":1,"35":1,"52":1,"53":1,"54":1,"96":1,"134":1,"168":1,"254":1,"264":1,"274":1,"281":1,"370":1},"1":{"32":1,"33":2,"34":2,"35":2,"135":1,"136":1,"137":1,"169":1,"170":1},"2":{"52":1}}],["install",{"0":{"247":1,"376":1},"1":{"248":1,"377":1},"2":{"7":2,"33":2,"52":2,"81":1,"86":2,"91":2,"96":2,"105":5,"107":1,"123":3,"136":1,"199":1,"200":2,"221":1,"247":2,"254":1,"260":2,"264":1,"271":2,"274":1,"281":1,"370":2,"376":2,"384":1}}],["int256",{"2":{"330":1}}],["int",{"2":{"150":1,"318":1,"330":1}}],["introduction",{"0":{"132":1,"166":1,"296":1,"336":1},"1":{"133":1,"167":1,"297":1}}],["introduced",{"2":{"36":1}}],["introducing",{"2":{"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1}}],["into",{"0":{"250":1,"378":1},"1":{"251":1,"379":1},"2":{"6":1,"10":1,"31":1,"81":1,"82":1,"86":1,"101":1,"103":2,"136":1,"137":1,"145":1,"156":1,"157":1,"160":1,"171":2,"178":1,"179":1,"195":1,"196":1,"212":1,"247":1,"250":1,"252":2,"261":1,"270":1,"295":1,"305":1,"306":1,"310":1,"330":1,"339":1,"376":1,"378":1,"380":2,"443":2}}],["intend",{"2":{"390":1}}],["intent",{"2":{"145":19,"200":3,"364":1}}],["integers",{"2":{"330":1}}],["integer",{"2":{"218":1,"319":1,"330":2}}],["integrity",{"2":{"204":1,"225":1,"464":1}}],["integration",{"0":{"123":1,"173":1,"177":1,"293":1},"1":{"124":1,"125":1,"126":1,"127":1,"178":1,"179":1,"180":1,"181":1},"2":{"102":1,"131":1,"132":1,"166":1,"194":1,"196":1,"198":1,"201":1,"251":1,"279":1,"379":1}}],["integrations",{"2":{"29":1,"49":1,"57":1,"62":1,"63":2,"197":1,"391":1}}],["integrating",{"2":{"8":1,"101":1,"200":1,"250":1,"353":1,"378":1,"385":1}}],["integrates",{"2":{"197":1}}],["integrated",{"2":{"35":1,"54":1,"55":1,"132":1,"216":1,"217":1}}],["integrate",{"0":{"18":1,"23":1,"26":1,"27":1,"250":1,"378":1},"1":{"251":1,"379":1},"2":{"0":1,"31":1,"32":1,"59":1,"102":1,"103":1,"123":1,"128":1,"195":1,"246":1,"251":1,"252":1,"361":1,"379":1,"380":1,"383":1,"484":1}}],["interchangeably",{"2":{"300":1}}],["intercepted",{"2":{"178":1}}],["interpret",{"2":{"229":1,"467":1}}],["interoperability",{"2":{"199":1}}],["internally",{"2":{"408":1,"443":1}}],["internal",{"2":{"187":1,"363":1,"408":1,"442":3}}],["intermediate",{"2":{"185":1}}],["interfacing",{"2":{"105":1}}],["interfaces",{"2":{"392":1}}],["interface",{"2":{"8":1,"57":2,"59":1,"72":1,"78":1,"86":1,"91":2,"158":1,"222":1,"238":2,"239":2,"240":2,"241":3,"298":2,"300":1,"301":1,"308":1,"309":1,"334":1,"407":3,"476":2,"477":2,"478":2,"479":3}}],["interested",{"2":{"10":1}}],["interacting",{"2":{"126":1,"149":1,"156":1,"330":1,"333":1,"442":1}}],["interactions",{"0":{"151":1,"153":1,"155":1},"2":{"151":1,"153":1,"155":1,"229":1,"467":1}}],["interaction",{"2":{"80":1,"235":1,"473":1}}],["interact",{"2":{"1":1,"10":1,"90":1,"98":1,"334":1,"363":1,"372":1,"445":1}}],["in",{"0":{"15":1,"21":1,"22":1,"29":1,"46":1,"47":1,"88":1,"115":1,"128":1,"140":1,"141":1,"186":1,"335":1,"446":1,"447":1},"1":{"47":1,"116":1,"117":1,"118":1,"119":1,"120":1,"129":1,"142":1,"143":1,"144":1,"145":1,"146":1,"187":1,"188":1,"189":1,"190":1,"191":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"447":1,"448":1},"2":{"0":3,"2":1,"3":5,"4":6,"8":3,"9":1,"10":3,"12":1,"29":5,"30":3,"31":1,"32":1,"34":1,"36":2,"38":3,"39":4,"41":3,"43":4,"45":3,"47":5,"49":2,"52":1,"53":1,"55":1,"56":3,"58":1,"62":2,"63":6,"65":3,"67":3,"69":5,"70":2,"72":2,"73":1,"79":5,"80":2,"81":7,"82":1,"83":6,"85":1,"86":6,"87":2,"91":1,"99":3,"101":1,"104":2,"108":2,"113":1,"115":1,"116":2,"117":2,"118":2,"119":4,"120":3,"121":4,"123":1,"127":1,"129":1,"130":1,"132":1,"133":3,"135":4,"136":2,"137":6,"138":5,"139":1,"140":2,"141":5,"142":2,"143":2,"145":7,"147":3,"148":1,"149":2,"150":1,"152":1,"154":4,"156":6,"157":2,"159":1,"160":4,"161":3,"164":7,"166":4,"169":2,"170":3,"171":6,"173":6,"174":1,"178":2,"179":2,"181":1,"183":2,"185":5,"186":1,"187":4,"188":2,"192":1,"193":5,"195":1,"196":1,"197":3,"198":1,"200":2,"205":2,"210":2,"213":2,"214":2,"215":2,"216":1,"217":1,"222":1,"225":3,"226":3,"228":1,"229":2,"232":1,"236":1,"238":1,"239":2,"240":2,"241":1,"243":1,"244":3,"246":2,"249":1,"250":1,"258":1,"268":1,"278":1,"290":1,"293":2,"294":4,"295":7,"296":7,"298":2,"305":1,"306":1,"307":1,"308":2,"309":2,"310":2,"311":1,"313":1,"314":2,"315":1,"316":2,"318":1,"319":1,"320":1,"325":1,"326":1,"327":1,"328":1,"329":3,"330":1,"336":1,"337":1,"338":1,"341":1,"346":1,"348":1,"350":1,"353":1,"356":1,"362":1,"363":1,"364":1,"365":4,"378":1,"385":1,"387":1,"388":2,"389":1,"390":1,"391":5,"392":1,"401":1,"404":1,"407":1,"408":1,"413":1,"415":1,"416":1,"422":2,"426":1,"431":1,"435":1,"438":1,"442":1,"446":3,"447":2,"448":1,"452":1,"453":2,"460":1,"464":3,"465":3,"466":1,"467":2,"470":1,"474":1,"476":1,"477":2,"478":2,"479":1,"481":1,"482":3,"484":2}}],["ffailurecallback",{"2":{"181":1}}],["fsequenceerror",{"2":{"181":2}}],["fstoredcredentials",{"2":{"180":1}}],["fstring",{"2":{"173":4,"174":1,"175":1,"180":1,"181":2}}],["fscriptdelegate",{"2":{"173":1}}],["fcredentials",{"2":{"171":1,"173":2,"180":2}}],["fly",{"2":{"337":1}}],["flexible",{"2":{"199":1,"359":1}}],["flexibility",{"2":{"137":1}}],["flagged",{"2":{"416":1}}],["flag",{"2":{"180":1,"208":1}}],["floating",{"2":{"149":1}}],["flows",{"2":{"451":1}}],["flow",{"2":{"141":1,"222":1}}],["fmt",{"2":{"12":1,"13":2,"29":1,"30":1,"38":1,"43":1,"45":1,"47":1}}],["feb",{"2":{"432":1}}],["few",{"2":{"41":1,"102":1,"136":1,"162":1,"164":1,"179":1,"185":1,"251":1,"379":1}}],["feehistoryresult",{"2":{"318":2}}],["feehistory",{"0":{"318":1},"2":{"318":2}}],["feeoption",{"2":{"72":1,"78":1}}],["feeoptions",{"2":{"12":1}}],["feel",{"2":{"56":1,"131":1,"137":1,"139":1,"161":1,"196":1,"249":1}}],["feetokens",{"2":{"10":2}}],["fee",{"0":{"12":1},"2":{"10":3,"12":4,"13":1,"72":1,"73":1,"323":1}}],["fees",{"0":{"10":1},"2":{"10":1,"72":3,"78":1,"318":1,"359":1}}],["fetches",{"0":{"29":1},"2":{"43":1,"47":1}}],["fetching",{"0":{"12":1,"14":1},"2":{"29":1,"61":1,"161":1}}],["fetch",{"0":{"17":1,"30":1,"38":1,"43":1,"45":1,"47":1,"49":1,"62":1},"2":{"7":2,"14":1,"29":1,"41":4,"48":1,"58":2,"60":4,"61":1,"62":1,"63":1,"64":2,"86":1,"391":3}}],["feature",{"2":{"6":1,"123":1,"293":1,"295":2,"339":1}}],["features",{"0":{"102":1,"251":1,"379":1},"2":{"1":1,"8":1,"39":1,"132":1,"136":1,"166":1,"246":2,"484":2}}],["fashion",{"2":{"426":1}}],["fast",{"2":{"1":1,"2":1,"8":1,"39":1,"51":1,"55":1}}],["fauthenticatorconfig",{"2":{"183":1}}],["familiar",{"2":{"103":1,"156":1,"199":1,"252":1,"361":1,"380":1}}],["facet",{"2":{"362":1}}],["facebook",{"2":{"102":1,"119":1,"130":1,"141":1,"213":1,"251":1,"379":1,"446":1,"453":1}}],["facilitate",{"2":{"122":1}}],["factual",{"2":{"401":1,"407":1,"422":1}}],["factory",{"2":{"400":1,"401":2,"402":1,"403":1,"407":1,"414":2,"430":1,"444":1}}],["fact",{"2":{"39":1,"67":1,"99":1,"244":1,"386":1,"482":1}}],["fall",{"2":{"68":1}}],["false",{"0":{"415":1},"2":{"29":1,"30":1,"43":1,"47":1,"200":2,"219":1,"391":1,"414":2,"420":1,"448":1,"449":1,"454":1,"455":2,"456":1,"458":1,"461":1}}],["fate",{"2":{"68":1}}],["fatal",{"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1}}],["failing",{"2":{"461":1}}],["fails",{"2":{"185":1,"305":1,"306":1,"416":1,"461":2}}],["failedtransactionresponse",{"2":{"461":1}}],["failedtransactionreturn",{"2":{"148":1}}],["failed",{"0":{"461":1},"2":{"459":2,"460":1}}],["failedcontractdeploymentreturn",{"2":{"160":1}}],["failure",{"2":{"138":1,"170":1,"328":1}}],["failures",{"2":{"39":1}}],["fail",{"2":{"6":1,"157":1,"185":1,"296":1,"305":1,"306":1}}],["friendlyname",{"2":{"449":2}}],["freshly",{"2":{"344":1}}],["frequent",{"2":{"229":1,"467":1}}],["free",{"2":{"5":1,"8":1,"10":3,"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1,"56":2,"131":1,"139":1,"161":1,"249":1}}],["framework",{"2":{"166":1,"196":1}}],["frommnemonic",{"2":{"12":1}}],["from",{"0":{"158":1,"227":1},"2":{"0":1,"1":1,"3":1,"4":1,"6":1,"7":2,"12":2,"14":1,"17":1,"29":4,"30":1,"32":1,"33":3,"36":2,"38":1,"39":6,"41":1,"43":1,"45":1,"47":1,"49":2,"52":3,"60":2,"62":2,"63":4,"65":1,"67":1,"72":3,"78":2,"79":2,"80":1,"81":1,"83":5,"86":5,"87":1,"89":1,"90":2,"91":5,"98":1,"106":6,"107":8,"108":3,"109":1,"121":1,"123":1,"124":1,"130":1,"131":1,"135":3,"140":1,"145":1,"147":1,"148":2,"150":1,"154":1,"156":2,"158":1,"159":2,"160":3,"169":1,"171":1,"173":1,"174":4,"180":2,"185":1,"187":1,"199":1,"200":2,"219":1,"222":4,"225":3,"226":5,"229":2,"231":2,"237":1,"239":2,"240":2,"241":2,"246":2,"255":1,"265":2,"275":1,"283":1,"284":3,"294":2,"295":1,"307":1,"308":1,"314":1,"329":1,"331":1,"334":1,"336":1,"337":1,"338":1,"345":1,"362":1,"363":1,"364":2,"365":1,"372":1,"382":1,"383":1,"386":1,"388":1,"389":1,"391":1,"402":1,"405":1,"406":1,"413":1,"425":1,"426":2,"446":1,"447":2,"448":10,"449":1,"450":2,"458":1,"460":1,"461":1,"464":3,"465":5,"467":2,"469":2,"475":1,"477":2,"478":2,"479":2,"484":2}}],["frontend",{"2":{"8":1,"365":2}}],["front",{"2":{"0":1}}],["fiat",{"0":{"353":1,"385":1}}],["fixedbyte",{"2":{"330":1}}],["fixed",{"2":{"330":1,"407":1}}],["fixing",{"2":{"293":1}}],["fit",{"2":{"137":2,"193":1,"297":1}}],["fields",{"2":{"69":2,"129":1,"460":1}}],["field",{"2":{"67":1,"69":2,"126":1,"127":1,"130":1,"142":1,"143":1,"183":1}}],["fill",{"2":{"138":1,"346":1}}],["filter",{"2":{"43":6,"45":5,"47":1,"145":9,"188":1,"391":1}}],["files",{"0":{"339":1},"2":{"136":2,"337":1,"338":3,"339":1,"340":1,"344":1}}],["file",{"2":{"4":1,"88":1,"137":1,"145":2,"169":1,"183":1,"185":2,"337":1,"338":1,"346":1,"448":1}}],["firm",{"2":{"154":1}}],["fires",{"2":{"180":1}}],["fired",{"2":{"173":1,"187":1}}],["fire",{"2":{"8":1,"174":2,"175":1}}],["first",{"0":{"414":1},"1":{"415":1,"416":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1},"2":{"3":1,"56":1,"81":1,"83":2,"90":1,"130":1,"133":1,"145":1,"151":1,"153":1,"155":1,"160":1,"185":1,"200":1,"337":2,"387":1,"414":1,"419":2}}],["finishvalidatesession",{"2":{"455":2}}],["finishes",{"2":{"419":2}}],["finished",{"2":{"185":1,"222":1}}],["finalizeauth",{"2":{"447":1}}],["finalize",{"0":{"347":1}}],["finally",{"2":{"4":1,"69":1,"70":1,"82":1,"85":1,"90":1,"91":1,"174":1,"346":1}}],["fingerprints",{"2":{"183":1}}],["fine",{"2":{"69":1}}],["findobjectoftype",{"2":{"139":1}}],["finding",{"2":{"136":1}}],["findsupportednetwork",{"2":{"86":2,"91":4}}],["find",{"2":{"4":1,"12":1,"32":1,"72":5,"78":1,"83":1,"171":1,"225":1,"421":1,"422":1,"464":1}}],["fom",{"2":{"391":1}}],["focused",{"2":{"196":1,"197":1}}],["focus",{"2":{"193":1,"196":1,"344":1}}],["fonts",{"2":{"193":1}}],["folder",{"0":{"340":1},"2":{"81":2,"82":1,"135":2,"136":2,"138":4,"171":7,"185":2,"293":3,"295":2,"339":4,"340":2,"345":1,"346":1}}],["follows",{"2":{"91":1,"132":1,"166":1,"222":1,"425":1,"440":1,"441":1,"442":1,"443":2}}],["followed",{"2":{"9":1}}],["following",{"2":{"4":1,"7":1,"72":1,"73":1,"78":1,"80":2,"83":2,"84":1,"88":1,"91":1,"145":1,"147":1,"164":1,"169":1,"178":1,"179":1,"182":1,"183":1,"184":1,"185":2,"226":1,"254":1,"260":1,"271":1,"336":1,"365":1,"419":1,"436":1,"442":1,"444":1,"445":1,"465":1}}],["follow",{"2":{"2":1,"32":1,"59":1,"73":1,"81":1,"83":1,"85":1,"89":1,"106":1,"123":1,"212":1,"392":1}}],["found",{"2":{"72":9,"136":1,"138":1,"161":2,"169":1,"171":1,"236":1,"294":1,"295":2,"309":1,"474":1}}],["force",{"2":{"208":1}}],["forward",{"2":{"171":2,"175":1}}],["forwarder",{"2":{"171":1}}],["formerly",{"2":{"431":1}}],["forms",{"2":{"354":1}}],["form",{"2":{"149":1,"161":1,"355":1}}],["formats",{"2":{"61":1,"65":1}}],["format",{"2":{"58":1,"65":1,"67":1,"69":2,"140":1,"149":1,"150":2,"156":4,"307":2,"310":2,"311":1,"313":1,"314":1,"315":1,"316":2,"318":1,"319":1,"320":1,"348":1}}],["forum",{"2":{"145":1}}],["foreach",{"2":{"106":1,"107":1}}],["forget",{"2":{"8":1,"164":1}}],["for",{"0":{"43":1,"45":1,"62":1,"83":1,"224":1,"246":1,"457":1,"463":1,"484":1},"1":{"84":1,"85":1},"2":{"0":1,"2":1,"3":1,"4":4,"5":1,"6":2,"8":4,"9":1,"10":5,"12":1,"13":2,"14":1,"29":4,"30":2,"32":3,"33":3,"34":3,"36":1,"38":1,"39":2,"41":2,"43":4,"45":2,"47":3,"48":3,"49":2,"51":1,"55":4,"56":3,"57":3,"59":1,"61":5,"62":1,"63":3,"65":1,"67":5,"68":2,"69":1,"71":1,"72":7,"73":2,"78":3,"79":4,"80":1,"81":1,"83":1,"84":1,"86":1,"87":2,"91":1,"96":2,"99":1,"100":2,"101":1,"105":2,"106":3,"110":1,"113":2,"119":1,"120":1,"126":1,"129":3,"132":2,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"145":2,"147":1,"148":3,"149":2,"151":3,"153":3,"154":1,"155":3,"156":1,"157":2,"159":2,"160":2,"161":2,"166":1,"171":2,"173":2,"178":2,"182":1,"183":2,"184":1,"187":2,"188":3,"189":1,"192":1,"193":4,"194":3,"196":5,"197":3,"198":1,"199":4,"200":1,"203":1,"204":1,"205":1,"207":1,"218":1,"220":1,"222":2,"225":1,"226":3,"229":3,"243":1,"244":1,"245":2,"246":2,"247":2,"249":4,"250":1,"259":2,"261":2,"262":4,"268":1,"269":2,"270":2,"272":5,"280":1,"288":1,"291":1,"293":4,"295":1,"296":2,"299":1,"301":1,"302":1,"304":1,"306":1,"308":1,"309":1,"310":1,"315":1,"316":1,"317":1,"318":1,"319":1,"320":1,"323":1,"326":1,"327":2,"328":2,"329":1,"330":2,"333":2,"334":3,"336":2,"337":1,"338":2,"339":1,"344":2,"345":2,"346":1,"348":1,"358":1,"361":1,"364":1,"370":2,"378":1,"386":1,"387":3,"390":2,"391":5,"394":1,"399":1,"401":1,"407":1,"413":3,"419":2,"421":1,"422":1,"425":1,"426":1,"427":1,"436":3,"441":2,"443":1,"446":1,"447":1,"449":1,"452":1,"454":2,"457":2,"458":1,"460":1,"464":1,"465":3,"467":3,"481":1,"482":1,"483":2,"484":2}}],["future",{"2":{"72":1}}],["fungible",{"2":{"150":1,"152":1,"154":1}}],["funding",{"2":{"218":1,"219":1}}],["funds",{"2":{"200":1,"404":1,"418":1}}],["fund",{"2":{"73":1}}],["funded",{"2":{"72":1}}],["func",{"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1}}],["functionnameasstring",{"2":{"156":2,"157":1}}],["functions",{"0":{"329":1},"2":{"148":1,"151":1,"153":1,"155":1,"160":1,"178":1,"234":1,"247":1,"261":1,"270":1,"472":1}}],["function",{"2":{"7":3,"72":1,"78":1,"86":1,"91":1,"106":1,"107":1,"129":1,"130":1,"147":1,"149":1,"156":5,"159":1,"170":2,"171":2,"225":1,"238":2,"239":2,"240":2,"241":3,"246":1,"295":1,"328":3,"329":1,"404":1,"408":2,"412":1,"414":1,"427":1,"443":4,"444":1,"448":5,"449":1,"464":1,"476":2,"477":2,"478":2,"479":3,"484":1}}],["functionality",{"2":{"158":1,"179":1,"222":1,"238":1,"239":1,"240":1,"249":1,"354":1,"358":1,"415":1,"476":1,"477":1,"478":1}}],["functional",{"2":{"1":1,"361":1,"448":1}}],["fur",{"2":{"67":1}}],["further",{"2":{"0":1,"200":1}}],["full",{"2":{"32":1,"40":1,"56":1,"59":1,"68":1,"79":1,"91":1,"119":1,"120":1,"132":1,"166":1,"208":1,"220":1,"294":1,"295":1,"460":1,"461":1}}],["fully",{"2":{"1":1,"158":1,"290":1,"328":1,"361":1,"442":1}}],["wyre",{"2":{"385":1}}],["w3c",{"2":{"199":1}}],["won",{"2":{"363":1}}],["wooden",{"2":{"345":1}}],["wouldn",{"2":{"365":1}}],["would",{"2":{"86":1,"91":1,"156":1,"160":1,"200":1,"257":1,"267":1,"329":1,"331":1,"389":1,"390":1}}],["world",{"2":{"81":1,"82":1,"101":1,"250":1,"378":1,"425":1}}],["worried",{"2":{"71":1,"80":1}}],["workflow",{"2":{"225":1,"464":1}}],["working",{"2":{"83":1,"147":1,"148":1,"159":1,"160":1,"294":1,"296":1,"297":1,"307":1}}],["works",{"0":{"162":1,"187":1},"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"47":1,"49":1,"62":1,"63":2,"139":2,"156":1,"199":1,"200":3,"212":1,"243":1,"382":1,"383":1,"391":1,"442":1,"481":1}}],["workers",{"0":{"25":1},"2":{"82":1,"89":1,"90":1}}],["worker",{"2":{"17":1,"80":1,"81":1,"86":1,"89":1,"90":1}}],["work",{"2":{"4":1,"36":1,"56":1,"131":1,"133":1,"137":1,"138":1,"141":1,"161":1,"186":1,"199":4,"249":2,"310":1,"346":1,"447":1}}],["w",{"2":{"72":2}}],["wuelppex0pttvjabl8biuxpaaaaaaaaaa",{"2":{"63":2}}],["www",{"2":{"56":1,"68":1}}],["writing",{"2":{"181":1}}],["written",{"2":{"99":1,"197":1,"226":1,"243":1,"244":1,"246":1,"465":1,"481":1,"482":1,"484":1}}],["write",{"0":{"148":1},"1":{"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1},"2":{"3":2,"83":2,"137":1,"148":1,"344":1,"345":1,"347":1}}],["wrong",{"2":{"86":2,"219":2}}],["wrapping",{"2":{"180":1,"296":2}}],["wrappers",{"2":{"129":1,"137":1,"333":3}}],["wrapper",{"0":{"106":1,"107":1},"2":{"106":2,"107":1,"111":1,"151":1,"153":1,"155":1,"158":1,"160":1,"295":6,"333":1,"334":1}}],["wrapped",{"2":{"10":1}}],["wrap",{"2":{"106":1,"295":2}}],["wrangler=",{"2":{"81":1}}],["wrangler",{"0":{"81":1,"88":1},"1":{"82":1},"2":{"80":2,"81":8,"82":1,"87":1,"88":1,"89":1}}],["why",{"0":{"293":1,"354":1},"1":{"355":1,"356":1,"357":1,"358":1,"359":1,"360":1}}],["whose",{"2":{"391":1}}],["who",{"2":{"199":1,"365":1,"435":1,"453":1}}],["whole",{"2":{"149":1,"157":1,"305":1,"306":1,"416":1,"442":1,"443":1}}],["whistles",{"2":{"296":1}}],["white",{"2":{"192":1,"193":3,"194":1}}],["whitespace",{"2":{"156":1}}],["while",{"2":{"132":1,"160":1,"165":1,"166":1,"193":3,"199":1,"210":1,"222":1,"225":1,"229":1,"293":1,"296":1,"305":1,"306":1,"328":1,"361":1,"363":1,"383":1,"390":1,"414":1,"444":1,"464":1,"467":1}}],["which",{"2":{"4":1,"8":2,"29":1,"30":1,"36":3,"43":1,"47":1,"67":2,"68":2,"72":1,"79":1,"82":1,"83":1,"84":1,"100":1,"119":1,"120":1,"121":1,"148":1,"158":1,"159":1,"160":2,"164":2,"171":1,"175":1,"178":1,"195":1,"197":1,"199":1,"202":1,"220":1,"222":1,"225":2,"238":1,"239":1,"240":1,"243":1,"245":1,"247":1,"260":1,"261":2,"270":2,"271":1,"272":2,"278":1,"294":1,"295":4,"301":1,"305":1,"306":1,"327":1,"329":1,"334":1,"353":2,"354":1,"362":1,"383":1,"385":2,"405":1,"408":1,"413":1,"421":1,"441":1,"444":1,"464":2,"476":1,"477":1,"478":1,"481":1,"483":1}}],["whatever",{"2":{"175":1}}],["what",{"0":{"193":1,"196":1,"197":1},"2":{"41":2,"83":1,"295":1,"344":1,"358":1,"364":1,"415":1}}],["whether",{"2":{"118":1,"210":1,"219":1,"261":1,"270":1,"427":1,"453":1,"456":1}}],["where",{"2":{"58":1,"67":1,"83":1,"147":1,"149":1,"156":1,"160":1,"173":1,"178":1,"180":2,"181":2,"196":1,"212":1,"228":1,"246":1,"296":1,"330":1,"344":1,"439":1,"466":1,"484":1}}],["whereby",{"2":{"8":1}}],["whenever",{"2":{"334":1,"445":1}}],["when",{"0":{"293":1},"2":{"36":1,"63":1,"67":1,"68":1,"90":1,"130":1,"133":1,"136":2,"137":1,"138":1,"139":1,"148":1,"149":1,"151":1,"153":1,"155":1,"156":2,"157":1,"159":1,"160":1,"174":1,"180":1,"185":1,"186":1,"187":1,"200":2,"201":1,"212":1,"217":1,"225":1,"261":1,"270":1,"287":1,"294":1,"295":2,"296":4,"297":1,"310":1,"328":2,"329":1,"330":1,"333":1,"364":1,"387":1,"391":1,"414":1,"419":2,"427":1,"448":2,"453":1,"456":2,"458":1,"464":1}}],["warning",{"2":{"404":1,"419":1}}],["wagmiclient",{"2":{"295":2}}],["wagmiconfig",{"2":{"106":3,"107":4,"123":2,"130":3,"255":1,"295":2}}],["wagmiwrapper",{"2":{"295":6}}],["wagmiprovider",{"2":{"106":1,"107":1,"295":1}}],["wagmi",{"0":{"253":1,"260":1,"271":1},"1":{"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1},"2":{"101":1,"105":4,"106":5,"107":2,"108":2,"119":1,"120":1,"129":3,"130":1,"249":1,"250":1,"253":3,"254":5,"255":2,"260":4,"261":3,"262":5,"270":5,"271":4,"272":4,"293":2,"294":5,"295":4,"378":1}}],["waasadapter",{"2":{"300":1}}],["waastowalletadapter",{"2":{"300":3,"305":2,"306":2}}],["waastenantkey",{"2":{"169":1}}],["waaswallet",{"2":{"147":4,"148":5,"149":1,"159":4,"160":9,"161":1,"300":3}}],["waaslogin",{"2":{"147":1}}],["waasconfigkey",{"2":{"98":1,"372":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["waas",{"0":{"18":1,"147":1},"2":{"96":1,"98":4,"136":1,"138":2,"139":1,"140":1,"147":2,"148":1,"149":1,"150":1,"151":3,"152":1,"153":3,"154":1,"155":3,"156":2,"157":1,"169":1,"370":1,"372":4,"445":1,"446":6,"447":6,"448":5,"449":5,"450":6,"454":1,"455":2,"456":1,"457":2,"458":1,"460":5,"461":5}}],["was",{"2":{"14":1,"72":2,"78":1,"136":2,"390":1,"391":2,"427":1,"431":1,"460":2}}],["waitfortransactionreceipt",{"0":{"326":1},"2":{"326":1}}],["wait",{"2":{"13":3,"14":2,"79":1,"185":1,"294":2,"326":1,"329":1}}],["waits",{"2":{"13":1,"304":1,"306":1}}],["wants",{"2":{"389":1}}],["want",{"2":{"10":1,"73":1,"79":1,"91":1,"136":1,"137":1,"147":1,"151":1,"153":1,"155":1,"156":3,"173":1,"185":1,"193":1,"197":1,"199":1,"210":1,"225":1,"237":1,"249":1,"310":2,"329":3,"332":1,"344":1,"348":1,"464":1,"475":1}}],["walletinterface",{"2":{"414":2}}],["walletcontext",{"2":{"430":1}}],["walletcontractbytecode",{"2":{"401":1}}],["walletconnectprojectid",{"2":{"106":1,"107":1}}],["walletconnect",{"0":{"222":1},"2":{"102":1,"199":1,"220":1,"222":4,"251":1,"379":1}}],["walletproxybytecode",{"2":{"401":1}}],["walletpanel",{"2":{"161":1}}],["walletauthoptions",{"0":{"120":1},"2":{"130":2}}],["walletaddress",{"2":{"86":2,"448":2}}],["walleteoa",{"2":{"72":4,"78":2,"83":2,"91":2}}],["wallet",{"0":{"17":1,"29":1,"42":1,"43":1,"91":1,"107":1,"109":1,"161":1,"199":1,"201":1,"221":1,"224":1,"225":1,"226":1,"228":1,"231":1,"249":1,"293":1,"294":1,"295":1,"361":1,"382":1,"383":1,"384":1,"393":1,"400":1,"401":1,"402":1,"403":1,"407":1,"417":1,"422":1,"430":1,"435":1,"463":1,"464":1,"465":1,"466":1,"469":1},"1":{"43":1,"162":1,"163":1,"164":1,"165":1,"200":1,"201":1,"202":2,"203":2,"204":2,"205":2,"206":2,"207":2,"208":2,"209":2,"210":2,"211":2,"212":2,"213":2,"214":2,"215":2,"216":2,"217":2,"218":2,"219":2,"220":1,"221":1,"222":1,"362":1,"363":1,"364":1,"365":1,"394":1,"395":1,"396":1,"397":1,"398":1,"399":1,"400":1,"401":2,"403":1,"404":2,"405":2,"406":2,"407":1,"408":2,"409":2,"410":2,"411":1,"412":1,"413":1,"414":1,"415":1,"416":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1,"436":1,"437":1,"438":1,"439":1,"440":1,"441":1,"442":1,"443":1,"444":1},"2":{"12":5,"13":2,"29":2,"30":1,"38":2,"39":2,"41":3,"43":4,"71":1,"72":17,"73":1,"78":3,"79":1,"80":1,"83":12,"86":3,"87":1,"89":2,"90":3,"91":2,"93":1,"94":1,"96":2,"97":3,"98":2,"102":3,"104":1,"105":3,"106":1,"107":4,"109":3,"120":3,"121":1,"132":2,"139":3,"147":2,"148":3,"149":2,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":2,"157":3,"159":3,"160":4,"161":2,"166":2,"189":1,"195":3,"196":3,"197":4,"199":12,"200":19,"201":2,"202":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":3,"210":2,"211":2,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"222":2,"224":3,"225":6,"226":1,"228":1,"229":5,"231":6,"232":1,"233":1,"234":3,"235":1,"237":2,"238":3,"239":3,"240":3,"241":2,"246":1,"247":1,"249":2,"251":3,"253":2,"263":2,"268":1,"273":2,"277":1,"286":1,"287":1,"289":2,"290":3,"291":1,"293":3,"295":2,"298":1,"299":2,"302":2,"303":1,"304":1,"305":5,"306":5,"307":3,"310":3,"320":2,"327":2,"329":6,"332":1,"333":3,"346":1,"353":2,"354":1,"355":1,"361":5,"362":1,"363":2,"367":1,"368":1,"370":2,"371":3,"372":2,"374":1,"379":3,"383":2,"385":2,"386":8,"387":3,"390":1,"393":1,"395":1,"398":2,"400":4,"401":5,"402":1,"403":1,"404":3,"405":3,"406":5,"407":3,"408":3,"409":1,"410":1,"411":1,"412":2,"413":6,"414":6,"415":1,"416":2,"417":2,"419":3,"420":2,"421":3,"422":5,"425":6,"426":7,"427":2,"431":3,"435":3,"436":2,"438":2,"440":1,"442":2,"444":5,"445":1,"446":1,"447":1,"451":1,"461":3,"463":3,"464":6,"465":1,"466":1,"467":5,"469":6,"470":1,"471":1,"472":3,"473":1,"475":2,"476":3,"477":3,"478":3,"479":2,"484":1}}],["wallets",{"0":{"189":1,"195":1,"250":1,"298":1,"354":1,"358":1,"378":1,"387":1},"1":{"196":1,"197":1,"198":1,"251":1,"299":1,"300":1,"301":1,"302":1,"303":1,"304":1,"305":1,"306":1,"307":1,"355":1,"356":1,"357":1,"358":1,"359":2,"360":1,"379":1,"388":1,"389":1,"390":1},"2":{"9":2,"10":1,"72":3,"100":1,"101":1,"102":1,"106":1,"119":1,"120":1,"128":1,"186":1,"189":1,"191":1,"197":1,"198":3,"199":1,"245":1,"249":1,"250":1,"251":1,"257":1,"265":2,"267":1,"275":1,"300":1,"354":2,"358":3,"361":3,"362":1,"363":1,"364":1,"365":5,"378":1,"379":1,"390":1,"398":1,"402":2,"403":1,"404":1,"407":1,"413":1,"414":1,"422":1,"424":1,"435":1,"438":1,"439":1,"442":2,"444":2,"483":1}}],["walk",{"2":{"4":1,"104":1,"128":1,"194":1}}],["ways",{"2":{"199":1,"364":1}}],["way",{"2":{"1":1,"72":3,"79":1,"131":1,"164":2,"229":1,"363":1,"407":1,"414":1,"442":2,"467":1}}],["width=",{"2":{"448":1}}],["width",{"2":{"178":1}}],["wip",{"2":{"173":2,"176":1}}],["wish",{"2":{"136":1,"148":1,"156":1,"159":1,"160":1,"171":2,"180":1,"331":1,"334":1,"453":1}}],["windows",{"2":{"143":2,"173":2,"182":1}}],["window",{"0":{"88":1},"2":{"88":1,"135":2,"137":2,"142":1,"143":1,"145":1,"200":1,"209":1}}],["will",{"2":{"3":3,"4":4,"8":2,"29":2,"36":4,"56":1,"67":1,"68":2,"69":1,"71":1,"72":9,"78":2,"80":1,"81":1,"83":2,"97":1,"102":1,"104":1,"107":1,"108":1,"118":1,"119":2,"120":2,"121":2,"128":1,"132":3,"135":3,"136":2,"137":5,"138":4,"139":2,"140":1,"147":1,"149":1,"156":1,"157":1,"158":1,"161":2,"166":3,"169":1,"170":2,"171":1,"174":2,"175":1,"178":4,"183":1,"185":1,"188":3,"196":1,"198":1,"199":3,"200":2,"202":1,"204":1,"206":1,"208":1,"209":1,"210":2,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"219":1,"222":1,"225":3,"237":1,"249":1,"251":1,"258":1,"259":1,"268":1,"269":1,"277":1,"278":1,"286":1,"287":1,"293":1,"294":1,"295":2,"299":1,"305":4,"306":4,"308":1,"309":1,"310":2,"327":2,"328":3,"329":1,"330":1,"340":1,"342":1,"345":4,"346":2,"353":2,"364":3,"371":1,"379":1,"383":1,"385":2,"390":2,"404":1,"405":1,"413":2,"416":1,"419":1,"425":2,"426":2,"427":1,"441":1,"442":1,"444":1,"447":3,"455":1,"459":1,"460":1,"461":4,"464":3,"475":1}}],["without",{"2":{"10":1,"39":1,"71":1,"73":1,"78":1,"79":2,"80":1,"136":1,"148":1,"157":1,"159":1,"160":1,"199":1,"200":2,"228":1,"229":1,"235":2,"296":1,"413":1,"420":1,"459":1,"466":1,"467":1,"473":2}}],["within",{"2":{"4":1,"102":1,"106":1,"136":2,"148":1,"159":1,"160":1,"171":1,"185":1,"196":1,"199":1,"251":1,"358":1,"364":1,"379":1,"441":1,"442":1,"455":1}}],["with",{"0":{"18":1,"73":1,"81":1,"83":1,"104":1,"147":1,"200":1,"220":1,"221":1,"223":1,"227":1,"230":1,"235":1,"242":1,"293":1,"294":1,"295":1,"462":1,"468":1,"473":1,"480":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1,"82":1,"84":1,"85":1,"105":1,"224":1,"225":1,"226":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"243":1,"244":1,"245":1,"246":1,"463":1,"464":1,"465":1,"469":1,"470":1,"471":1,"472":1,"473":1,"474":1,"481":1,"482":1,"483":1,"484":1},"2":{"0":2,"1":1,"4":2,"5":1,"6":1,"7":2,"8":2,"10":1,"12":1,"17":1,"28":1,"29":1,"31":1,"32":4,"36":4,"37":1,"39":3,"42":1,"44":1,"46":1,"49":1,"55":1,"57":1,"59":1,"62":1,"63":3,"65":1,"71":1,"72":2,"73":2,"79":1,"80":4,"81":2,"83":3,"84":1,"86":1,"89":1,"90":5,"91":1,"94":1,"96":1,"97":1,"98":1,"99":1,"101":2,"102":3,"103":1,"105":1,"106":1,"113":1,"126":2,"128":1,"129":1,"131":1,"132":1,"135":3,"136":4,"137":2,"138":3,"139":4,"140":2,"141":1,"145":4,"147":5,"148":3,"149":2,"151":5,"153":5,"155":5,"156":4,"159":2,"160":3,"164":2,"165":1,"166":1,"173":2,"174":2,"175":3,"178":2,"181":1,"187":1,"191":1,"193":2,"194":1,"196":4,"197":2,"198":1,"199":4,"200":1,"201":1,"211":1,"213":2,"214":2,"225":2,"226":2,"229":1,"233":1,"238":1,"239":1,"240":1,"244":1,"246":2,"247":1,"249":4,"250":2,"251":3,"252":1,"253":2,"254":1,"261":4,"262":2,"263":1,"270":4,"272":2,"273":1,"280":1,"289":2,"290":2,"293":2,"294":2,"295":6,"296":2,"297":1,"300":2,"307":1,"309":1,"310":1,"311":1,"329":1,"330":1,"333":2,"334":2,"336":1,"338":1,"345":1,"347":1,"348":1,"351":1,"353":1,"361":2,"363":2,"364":3,"365":2,"368":1,"370":1,"371":1,"372":1,"375":1,"376":1,"378":2,"379":3,"380":1,"382":1,"383":1,"385":1,"386":1,"387":3,"388":1,"391":2,"392":1,"393":1,"394":1,"395":1,"397":1,"404":1,"425":1,"427":2,"431":1,"438":1,"442":1,"444":1,"445":1,"446":2,"447":3,"448":1,"450":1,"451":1,"452":1,"455":2,"464":2,"465":2,"467":1,"471":1,"476":1,"477":1,"478":1,"482":1,"484":2}}],["weight",{"2":{"394":2,"395":2,"396":4,"397":4,"399":4,"413":1,"436":1,"440":3,"441":3,"442":10,"443":2}}],["weights",{"2":{"393":1,"408":1,"412":1,"436":1,"437":1,"439":1}}],["weighted",{"2":{"68":1}}],["weeds",{"2":{"310":1}}],["week",{"2":{"205":1}}],["were",{"2":{"229":1,"330":1,"365":1,"467":1}}],["went",{"2":{"86":2}}],["websocketprovider",{"2":{"295":1}}],["websocketpublicclient",{"2":{"255":1}}],["web2",{"2":{"197":2,"199":1}}],["webgl",{"0":{"146":1},"2":{"133":1,"141":1}}],["web",{"0":{"26":1,"27":1,"33":1,"52":1,"382":1},"2":{"32":1,"57":1,"59":1,"175":1,"183":3,"193":2,"199":3,"363":1,"382":1,"383":1}}],["webapps",{"2":{"31":1}}],["webapp",{"2":{"17":1,"29":1,"30":1,"32":1,"38":1,"43":1,"45":1,"47":1,"49":1,"56":2,"62":1,"63":2,"68":1,"391":1}}],["web3modal",{"0":{"289":1},"1":{"290":1,"291":1},"2":{"200":1,"220":1,"249":1,"289":3,"290":1,"291":2}}],["web3",{"0":{"220":1,"250":1,"273":1,"280":1,"378":1},"1":{"251":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"288":1,"379":1},"2":{"0":1,"39":2,"88":1,"101":2,"102":2,"106":1,"120":1,"196":1,"197":1,"199":6,"247":1,"249":3,"250":2,"251":2,"273":3,"274":2,"275":1,"279":1,"280":3,"281":1,"283":2,"284":1,"288":1,"342":1,"378":2,"379":2,"383":1}}],["weth",{"2":{"10":1,"72":1}}],["we",{"2":{"0":1,"32":1,"33":1,"36":2,"45":2,"47":2,"52":1,"55":2,"57":2,"59":1,"65":2,"67":1,"69":2,"70":1,"73":1,"86":4,"91":1,"96":1,"104":1,"132":1,"136":3,"137":3,"138":1,"139":2,"141":2,"147":1,"151":1,"153":1,"154":1,"155":1,"156":2,"158":1,"160":2,"161":2,"163":1,"164":2,"165":2,"166":1,"173":1,"179":1,"181":3,"194":1,"195":1,"196":1,"197":1,"199":1,"225":1,"294":2,"295":3,"296":1,"309":1,"329":2,"331":2,"333":1,"334":2,"363":1,"370":1,"390":1,"453":3,"464":1}}],["well",{"2":{"0":1,"32":1,"55":1,"56":1,"59":1,"65":1,"86":1,"156":1,"183":1,"192":1,"193":1,"196":1,"237":1,"246":1,"329":2,"331":2,"334":1,"390":1,"425":1,"426":1,"475":1,"484":1}}],["turn",{"2":{"295":1}}],["turned",{"2":{"293":1}}],["tfunction",{"2":{"181":2}}],["tfunctions",{"2":{"181":2}}],["typically",{"2":{"148":1,"225":1,"229":1,"464":1,"467":1}}],["typical",{"2":{"148":1}}],["typeddata",{"2":{"426":2}}],["typed",{"2":{"426":1}}],["typedefault",{"2":{"121":1}}],["typedefaultbooleantrue",{"2":{"118":1}}],["typedefaultstringundefined",{"2":{"116":1,"117":1}}],["typedefaultstringcenter",{"2":{"114":1}}],["typedefaultstring",{"2":{"113":1,"119":1,"120":1}}],["typescript",{"2":{"32":2,"59":1,"81":1,"96":2,"196":2,"197":1,"226":1,"243":1,"370":2,"465":1,"481":1}}],["types",{"2":{"4":1,"148":1,"328":1,"439":1}}],["type",{"0":{"330":1},"2":{"4":1,"10":4,"14":1,"29":2,"30":2,"38":2,"43":2,"45":2,"47":2,"49":2,"56":2,"62":2,"63":4,"67":8,"68":2,"69":2,"86":2,"89":1,"90":1,"157":2,"173":1,"178":1,"180":1,"200":1,"331":1,"352":1,"391":3,"426":3,"460":1,"461":1}}],["tmp",{"2":{"135":1,"137":1,"399":4}}],["twitter",{"2":{"446":1}}],["twitch",{"2":{"119":1,"213":1}}],["two",{"2":{"97":1,"139":1,"238":1,"239":1,"240":1,"310":1,"344":1,"354":1,"364":1,"371":1,"387":2,"431":1,"451":1,"476":1,"477":1,"478":1}}],["tweaking",{"2":{"56":1}}],["tsx",{"2":{"295":1,"448":1}}],["tsuccesscallback",{"2":{"181":1}}],["ts",{"2":{"86":1,"448":1,"461":1}}],["tnqwlujz",{"2":{"56":1}}],["times",{"2":{"68":1,"81":1,"164":1}}],["time",{"0":{"346":1,"452":1},"2":{"36":2,"39":1,"56":1,"80":1,"91":1,"132":1,"164":1,"166":1,"187":2,"188":1,"189":1,"193":1,"225":1,"228":1,"229":1,"329":1,"331":1,"346":1,"365":1,"387":1,"391":1,"398":1,"403":1,"419":1,"447":1,"452":1,"453":1,"464":1,"466":1,"467":1}}],["timezones",{"2":{"0":1}}],["tips",{"0":{"36":1},"2":{"390":1}}],["tip",{"2":{"29":1,"48":1,"55":1,"61":1,"200":1,"253":1,"263":1,"273":1,"289":1}}],["tx",{"2":{"456":1,"458":1,"460":3,"461":4}}],["txs",{"2":{"72":1,"78":1}}],["txns",{"2":{"79":1}}],["txn2",{"2":{"79":2}}],["txn1",{"2":{"79":2}}],["txnreceipt",{"2":{"72":4,"78":2}}],["txnresponse",{"2":{"72":2,"78":1,"237":2,"238":4,"239":4,"240":4,"475":2,"476":4,"477":4,"478":4}}],["txn",{"2":{"72":2,"78":2,"91":2}}],["txnhash",{"2":{"14":1}}],["tx5drvi",{"2":{"56":1}}],["txhash",{"2":{"13":1,"460":2}}],["t",{"2":{"8":1,"12":1,"98":1,"130":1,"133":1,"135":1,"137":2,"145":2,"156":1,"164":2,"165":1,"178":2,"186":1,"222":1,"241":1,"329":1,"331":3,"363":2,"365":1,"372":1,"398":1,"400":1,"402":1,"407":1,"413":1,"414":1,"418":1,"419":1,"422":1,"445":1,"446":1,"453":1,"479":1}}],["tries",{"2":{"456":1}}],["triggered",{"2":{"126":1,"200":1,"456":3,"457":2,"458":1}}],["triggertransaction",{"2":{"126":1}}],["triggercheckout",{"2":{"124":2}}],["triggering",{"0":{"108":1},"2":{"104":1}}],["trigger",{"0":{"455":1},"1":{"456":1},"2":{"72":1,"455":1}}],["triggers",{"2":{"72":1}}],["trees",{"2":{"441":1}}],["tree",{"0":{"439":1},"1":{"440":1,"441":1,"442":1},"2":{"436":1,"439":3,"441":1,"442":3,"443":4}}],["trust",{"2":{"226":1,"357":1,"363":1,"465":1}}],["trusted",{"2":{"86":1,"452":1,"453":1,"454":1}}],["true",{"0":{"416":1},"2":{"10":1,"13":1,"29":3,"30":3,"34":2,"36":2,"38":1,"43":3,"45":2,"47":3,"48":1,"61":1,"88":1,"91":2,"108":1,"109":1,"145":3,"200":1,"206":1,"208":1,"209":1,"210":1,"219":1,"225":2,"255":1,"293":1,"295":1,"352":1,"391":1,"414":2,"419":1,"420":1,"449":1,"454":2,"455":4,"456":2,"458":2,"461":1,"464":2}}],["trades",{"2":{"391":1}}],["tradeoff",{"2":{"390":1}}],["traditional",{"2":{"196":1,"363":1,"386":1}}],["trading",{"2":{"56":1,"391":1}}],["tranfereth",{"2":{"327":1}}],["transports",{"2":{"106":3,"107":3,"130":1}}],["transact",{"2":{"10":1}}],["transactionfailed",{"2":{"461":1}}],["transactioncreator",{"2":{"329":4,"333":2}}],["transactioncount",{"0":{"325":1},"2":{"325":2}}],["transactioncall",{"2":{"317":2}}],["transactionbyhash",{"0":{"324":1},"2":{"324":1}}],["transaction2",{"2":{"238":2,"239":2,"240":2,"241":2,"476":2,"477":2,"478":2,"479":2}}],["transaction1",{"2":{"238":2,"239":2,"240":2,"241":2,"476":2,"477":2,"478":2,"479":2}}],["transactionreceipt",{"2":{"304":2,"306":4,"326":2,"327":1,"329":4,"333":2,"460":1}}],["transactionreturn",{"2":{"148":1}}],["transactionresponse",{"2":{"86":1,"91":1}}],["transactionhash",{"2":{"303":1,"321":1,"324":1,"326":1}}],["transactionhashes",{"2":{"43":1,"305":1}}],["transactionhistoryfilter",{"2":{"43":1,"45":1,"47":1}}],["transactionhistory",{"2":{"43":2,"45":2}}],["transaction",{"0":{"9":1,"14":1,"42":1,"43":1,"45":1,"191":1,"428":1,"459":1,"460":1,"461":1},"1":{"43":1,"460":1,"461":1},"2":{"8":3,"9":2,"10":2,"12":1,"13":6,"14":2,"41":2,"43":7,"45":4,"71":1,"72":5,"73":2,"78":5,"80":2,"83":1,"91":2,"126":1,"148":3,"149":4,"150":2,"151":1,"152":2,"153":1,"154":4,"155":1,"156":4,"157":6,"160":1,"161":1,"186":1,"191":1,"196":1,"237":4,"238":4,"239":4,"240":4,"241":1,"246":1,"303":1,"304":1,"305":3,"306":2,"317":1,"321":3,"324":4,"326":1,"327":1,"329":4,"333":3,"343":1,"347":1,"405":1,"408":1,"413":1,"416":2,"418":3,"419":4,"420":1,"437":1,"456":1,"457":1,"459":3,"460":8,"461":4,"475":4,"476":4,"477":4,"478":4,"479":1,"484":1}}],["transactions",{"0":{"13":1,"79":1,"157":1,"190":1,"237":1,"241":1,"475":1,"479":1},"2":{"8":10,"9":2,"10":4,"12":4,"13":5,"39":2,"71":3,"72":2,"73":2,"79":8,"148":1,"157":5,"190":1,"191":1,"197":1,"238":1,"239":1,"240":1,"241":4,"305":3,"306":3,"325":1,"359":1,"364":2,"414":1,"419":2,"420":1,"424":1,"435":1,"446":1,"459":1,"460":1,"461":3,"476":1,"477":1,"478":1,"479":4}}],["transferring",{"2":{"418":1}}],["transfereth",{"2":{"327":1}}],["transfertransaction",{"2":{"327":2}}],["transfers",{"0":{"327":1},"2":{"151":1,"153":1,"155":1,"238":2,"239":2,"240":2,"476":2,"477":2,"478":2}}],["transfer",{"2":{"10":1,"13":1,"72":1,"79":2,"238":7,"239":1,"240":1,"241":2,"327":1,"328":2,"329":4,"333":1,"476":7,"477":1,"478":1,"479":2}}],["trait",{"2":{"67":8}}],["tracking",{"2":{"392":1}}],["trackers",{"2":{"226":2,"465":2}}],["tracked",{"2":{"81":1}}],["track",{"2":{"36":1,"45":1}}],["trying",{"2":{"102":1,"196":1,"251":1,"379":1}}],["try",{"0":{"7":1,"93":1,"350":1,"352":1,"367":1,"374":1},"2":{"29":1,"30":1,"38":1,"43":1,"45":1,"56":1,"86":3,"88":1,"93":1,"185":1,"226":1,"253":2,"263":2,"273":2,"289":2,"296":2,"367":1,"374":1,"382":1,"383":1,"448":1,"461":2,"465":1}}],["troubles",{"2":{"0":1}}],["technique",{"2":{"261":1,"270":1}}],["technically",{"2":{"67":1}}],["technical",{"2":{"33":1,"34":1,"69":1}}],["text",{"2":{"173":1,"225":1,"464":1}}],["textmeshpro",{"2":{"135":1,"137":1}}],["templates",{"2":{"194":1,"198":1}}],["template",{"0":{"88":1,"94":1,"351":1,"368":1,"375":1},"2":{"94":1,"136":3,"194":1,"351":1,"368":1,"375":1}}],["tested",{"2":{"296":1}}],["test",{"0":{"81":1,"82":1},"1":{"82":1},"2":{"80":1,"89":1,"91":1,"98":1,"178":1,"372":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["testing",{"0":{"64":1,"89":1},"2":{"1":1,"39":1,"81":2,"110":1,"133":1}}],["terms",{"2":{"69":1,"390":1}}],["team",{"2":{"0":3,"5":1,"29":1,"49":1,"62":1,"63":2,"97":1,"100":1,"138":1,"166":1,"169":1,"245":1,"249":1,"363":1,"371":1,"391":1,"483":1}}],["tampered",{"2":{"363":1}}],["tailored",{"2":{"247":1}}],["taking",{"2":{"222":1}}],["takes",{"2":{"200":1,"444":1,"455":1}}],["taken",{"2":{"78":1,"419":1}}],["take",{"2":{"70":1,"103":1,"148":1,"159":1,"160":1,"164":1,"185":2,"196":1,"252":1,"261":1,"270":1,"328":1,"354":1,"364":1,"380":1,"386":1}}],["tag",{"2":{"217":1}}],["tanstack",{"2":{"105":3,"106":1,"107":1}}],["tank",{"0":{"76":1},"2":{"78":2}}],["tablet",{"2":{"382":1,"383":1}}],["tab",{"2":{"83":1,"185":3,"188":1,"340":1}}],["tasks",{"2":{"296":1}}],["task",{"2":{"63":1,"148":2,"159":2,"160":2,"329":1}}],["taskid",{"2":{"63":3}}],["targets",{"2":{"139":1}}],["target",{"2":{"29":1,"32":1,"49":1,"56":1,"59":1,"62":1,"63":2,"391":1}}],["talking",{"2":{"0":1}}],["tackle",{"2":{"0":1}}],["than",{"2":{"165":1,"226":1,"246":1,"465":1,"484":1}}],["that",{"2":{"0":1,"3":1,"4":3,"6":1,"8":1,"9":1,"10":5,"14":1,"29":1,"32":1,"36":1,"39":2,"65":1,"67":2,"68":2,"69":2,"72":1,"78":2,"79":3,"81":2,"83":1,"86":4,"98":1,"110":1,"121":1,"132":1,"135":1,"136":3,"137":3,"138":1,"139":1,"148":1,"149":1,"150":1,"151":2,"153":2,"155":2,"156":2,"157":1,"160":1,"161":1,"164":1,"170":1,"171":1,"178":1,"180":1,"185":4,"188":2,"190":1,"196":1,"197":1,"199":2,"200":1,"205":1,"213":1,"222":2,"229":2,"237":1,"247":1,"258":1,"261":1,"270":1,"277":1,"280":1,"286":1,"295":3,"296":3,"300":2,"305":1,"306":1,"309":1,"328":1,"329":1,"330":1,"346":1,"348":1,"353":1,"358":2,"361":1,"363":1,"364":3,"365":1,"372":1,"376":1,"385":1,"386":3,"387":1,"389":1,"390":2,"394":1,"398":1,"404":1,"405":1,"406":1,"411":1,"412":1,"413":2,"414":1,"416":1,"419":1,"427":2,"435":1,"437":1,"438":1,"441":1,"442":1,"443":1,"447":2,"448":2,"449":1,"452":1,"455":1,"456":1,"459":1,"460":2,"467":2,"475":1}}],["thought",{"2":{"148":1}}],["those",{"2":{"10":1,"171":1,"247":1,"376":1}}],["third",{"2":{"136":1,"363":1}}],["think",{"2":{"100":1,"199":1,"245":1,"247":1,"483":1}}],["thing",{"2":{"90":1,"181":1}}],["things",{"2":{"9":1,"36":1,"181":1,"310":1,"337":1,"442":2}}],["this",{"2":{"3":5,"4":2,"12":1,"13":2,"29":2,"33":1,"36":3,"45":2,"47":2,"49":1,"52":1,"62":1,"67":2,"69":1,"72":5,"73":1,"78":2,"79":1,"80":1,"81":2,"82":1,"83":5,"84":1,"85":1,"86":1,"88":3,"89":1,"90":3,"91":2,"97":1,"104":1,"107":1,"121":1,"128":1,"131":1,"132":1,"135":5,"136":4,"137":3,"138":3,"139":5,"141":1,"145":3,"147":3,"148":1,"149":3,"150":2,"151":1,"152":1,"153":1,"154":1,"155":1,"156":7,"158":1,"159":1,"160":2,"161":2,"164":2,"166":1,"169":3,"170":1,"171":4,"173":16,"174":3,"178":3,"183":1,"185":2,"198":1,"199":5,"200":1,"204":1,"225":7,"228":1,"233":2,"247":1,"249":1,"257":1,"259":1,"261":2,"267":1,"269":1,"270":2,"293":2,"294":3,"295":5,"298":1,"299":1,"308":2,"310":1,"327":1,"328":1,"334":1,"336":1,"337":2,"338":2,"339":1,"340":2,"344":3,"345":3,"346":3,"348":1,"358":1,"363":3,"364":3,"365":4,"371":1,"376":1,"383":1,"387":1,"389":3,"390":1,"396":1,"398":1,"401":1,"404":1,"405":2,"407":2,"408":1,"412":1,"413":3,"414":2,"415":1,"416":1,"419":1,"421":1,"422":2,"425":1,"426":1,"427":1,"441":2,"442":3,"443":1,"445":1,"447":2,"449":1,"452":1,"453":1,"454":1,"455":1,"456":1,"458":1,"460":1,"461":5,"464":7,"466":1,"471":2}}],["threshold",{"0":{"437":1},"2":{"390":1,"393":1,"396":2,"397":2,"399":2,"407":1,"408":1,"412":1,"413":1,"425":1,"426":1,"427":1,"436":1,"437":2,"440":1,"442":5,"443":2}}],["threat",{"0":{"365":1}}],["threats",{"2":{"362":1}}],["threads",{"2":{"145":1}}],["three",{"2":{"9":1,"387":3}}],["throwing",{"2":{"296":1}}],["throw",{"2":{"72":2,"296":2}}],["throughout",{"2":{"300":1}}],["throughput",{"2":{"71":1,"80":1}}],["through",{"2":{"2":1,"4":1,"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1,"80":1,"104":1,"128":1,"139":1,"156":1,"173":2,"178":1,"179":1,"194":1,"199":1,"229":1,"253":1,"263":1,"273":1,"274":1,"293":1,"295":1,"425":2,"426":2,"427":1,"451":1,"467":1}}],["thus",{"2":{"8":1}}],["these",{"0":{"193":1,"196":1},"2":{"91":1,"106":1,"111":1,"123":1,"133":1,"136":2,"137":1,"138":1,"157":1,"161":1,"164":1,"169":1,"173":2,"181":1,"183":2,"184":1,"193":2,"195":1,"309":2,"333":2,"337":2,"358":1,"361":1,"364":1,"365":1,"390":1,"401":1,"405":1,"413":1,"431":1}}],["then",{"2":{"34":1,"36":1,"52":1,"53":1,"83":1,"86":1,"87":1,"90":2,"107":1,"142":2,"143":2,"169":1,"171":3,"179":1,"185":1,"193":1,"199":1,"208":1,"225":3,"226":1,"229":1,"246":1,"255":1,"265":1,"295":2,"304":1,"306":1,"339":1,"348":1,"414":1,"438":1,"446":1,"447":1,"464":3,"465":1,"467":1,"484":1}}],["theme=",{"2":{"145":2}}],["theme",{"0":{"211":1},"2":{"113":1,"200":2,"211":2}}],["themselves",{"2":{"70":1,"363":1,"390":1,"415":1}}],["them",{"0":{"197":1},"2":{"8":1,"10":1,"68":1,"79":3,"102":1,"147":1,"152":1,"161":1,"171":1,"179":1,"196":1,"229":1,"251":1,"296":1,"305":1,"306":1,"309":1,"362":1,"379":1,"390":1,"467":1}}],["their",{"2":{"8":1,"67":1,"70":1,"102":1,"141":1,"156":1,"170":1,"199":3,"200":1,"222":2,"225":3,"228":1,"229":3,"251":1,"294":1,"295":1,"333":1,"347":1,"353":1,"364":1,"379":1,"385":1,"386":3,"387":5,"388":3,"389":1,"390":4,"393":1,"394":1,"436":1,"441":1,"452":1,"453":1,"464":3,"466":1,"467":3}}],["they",{"2":{"8":1,"10":1,"36":1,"67":1,"69":1,"70":1,"79":1,"119":1,"120":1,"137":1,"156":1,"180":1,"193":1,"200":1,"210":2,"222":1,"225":1,"229":3,"296":1,"297":1,"329":1,"358":1,"387":1,"401":1,"442":2,"461":1,"464":1,"467":3}}],["therefore",{"2":{"160":1,"290":1,"293":1,"398":1}}],["there",{"2":{"4":1,"67":1,"79":1,"136":2,"137":1,"141":1,"160":1,"164":1,"185":1,"261":1,"270":1,"295":1,"298":1,"309":1,"310":1,"391":1,"414":1,"415":1}}],["the",{"0":{"43":1,"45":1,"89":1,"90":1,"106":1,"107":1,"108":1,"109":1,"124":1,"125":1,"193":1,"196":1,"197":1,"221":1,"224":1,"294":1,"295":1,"340":1,"345":1,"397":1,"421":1,"422":1,"463":1},"1":{"126":1,"127":1,"422":1},"2":{"0":6,"1":3,"2":4,"3":7,"4":13,"5":2,"6":1,"7":8,"8":9,"9":1,"10":9,"12":2,"13":8,"14":6,"28":2,"29":7,"30":5,"31":4,"32":12,"33":2,"34":2,"35":2,"36":11,"37":2,"38":2,"39":12,"40":1,"41":5,"42":2,"43":4,"44":2,"45":6,"46":2,"47":8,"48":1,"49":1,"51":2,"54":2,"55":8,"56":14,"57":4,"58":5,"59":8,"61":1,"62":2,"63":6,"65":5,"67":7,"68":6,"69":8,"70":3,"72":20,"73":5,"78":8,"79":2,"80":5,"81":14,"82":4,"83":16,"84":1,"85":1,"86":10,"87":2,"88":3,"89":1,"90":9,"91":8,"96":4,"97":2,"98":2,"99":1,"100":1,"101":3,"102":2,"103":2,"104":2,"105":5,"106":4,"107":4,"108":6,"109":2,"110":1,"111":3,"113":5,"114":4,"115":2,"116":2,"117":2,"118":2,"119":7,"120":7,"121":5,"122":1,"123":4,"124":2,"125":2,"126":1,"127":3,"128":1,"129":3,"130":4,"131":2,"132":1,"135":3,"136":16,"137":11,"138":13,"139":7,"140":8,"141":4,"142":5,"143":5,"145":10,"147":4,"148":5,"149":6,"150":5,"151":4,"152":1,"153":4,"154":4,"155":4,"156":24,"157":5,"158":5,"159":4,"160":7,"161":5,"162":1,"163":1,"164":16,"165":1,"166":3,"169":3,"170":1,"171":15,"173":10,"174":4,"175":3,"178":14,"179":4,"180":11,"182":1,"183":4,"185":29,"186":1,"187":3,"188":8,"189":2,"190":2,"191":2,"193":8,"194":4,"196":3,"197":1,"198":2,"199":7,"200":11,"201":1,"202":1,"204":2,"206":2,"209":3,"210":1,"211":2,"212":1,"213":1,"214":1,"215":1,"217":5,"218":2,"219":6,"220":1,"222":25,"224":1,"225":12,"226":8,"229":4,"232":1,"233":2,"234":2,"235":1,"236":4,"237":6,"238":2,"239":4,"240":4,"241":2,"243":1,"244":1,"245":1,"246":5,"247":3,"249":5,"250":3,"251":2,"252":2,"253":2,"254":6,"255":3,"257":1,"258":1,"259":1,"260":3,"261":11,"262":3,"263":2,"264":2,"265":3,"267":1,"268":5,"269":1,"270":9,"271":3,"272":2,"273":2,"274":1,"277":2,"278":2,"280":2,"281":2,"283":1,"284":2,"286":2,"287":2,"289":1,"290":3,"291":1,"293":7,"294":13,"295":24,"296":4,"297":2,"298":3,"300":3,"301":2,"302":2,"303":2,"304":3,"305":8,"306":9,"307":8,"308":4,"309":2,"310":13,"311":1,"312":1,"313":1,"314":1,"315":3,"316":1,"317":2,"319":3,"320":1,"321":2,"323":1,"325":1,"326":1,"327":4,"328":4,"329":12,"330":2,"331":6,"332":1,"333":5,"334":2,"337":1,"338":3,"339":2,"340":2,"341":2,"343":2,"344":4,"345":5,"346":5,"347":2,"348":4,"353":5,"354":2,"355":1,"358":3,"361":5,"362":4,"363":1,"364":11,"365":11,"370":4,"371":2,"372":2,"374":1,"376":2,"378":3,"379":2,"380":2,"383":1,"385":5,"386":7,"387":9,"388":1,"389":3,"390":9,"391":29,"392":2,"395":2,"397":2,"398":11,"400":8,"401":11,"402":8,"403":2,"404":8,"405":4,"406":5,"407":11,"408":6,"410":2,"411":3,"412":3,"413":17,"414":16,"415":4,"416":3,"417":4,"418":3,"419":14,"420":3,"421":6,"422":8,"425":7,"426":8,"427":13,"435":6,"436":4,"437":6,"438":4,"439":3,"440":5,"441":5,"442":14,"443":8,"444":23,"445":2,"446":4,"447":16,"448":18,"449":1,"450":2,"451":1,"453":1,"454":3,"455":9,"456":5,"457":1,"458":3,"459":1,"460":13,"461":8,"463":1,"464":12,"465":8,"467":4,"470":1,"471":2,"472":2,"473":1,"474":4,"475":6,"476":2,"477":4,"478":4,"479":2,"481":1,"482":1,"483":1,"484":5}}],["torus",{"0":{"390":1},"2":{"387":3,"390":7}}],["towards",{"2":{"196":1}}],["tower",{"2":{"136":2}}],["touch",{"2":{"166":1}}],["toutf8bytes",{"2":{"83":1}}],["toggling",{"2":{"188":1}}],["toggle",{"2":{"29":1,"30":1,"43":1,"47":1}}],["together",{"2":{"156":1,"157":2,"179":1,"297":1,"305":1,"306":1,"442":2}}],["toaddress",{"2":{"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":4,"329":4,"333":2}}],["toying",{"2":{"113":1}}],["topics",{"2":{"460":2}}],["top",{"0":{"436":1},"1":{"437":1,"438":1,"439":1,"440":1,"441":1,"442":1},"2":{"111":1,"114":3,"138":1,"164":1,"185":1,"188":1}}],["toml",{"2":{"87":1,"88":1}}],["took",{"2":{"389":1}}],["toolkit",{"2":{"100":1,"101":1,"245":1,"250":1,"378":1,"483":1}}],["tools=",{"2":{"145":2}}],["tools",{"0":{"165":1},"2":{"100":1,"101":1,"145":2,"165":1,"245":1,"249":1,"250":1,"378":1,"483":1}}],["too",{"2":{"55":1,"199":2,"200":1,"249":1,"253":1,"263":1,"273":1,"289":1}}],["total",{"0":{"47":1},"2":{"41":3,"47":1,"188":1,"190":1,"191":1,"394":1,"441":1,"442":2}}],["tokenresponse",{"2":{"448":2}}],["tokenbaseuri",{"2":{"345":2}}],["tokenbalances",{"2":{"29":4,"33":1,"34":1,"38":3}}],["token4id",{"2":{"241":1,"479":1}}],["token2id",{"2":{"240":1,"478":1}}],["token1id",{"2":{"240":1,"478":1}}],["tokencontract",{"2":{"79":2,"391":1}}],["tokenuri",{"2":{"67":2}}],["tokenmetadata",{"2":{"62":2,"63":1}}],["tokendetails",{"2":{"47":4}}],["tokenidasstring",{"2":{"152":1,"154":1,"157":2}}],["tokenids",{"2":{"62":3,"63":3,"352":1,"391":3}}],["tokenid",{"2":{"4":4,"10":3,"56":1,"58":3,"67":1,"68":1,"72":1,"78":1,"86":3,"89":1,"90":1,"91":3,"127":1,"155":1,"239":4,"240":1,"241":1,"346":2,"391":2,"477":4,"478":1,"479":1}}],["tokens",{"0":{"4":1,"21":1,"22":1,"24":1,"28":1,"29":1,"46":1,"47":1,"238":1,"239":1,"240":1,"333":1,"476":1,"477":1,"478":1},"1":{"29":1,"30":1,"47":1},"2":{"4":8,"8":1,"10":6,"29":2,"36":1,"38":1,"39":2,"41":3,"47":1,"48":1,"56":4,"58":6,"60":1,"61":1,"62":1,"67":2,"68":1,"70":3,"72":1,"150":1,"151":1,"152":1,"153":1,"154":2,"155":1,"219":1,"333":1,"334":1,"344":1,"346":1,"347":2,"348":4,"359":1,"391":2}}],["token",{"0":{"3":1,"17":1,"30":1,"44":1,"61":1,"62":1,"63":1,"65":1,"337":1},"1":{"45":1,"62":1,"63":1,"64":2,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1},"2":{"2":3,"3":4,"4":6,"10":4,"12":1,"13":2,"29":5,"30":1,"31":1,"36":2,"39":7,"41":4,"43":4,"45":4,"47":8,"48":2,"51":2,"55":4,"56":7,"58":1,"60":3,"61":6,"62":2,"63":2,"64":7,"65":2,"67":3,"68":3,"69":1,"70":3,"72":1,"149":1,"150":4,"152":2,"154":4,"173":1,"175":2,"238":4,"239":3,"240":3,"241":2,"336":1,"337":5,"338":4,"345":2,"346":2,"347":1,"348":2,"353":1,"364":1,"385":1,"391":4,"456":1,"476":4,"477":3,"478":3,"479":2}}],["todotodoplease",{"2":{"62":1}}],["todo",{"0":{"227":1},"2":{"1":1,"96":1,"370":1,"461":1}}],["today",{"2":{"0":1,"12":1,"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1}}],["to",{"0":{"45":1,"86":1,"91":1,"148":1,"221":1,"335":1,"343":1,"417":1},"1":{"87":1,"88":1,"89":1,"90":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"0":5,"1":5,"2":3,"3":8,"4":10,"6":2,"7":5,"8":4,"9":2,"10":7,"12":1,"13":6,"14":1,"17":2,"28":1,"29":6,"30":3,"31":3,"32":3,"33":1,"34":1,"36":11,"37":1,"39":6,"41":1,"42":1,"43":4,"44":1,"45":2,"46":1,"47":6,"48":4,"49":1,"51":3,"55":4,"56":13,"59":2,"61":4,"62":2,"63":4,"65":4,"67":1,"68":2,"69":5,"71":2,"72":16,"73":3,"78":2,"79":8,"80":6,"81":11,"82":1,"83":6,"84":1,"85":2,"86":6,"88":4,"89":1,"90":3,"91":4,"96":1,"97":2,"98":3,"102":1,"103":1,"105":2,"106":3,"107":1,"108":1,"111":1,"115":1,"116":1,"117":1,"119":2,"120":2,"121":1,"122":1,"123":1,"124":1,"128":1,"129":6,"130":3,"131":1,"135":2,"136":10,"137":8,"138":6,"139":7,"140":3,"141":5,"142":2,"143":2,"145":6,"147":2,"148":5,"149":5,"150":5,"151":4,"152":1,"153":4,"154":2,"155":4,"156":16,"157":3,"158":1,"159":3,"160":6,"161":7,"163":2,"164":10,"165":4,"166":1,"169":2,"170":3,"171":14,"173":11,"174":3,"175":3,"178":5,"179":2,"180":4,"181":5,"182":2,"183":6,"184":1,"185":9,"186":3,"187":1,"188":2,"192":1,"193":7,"194":3,"195":1,"196":1,"197":2,"198":4,"199":9,"200":10,"202":1,"206":1,"207":1,"209":1,"210":3,"213":1,"214":1,"215":1,"216":1,"217":2,"218":1,"219":5,"222":7,"224":1,"225":11,"226":4,"228":1,"229":3,"233":2,"235":1,"237":5,"238":7,"239":7,"240":7,"241":11,"246":2,"247":5,"249":6,"251":1,"252":1,"255":1,"257":1,"258":1,"259":3,"260":1,"261":2,"263":1,"265":1,"267":1,"268":1,"269":3,"270":2,"271":1,"277":2,"278":1,"280":1,"283":1,"284":1,"286":2,"290":1,"293":1,"294":3,"295":2,"296":2,"297":1,"300":1,"305":1,"306":1,"307":2,"308":1,"309":2,"310":5,"311":1,"312":1,"313":1,"314":1,"315":2,"316":1,"319":2,"320":2,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1,"327":2,"328":5,"329":7,"330":3,"331":4,"332":1,"333":4,"334":3,"338":2,"339":1,"341":1,"343":1,"344":5,"345":4,"346":6,"347":2,"348":3,"350":1,"353":5,"354":1,"356":3,"358":2,"361":1,"362":2,"363":6,"364":1,"365":5,"370":1,"371":2,"372":3,"376":3,"379":1,"380":1,"382":1,"383":2,"385":5,"386":4,"387":2,"388":1,"389":1,"390":7,"391":2,"392":1,"394":1,"398":1,"401":2,"402":1,"403":2,"404":2,"405":1,"406":1,"407":3,"408":2,"409":1,"410":1,"411":1,"413":4,"414":8,"415":2,"416":1,"417":2,"419":2,"420":2,"421":3,"422":3,"424":1,"425":1,"427":2,"435":1,"436":1,"437":1,"438":2,"439":1,"440":2,"441":2,"442":4,"445":2,"446":2,"447":9,"448":7,"452":1,"453":4,"454":1,"455":1,"456":2,"457":2,"458":1,"460":3,"461":7,"463":1,"464":11,"465":4,"466":1,"467":3,"471":2,"473":1,"475":5,"476":7,"477":7,"478":7,"479":11,"484":2}}],["azure",{"2":{"345":1}}],["awesome",{"2":{"199":1}}],["aware",{"2":{"181":1,"226":1,"465":1}}],["away",{"2":{"156":1}}],["await",{"2":{"7":1,"12":1,"13":2,"14":1,"29":1,"30":1,"33":1,"38":1,"43":1,"45":1,"47":1,"49":1,"62":1,"63":2,"72":4,"78":2,"79":2,"83":1,"86":6,"91":3,"148":2,"159":2,"160":2,"200":2,"201":1,"202":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"225":1,"226":2,"231":1,"232":1,"233":1,"234":2,"235":1,"237":1,"238":2,"239":3,"240":3,"241":2,"303":1,"304":1,"305":1,"306":1,"307":2,"310":2,"311":1,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1,"320":2,"321":1,"322":1,"323":1,"324":1,"325":1,"326":1,"327":2,"329":6,"331":3,"332":1,"333":5,"391":2,"406":1,"425":1,"426":1,"446":2,"447":4,"448":3,"449":2,"450":3,"454":1,"455":2,"456":1,"457":1,"458":1,"460":2,"461":2,"464":1,"465":2,"469":1,"470":1,"471":1,"472":2,"473":1,"475":1,"476":2,"477":3,"478":3,"479":2}}],["ayourclass",{"2":{"173":2}}],["avoid",{"2":{"129":1,"181":1,"200":1}}],["availability",{"2":{"39":1}}],["available",{"0":{"112":1},"1":{"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1},"2":{"5":1,"55":2,"57":1,"72":1,"97":1,"99":1,"103":1,"129":1,"140":1,"141":1,"166":1,"199":1,"200":1,"211":1,"215":1,"243":1,"244":1,"252":1,"253":1,"258":1,"262":3,"263":1,"268":1,"272":1,"273":1,"274":1,"279":1,"280":1,"288":1,"289":1,"291":1,"293":2,"308":1,"353":1,"358":1,"363":1,"371":1,"380":1,"385":1,"448":1,"481":1,"482":1}}],["avalanche",{"0":{"38":1}}],["avax",{"0":{"38":1}}],["among",{"2":{"442":1}}],["amountasbiginteger",{"2":{"329":4}}],["amountasstring",{"2":{"150":1,"154":1,"157":2}}],["amount4",{"2":{"241":1,"479":1}}],["amount3",{"2":{"241":1,"479":1}}],["amountrequiredraw",{"2":{"126":1}}],["amount",{"2":{"91":1,"150":1,"151":1,"155":1,"156":1,"157":1,"218":2,"238":2,"240":1,"317":1,"346":1,"419":1,"476":2,"478":1}}],["amount2",{"2":{"79":1,"238":1,"239":1,"240":1,"241":1,"476":1,"477":1,"478":1,"479":1}}],["amount1",{"2":{"79":1,"238":1,"239":1,"240":1,"476":1,"477":1,"478":1}}],["amazon",{"2":{"140":2,"363":1,"452":1}}],["amp",{"0":{"3":1,"5":1,"36":1,"40":1,"55":1,"402":1,"423":1},"1":{"56":1,"57":1,"58":1,"59":1,"60":1,"403":1,"404":1,"405":1,"406":1,"407":1,"408":1,"409":1,"410":1,"411":1,"412":1,"413":1,"414":1,"415":1,"416":1,"417":1,"418":1,"419":1,"420":1,"421":1,"422":1},"2":{"2":3,"3":1,"12":1,"13":1,"17":2,"29":2,"30":3,"34":3,"38":2,"41":1,"43":3,"45":3,"47":3,"51":3,"55":1,"73":1,"80":1,"108":2,"173":10,"174":1,"175":1,"181":2,"193":2,"397":3,"448":2}}],["admire",{"0":{"347":1}}],["adapter",{"2":{"300":1}}],["advanced",{"0":{"296":1},"1":{"297":1},"2":{"106":1,"137":1,"149":1,"296":1}}],["advantages",{"2":{"197":1}}],["advantage",{"2":{"70":1,"328":1}}],["adhere",{"2":{"36":1}}],["addr",{"2":{"440":1}}],["address",{"0":{"43":1,"49":1,"78":1,"224":1,"401":1,"463":1},"2":{"29":3,"30":4,"34":1,"36":1,"38":3,"41":2,"43":6,"45":5,"47":4,"56":4,"60":1,"62":1,"63":1,"70":1,"72":6,"73":1,"78":4,"79":2,"80":1,"83":9,"86":10,"87":2,"89":4,"90":4,"91":5,"140":1,"149":1,"151":1,"153":1,"155":1,"156":1,"160":1,"173":1,"200":1,"214":1,"224":3,"225":3,"226":3,"232":1,"238":2,"239":8,"240":8,"241":7,"246":1,"302":3,"316":1,"320":1,"328":1,"330":2,"331":2,"333":2,"338":1,"344":1,"346":4,"348":1,"391":5,"395":3,"396":4,"398":1,"399":5,"400":3,"401":4,"404":1,"406":10,"414":1,"417":1,"422":2,"426":1,"440":2,"443":2,"444":2,"447":1,"448":1,"449":2,"453":1,"460":2,"461":1,"463":3,"464":3,"465":3,"470":1,"476":2,"477":8,"478":8,"479":7,"484":1}}],["addresses",{"2":{"10":2,"29":1,"30":1,"43":2,"47":1,"49":2,"60":1,"189":1,"391":1,"405":2,"413":3}}],["adds",{"2":{"386":1}}],["adddynamic",{"2":{"173":2}}],["added",{"2":{"50":1,"164":1,"255":1,"263":1,"265":1,"273":1,"390":1,"442":1}}],["addition",{"2":{"56":1,"65":1,"136":1,"160":1,"249":1,"295":1}}],["additionally",{"2":{"32":1,"50":1,"59":1,"67":1,"70":1,"105":1,"149":1,"194":1,"249":1}}],["additional",{"2":{"10":1,"29":1,"30":1,"43":1,"47":1,"67":1,"68":1,"128":1,"144":1,"186":1,"196":1,"199":1,"249":1,"354":1,"389":2,"397":1,"420":1,"452":1,"453":2}}],["adding",{"2":{"10":1}}],["add",{"0":{"77":1,"78":1,"87":1},"2":{"1":1,"3":2,"7":1,"33":1,"86":1,"88":2,"96":1,"105":1,"107":1,"123":1,"135":2,"137":3,"142":1,"143":1,"145":2,"160":1,"161":2,"169":1,"173":1,"185":1,"200":1,"247":4,"254":1,"260":1,"264":1,"271":1,"274":1,"363":1,"370":1,"376":4,"390":2}}],["ai",{"2":{"17":1}}],["absolute",{"2":{"225":1,"464":1}}],["abstracted",{"2":{"156":1}}],["abstraction",{"2":{"8":1,"197":1}}],["abis",{"2":{"156":1,"333":1}}],["abi",{"2":{"72":1,"91":1,"151":1,"153":1,"155":1,"156":5,"328":3,"329":1,"330":1,"333":1,"334":1,"399":4,"427":1,"441":1,"442":1,"443":2}}],["ability",{"2":{"72":1,"390":1}}],["about",{"2":{"48":1,"56":1,"61":1,"70":1,"71":1,"79":1,"80":1,"186":1,"200":1,"295":1,"348":1}}],["above",{"0":{"295":1},"2":{"4":2,"36":1,"49":1,"56":3,"58":1,"78":1,"135":1,"149":2,"150":1,"156":1,"200":1,"225":1,"226":1,"293":1,"294":1,"295":2,"311":1,"314":1,"316":1,"318":1,"320":1,"397":1,"425":1,"426":1,"464":1,"465":1}}],["able",{"2":{"36":1,"55":1,"72":1,"137":1,"183":1,"199":3,"216":1,"219":1,"222":1,"365":2,"390":1,"425":1}}],["audits",{"0":{"431":1},"1":{"432":1,"433":1,"434":1},"2":{"431":1}}],["audited",{"2":{"363":1}}],["audio",{"2":{"4":2}}],["auto",{"2":{"387":1}}],["autoconnect",{"2":{"255":1,"295":2}}],["automatic",{"0":{"458":1},"2":{"80":1,"458":1}}],["automatically",{"2":{"8":1,"39":3,"55":1,"108":1,"133":1,"135":2,"137":1,"139":1,"179":1,"204":1,"209":1,"213":1,"214":1,"225":3,"249":1,"342":1,"383":1,"441":1,"444":1,"446":1,"464":3}}],["authorizationmessage",{"2":{"233":2,"234":1,"471":2,"472":1}}],["authorization",{"0":{"233":1,"234":1,"471":1,"472":1},"2":{"226":1,"465":1}}],["authorized",{"2":{"234":2,"472":2}}],["authorizenonce",{"0":{"207":1},"2":{"207":2}}],["authorize",{"0":{"206":1},"2":{"200":1,"206":2,"225":2,"229":2,"233":1,"464":2,"467":2,"471":1}}],["authfailure",{"2":{"173":2}}],["authsuccess",{"2":{"173":3,"174":1,"175":1,"180":1}}],["authrequirescode",{"2":{"173":3,"174":1}}],["authenticating",{"2":{"364":1}}],["authentication",{"0":{"139":1,"172":1,"174":1,"175":1,"176":1},"1":{"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"173":1,"174":1,"175":1,"176":1},"2":{"96":1,"119":1,"120":1,"139":4,"173":1,"174":1,"175":1,"178":1,"196":1,"229":1,"370":1,"387":1,"445":1,"453":1,"467":1}}],["authenticator",{"2":{"173":3,"174":1}}],["authenticates",{"2":{"365":1}}],["authenticated",{"2":{"98":1,"372":1}}],["authenticate",{"0":{"223":1,"225":1,"226":1,"462":1,"464":1,"465":1},"1":{"224":1,"225":1,"226":1,"463":1,"464":1,"465":1},"2":{"7":1,"225":2,"226":1,"364":1,"445":1,"464":2,"465":1}}],["auth",{"0":{"363":1,"448":1},"2":{"12":1,"72":2,"78":1,"83":1,"91":2,"171":1,"173":1,"174":1,"179":1,"180":2,"183":1,"203":1,"213":1,"226":1,"363":1,"364":1,"365":2,"445":2,"446":1,"448":4,"451":1,"453":1,"465":1}}],["achieves",{"2":{"364":1}}],["achievement",{"0":{"21":1,"22":1}}],["act",{"2":{"229":1,"467":1}}],["actor",{"2":{"171":2,"178":1,"386":1,"389":1,"390":1}}],["acting",{"2":{"386":1}}],["active",{"2":{"450":1}}],["activities",{"2":{"391":2}}],["activity",{"2":{"145":4,"222":1,"389":1,"391":1}}],["activate",{"2":{"284":2}}],["activated",{"2":{"284":1}}],["activation",{"0":{"284":1}}],["actions",{"2":{"229":1,"364":1,"458":1,"467":1}}],["action",{"2":{"145":8,"200":1,"229":1,"235":1,"350":1,"364":1,"456":2,"458":1,"467":1,"473":1}}],["actually",{"2":{"237":1,"475":1}}],["actual",{"2":{"7":1,"89":1,"200":1,"225":1,"247":1,"376":1,"464":1}}],["across",{"2":{"32":1,"39":1,"65":1}}],["acquire",{"2":{"7":1,"89":1,"97":1,"169":1,"371":1}}],["acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",{"2":{"460":2}}],["accurately",{"2":{"39":1}}],["accelerate",{"2":{"192":1,"198":1}}],["accepts",{"2":{"149":1,"329":1}}],["accepting",{"2":{"81":1,"147":1}}],["accepted",{"2":{"10":1,"200":1}}],["accessing",{"2":{"460":1}}],["accessible",{"2":{"4":2,"57":1,"387":1}}],["accessed",{"2":{"308":1,"361":1}}],["access",{"2":{"3":3,"7":2,"12":2,"17":1,"28":1,"29":3,"30":1,"31":1,"33":1,"36":1,"37":1,"38":2,"39":1,"42":1,"43":2,"44":1,"45":1,"46":1,"47":1,"49":2,"52":2,"62":2,"63":3,"72":2,"78":1,"83":2,"86":8,"87":1,"91":1,"97":1,"98":1,"106":1,"107":1,"130":1,"138":1,"139":1,"151":1,"153":1,"155":1,"166":1,"169":1,"199":3,"200":2,"216":2,"363":3,"365":3,"371":1,"372":1,"388":2,"390":1,"435":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["accountaddresses",{"2":{"43":1}}],["accountaddress",{"2":{"29":7,"30":6,"34":2,"38":6,"43":4,"45":2}}],["accounts",{"0":{"355":1},"1":{"356":1,"357":1},"2":{"9":2,"141":1,"354":1,"355":2,"449":4}}],["account",{"0":{"3":1},"2":{"2":2,"3":2,"12":2,"13":1,"14":1,"29":5,"30":4,"34":1,"38":4,"43":5,"72":3,"78":2,"79":2,"81":1,"82":1,"83":4,"91":1,"147":1,"197":1,"200":1,"225":1,"246":1,"261":1,"270":1,"338":1,"341":1,"363":1,"387":3,"390":1,"445":1,"446":1,"464":1,"484":1}}],["aggregating",{"2":{"6":1}}],["against",{"2":{"9":1,"68":1,"365":2,"390":1,"398":2,"414":1,"422":1}}],["again",{"2":{"3":1,"185":2,"208":1,"345":1,"387":1}}],["aka",{"0":{"38":1},"2":{"4":1}}],["atomic",{"2":{"416":1}}],["attested",{"2":{"363":1}}],["attempts",{"2":{"293":1}}],["attempting",{"2":{"180":1}}],["attempt",{"2":{"135":1,"137":1,"268":1,"277":1,"278":1,"286":1}}],["attributes",{"0":{"69":1,"344":1},"2":{"56":1,"67":6,"68":1,"69":6,"337":1,"344":1}}],["attacker",{"2":{"365":2,"388":1}}],["attackers",{"2":{"363":1}}],["attacks",{"2":{"9":1,"448":1}}],["attached",{"2":{"139":1,"164":1}}],["attach",{"2":{"56":1,"171":1}}],["at",{"2":{"4":1,"29":1,"56":2,"72":1,"73":1,"81":1,"93":1,"103":1,"132":1,"138":2,"166":2,"170":1,"185":2,"188":1,"196":1,"225":1,"252":1,"305":1,"306":1,"310":4,"316":2,"320":2,"329":1,"331":1,"337":1,"365":1,"367":1,"374":1,"380":1,"382":1,"383":1,"387":1,"402":1,"403":1,"464":1}}],["alpha",{"2":{"164":1}}],["alias",{"2":{"81":2}}],["alternatively",{"2":{"193":1,"198":1,"222":2,"329":1,"331":1}}],["alternative",{"2":{"51":1}}],["alongside",{"2":{"255":1,"265":1}}],["along",{"2":{"32":1,"345":1}}],["always",{"2":{"29":1,"30":1,"43":1,"47":1,"132":1,"166":1,"222":1,"226":1,"348":1,"364":1,"418":1,"419":1,"444":1,"461":1,"465":1}}],["already",{"2":{"12":1,"73":1,"103":1,"135":1,"137":2,"145":2,"171":1,"200":1,"213":1,"214":1,"215":1,"222":2,"252":1,"328":1,"346":1,"380":1,"446":1}}],["also",{"2":{"4":1,"10":1,"31":1,"36":2,"48":1,"55":1,"56":1,"61":1,"72":3,"79":1,"80":1,"99":1,"100":1,"128":1,"129":1,"135":1,"136":1,"161":1,"173":1,"183":1,"184":1,"188":1,"194":1,"200":2,"219":1,"222":1,"243":1,"244":1,"245":1,"247":1,"249":3,"259":1,"269":1,"333":2,"334":1,"353":1,"358":1,"364":1,"365":1,"376":1,"385":1,"414":1,"422":1,"426":1,"448":1,"481":1,"482":1,"483":1}}],["ally",{"2":{"68":1}}],["allowed",{"2":{"364":1,"415":1}}],["allowlists",{"2":{"364":1}}],["allows",{"2":{"55":1,"79":1,"156":1,"157":2,"199":1,"225":3,"295":2,"300":1,"344":1,"353":1,"354":1,"358":1,"385":1,"389":1,"398":1,"404":1,"407":1,"411":1,"464":3}}],["allowing",{"2":{"9":1,"105":1,"156":1,"199":1}}],["allow",{"2":{"8":3,"86":3,"141":1,"151":1,"153":1,"155":1,"171":1,"199":1,"214":1,"219":1,"361":1,"424":1}}],["all",{"0":{"47":1,"294":1},"2":{"1":1,"3":1,"29":2,"30":1,"36":2,"39":3,"41":4,"43":1,"45":2,"47":2,"79":1,"99":1,"102":1,"121":1,"140":1,"141":1,"151":1,"153":1,"155":1,"156":1,"157":3,"158":1,"179":2,"193":1,"197":2,"198":1,"199":1,"216":1,"226":1,"244":1,"249":2,"251":1,"259":1,"269":1,"293":1,"294":1,"295":2,"296":1,"305":1,"306":1,"334":1,"337":1,"339":1,"340":1,"363":1,"379":1,"382":1,"383":1,"387":1,"390":1,"404":1,"407":1,"414":1,"419":1,"444":1,"465":1,"482":1}}],["arcadeum",{"2":{"431":2}}],["architectures",{"2":{"185":1}}],["architecture",{"0":{"362":1},"1":{"363":1,"364":1},"2":{"4":1}}],["argent",{"2":{"360":1}}],["argument",{"2":{"161":1,"455":1}}],["arguments",{"2":{"36":1,"139":1,"329":2}}],["arrive",{"2":{"90":1}}],["array",{"2":{"43":4,"49":1,"62":2,"63":2,"67":1,"69":1,"119":1,"120":1,"157":1,"391":2,"427":1}}],["arbitrum",{"2":{"72":1,"78":1,"352":1,"391":2}}],["arbitrary",{"2":{"10":1,"14":1,"68":1,"69":1,"156":1,"329":1,"334":1,"358":1}}],["artstation",{"2":{"68":1}}],["artist",{"2":{"68":1}}],["artists",{"2":{"68":1}}],["armor",{"2":{"68":1}}],["areas",{"2":{"69":1}}],["aren",{"2":{"12":1}}],["are",{"0":{"193":1,"196":1,"197":1,"397":1},"2":{"3":1,"8":3,"10":2,"29":1,"30":1,"31":1,"36":5,"41":1,"43":1,"47":1,"55":1,"65":1,"69":1,"70":2,"83":1,"86":1,"91":1,"119":1,"120":1,"121":2,"129":1,"138":1,"139":1,"141":1,"149":2,"151":1,"153":1,"154":1,"155":1,"156":3,"157":1,"160":1,"161":1,"173":2,"174":1,"180":3,"181":1,"187":3,"195":1,"197":1,"199":2,"200":1,"201":1,"229":2,"246":2,"249":1,"254":1,"260":1,"261":1,"262":1,"270":1,"271":1,"295":1,"298":1,"301":1,"307":1,"309":2,"310":1,"329":1,"330":1,"344":1,"348":1,"353":1,"355":2,"358":3,"362":2,"364":1,"365":3,"385":1,"387":3,"388":1,"390":1,"391":2,"397":1,"398":1,"401":1,"402":1,"405":1,"413":3,"414":1,"415":1,"417":1,"425":2,"426":1,"431":1,"435":1,"437":1,"438":1,"439":1,"440":1,"442":1,"444":1,"446":1,"448":1,"449":1,"458":1,"459":1,"460":1,"461":1,"467":2,"484":2}}],["arise",{"2":{"0":1}}],["after",{"2":{"3":1,"81":1,"86":1,"132":1,"145":1,"164":1,"166":1,"173":3,"175":1,"178":1,"185":1,"200":1,"209":2,"338":1,"391":1,"403":1}}],["apk",{"2":{"145":2}}],["ape",{"2":{"67":2}}],["appprops",{"2":{"295":1}}],["appprotocol",{"0":{"203":1}}],["appropriate",{"2":{"138":1,"156":1,"164":1,"260":1,"271":1,"327":1,"329":1}}],["approach",{"2":{"72":1,"148":1,"159":1,"160":1,"181":1}}],["applied",{"2":{"438":1}}],["applicable",{"2":{"272":2}}],["application",{"2":{"6":1,"10":1,"14":1,"29":2,"30":2,"38":2,"43":2,"45":2,"47":2,"49":2,"55":1,"62":2,"63":4,"81":1,"89":1,"90":1,"102":1,"103":1,"104":1,"106":1,"138":1,"141":2,"145":4,"160":1,"178":1,"183":4,"186":1,"228":1,"229":1,"236":1,"251":1,"252":1,"261":1,"270":1,"294":4,"295":1,"352":1,"361":1,"379":1,"380":1,"391":3,"445":1,"448":2,"466":1,"467":1,"474":1}}],["applications",{"0":{"250":1,"378":1},"1":{"251":1,"379":1},"2":{"0":1,"36":1,"101":1,"187":1,"225":1,"226":1,"229":2,"250":1,"296":1,"363":1,"378":1,"464":1,"465":1,"467":2}}],["apply",{"2":{"164":3}}],["appleid",{"2":{"390":1}}],["applevision",{"2":{"185":1}}],["apple",{"0":{"448":1},"2":{"119":1,"141":1,"213":1,"215":1,"447":1,"448":1}}],["appname",{"0":{"278":1,"287":1},"2":{"106":1,"107":1,"130":1,"275":1,"283":3,"287":1}}],["app`",{"2":{"91":1}}],["appear",{"2":{"156":1}}],["appears",{"2":{"67":1,"129":1,"156":1}}],["appended",{"2":{"345":1}}],["append",{"2":{"7":1,"13":1,"401":1}}],["apps",{"2":{"39":1,"161":1,"184":1}}],["app",{"0":{"202":1,"295":1},"2":{"4":8,"7":1,"10":1,"12":2,"14":1,"29":3,"30":3,"32":2,"33":1,"34":2,"38":3,"43":3,"45":3,"47":3,"49":2,"52":2,"53":1,"56":4,"58":6,"60":1,"62":2,"63":4,"67":2,"68":1,"80":1,"82":1,"83":1,"86":1,"90":1,"91":2,"106":4,"107":3,"110":1,"111":1,"123":2,"130":4,"145":1,"163":1,"185":2,"199":1,"200":2,"202":3,"225":1,"226":1,"249":1,"255":2,"257":1,"258":1,"261":5,"262":5,"265":2,"267":1,"268":1,"270":5,"272":4,"275":1,"278":1,"283":1,"288":1,"293":2,"294":1,"295":3,"296":1,"348":2,"352":1,"363":1,"365":1,"382":1,"383":1,"391":2,"448":1,"464":1,"465":1}}],["apis",{"2":{"86":1,"90":1,"136":1,"187":1,"192":1,"193":3,"194":2,"361":1}}],["api",{"0":{"1":1,"2":1,"8":1,"11":1,"28":1,"55":1,"177":1,"178":1,"179":1,"181":1,"352":1},"1":{"3":1,"4":1,"5":1,"9":1,"10":1,"11":1,"12":2,"13":2,"14":2,"29":1,"30":1,"56":1,"57":1,"58":1,"59":1,"60":1,"178":1,"179":1,"180":1,"181":1},"2":{"1":3,"2":4,"3":6,"4":1,"8":1,"28":1,"29":2,"31":3,"32":4,"33":1,"37":1,"38":1,"39":4,"42":1,"43":1,"44":1,"46":1,"49":1,"51":5,"52":2,"55":3,"57":1,"59":1,"60":1,"62":1,"80":2,"81":1,"86":5,"97":1,"132":1,"136":1,"138":2,"140":1,"166":1,"169":1,"171":1,"178":5,"180":1,"190":1,"194":1,"308":1,"351":1,"352":1,"371":1,"391":3,"392":1,"447":1,"461":1}}],["announced",{"2":{"202":1}}],["anonymizes",{"2":{"187":1}}],["another",{"2":{"29":1,"32":1,"49":1,"56":1,"59":1,"62":1,"63":2,"67":1,"364":1,"387":1,"391":1,"395":1}}],["analytics",{"0":{"186":1},"1":{"187":1,"188":1,"189":1,"190":1,"191":1},"2":{"187":2}}],["anatomy",{"0":{"9":1}}],["animation",{"2":{"4":2}}],["an",{"0":{"15":1,"23":1,"83":1,"293":1,"352":1},"1":{"84":1,"85":1},"2":{"4":5,"10":1,"14":1,"29":2,"30":1,"33":1,"36":1,"38":1,"41":1,"43":1,"45":1,"47":1,"49":2,"52":1,"55":1,"60":1,"62":2,"63":1,"67":2,"68":3,"69":2,"72":1,"79":2,"80":1,"81":2,"83":2,"90":1,"91":1,"100":1,"110":1,"129":4,"135":1,"139":1,"140":1,"141":1,"148":2,"149":1,"150":3,"151":2,"152":3,"153":2,"154":3,"155":2,"156":4,"158":1,"159":2,"160":2,"161":2,"164":1,"170":1,"171":2,"174":1,"181":1,"183":1,"193":1,"197":1,"199":2,"206":1,"207":1,"214":1,"218":1,"222":1,"225":2,"226":1,"228":1,"238":1,"239":2,"240":2,"245":1,"249":1,"260":1,"261":2,"270":2,"271":1,"278":1,"279":2,"291":1,"293":1,"295":3,"299":1,"300":2,"305":2,"306":2,"307":1,"328":1,"329":2,"330":3,"331":1,"333":2,"334":1,"338":1,"344":1,"361":2,"364":1,"365":2,"387":1,"388":1,"391":4,"395":1,"404":1,"413":1,"414":1,"419":1,"439":1,"440":2,"444":1,"445":1,"446":1,"447":6,"450":1,"452":1,"455":1,"456":1,"461":3,"464":2,"465":1,"466":1,"476":1,"477":2,"478":2,"483":1}}],["android=",{"2":{"145":2}}],["androidmanifest",{"2":{"145":1}}],["android",{"0":{"145":1},"2":{"133":1,"145":41,"167":1,"182":1,"183":3}}],["and",{"0":{"4":1,"10":1,"29":2,"30":2,"81":1,"83":1,"185":1,"197":1,"201":1,"231":1,"294":1,"295":2,"337":1,"347":1,"429":1,"469":1},"1":{"82":1,"84":1,"85":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1},"2":{"0":1,"1":3,"2":4,"3":5,"4":6,"6":1,"7":3,"8":4,"9":1,"10":1,"13":1,"30":1,"31":2,"32":5,"35":1,"36":5,"39":11,"43":1,"47":1,"48":1,"51":1,"54":1,"55":3,"56":6,"57":1,"59":1,"61":2,"65":3,"67":1,"68":1,"69":8,"70":2,"71":1,"73":1,"79":1,"80":5,"81":4,"82":1,"83":3,"86":6,"89":4,"90":5,"91":6,"96":1,"97":1,"99":1,"100":1,"101":1,"102":3,"104":1,"105":2,"110":1,"119":1,"120":1,"124":1,"128":1,"129":1,"130":1,"131":1,"132":2,"135":2,"136":3,"137":4,"138":4,"139":3,"140":2,"142":1,"143":1,"145":4,"147":1,"148":4,"149":4,"150":1,"151":2,"152":1,"153":2,"154":1,"155":2,"156":4,"157":1,"159":1,"160":4,"161":3,"163":1,"164":3,"165":1,"166":2,"170":1,"171":1,"173":1,"174":1,"175":1,"178":2,"181":1,"182":1,"183":3,"185":4,"187":3,"188":1,"190":1,"192":1,"193":5,"194":2,"195":1,"196":3,"197":1,"198":3,"199":6,"200":5,"204":2,"206":1,"210":1,"220":1,"222":2,"225":3,"226":1,"229":3,"232":1,"236":1,"241":1,"244":1,"245":1,"247":1,"249":2,"250":1,"251":3,"255":1,"262":1,"265":1,"268":1,"284":1,"290":1,"293":4,"294":2,"295":7,"296":1,"297":1,"303":1,"304":1,"305":2,"306":2,"307":1,"308":1,"309":1,"310":1,"311":1,"314":1,"316":1,"318":1,"320":1,"321":1,"326":1,"327":1,"328":2,"329":3,"331":2,"333":2,"334":2,"337":1,"338":2,"341":1,"342":1,"344":1,"345":2,"346":1,"347":2,"348":1,"353":1,"354":1,"358":1,"361":3,"363":4,"364":5,"370":1,"371":1,"378":1,"379":3,"385":1,"387":3,"389":1,"390":5,"391":1,"392":1,"393":1,"396":1,"398":3,"400":1,"408":2,"414":1,"418":1,"419":1,"422":1,"424":1,"425":2,"426":1,"427":2,"431":1,"435":1,"436":2,"437":1,"439":2,"440":1,"442":5,"446":1,"448":4,"449":1,"454":2,"461":1,"464":3,"465":1,"467":3,"470":1,"474":1,"479":1,"482":1,"483":1}}],["anywhere",{"2":{"148":1,"159":1,"160":1}}],["anyway",{"2":{"78":1}}],["anyone",{"2":{"90":1,"363":1}}],["anything",{"2":{"36":1,"200":1}}],["any",{"0":{"29":1,"43":1,"45":1,"49":1,"62":1,"221":1},"2":{"0":1,"8":2,"10":3,"29":1,"30":1,"31":1,"36":1,"38":1,"39":1,"41":3,"43":3,"45":4,"47":4,"48":2,"55":1,"56":2,"61":4,"69":2,"72":3,"73":1,"78":1,"79":1,"81":1,"86":6,"98":1,"132":1,"136":1,"137":1,"139":1,"151":1,"153":1,"155":1,"156":1,"157":1,"165":1,"166":1,"173":1,"178":2,"186":1,"199":3,"200":1,"222":1,"226":1,"330":1,"333":1,"334":1,"345":1,"346":1,"365":1,"372":1,"382":1,"383":1,"397":2,"413":2,"420":1,"431":1,"437":1,"439":1,"441":1,"442":1,"444":1,"448":1,"450":2,"459":1,"460":1,"461":1,"465":1}}],["answered",{"2":{"81":1}}],["answer",{"2":{"0":2,"447":2}}],["asking",{"2":{"225":1,"453":1,"464":1}}],["ask",{"0":{"224":1,"463":1},"2":{"210":1,"238":1,"476":1}}],["askforemail",{"0":{"210":1},"2":{"210":2}}],["asks",{"2":{"136":1}}],["aspects",{"2":{"445":1}}],["aspect",{"2":{"200":2,"212":1}}],["asequencebackendmanager",{"2":{"173":1}}],["assigned",{"2":{"403":2}}],["assistance",{"2":{"29":1,"49":1,"62":1,"63":2,"391":1}}],["assured",{"2":{"363":1}}],["assuming",{"2":{"178":1}}],["assumes",{"2":{"200":1}}],["assume",{"2":{"73":1}}],["assembled",{"2":{"329":1}}],["assets",{"2":{"4":1,"56":3,"68":1,"84":1,"121":5,"135":1,"136":2,"138":2,"145":1,"164":1,"193":3,"196":1}}],["assetid",{"2":{"4":2}}],["assetidorassettype",{"2":{"4":1}}],["assettype",{"2":{"4":3}}],["asset",{"2":{"4":6,"67":1,"68":1}}],["asstring",{"2":{"307":2}}],["associated",{"2":{"191":1,"232":1,"427":1,"470":1}}],["association",{"2":{"139":1}}],["asynchronous",{"2":{"148":1,"159":1,"160":1,"296":1}}],["async",{"2":{"7":1,"12":1,"72":2,"78":1,"83":1,"86":5,"91":2,"126":1,"148":1,"159":1,"160":1,"284":2,"296":1,"329":1,"391":1,"448":3}}],["as",{"0":{"248":1,"377":1},"2":{"0":2,"3":3,"4":2,"8":1,"9":1,"32":3,"36":2,"49":1,"55":2,"56":2,"58":1,"59":2,"62":1,"63":1,"67":1,"68":1,"69":4,"70":1,"78":1,"81":2,"86":4,"90":1,"91":1,"97":1,"98":1,"100":1,"102":1,"105":1,"106":1,"107":1,"119":1,"120":1,"129":2,"136":2,"137":2,"139":1,"141":1,"147":2,"148":1,"149":5,"150":1,"152":1,"154":2,"156":4,"157":1,"160":1,"161":4,"164":1,"166":1,"174":1,"178":1,"183":2,"186":1,"192":2,"193":4,"196":3,"197":1,"207":1,"218":1,"222":2,"225":1,"226":2,"229":2,"237":1,"238":2,"239":2,"240":2,"241":1,"245":1,"246":1,"248":1,"251":1,"257":1,"267":1,"284":1,"286":1,"293":1,"300":1,"305":1,"306":1,"308":1,"309":1,"310":1,"311":1,"314":1,"316":1,"318":1,"319":1,"320":1,"328":2,"329":2,"331":3,"333":1,"334":1,"337":1,"338":1,"346":2,"353":1,"354":1,"358":1,"361":1,"362":1,"371":1,"372":1,"377":1,"379":1,"385":1,"390":1,"391":1,"398":1,"401":1,"406":1,"407":1,"425":4,"426":3,"427":1,"431":1,"436":1,"440":1,"441":1,"442":1,"443":3,"444":2,"446":1,"447":4,"455":1,"456":1,"464":1,"465":2,"467":2,"475":1,"476":2,"477":2,"478":2,"479":1,"483":1,"484":1}}],["a",{"0":{"3":1,"7":1,"9":1,"17":1,"19":1,"20":1,"25":1,"46":1,"47":1,"71":1,"74":1,"80":1,"81":1,"91":1,"93":1,"129":1,"232":1,"241":1,"294":1,"295":1,"350":1,"367":1,"374":1,"470":1,"479":1},"1":{"47":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"81":1,"82":2,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1},"2":{"0":1,"1":2,"2":3,"3":4,"6":1,"7":4,"8":6,"9":7,"10":3,"14":1,"17":2,"29":2,"30":2,"31":1,"32":2,"36":1,"38":2,"39":6,"41":4,"43":7,"45":3,"47":3,"49":2,"51":1,"55":2,"56":6,"57":2,"60":3,"61":1,"62":2,"63":5,"67":2,"68":3,"70":3,"71":1,"72":16,"73":4,"78":5,"79":2,"80":7,"81":4,"82":2,"83":5,"85":1,"86":9,"88":1,"89":2,"90":2,"91":4,"94":1,"97":1,"98":2,"99":1,"101":2,"102":3,"103":1,"106":1,"113":2,"119":2,"120":2,"121":1,"124":1,"126":1,"129":5,"130":1,"131":1,"132":3,"135":4,"136":8,"137":3,"138":5,"139":4,"140":2,"141":2,"145":3,"147":3,"148":6,"149":11,"150":1,"151":4,"153":4,"154":1,"155":4,"156":8,"157":5,"158":1,"159":2,"160":8,"161":6,"162":1,"164":3,"165":1,"166":4,"170":2,"171":6,"173":4,"174":2,"178":2,"179":3,"180":1,"181":1,"183":1,"185":5,"187":1,"192":1,"193":4,"194":4,"196":4,"197":2,"198":1,"199":6,"200":4,"201":1,"208":1,"212":2,"213":1,"218":1,"220":2,"222":1,"225":6,"226":2,"228":1,"229":7,"232":1,"233":1,"235":1,"236":1,"237":2,"238":4,"239":3,"240":3,"241":1,"244":1,"246":4,"247":3,"248":1,"249":2,"250":2,"251":3,"252":1,"253":1,"258":1,"259":1,"262":4,"263":1,"268":1,"269":1,"272":3,"273":1,"287":1,"288":1,"289":1,"294":3,"295":10,"296":1,"298":1,"299":4,"300":3,"301":1,"305":5,"306":5,"307":2,"308":7,"309":2,"310":3,"311":1,"312":1,"314":2,"316":3,"317":1,"318":1,"320":2,"321":2,"322":1,"324":1,"325":1,"326":1,"327":1,"328":6,"329":7,"330":1,"331":4,"332":1,"333":3,"334":1,"336":1,"337":2,"339":1,"340":1,"346":1,"347":1,"350":1,"351":1,"353":1,"354":1,"355":1,"361":1,"362":2,"363":6,"364":2,"365":1,"368":1,"371":1,"372":2,"375":1,"376":2,"377":1,"378":2,"379":3,"380":1,"385":1,"386":7,"387":5,"389":3,"390":6,"391":4,"393":3,"394":1,"396":1,"397":1,"398":1,"403":2,"405":1,"406":1,"407":1,"408":1,"411":1,"413":2,"414":1,"416":2,"418":1,"419":1,"421":1,"422":3,"425":1,"426":2,"435":1,"436":2,"437":1,"438":2,"439":3,"440":2,"441":2,"442":4,"443":4,"445":1,"446":3,"447":3,"448":6,"449":1,"450":1,"452":2,"453":2,"455":2,"456":4,"460":2,"461":2,"464":6,"465":2,"466":1,"467":7,"470":1,"471":1,"473":1,"474":1,"475":2,"476":4,"477":3,"478":3,"479":1,"482":1,"484":4}}],["swapping",{"2":{"181":1}}],["switches",{"2":{"178":1}}],["switch",{"2":{"178":1}}],["switching",{"2":{"139":1}}],["sso",{"0":{"183":1},"2":{"173":1,"175":2}}],["ssssssssssssssssssssssssssssssssssssssssnnnnnnnnnnnnnnnnnnnnnnnn",{"2":{"9":1}}],["sqnc",{"2":{"171":1}}],["sfts",{"2":{"154":1}}],["smooth",{"2":{"101":1,"102":1,"250":1,"251":1,"378":1,"379":1}}],["smart",{"0":{"329":1,"354":1,"358":1},"1":{"355":1,"356":1,"357":1,"358":1,"359":2,"360":1},"2":{"71":1,"73":2,"147":1,"151":1,"153":1,"155":1,"156":3,"157":3,"160":4,"197":1,"226":1,"247":1,"316":1,"329":2,"330":1,"331":2,"354":2,"358":2,"362":1,"363":1,"395":1,"413":1,"465":1}}],["small",{"2":{"67":1,"237":1,"475":1}}],["sync",{"2":{"438":1}}],["synonymous",{"2":{"431":1}}],["systems",{"2":{"170":1,"178":1}}],["system",{"2":{"96":1,"133":2,"136":1,"137":1,"163":1,"182":1,"187":1,"354":1,"361":1,"370":1,"445":1}}],["symbol",{"2":{"10":3,"12":1,"13":1,"56":1,"333":2}}],["skipfetchsetup",{"2":{"91":2}}],["skywvr",{"2":{"56":1}}],["skyweavercover",{"2":{"56":1}}],["skyweaver",{"2":{"45":3,"47":3,"56":10,"68":3}}],["shape=",{"2":{"448":1}}],["sha",{"2":{"183":1}}],["share",{"0":{"131":1},"2":{"90":1,"131":1,"210":1}}],["showing",{"2":{"340":1}}],["showcase",{"2":{"193":1}}],["showcases",{"2":{"136":1}}],["shows",{"2":{"178":1,"190":1}}],["show",{"2":{"178":1,"188":2,"217":1,"278":1}}],["showauthsuccessdelegate",{"2":{"173":3}}],["showemailinput",{"0":{"118":1}}],["shown",{"2":{"116":1,"117":1,"118":1,"119":1,"120":1,"127":1}}],["should",{"2":{"3":2,"63":1,"69":1,"72":2,"81":1,"82":1,"88":1,"89":1,"90":3,"91":1,"129":1,"135":1,"137":1,"212":1,"236":1,"247":1,"296":2,"311":1,"314":1,"316":1,"318":1,"320":1,"333":1,"337":1,"338":1,"344":1,"345":1,"376":1,"388":1,"416":1,"419":4,"421":1,"444":1,"456":1,"474":1}}],["src=",{"2":{"248":2,"377":2}}],["src",{"2":{"86":1}}],["snippets",{"2":{"198":1}}],["snippet",{"2":{"83":1,"147":1,"149":1,"150":1,"152":1,"154":1,"156":1,"160":1,"226":1,"308":1,"465":1}}],["slot",{"2":{"406":5}}],["sleepy",{"2":{"67":1}}],["slightly",{"2":{"65":1}}],["sdk",{"0":{"96":1,"101":1,"370":1},"1":{"102":1},"2":{"63":1,"72":1,"96":3,"98":1,"99":1,"132":2,"136":4,"137":6,"138":2,"139":1,"140":1,"145":5,"147":1,"151":1,"153":1,"155":1,"157":1,"158":1,"161":2,"166":3,"179":1,"196":1,"226":1,"244":1,"247":2,"249":1,"298":1,"370":3,"372":1,"376":2,"445":1,"447":3,"448":2,"461":1,"465":1,"482":1}}],["sdks",{"2":{"32":1,"35":1,"54":1,"59":1,"96":1,"97":1,"186":1,"187":1,"189":1,"198":1,"249":1,"370":1,"371":1,"442":1}}],["salt",{"2":{"398":1,"401":1,"402":1,"414":1,"436":1,"444":2}}],["sale",{"2":{"391":1}}],["sardine",{"2":{"353":1,"385":1}}],["savings",{"2":{"157":1}}],["saves",{"2":{"164":1}}],["save",{"2":{"6":1,"81":1,"136":1}}],["safeguarding",{"2":{"388":1}}],["safeguards",{"2":{"365":1}}],["safe",{"2":{"360":1,"365":1}}],["safety",{"2":{"334":1}}],["safetransferfrom",{"2":{"72":2,"78":2,"239":5,"240":5,"241":4,"477":5,"478":5,"479":4}}],["safemint",{"2":{"153":2}}],["safer",{"2":{"137":1}}],["say",{"2":{"56":1}}],["same",{"2":{"32":1,"56":1,"69":1,"72":1,"78":1,"154":1,"225":1,"241":1,"257":1,"267":1,"300":1,"419":1,"438":1,"446":1,"464":1,"479":1}}],["samples",{"0":{"136":1},"2":{"135":2,"136":3}}],["sample",{"2":{"32":1,"136":8,"138":1,"162":1,"448":1}}],["sociallogin",{"2":{"173":1,"175":1}}],["socialauthoptions",{"0":{"119":1},"2":{"130":2}}],["social",{"0":{"141":1,"175":1,"176":1,"387":1,"453":1},"1":{"142":1,"143":1,"144":1,"145":1,"146":1,"388":1,"389":1,"390":1},"2":{"102":1,"119":1,"133":2,"135":1,"138":1,"141":2,"147":1,"196":1,"197":1,"251":1,"359":1,"363":1,"379":1,"386":1,"387":3,"390":2,"392":1,"446":1,"447":1,"448":1,"453":1,"454":1}}],["soliditykeccak256",{"2":{"443":3}}],["soliditypack",{"2":{"399":1,"401":2,"443":1}}],["solidity",{"2":{"83":1}}],["solutions",{"2":{"1":1,"33":1,"34":1}}],["sourced",{"2":{"249":1}}],["sources",{"2":{"36":2}}],["source",{"2":{"32":1,"59":1,"86":1,"100":1,"136":1,"156":2,"169":1,"200":1,"245":1,"248":1,"253":1,"263":1,"273":1,"289":1,"363":1,"377":1,"483":1}}],["soon",{"0":{"26":1,"165":1},"2":{"146":1}}],["so",{"2":{"10":4,"36":1,"39":1,"70":1,"80":1,"83":2,"129":1,"138":1,"139":2,"156":2,"165":1,"170":1,"173":4,"193":1,"196":1,"226":1,"294":1,"300":1,"328":2,"333":2,"345":1,"358":1,"363":1,"415":1,"417":1,"465":1}}],["someone",{"2":{"90":1}}],["sometimes",{"2":{"69":1,"185":1}}],["something",{"2":{"50":1,"147":1,"148":2,"159":1,"160":2,"181":1,"247":1,"337":1,"345":1,"376":1}}],["some",{"2":{"8":1,"49":1,"62":1,"65":1,"69":1,"70":1,"89":2,"90":4,"133":1,"136":3,"137":1,"141":1,"156":1,"160":1,"161":3,"164":1,"181":1,"200":1,"246":1,"293":1,"297":1,"356":1,"446":1,"484":1}}],["spec",{"2":{"171":1}}],["spectator",{"2":{"171":3}}],["special",{"2":{"160":1,"200":1,"261":1,"270":1,"310":1,"311":1,"314":1,"316":1,"318":1,"320":1}}],["specifying",{"2":{"130":1}}],["specify",{"2":{"43":5,"56":1,"200":1,"201":1,"213":1,"214":1,"215":1,"218":1,"353":1,"385":1}}],["specifies",{"2":{"126":1,"127":1}}],["specified",{"2":{"29":1,"218":1,"219":1,"238":1,"312":1,"314":1,"316":1,"476":1}}],["specifics",{"0":{"185":1}}],["specific",{"2":{"8":1,"29":1,"30":1,"39":1,"43":1,"47":1,"67":1,"68":1,"72":5,"78":1,"83":1,"90":1,"113":1,"141":1,"222":1,"229":1,"247":1,"311":1,"348":1,"376":1,"391":2,"467":1}}],["specs",{"2":{"80":1}}],["speed",{"2":{"71":1,"80":1}}],["spell",{"2":{"68":1}}],["spam",{"0":{"36":1},"2":{"29":1,"30":1,"36":2,"43":1,"47":1}}],["spaces",{"2":{"79":3}}],["space",{"2":{"9":3,"79":1,"359":1}}],["sprintf",{"2":{"12":1}}],["spothq",{"2":{"10":1}}],["sponsoring",{"0":{"73":1,"85":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1},"2":{"10":1,"72":1,"73":1}}],["sponsorship",{"0":{"10":1},"2":{"12":1,"13":2}}],["sponsor",{"0":{"83":1},"1":{"84":1,"85":1},"2":{"8":1,"10":1,"17":1,"80":1,"85":2}}],["sponsored",{"0":{"78":1},"2":{"8":1,"10":1,"73":1,"83":1,"91":1}}],["scenario",{"2":{"365":5}}],["scenarios",{"2":{"356":1,"365":1,"442":1}}],["scene",{"2":{"135":1,"136":2,"137":1,"139":1,"161":1,"164":3}}],["scenes",{"2":{"39":1,"327":1}}],["scope",{"2":{"229":1,"425":1,"426":1,"447":1,"467":1}}],["scheme=",{"2":{"145":2}}],["scheme",{"0":{"164":1},"2":{"138":1,"141":2,"142":1,"143":1,"145":3,"164":3}}],["schemes",{"2":{"133":1,"142":1,"143":1}}],["schemas",{"2":{"145":4}}],["schema",{"2":{"32":1,"67":1,"68":1}}],["scan",{"2":{"222":1,"290":1}}],["scanned",{"2":{"222":2}}],["scaffold",{"2":{"86":1}}],["scaling",{"2":{"80":1}}],["scaled",{"2":{"139":1}}],["scaler",{"2":{"139":1}}],["scale",{"2":{"6":1,"139":2}}],["scroll",{"2":{"142":1,"143":1,"345":1,"346":1}}],["scripts",{"2":{"136":1,"160":1}}],["scripting",{"2":{"136":1}}],["script",{"2":{"135":1,"136":1,"164":1,"185":5,"248":5,"377":5}}],["scriptableobject",{"2":{"138":3}}],["scriptable",{"2":{"135":1,"164":3,"308":1}}],["scratch",{"2":{"81":1}}],["screen",{"2":{"3":1,"114":1,"139":1,"202":1,"343":1}}],["s",{"2":{"4":1,"10":1,"12":1,"13":2,"14":1,"36":1,"55":1,"56":3,"67":1,"68":1,"79":1,"86":2,"99":1,"108":1,"111":1,"119":1,"120":1,"129":2,"132":1,"136":1,"147":1,"156":1,"163":1,"171":1,"175":1,"181":1,"200":1,"204":1,"207":1,"222":1,"224":1,"226":1,"229":2,"233":1,"244":1,"246":1,"278":1,"295":1,"339":1,"346":1,"358":2,"363":1,"364":3,"365":1,"386":1,"388":1,"390":1,"391":2,"394":1,"404":1,"407":1,"408":1,"415":1,"419":1,"421":1,"427":1,"447":1,"453":1,"455":1,"463":1,"465":1,"467":2,"471":1,"482":1,"484":1}}],["sum",{"2":{"436":1,"437":1}}],["summarize",{"2":{"179":1}}],["summary",{"0":{"127":1},"2":{"127":1}}],["suspicious",{"2":{"389":1}}],["sufficient",{"2":{"453":1}}],["sufficiently",{"2":{"72":1}}],["suffix",{"2":{"345":1}}],["suggestgastipcap",{"0":{"323":1},"2":{"323":1}}],["suggestgasprice",{"0":{"322":1},"2":{"322":1}}],["suggested",{"2":{"322":1,"323":1}}],["suggesting",{"2":{"67":1}}],["surf",{"2":{"199":1}}],["sure",{"2":{"32":1,"45":1,"47":1,"81":1,"86":4,"129":1,"145":1,"150":2,"171":1,"173":1}}],["subject",{"2":{"449":2}}],["subdigests",{"2":{"441":1}}],["subdigest",{"0":{"441":1},"2":{"441":3,"443":1}}],["subdomain",{"2":{"89":1,"90":1}}],["subtree",{"0":{"442":1},"2":{"439":1,"442":1}}],["subtle",{"2":{"65":1}}],["sub",{"2":{"247":3,"376":3}}],["submits",{"2":{"303":1,"304":1,"305":1,"306":1}}],["submit",{"2":{"161":1,"165":1,"321":1}}],["submitted",{"2":{"157":1,"305":3,"306":3}}],["subsequent",{"0":{"420":1},"2":{"400":1}}],["subscribe",{"2":{"147":1}}],["substitute",{"2":{"145":2}}],["suite",{"2":{"192":1}}],["suit",{"2":{"69":1,"163":1}}],["super",{"2":{"39":1}}],["supplied",{"2":{"178":1}}],["supplies",{"0":{"47":1},"2":{"41":1,"45":1,"47":3}}],["supplement",{"2":{"136":1}}],["supplying",{"2":{"174":1}}],["supply",{"2":{"9":1,"41":2}}],["supports",{"2":{"61":1,"100":1,"220":1,"222":2,"245":1,"353":1,"385":1,"483":1}}],["supported",{"0":{"40":1},"2":{"32":1,"40":1,"45":1,"47":1,"55":1,"56":1,"58":1,"65":1,"142":1,"143":1,"185":1,"213":2,"217":1,"257":1,"267":1,"358":1,"386":1,"447":1,"448":1}}],["support",{"0":{"0":1,"246":1,"484":1},"2":{"0":3,"29":1,"33":1,"34":1,"39":2,"49":1,"62":1,"63":2,"67":1,"86":1,"87":1,"128":1,"149":1,"196":2,"199":1,"249":1,"353":1,"359":1,"363":1,"383":1,"385":1,"395":1,"413":1,"424":1,"453":1}}],["success",{"2":{"89":1,"171":1}}],["successfulcontractdeploymentreturn",{"2":{"160":1}}],["successfultransactionreturn",{"2":{"148":1}}],["successfully",{"2":{"140":1,"141":1,"448":1,"460":1}}],["successful",{"0":{"460":1},"2":{"72":2,"78":1,"179":3,"459":1}}],["succeeded",{"2":{"14":1,"222":1,"460":2,"461":1}}],["such",{"2":{"4":2,"56":1,"70":1,"89":1,"102":1,"105":1,"129":1,"186":1,"193":2,"196":1,"197":1,"225":1,"251":1,"261":1,"270":1,"293":1,"295":1,"365":1,"379":1,"390":2,"456":1,"457":1,"464":1}}],["storage",{"2":{"229":1,"232":1,"236":1,"398":1,"402":1,"406":2,"444":2,"467":1,"470":1,"474":1}}],["stores",{"2":{"179":1,"187":1}}],["storedcredentials",{"2":{"180":1}}],["storedcredentialsvalid",{"2":{"173":1}}],["stored",{"2":{"3":1,"170":4,"229":1,"236":1,"386":1,"388":1,"398":1,"406":1,"443":1,"467":1,"474":1}}],["store",{"2":{"3":1,"69":2,"192":1,"193":2,"232":1,"398":1,"402":1,"470":1}}],["style",{"2":{"145":2}}],["styling",{"2":{"113":1}}],["still",{"2":{"132":1,"137":1,"160":1,"161":2,"166":1,"229":1,"246":1,"365":1,"414":1,"449":1,"467":1,"484":1}}],["straightforward",{"2":{"328":1}}],["streamlines",{"2":{"247":1}}],["streamlining",{"2":{"229":1,"467":1}}],["strength",{"2":{"68":1}}],["strictmode",{"2":{"448":2}}],["strictly",{"2":{"328":1}}],["stripe",{"2":{"199":1}}],["strings",{"2":{"49":1,"62":2,"63":2}}],["string",{"2":{"29":3,"30":4,"38":2,"43":8,"45":2,"47":3,"49":2,"62":3,"63":3,"67":3,"68":1,"69":2,"72":1,"83":1,"86":9,"89":1,"90":1,"91":2,"121":1,"138":1,"149":1,"151":1,"153":1,"155":1,"156":1,"159":1,"160":2,"225":1,"303":1,"305":3,"307":2,"308":1,"310":3,"312":1,"313":1,"315":1,"316":1,"319":2,"321":2,"328":2,"330":5,"332":1,"333":1,"391":15,"413":1,"425":1,"426":2,"443":3,"464":1}}],["stringify",{"2":{"12":1,"13":1,"86":3,"391":1}}],["structured",{"0":{"426":1},"2":{"426":1}}],["structure",{"2":{"261":2,"262":2,"270":2,"272":2,"293":3,"295":2}}],["structures",{"2":{"67":1}}],["structs",{"2":{"180":1}}],["struct",{"2":{"174":1}}],["stunt",{"2":{"67":1}}],["stud",{"2":{"67":1}}],["step",{"0":{"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"4":1,"73":1,"81":3,"86":1,"90":1,"91":1,"138":1,"194":2,"446":1}}],["steps",{"0":{"103":1,"252":1,"380":1},"2":{"4":2,"73":1,"80":2,"83":1,"89":1,"91":2,"106":1,"123":1,"144":1,"185":1}}],["stay",{"2":{"196":1}}],["standalone",{"2":{"133":2,"167":2}}],["standardized",{"2":{"86":1,"87":1}}],["standard",{"2":{"65":1,"67":1,"69":1,"150":1,"151":1,"152":1,"153":1,"154":2,"155":1,"226":1,"239":1,"240":1,"241":1,"246":2,"249":1,"299":1,"333":1,"383":1,"424":1,"465":1,"477":1,"478":1,"479":1,"484":2}}],["standards",{"0":{"50":1,"65":1,"66":1},"1":{"67":1,"68":1,"69":1,"70":1},"2":{"36":1,"51":2,"61":1,"65":4,"67":1,"199":1}}],["static",{"2":{"158":1,"439":1,"441":3,"443":1}}],["status",{"0":{"454":1},"1":{"455":1,"456":1,"457":1},"2":{"14":2,"63":1,"72":6,"78":3,"86":10,"108":1,"391":1,"454":1,"460":3}}],["state",{"2":{"3":1,"137":1,"422":1,"438":1,"448":1}}],["startingblocknumber",{"2":{"314":1}}],["starting",{"2":{"129":1,"136":1}}],["starter",{"2":{"81":1}}],["started",{"0":{"41":1,"95":1,"104":1,"194":1,"198":1,"369":1},"1":{"96":1,"97":1,"98":1,"105":1,"370":1,"371":1,"372":1},"2":{"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1,"94":1,"103":1,"105":1,"193":1,"194":2,"198":2,"252":1,"351":1,"368":1,"375":1,"380":1,"382":1,"383":1}}],["start",{"2":{"0":1,"10":1,"97":1,"98":1,"173":1,"174":2,"175":1,"181":1,"193":1,"371":1,"372":1}}],["stack",{"2":{"0":1,"6":1,"247":2}}],["situations",{"2":{"293":1}}],["situation",{"2":{"246":1,"484":1}}],["site",{"2":{"81":1}}],["size",{"2":{"139":1,"142":1,"143":1}}],["side",{"0":{"226":1,"465":1},"2":{"72":1,"173":1,"185":1,"226":1,"229":1,"234":1,"235":1,"236":1,"246":1,"261":1,"270":1,"365":1,"465":1,"467":1,"472":1,"473":1,"474":1,"484":1}}],["six",{"2":{"68":1}}],["simulation",{"2":{"461":1}}],["simulations",{"2":{"460":1,"461":1}}],["simulating",{"2":{"461":1}}],["similarly",{"2":{"173":1,"283":1,"284":1,"305":1,"306":1,"447":1}}],["similar",{"2":{"65":1,"139":1,"148":1,"171":1,"181":1,"239":1,"240":1,"247":1,"334":1,"426":1,"477":1,"478":1}}],["simply",{"2":{"4":2,"32":1,"55":1,"56":1,"59":1,"136":1,"157":1,"196":1,"329":1,"331":1,"338":1}}],["simpler",{"2":{"225":1,"464":1}}],["simple",{"2":{"1":1,"2":1,"8":1,"31":1,"39":1,"51":1,"55":1,"57":1,"178":1,"199":1,"225":1,"346":1,"356":1,"363":1,"448":1,"464":1}}],["silently",{"2":{"296":1,"457":1}}],["silence",{"2":{"56":1}}],["silvercardid",{"2":{"56":1}}],["silver",{"2":{"56":1,"67":1,"68":3}}],["sign+verify",{"2":{"225":1,"464":1}}],["signmessagereturn",{"2":{"159":1}}],["signmessage",{"0":{"307":1},"2":{"159":3,"233":1,"235":1,"307":2,"425":1,"426":1,"471":1,"473":1}}],["signinwithemail",{"0":{"214":1},"2":{"214":2}}],["signinwith",{"0":{"213":1},"2":{"213":2}}],["signinoptions",{"0":{"215":1},"2":{"200":2,"215":2}}],["signingin",{"2":{"448":1}}],["signing",{"2":{"138":1,"139":1,"159":1,"185":1,"196":1,"206":1,"222":1,"225":1,"229":1,"237":1,"424":1,"425":1,"426":1,"446":2,"456":1,"464":1,"467":1,"475":1}}],["signin",{"0":{"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"175":1,"176":1},"1":{"116":1,"117":1,"118":1,"119":1,"120":1},"2":{"115":1,"130":1,"173":1,"446":1,"447":1,"448":1,"449":1,"450":1,"460":1,"461":1}}],["signs",{"2":{"108":1,"141":1,"303":1,"304":1,"305":1,"306":1}}],["signals",{"2":{"79":1}}],["signaturevalidation",{"2":{"427":1}}],["signatures",{"0":{"228":1,"426":1,"466":1},"2":{"246":1,"398":1,"407":1,"408":1,"414":1,"425":1,"426":1,"427":5,"435":1,"437":1,"484":1}}],["signature",{"0":{"223":1,"234":1,"236":1,"424":1,"462":1,"472":1,"474":1},"1":{"224":1,"225":1,"226":1,"425":1,"426":1,"427":1,"463":1,"464":1,"465":1},"2":{"9":1,"80":1,"156":2,"159":1,"225":1,"226":1,"233":1,"234":2,"236":3,"307":1,"328":1,"329":1,"394":1,"395":1,"398":1,"424":1,"425":2,"426":2,"427":8,"436":1,"439":2,"441":3,"442":1,"444":1,"464":1,"465":1,"471":1,"472":2,"474":3}}],["signup",{"2":{"17":1}}],["signtransactions",{"2":{"13":1,"237":1,"475":1}}],["signedtransactionstring",{"2":{"321":1}}],["signedmessage",{"2":{"307":2}}],["signed",{"0":{"425":1},"2":{"13":2,"200":2,"213":1,"214":1,"215":1,"225":3,"226":1,"229":1,"237":1,"321":1,"425":3,"426":1,"427":1,"437":1,"464":3,"465":1,"467":1,"475":1}}],["signer2",{"2":{"79":2}}],["signer1",{"2":{"79":2}}],["signerssigner",{"2":{"394":1}}],["signers",{"0":{"397":1},"2":{"79":1,"362":1,"393":1,"394":2,"396":2,"397":2,"399":1,"402":1,"405":1,"407":1,"408":1,"412":1,"413":4,"425":1,"426":1,"436":1,"437":1,"439":1,"440":1,"442":2}}],["signer",{"0":{"363":1,"364":1,"395":1,"440":1},"1":{"396":1,"397":1},"2":{"12":4,"72":7,"78":4,"83":3,"91":4,"231":2,"233":1,"237":2,"238":4,"239":4,"240":4,"241":4,"395":2,"399":6,"407":1,"439":1,"440":2,"469":2,"471":1,"475":2,"476":4,"477":4,"478":4,"479":4}}],["sign",{"0":{"115":1,"140":1,"141":1,"159":1,"233":1,"235":1,"446":2,"447":2,"471":1,"473":1},"1":{"116":1,"117":1,"118":1,"119":1,"120":1,"142":1,"143":1,"144":1,"145":1,"146":1,"447":2,"448":2},"2":{"10":1,"28":1,"31":1,"37":1,"39":1,"42":1,"44":1,"46":1,"72":1,"83":1,"108":1,"115":1,"116":1,"117":1,"118":1,"119":1,"133":2,"135":1,"138":1,"140":1,"141":2,"147":1,"159":1,"200":1,"210":1,"213":1,"214":1,"215":1,"225":2,"228":1,"233":1,"235":1,"307":1,"343":1,"345":1,"347":1,"362":1,"364":1,"435":1,"442":1,"446":1,"447":1,"464":2,"466":1,"471":1,"473":1}}],["singlesigner",{"2":{"12":1,"72":2,"78":1,"83":1,"91":1}}],["single",{"2":{"6":1,"8":1,"56":1,"60":1,"70":1,"91":1,"154":1,"157":1,"238":3,"239":2,"240":2,"241":1,"247":1,"305":1,"306":1,"339":1,"355":1,"376":1,"386":1,"443":2,"476":3,"477":2,"478":2,"479":1}}],["since",{"2":{"3":1,"136":1,"157":1,"173":1,"318":1,"333":1,"388":1,"418":1,"419":1}}],["sepolia",{"2":{"352":1,"391":2}}],["separate",{"2":{"338":1}}],["separated",{"2":{"56":1}}],["several",{"2":{"247":1,"376":1}}],["self",{"2":{"405":1,"413":1,"418":1}}],["selling",{"2":{"193":2}}],["sell",{"2":{"190":1}}],["selector",{"2":{"427":1}}],["selects",{"2":{"222":1}}],["selected",{"2":{"189":1}}],["selectedoption",{"2":{"13":5}}],["selecting",{"2":{"83":1,"295":1}}],["selection",{"2":{"12":1}}],["selectwallet",{"2":{"72":1}}],["select",{"2":{"12":1,"13":1,"72":1,"83":1,"90":1,"142":2,"143":2,"185":1,"198":1,"342":1}}],["selectfee",{"2":{"12":1,"72":1,"78":1}}],["series",{"2":{"173":1,"188":1}}],["serves",{"2":{"136":1}}],["servers",{"2":{"147":1,"389":1}}],["serverprivatekey",{"2":{"72":2,"78":1}}],["serverless",{"0":{"25":1,"80":1},"1":{"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1},"2":{"80":1,"348":1}}],["server",{"0":{"71":1,"72":1,"73":1,"226":1,"465":1},"1":{"72":1,"73":1,"74":2,"75":2,"76":2,"77":2,"78":2,"79":1},"2":{"4":2,"32":1,"39":1,"71":1,"72":6,"78":3,"83":2,"226":2,"234":1,"236":1,"246":1,"261":1,"270":1,"293":2,"295":1,"465":2,"472":1,"474":1,"484":1}}],["services",{"2":{"36":2,"69":1,"246":1,"484":1}}],["service",{"0":{"3":1},"2":{"1":1,"2":4,"3":2,"4":1,"8":1,"17":1,"28":1,"31":1,"36":1,"37":1,"39":3,"42":1,"44":1,"46":1,"51":2,"55":3,"57":1,"59":2,"61":1,"63":1,"65":1,"161":1,"308":1,"361":1,"363":1,"364":1}}],["semi",{"2":{"154":1,"438":1}}],["semantic",{"2":{"132":1,"166":1}}],["seamless",{"2":{"80":1,"93":1,"131":1,"193":1,"197":1,"225":1,"364":1,"367":1,"464":1}}],["seamlessly",{"0":{"250":1,"378":1},"1":{"251":1,"379":1},"2":{"39":1,"102":1,"251":1,"379":1}}],["seaman",{"2":{"67":1}}],["senttransactionresponse",{"2":{"460":1}}],["sent",{"2":{"187":1,"191":1,"241":1,"346":1,"460":1,"461":2,"479":1}}],["sensical",{"2":{"65":1}}],["sendquery",{"2":{"331":3}}],["sendrawtransaction",{"0":{"321":1},"2":{"321":1}}],["senderc1155values",{"2":{"154":3,"157":2}}],["senderc1155",{"0":{"154":1},"1":{"155":1},"2":{"154":1,"157":1}}],["senderc721",{"0":{"152":1},"1":{"153":1},"2":{"152":1,"157":1}}],["senderc20",{"0":{"150":1},"1":{"151":1},"2":{"150":1,"157":1,"456":1}}],["senderaddress",{"2":{"72":1,"78":1}}],["sendmetatxn",{"2":{"14":1}}],["sendtransactionmethod",{"2":{"329":1}}],["sendtransactionmethodandwaitforreceipt",{"2":{"329":2,"333":1}}],["sendtransactionandwaitforreceipt",{"0":{"304":1},"2":{"304":1,"306":1,"327":1,"329":2,"333":1}}],["sendtransactionbatchandwaitforreceipts",{"0":{"306":1}}],["sendtransactionbatch",{"0":{"305":1},"2":{"239":1,"240":1,"305":1,"477":1,"478":1}}],["sendtransaction",{"0":{"303":1},"2":{"13":2,"72":1,"78":1,"79":3,"91":1,"148":2,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":2,"157":2,"160":1,"237":2,"238":2,"239":1,"240":1,"241":2,"303":1,"457":1,"458":1,"460":1,"461":2,"475":2,"476":2,"477":1,"478":1,"479":2}}],["sends",{"2":{"13":1,"344":1,"452":1,"457":1}}],["sending",{"0":{"13":1,"237":1,"238":1,"239":1,"240":1,"241":1,"475":1,"476":1,"477":1,"478":1,"479":1},"2":{"79":1,"148":1,"157":2,"160":1,"239":2,"240":2,"333":1,"446":1,"456":1,"459":1,"461":1,"477":2,"478":2}}],["send",{"2":{"8":1,"10":2,"13":1,"72":2,"73":1,"78":1,"79":2,"149":2,"150":1,"151":1,"152":1,"153":1,"154":2,"155":1,"156":1,"174":1,"238":3,"239":2,"240":2,"329":1,"331":1,"333":1,"447":2,"453":1,"455":1,"476":3,"477":2,"478":2}}],["sequentially",{"2":{"71":1,"305":1,"306":1}}],["sequentual",{"2":{"71":1}}],["sequenceonboard",{"2":{"275":2}}],["sequenceoptions",{"2":{"275":1}}],["sequencemodule",{"2":{"275":2}}],["sequencemetadata",{"2":{"49":2,"52":2,"62":2,"63":4}}],["sequencewallet",{"2":{"265":2}}],["sequencewaas",{"2":{"98":2,"372":2,"446":2,"447":2,"448":2,"449":2,"450":2,"460":1,"461":1}}],["sequenceutils",{"2":{"430":1}}],["sequenceunreal",{"2":{"185":2}}],["sequenceui",{"2":{"171":1}}],["sequencebackendmanager",{"2":{"173":3}}],["sequenceplugin",{"2":{"169":2,"171":4}}],["sequencecontext",{"2":{"430":1}}],["sequenceconnector",{"2":{"255":2,"283":2,"284":3}}],["sequenceconfig",{"2":{"135":1,"138":4,"142":1,"143":1,"145":1,"308":1}}],["sequencecanvas",{"2":{"164":1}}],["sequencesdk",{"2":{"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":2,"157":1}}],["sequenceethclient",{"2":{"308":2,"309":1}}],["sequenceethereum",{"2":{"132":1,"151":1,"153":1,"155":1,"296":3,"297":1,"298":1,"300":1,"308":1,"330":1}}],["sequenceencryptor",{"2":{"170":1}}],["sequenceexamples",{"2":{"139":1,"161":2}}],["sequenceapiclient",{"2":{"86":1}}],["sequenceindexer",{"2":{"29":2,"30":2,"33":2,"38":2,"43":2,"45":2,"47":2}}],["sequencekit",{"0":{"18":1,"101":1},"1":{"102":1},"2":{"197":1,"374":1,"375":1}}],["sequence",{"0":{"9":1,"73":1,"104":1,"105":1,"128":1,"178":1,"179":1,"181":1,"195":1,"221":1,"230":1,"231":1,"242":1,"250":1,"335":1,"341":1,"361":1,"363":1,"364":1,"378":1,"468":1,"469":1,"480":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1,"105":1,"129":1,"196":1,"197":1,"198":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"243":1,"244":1,"245":1,"246":1,"251":1,"336":1,"337":1,"338":1,"339":1,"340":1,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1,"362":1,"363":1,"364":1,"365":1,"379":1,"469":1,"470":1,"471":1,"472":1,"473":1,"474":1,"481":1,"482":1,"483":1,"484":1},"2":{"0":2,"1":2,"2":2,"4":8,"5":2,"6":1,"7":1,"8":5,"9":7,"10":4,"12":7,"13":5,"14":1,"17":1,"28":3,"29":7,"30":6,"31":5,"32":5,"33":3,"34":4,"35":3,"36":6,"37":3,"38":6,"39":6,"42":3,"43":6,"44":3,"45":7,"46":3,"47":6,"48":2,"49":5,"51":2,"52":2,"53":2,"54":3,"55":3,"56":4,"58":6,"60":1,"61":3,"62":5,"63":10,"65":1,"67":4,"68":1,"71":2,"72":10,"73":1,"78":4,"80":2,"83":6,"86":9,"87":2,"91":4,"97":2,"98":1,"99":5,"100":1,"101":1,"102":1,"103":2,"104":1,"105":1,"110":1,"111":1,"113":2,"120":1,"123":1,"128":2,"129":2,"130":2,"131":1,"132":2,"135":1,"136":1,"137":1,"138":2,"145":5,"157":2,"158":2,"162":1,"164":1,"166":4,"169":3,"171":3,"173":1,"178":6,"179":1,"185":3,"186":2,"187":1,"189":1,"190":1,"192":1,"195":1,"198":1,"199":10,"200":9,"201":1,"211":2,"216":1,"217":1,"220":1,"221":1,"222":6,"224":2,"225":3,"226":4,"228":1,"229":1,"233":1,"234":1,"244":5,"245":1,"246":5,"247":3,"249":6,"250":1,"251":1,"252":2,"253":2,"258":1,"259":1,"263":2,"268":1,"269":1,"273":2,"274":3,"275":1,"277":1,"278":1,"279":1,"283":1,"284":2,"286":1,"287":1,"289":2,"290":2,"291":1,"336":1,"341":1,"342":1,"346":1,"348":3,"352":1,"353":4,"354":1,"360":1,"361":2,"362":1,"363":2,"364":4,"365":4,"371":2,"372":1,"376":1,"378":1,"379":1,"380":2,"382":3,"383":4,"384":1,"385":4,"386":2,"387":3,"390":1,"391":2,"393":1,"402":2,"403":1,"407":1,"414":1,"424":1,"425":1,"426":1,"431":3,"435":1,"436":1,"441":1,"442":1,"443":2,"444":1,"445":1,"446":1,"447":1,"448":8,"453":1,"460":1,"461":1,"463":2,"464":3,"465":4,"466":1,"467":1,"471":1,"472":1,"482":5,"483":1,"484":5}}],["seqmetadata",{"2":{"49":2,"53":2,"62":2,"63":4}}],["seqindexer",{"2":{"29":1,"30":1,"34":2,"38":1,"43":1,"45":1,"47":1}}],["sessionid",{"2":{"446":1,"450":1}}],["sessionhash",{"2":{"446":3,"447":2,"448":6}}],["sessionaddress",{"2":{"232":1,"236":1,"470":1,"474":1}}],["sessionwallet",{"2":{"232":2,"235":1,"470":2,"473":1}}],["sessionprivatekey",{"2":{"232":4,"470":4}}],["sessionsignature",{"2":{"235":1,"236":1,"473":1,"474":1}}],["sessions",{"0":{"449":1},"2":{"226":2,"446":1,"449":4,"450":2,"465":2}}],["sessionsettings",{"2":{"91":2}}],["session",{"0":{"229":1,"230":1,"232":1,"235":1,"236":1,"388":1,"445":1,"450":1,"455":1,"457":1,"458":1,"467":1,"468":1,"470":1,"473":1,"474":1},"1":{"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"446":1,"447":1,"448":1,"449":1,"450":1,"456":1,"469":1,"470":1,"471":1,"472":1,"473":1,"474":1},"2":{"12":4,"14":1,"72":14,"78":6,"79":2,"81":1,"83":5,"91":5,"139":1,"140":1,"179":2,"180":1,"222":1,"228":1,"229":4,"233":1,"234":2,"235":1,"236":5,"363":2,"387":4,"388":2,"389":1,"445":1,"447":3,"448":5,"450":4,"454":1,"455":2,"456":3,"457":3,"458":2,"460":1,"461":1,"466":1,"467":4,"471":1,"472":2,"473":1,"474":5}}],["seterror",{"2":{"448":3}}],["setbasemetadatauri",{"2":{"344":1,"345":1}}],["setitem",{"2":{"232":1,"470":1}}],["setopenwalletmodal",{"2":{"109":2}}],["setopenconnectmodal",{"2":{"108":2}}],["setting",{"0":{"106":1,"107":1},"2":{"293":1,"295":1}}],["settings",{"0":{"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1},"2":{"3":1,"36":1,"91":3,"124":1,"126":1,"138":1,"142":4,"143":4,"145":2,"169":1,"171":1,"185":2,"200":8,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1}}],["setupcredentials",{"2":{"171":1}}],["setup",{"0":{"81":1,"97":1,"98":1,"138":1,"171":1,"183":1,"371":1,"372":1},"1":{"82":1},"2":{"80":1,"135":3,"136":1,"138":1,"148":1,"159":1,"160":1,"171":2,"173":1,"178":2,"184":1,"294":1,"390":1}}],["setrelayer",{"2":{"12":1}}],["setprovider",{"2":{"12":1}}],["setsigningin",{"2":{"448":1}}],["setsessionhash",{"2":{"448":3}}],["sets",{"2":{"4":1,"178":1,"448":1}}],["set",{"0":{"338":1,"341":1,"345":1},"2":{"3":1,"4":1,"36":1,"67":1,"81":1,"86":4,"141":1,"145":3,"164":3,"182":1,"219":1,"341":1,"344":1,"345":1,"402":1,"407":1,"419":1,"435":1,"441":1}}],["seemlessly",{"2":{"157":1}}],["seen",{"2":{"65":1,"69":1,"362":1}}],["see",{"2":{"3":1,"29":1,"31":1,"33":2,"34":2,"40":1,"48":1,"55":1,"56":3,"61":1,"67":3,"68":2,"69":1,"72":1,"78":1,"86":1,"87":1,"91":1,"119":1,"120":1,"133":1,"137":2,"139":1,"145":2,"147":1,"149":1,"156":1,"186":2,"187":1,"188":1,"200":1,"212":1,"220":1,"226":1,"246":1,"249":3,"261":4,"270":4,"293":2,"347":1,"350":1,"353":1,"382":1,"383":1,"385":1,"422":1,"446":1,"448":3,"460":1,"461":1,"465":1,"484":1}}],["security",{"0":{"170":1},"2":{"199":2,"354":1,"363":1,"386":1,"390":2}}],["secured",{"2":{"387":1}}],["secure",{"2":{"17":1,"80":1,"101":1,"102":1,"187":1,"229":2,"250":1,"251":1,"363":1,"378":1,"379":1,"386":2,"467":2}}],["securely",{"2":{"3":2,"170":2,"348":1}}],["seconds",{"2":{"164":1,"205":2}}],["second",{"2":{"56":1,"136":1,"149":1,"446":1}}],["secret",{"2":{"3":3,"4":1}}],["section",{"2":{"2":1,"4":1,"29":1,"67":1,"70":1,"72":1,"87":1,"142":1,"143":1,"145":1,"149":1,"261":2,"270":2,"341":1,"344":1,"347":1,"425":1,"426":1,"460":1,"461":1}}]],"serializationVersion":2} diff --git a/api/embedded-wallet/index.html b/api/embedded-wallet/index.html index bfe684ad685..22126b1a5db 100644 --- a/api/embedded-wallet/index.html +++ b/api/embedded-wallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/api/indexer/fetch-tokens/index.html b/api/indexer/fetch-tokens/index.html index fa37c8b026b..f2773c243f6 100644 --- a/api/indexer/fetch-tokens/index.html +++ b/api/indexer/fetch-tokens/index.html @@ -12,7 +12,7 @@ - + @@ -33,6 +33,7 @@

includeContracts ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled. +
  • includeCollectionTokens (boolean - optional - default: true) -- toggle to represent ERC721 / ERC1155 tokens as a single summary item in the response
  • diff --git a/api/indexer/installation/index.html b/api/indexer/installation/index.html index 9872428db70..a0a39adf398 100644 --- a/api/indexer/installation/index.html +++ b/api/indexer/installation/index.html @@ -12,7 +12,7 @@ - + @@ -68,7 +68,7 @@

    VerifiedOnly: true, } -_, tokenBalances, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, nil, &includeMetadata, &metadataOptions, nil)

    +_, tokenBalances, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, nil, &includeMetadata, &metadataOptions, nil, nil)

    Unity or Unreal Installation

    The Sequence Indexer is integrated directly inside of the respective Sequence Unity and Sequence Unreal SDKs.

    diff --git a/api/indexer/metadata-tips/index.html b/api/indexer/metadata-tips/index.html index 9a0432ac2b4..d944bf34800 100644 --- a/api/indexer/metadata-tips/index.html +++ b/api/indexer/metadata-tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/api/indexer/native-network-balance/index.html b/api/indexer/native-network-balance/index.html index 5201047884e..73b4901d319 100644 --- a/api/indexer/native-network-balance/index.html +++ b/api/indexer/native-network-balance/index.html @@ -12,7 +12,7 @@ - + diff --git a/api/indexer/overview/index.html b/api/indexer/overview/index.html index f2ff5a209e6..ec94ef922a9 100644 --- a/api/indexer/overview/index.html +++ b/api/indexer/overview/index.html @@ -12,7 +12,7 @@ - + @@ -20,9 +20,20 @@

    The Sequence Indexer is a modular web3 service that makes it easy to query blockchain token and NFT data from Ethereum-compatible networks. The Indexer automatically indexes every ERC20, ERC721 and ERC1155 token from Ethereum-compatible chains.

    -

    The Sequence Indexer is a modular web3 service that makes it easy to query blockchain token -and NFT data from Ethereum-compatible networks. The Indexer automatically indexes every -ERC20, ERC721 and ERC1155 token from Ethereum-compatible chains.

    +

    The Sequence Indexer is a powerful tool that can be used to build wallets, games, and dapps that +need to query on-chain data. It is designed to be fast, reliable, and easy to use. It leverages +the Sequence Node Gateway which monitors nodes health, intelligently routes +requests to the available nodes and caches the most recent request responses. This means that Node +providers going down are no longer a problem, as the Node Gateway will automatically route to a +healthy provider making sure that Indexer always stays at the top of the chain with no downtime.

    +

    The other benefit of using the Indexer is that it is using built in-house, next-generation, LSM-tree +based databases to store the data. It makes it super fast to query and index data. The data is +available in real-time with low latency. You can query it using a simple REST API or one of our SDKs.

    +

    The Indexer API allows you to query all token balances, history and other information for +all Ethereum compatible chains. In order to make it one go to place for all your token data needs, +we have included Sequence Metadata support for all tokens. This means that +you can easily render tokens in your apps, games, or wallets without the need to fetch metadata from +a separate API.

    In fact, the Sequence Wallet uses the Indexer behind the scenes so it can seamlessly render all token information in any wallet. But of course, the Indexer is a modular piece of infrastructure, and you may use it directly from your dapp, game, or even from diff --git a/api/indexer/transaction-history/index.html b/api/indexer/transaction-history/index.html index 667d8a700eb..59400c15e4b 100644 --- a/api/indexer/transaction-history/index.html +++ b/api/indexer/transaction-history/index.html @@ -12,7 +12,7 @@ - + diff --git a/api/indexer/transation-history-token-contract/index.html b/api/indexer/transation-history-token-contract/index.html index edf60f4b7e0..f09eea78bf0 100644 --- a/api/indexer/transation-history-token-contract/index.html +++ b/api/indexer/transation-history-token-contract/index.html @@ -12,7 +12,7 @@ - + diff --git a/api/indexer/unique-tokens/index.html b/api/indexer/unique-tokens/index.html index 7d82cd456cc..7a455c6b497 100644 --- a/api/indexer/unique-tokens/index.html +++ b/api/indexer/unique-tokens/index.html @@ -12,7 +12,7 @@ - + diff --git a/api/marketplace/index.html b/api/marketplace/index.html index c5f64fa70c3..d14d1b56892 100644 --- a/api/marketplace/index.html +++ b/api/marketplace/index.html @@ -12,7 +12,7 @@ - + diff --git a/api/metadata/contract-metadata/index.html b/api/metadata/contract-metadata/index.html index 7b9790fc2b0..412c868defe 100644 --- a/api/metadata/contract-metadata/index.html +++ b/api/metadata/contract-metadata/index.html @@ -12,7 +12,7 @@ - + diff --git a/api/metadata/index.html b/api/metadata/index.html index 6aa15b24b46..a09b3906dd8 100644 --- a/api/metadata/index.html +++ b/api/metadata/index.html @@ -12,7 +12,7 @@ - + diff --git a/api/metadata/overview/index.html b/api/metadata/overview/index.html index a0b435ffdac..ce69790e5fc 100644 --- a/api/metadata/overview/index.html +++ b/api/metadata/overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/api/metadata/rest-api/index.html b/api/metadata/rest-api/index.html index d86010e40a4..187b2fd8e28 100644 --- a/api/metadata/rest-api/index.html +++ b/api/metadata/rest-api/index.html @@ -12,7 +12,7 @@ - + diff --git a/api/metadata/token-metadata/index.html b/api/metadata/token-metadata/index.html index c8062e4a049..6fa42b022c4 100644 --- a/api/metadata/token-metadata/index.html +++ b/api/metadata/token-metadata/index.html @@ -12,7 +12,7 @@ - + diff --git a/api/node-gateway/index.html b/api/node-gateway/index.html index 9b5b6455f26..e791c69633a 100644 --- a/api/node-gateway/index.html +++ b/api/node-gateway/index.html @@ -12,7 +12,7 @@ - + diff --git a/api/relayer/index.html b/api/relayer/index.html index 613a22def49..9db80cac014 100644 --- a/api/relayer/index.html +++ b/api/relayer/index.html @@ -12,7 +12,7 @@ - + diff --git a/assets/01-connect-wallet-m8lVSacv.js b/assets/01-connect-wallet-CfLEEO7U.js similarity index 99% rename from assets/01-connect-wallet-m8lVSacv.js rename to assets/01-connect-wallet-CfLEEO7U.js index 99279ff0eaf..0fc093c87fe 100644 --- a/assets/01-connect-wallet-m8lVSacv.js +++ b/assets/01-connect-wallet-CfLEEO7U.js @@ -1,4 +1,4 @@ -import{d as l,j as e}from"./index-Bn6H9hrN.js";const r={title:"Connect Wallet",description:"undefined"};function i(s){const n={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",...l(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"connect-wallet",children:["Connect Wallet",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#connect-wallet",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as e}from"./index-DR6XzkYl.js";const r={title:"Connect Wallet",description:"undefined"};function i(s){const n={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",...l(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"connect-wallet",children:["Connect Wallet",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#connect-wallet",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"Sequence is a very flexible wallet which allow users multiple ways to connect / access their wallet. This includes:"}),` `,e.jsxs(n.ol,{children:[` `,e.jsxs(n.li,{children:[` diff --git a/assets/01-connect-wallet-BMqUSRDo.js b/assets/01-connect-wallet-DqzhSN1W.js similarity index 99% rename from assets/01-connect-wallet-BMqUSRDo.js rename to assets/01-connect-wallet-DqzhSN1W.js index 13f81158db2..400792dbd66 100644 --- a/assets/01-connect-wallet-BMqUSRDo.js +++ b/assets/01-connect-wallet-DqzhSN1W.js @@ -1,4 +1,4 @@ -import{d as l,j as e,e as a}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const c={title:"Connect Wallet",description:"undefined"};function i(n){const s={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",...l(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"connect-wallet",children:["Connect Wallet",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#connect-wallet",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as e,e as a}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const c={title:"Connect Wallet",description:"undefined"};function i(n){const s={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",...l(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"connect-wallet",children:["Connect Wallet",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#connect-wallet",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:"Sequence is a very flexible wallet which allow users multiple ways to connect / access their wallet. This includes:"}),` `,e.jsxs(s.ol,{children:[` `,e.jsxs(s.li,{children:[` diff --git a/assets/01-deploy-Fo7CmIWR.js b/assets/01-deploy-BFX8y6pi.js similarity index 98% rename from assets/01-deploy-Fo7CmIWR.js rename to assets/01-deploy-BFX8y6pi.js index d94daf78f3d..74d8154ebe4 100644 --- a/assets/01-deploy-Fo7CmIWR.js +++ b/assets/01-deploy-BFX8y6pi.js @@ -1,4 +1,4 @@ -import{d as i,j as e,e as r}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const o={title:"Deploy Process V2",description:"undefined"};function t(s){const n={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...i(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"deploy-process-v2",children:["Deploy Process V2",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-process-v2",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e,e as r}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const o={title:"Deploy Process V2",description:"undefined"};function t(s){const n={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...i(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"deploy-process-v2",children:["Deploy Process V2",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-process-v2",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["The following steps are required to deploy the ",e.jsx(n.a,{href:"#TODO",children:"Sequence Wallet Context"})," on a new network."]}),` `,e.jsx(r,{type:"info",children:e.jsxs(n.p,{children:["Notice ",e.jsx("br",{}),` For most popular networks this process `,e.jsx(n.strong,{children:"is not"}),` required; due to the wallet contracts diff --git a/assets/01-deploy-D1dR_q22.js b/assets/01-deploy-C7jVGn4X.js similarity index 99% rename from assets/01-deploy-D1dR_q22.js rename to assets/01-deploy-C7jVGn4X.js index d4f5e2105ed..8039016e4d8 100644 --- a/assets/01-deploy-D1dR_q22.js +++ b/assets/01-deploy-C7jVGn4X.js @@ -1,4 +1,4 @@ -import{d as t,j as e,e as a}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const o={title:"Deploy Process V1",description:"undefined"};function d(n){const s={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...t(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"deploy-process-v1",children:["Deploy Process V1",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-process-v1",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as t,j as e,e as a}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const o={title:"Deploy Process V1",description:"undefined"};function d(n){const s={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...t(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"deploy-process-v1",children:["Deploy Process V1",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-process-v1",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.p,{children:["The following steps are required to deploy the ",e.jsx(s.a,{href:"#TODO",children:"Sequence Wallet V1 Context"})," on a new network."]}),` `,e.jsx(a,{type:"info",children:e.jsxs(s.p,{children:["Notice ",e.jsx("br",{}),` For most popular networks this process `,e.jsx(s.strong,{children:"is not"}),` required; due to the wallet contracts diff --git a/assets/01-deploy-an-item-collection-DMRfZ8XO.js b/assets/01-deploy-an-item-collection-DmHaXqli.js similarity index 99% rename from assets/01-deploy-an-item-collection-DMRfZ8XO.js rename to assets/01-deploy-an-item-collection-DmHaXqli.js index 8b7d10f9f02..25657e63665 100644 --- a/assets/01-deploy-an-item-collection-DMRfZ8XO.js +++ b/assets/01-deploy-an-item-collection-DmHaXqli.js @@ -1,4 +1,4 @@ -import{d as s,j as e,e as i}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const a={title:"How to Deploy an Item Collection Contract",description:"undefined"};function c(n){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",p:"p",...s(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"how-to-deploy-an-item-collection-contract",children:["How to Deploy an Item Collection Contract",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#how-to-deploy-an-item-collection-contract",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e,e as i}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const a={title:"How to Deploy an Item Collection Contract",description:"undefined"};function c(n){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",p:"p",...s(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"how-to-deploy-an-item-collection-contract",children:["How to Deploy an Item Collection Contract",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#how-to-deploy-an-item-collection-contract",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"This guide walks through how to setup and deploy a Web3 Game Item contract in Builder."}),` `,e.jsxs(i,{type:"warning",children:[e.jsx(t.p,{children:"Prerequisite: Create a Project"}),e.jsxs(t.p,{children:["This guide assumes that you have already ",e.jsx(t.a,{href:"/solutions/builder/getting-started",children:"signed up for Builder and created a Project"}),"."]})]}),` `,e.jsxs(t.h4,{id:"erc721-vs-erc1155",children:["ERC721 vs. ERC1155",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#erc721-vs-erc1155",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/01-deployment-HSTak7lQ.js b/assets/01-deployment-By40m2sO.js similarity index 98% rename from assets/01-deployment-HSTak7lQ.js rename to assets/01-deployment-By40m2sO.js index d36cb40134c..2b44cfea7cb 100644 --- a/assets/01-deployment-HSTak7lQ.js +++ b/assets/01-deployment-By40m2sO.js @@ -1,4 +1,4 @@ -import{d as r,j as e,e as a}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Contract Deployment",description:"undefined"};function i(n){const t={a:"a",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"contract-deployment",children:["Contract Deployment",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-deployment",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e,e as a}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Contract Deployment",description:"undefined"};function i(n){const t={a:"a",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"contract-deployment",children:["Contract Deployment",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-deployment",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"Sequence contract wallets are fully deterministic; a wallet will map to the same address on any network that is EVM compatible."}),` `,e.jsx(t.p,{children:"This means that when a wallet is created, its address can be derived in advance, and it will be the same on networks like Ethereum, Arbitrum, Polygon, and others."}),` `,e.jsxs(a,{type:"warning",children:[e.jsxs(t.p,{children:[e.jsx(t.strong,{children:"Limitations"}),e.jsx("br",{}),` diff --git a/assets/01-fiat-on-ramps-CGLqrgR6.js b/assets/01-fiat-on-ramps-Cd245V9w.js similarity index 96% rename from assets/01-fiat-on-ramps-CGLqrgR6.js rename to assets/01-fiat-on-ramps-Cd245V9w.js index 51f71ad7a18..48bdc2f2f62 100644 --- a/assets/01-fiat-on-ramps-CGLqrgR6.js +++ b/assets/01-fiat-on-ramps-Cd245V9w.js @@ -1,4 +1,4 @@ -import{d as t,j as e}from"./index-Bn6H9hrN.js";const s={slug:"/fiat-on-ramps",title:"Fiat On-Ramps",description:"undefined"};function r(i){const n={a:"a",div:"div",h1:"h1",header:"header",img:"img",li:"li",p:"p",ul:"ul",...t(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"fiat-on-ramps",children:["Fiat On-Ramps",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fiat-on-ramps",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as t,j as e}from"./index-DR6XzkYl.js";const s={slug:"/fiat-on-ramps",title:"Fiat On-Ramps",description:"undefined"};function r(i){const n={a:"a",div:"div",h1:"h1",header:"header",img:"img",li:"li",p:"p",ul:"ul",...t(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"fiat-on-ramps",children:["Fiat On-Ramps",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fiat-on-ramps",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"Sequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;"}),` `,e.jsxs(n.ul,{children:[` `,e.jsx(n.li,{children:e.jsx(n.a,{href:"https://www.moonpay.com/",children:"Moonpay"})}),` diff --git a/assets/01-introduction-GkyqY8bl.js b/assets/01-introduction-CoIM1X_k.js similarity index 98% rename from assets/01-introduction-GkyqY8bl.js rename to assets/01-introduction-CoIM1X_k.js index 2b9283fdbea..973a2fd7dec 100644 --- a/assets/01-introduction-GkyqY8bl.js +++ b/assets/01-introduction-CoIM1X_k.js @@ -1,4 +1,4 @@ -import{d as a,j as e}from"./index-Bn6H9hrN.js";const r={title:"Advanced - Introduction",description:"undefined"};function i(n){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"advanced---introduction",children:["Advanced - Introduction",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#advanced---introduction",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e}from"./index-DR6XzkYl.js";const r={title:"Advanced - Introduction",description:"undefined"};function i(n){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"advanced---introduction",children:["Advanced - Introduction",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#advanced---introduction",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(t.p,{children:["For advanced users with experience developing applications on EVM-based blockchains, we've provided our own lightweight, custom-made for Unity, Ethereum library: ",e.jsx(t.a,{href:"https://github.com/0xsequence/sequence-unity/tree/master/Assets/SequenceSDK/Ethereum",children:"SequenceEthereum"}),`. SequenceEthereum should provide everything you need to build your Unity app on the EVM, without all the extra bells and whistles that the popular `,e.jsx(t.a,{href:"https://github.com/Nethereum/Nethereum",children:"Nethereum"})," library provides."]}),` `,e.jsxs(t.p,{children:['While SequenceEthereum is heavily tested, in general, when working with asynchronous methods in the library, you should consider them to be "unsafe", in that they ',e.jsx("i",{children:"may"}),` throw Exceptions when used improperly. diff --git a/assets/01-overview-52_meTu3.js b/assets/01-overview-14IeRkgc.js similarity index 97% rename from assets/01-overview-52_meTu3.js rename to assets/01-overview-14IeRkgc.js index 8afb73f6d2d..4f10de9db95 100644 --- a/assets/01-overview-52_meTu3.js +++ b/assets/01-overview-14IeRkgc.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-Bn6H9hrN.js";const o={title:"SequenceKit SDK",description:"undefined"};function i(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"sequencekit-sdk",children:["SequenceKit SDK",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequencekit-sdk",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-DR6XzkYl.js";const o={title:"SequenceKit SDK",description:"undefined"};function i(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"sequencekit-sdk",children:["SequenceKit SDK",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequencekit-sdk",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular ",e.jsx(n.a,{href:"https://wagmi.sh/",children:"wagmi"})," library, unlock a realm of possibilities in the world of web3."]}),` `,e.jsxs(n.h2,{id:"key-features",children:["Key Features",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#key-features",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.ul,{children:[` diff --git a/assets/01-overview-Bzg7GJ6C.js b/assets/01-overview-C--NnwUF.js similarity index 97% rename from assets/01-overview-Bzg7GJ6C.js rename to assets/01-overview-C--NnwUF.js index fe971090859..fa7bec35d6a 100644 --- a/assets/01-overview-Bzg7GJ6C.js +++ b/assets/01-overview-C--NnwUF.js @@ -1,4 +1,4 @@ -import{d as a,j as e}from"./index-Bn6H9hrN.js";const s={slug:"/unreal-waas-sdk",title:"Introduction",description:"undefined"};function r(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"introduction",children:["Introduction",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e}from"./index-DR6XzkYl.js";const s={slug:"/unreal-waas-sdk",title:"Introduction",description:"undefined"};function r(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"introduction",children:["Introduction",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["The Sequence Unreal In-Game Wallet SDK provides full Sequence ",e.jsx(n.a,{href:"/solutions/wallets/embedded-wallet/01-overview",children:"In-Game Wallet"})," and ",e.jsx(n.a,{href:"/api/indexer/overview",children:"Indexer"})," integration for games built on the Unreal Framework."]}),` `,e.jsxs(n.p,{children:["This SDK follows ",e.jsx(n.a,{href:"https://semver.org/",children:"Semantic Versioning"})," (",e.jsx(n.code,{children:"major.minor.patch"}),"). While we're still in ",e.jsx(n.code,{children:"0.x.y"})," builds, API breaking changes can be made at any time. After ",e.jsx(n.code,{children:"1.0.0"}),", breaking changes will always cause a ",e.jsx(n.code,{children:"major"})," version increment, non-breaking new features will cause a ",e.jsx(n.code,{children:"minor"})," version increment, and bugfixes will cause a ",e.jsx(n.code,{children:"patch"})," version increment."]}),` `,e.jsxs(n.p,{children:["Sequence Unreal SDK is only available as a private beta at the moment. To get access, get in touch with ",e.jsx(n.a,{href:"https://sequence.xyz/contact",children:"Sequence BD Team"}),"."]}),` diff --git a/assets/01-overview-BBZV3ovq.js b/assets/01-overview-CIC96WUX.js similarity index 99% rename from assets/01-overview-BBZV3ovq.js rename to assets/01-overview-CIC96WUX.js index 8a597422dd2..ec1eb4e9cbe 100644 --- a/assets/01-overview-BBZV3ovq.js +++ b/assets/01-overview-CIC96WUX.js @@ -1,4 +1,4 @@ -var gp=Object.defineProperty;var pp=(r,e,t)=>e in r?gp(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var Se=(r,e,t)=>(pp(r,typeof e!="symbol"?e+"":e,t),t);import{g as xp,f as Lu,h as Xi,i as bp,s as mp,r as ca,j as Ne,d as Uu}from"./index-Bn6H9hrN.js";const wp=[{inputs:[{internalType:"bytes32",type:"bytes32"}],name:"getAlternativeSignature",outputs:[{internalType:"string",type:"string"}],stateMutability:"view",type:"function"}];var yp=Object.freeze({__proto__:null,abi:wp});const vp=[{type:"function",name:"isValidSignature",constant:!0,inputs:[{type:"bytes32"},{type:"bytes"}],outputs:[{type:"bytes4"}],payable:!1,stateMutability:"view"}],Ep={isValidSignatureBytes32:"0x1626ba7e"};var Ap=Object.freeze({__proto__:null,abi:vp,returns:Ep});const _p=[{inputs:[{internalType:"bytes",name:"error",type:"bytes"}],name:"ERC1271Revert",type:"error"},{inputs:[{internalType:"bytes",name:"error",type:"bytes"}],name:"ERC6492DeployFailed",type:"error"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],name:"isValidSig",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"},{internalType:"bool",name:"allowSideEffects",type:"bool"},{internalType:"bool",name:"deployAlreadyDeployed",type:"bool"}],name:"isValidSigImpl",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],name:"isValidSigNoThrow",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],name:"isValidSigWithSideEffects",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],name:"isValidSigWithSideEffectsNoThrow",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}];var Sp=Object.freeze({__proto__:null,abi:_p});const Cp=[{type:"function",name:"deploy",constant:!1,inputs:[{type:"address"},{type:"bytes32"}],outputs:[],payable:!0,stateMutability:"payable"}];var Ip=Object.freeze({__proto__:null,abi:Cp});const kp=[{type:"function",name:"nonce",constant:!0,inputs:[],outputs:[{type:"uint256"}],payable:!1,stateMutability:"view"},{type:"function",name:"readNonce",constant:!0,inputs:[{type:"uint256"}],outputs:[{type:"uint256"}],payable:!1,stateMutability:"view"},{type:"function",name:"updateImplementation",constant:!1,inputs:[{type:"address"}],outputs:[],payable:!1,stateMutability:"nonpayable"},{type:"function",name:"selfExecute",constant:!1,inputs:[{components:[{type:"bool",name:"delegateCall"},{type:"bool",name:"revertOnError"},{type:"uint256",name:"gasLimit"},{type:"address",name:"target"},{type:"uint256",name:"value"},{type:"bytes",name:"data"}],type:"tuple[]"}],outputs:[],payable:!1,stateMutability:"nonpayable"},{type:"function",name:"execute",constant:!1,inputs:[{components:[{type:"bool",name:"delegateCall"},{type:"bool",name:"revertOnError"},{type:"uint256",name:"gasLimit"},{type:"address",name:"target"},{type:"uint256",name:"value"},{type:"bytes",name:"data"}],type:"tuple[]"},{type:"uint256"},{type:"bytes"}],outputs:[],payable:!1,stateMutability:"nonpayable"},{type:"function",name:"createContract",inputs:[{type:"bytes"}],payable:!0,stateMutability:"payable"},{type:"function",name:"setExtraImageHash",constant:!1,inputs:[{type:"bytes32",name:"imageHash"},{type:"uint256",name:"expiration"}],outputs:[],payable:!1,stateMutability:"nonpayable"}];var Tp=Object.freeze({__proto__:null,abi:kp});const Mp=[{type:"function",name:"updateImageHash",constant:!0,inputs:[{type:"bytes32"}],outputs:[],payable:!1,stateMutability:"view"},{type:"function",name:"imageHash",constant:!0,inputs:[],outputs:[{type:"bytes32"}],payable:!1,stateMutability:"view"}];var Op=Object.freeze({__proto__:null,abi:Mp});const Np=[{inputs:[{internalType:"address",name:"_factory",type:"address"},{internalType:"address",name:"_mainModule",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_wallet",type:"address"},{indexed:!0,internalType:"bytes32",name:"_imageHash",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"_threshold",type:"uint256"},{indexed:!1,internalType:"bytes",name:"_signers",type:"bytes"}],name:"RequiredConfig",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_wallet",type:"address"},{indexed:!0,internalType:"address",name:"_signer",type:"address"}],name:"RequiredSigner",type:"event"},{inputs:[{internalType:"address",name:"_addr",type:"address"}],name:"callBalanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callBlockNumber",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_i",type:"uint256"}],name:"callBlockhash",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"callChainId",outputs:[{internalType:"uint256",name:"id",type:"uint256"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"_addr",type:"address"}],name:"callCode",outputs:[{internalType:"bytes",name:"code",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_addr",type:"address"}],name:"callCodeHash",outputs:[{internalType:"bytes32",name:"codeHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_addr",type:"address"}],name:"callCodeSize",outputs:[{internalType:"uint256",name:"size",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callCoinbase",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"callDifficulty",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callGasLeft",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callGasLimit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callGasPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callOrigin",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"callTimestamp",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"knownImageHashes",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"lastImageHashUpdate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"lastSignerUpdate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"lastWalletUpdate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"bool",name:"delegateCall",type:"bool"},{internalType:"bool",name:"revertOnError",type:"bool"},{internalType:"uint256",name:"gasLimit",type:"uint256"},{internalType:"address",name:"target",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],internalType:"struct IModuleCalls.Transaction[]",name:"_txs",type:"tuple[]"}],name:"multiCall",outputs:[{internalType:"bool[]",name:"_successes",type:"bool[]"},{internalType:"bytes[]",name:"_results",type:"bytes[]"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"_wallet",type:"address"},{internalType:"uint256",name:"_threshold",type:"uint256"},{components:[{internalType:"uint256",name:"weight",type:"uint256"},{internalType:"address",name:"signer",type:"address"}],internalType:"struct RequireUtils.Member[]",name:"_members",type:"tuple[]"},{internalType:"bool",name:"_index",type:"bool"}],name:"publishConfig",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_wallet",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"uint256",name:"_sizeMembers",type:"uint256"},{internalType:"bytes",name:"_signature",type:"bytes"},{internalType:"bool",name:"_index",type:"bool"}],name:"publishInitialSigners",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_wallet",type:"address"},{internalType:"uint256",name:"_nonce",type:"uint256"}],name:"requireMinNonce",outputs:[],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_expiration",type:"uint256"}],name:"requireNonExpired",outputs:[],stateMutability:"view",type:"function"}];var Pp=Object.freeze({__proto__:null,abi:Np});const Rp=[{inputs:[{internalType:"address",name:"",type:"address"}],name:"requireFreshSigner",outputs:[],stateMutability:"nonpayable",type:"function"}];var Bp=Object.freeze({__proto__:null,abi:Rp});const Rt={erc6492:Sp,erc5719:yp,erc1271:Ap,factory:Ip,mainModule:Tp,mainModuleUpgradable:Op,sequenceUtils:Pp,requireFreshSigner:Bp},Dp=Object.freeze(Object.defineProperty({__proto__:null,walletContracts:Rt},Symbol.toStringTag,{value:"Module"}));function Ra(){return Ra=Object.assign?Object.assign.bind():function(r){for(var e=1;ethis.fetch(this.url("Ping"),fe({},n)).then(i=>ue(i).then(s=>({status:s.status}))),this.version=n=>this.fetch(this.url("Version"),fe({},n)).then(i=>ue(i).then(s=>({version:s.version}))),this.runtimeStatus=n=>this.fetch(this.url("RuntimeStatus"),fe({},n)).then(i=>ue(i).then(s=>({status:s.status}))),this.clock=n=>this.fetch(this.url("Clock"),fe({},n)).then(i=>ue(i).then(s=>({serverTime:s.serverTime}))),this.getSequenceContext=n=>this.fetch(this.url("GetSequenceContext"),fe({},n)).then(i=>ue(i).then(s=>({data:s.data}))),this.getAuthToken=(n,i)=>this.fetch(this.url("GetAuthToken"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,jwtToken:a.jwtToken,address:a.address,user:a.user}))),this.getAuthToken2=(n,i)=>this.fetch(this.url("GetAuthToken2"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,jwtToken:a.jwtToken,address:a.address,user:a.user}))),this.sendPasswordlessLink=(n,i)=>this.fetch(this.url("SendPasswordlessLink"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status}))),this.friendList=(n,i)=>this.fetch(this.url("FriendList"),fe(n,i)).then(s=>ue(s).then(a=>({page:a.page,friends:a.friends}))),this.getFriendByAddress=(n,i)=>this.fetch(this.url("GetFriendByAddress"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,friend:a.friend}))),this.searchFriends=(n,i)=>this.fetch(this.url("SearchFriends"),fe(n,i)).then(s=>ue(s).then(a=>({friends:a.friends}))),this.addFriend=(n,i)=>this.fetch(this.url("AddFriend"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,friend:a.friend}))),this.updateFriendNickname=(n,i)=>this.fetch(this.url("UpdateFriendNickname"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,friend:a.friend}))),this.removeFriend=(n,i)=>this.fetch(this.url("RemoveFriend"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status}))),this.contractCall=(n,i)=>this.fetch(this.url("ContractCall"),fe(n,i)).then(s=>ue(s).then(a=>({returns:a.returns}))),this.decodeContractCall=(n,i)=>this.fetch(this.url("DecodeContractCall"),fe(n,i)).then(s=>ue(s).then(a=>({call:a.call}))),this.lookupContractCallSelectors=(n,i)=>this.fetch(this.url("LookupContractCallSelectors"),fe(n,i)).then(s=>ue(s).then(a=>({signatures:a.signatures}))),this.userStorageFetch=(n,i)=>this.fetch(this.url("UserStorageFetch"),fe(n,i)).then(s=>ue(s).then(a=>({object:a.object}))),this.userStorageSave=(n,i)=>this.fetch(this.url("UserStorageSave"),fe(n,i)).then(s=>ue(s).then(a=>({ok:a.ok}))),this.userStorageDelete=(n,i)=>this.fetch(this.url("UserStorageDelete"),fe(n,i)).then(s=>ue(s).then(a=>({ok:a.ok}))),this.userStorageFetchAll=(n,i)=>this.fetch(this.url("UserStorageFetchAll"),fe(n,i)).then(s=>ue(s).then(a=>({objects:a.objects}))),this.getMoonpayLink=(n,i)=>this.fetch(this.url("GetMoonpayLink"),fe(n,i)).then(s=>ue(s).then(a=>({signedUrl:a.signedUrl}))),this.getSardineClientToken=n=>this.fetch(this.url("GetSardineClientToken"),fe({},n)).then(i=>ue(i).then(s=>({token:s.token}))),this.resolveENSAddress=(n,i)=>this.fetch(this.url("ResolveENSAddress"),fe(n,i)).then(s=>ue(s).then(a=>({address:a.address,ok:a.ok}))),this.isValidSignature=(n,i)=>this.fetch(this.url("IsValidSignature"),fe(n,i)).then(s=>ue(s).then(a=>({isValid:a.isValid}))),this.isValidMessageSignature=(n,i)=>this.fetch(this.url("IsValidMessageSignature"),fe(n,i)).then(s=>ue(s).then(a=>({isValid:a.isValid}))),this.isValidTypedDataSignature=(n,i)=>this.fetch(this.url("IsValidTypedDataSignature"),fe(n,i)).then(s=>ue(s).then(a=>({isValid:a.isValid}))),this.isValidETHAuthProof=(n,i)=>this.fetch(this.url("IsValidETHAuthProof"),fe(n,i)).then(s=>ue(s).then(a=>({isValid:a.isValid}))),this.getCoinPrices=(n,i)=>this.fetch(this.url("GetCoinPrices"),fe(n,i)).then(s=>ue(s).then(a=>({tokenPrices:a.tokenPrices}))),this.getCollectiblePrices=(n,i)=>this.fetch(this.url("GetCollectiblePrices"),fe(n,i)).then(s=>ue(s).then(a=>({tokenPrices:a.tokenPrices}))),this.getExchangeRate=(n,i)=>this.fetch(this.url("GetExchangeRate"),fe(n,i)).then(s=>ue(s).then(a=>({exchangeRate:a.exchangeRate}))),this.memoryStore=(n,i)=>this.fetch(this.url("MemoryStore"),fe(n,i)).then(s=>ue(s).then(a=>({ok:a.ok}))),this.memoryLoad=(n,i)=>this.fetch(this.url("MemoryLoad"),fe(n,i)).then(s=>ue(s).then(a=>({value:a.value}))),this.getInviteInfo=n=>this.fetch(this.url("GetInviteInfo"),fe({},n)).then(i=>ue(i).then(s=>({inviteInfo:s.inviteInfo}))),this.isValidAccessCode=(n,i)=>this.fetch(this.url("IsValidAccessCode"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status}))),this.internalClaimAccessCode=(n,i)=>this.fetch(this.url("InternalClaimAccessCode"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status}))),this.blockNumberAtTime=(n,i)=>this.fetch(this.url("BlockNumberAtTime"),fe(n,i)).then(s=>ue(s).then(a=>({blocks:a.blocks}))),this.paperSessionSecret=(n,i)=>this.fetch(this.url("PaperSessionSecret"),fe(n,i)).then(s=>ue(s).then(a=>({secret:a.secret}))),this.paperSessionSecret2=(n,i)=>this.fetch(this.url("PaperSessionSecret2"),fe(n,i)).then(s=>ue(s).then(a=>({secret:a.secret}))),this.linkWallet=(n,i)=>this.fetch(this.url("LinkWallet"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,linkedWalletAddress:a.linkedWalletAddress}))),this.getLinkedWallets=(n,i)=>this.fetch(this.url("GetLinkedWallets"),fe(n,i)).then(s=>ue(s).then(a=>({linkedWallets:a.linkedWallets}))),this.hostname=e,this.fetch=(n,i)=>t(n,i)}url(e){return this.hostname+this.path+e}}const fe=(r={},e={})=>({method:"POST",headers:Ra({},e,{"Content-Type":"application/json"}),body:JSON.stringify(r||{})}),ue=r=>r.text().then(e=>{let t;try{t=JSON.parse(e)}catch{throw{code:"unknown",msg:`expecting JSON, got: ${e}`,status:r.status}}if(!r.ok)throw t;return t}),g0=typeof global=="object"?global.fetch:window.fetch;class ma extends Fu{constructor(e,t,n){super(e.endsWith("/")?e.slice(0,-1):e,g0),this.projectAccessKey=t,this.jwtAuth=n,this._fetch=(i,s)=>{const a={},o=this.jwtAuth,c=this.projectAccessKey;return o&&o.length>0&&(a.Authorization=`BEARER ${o}`),c&&c.length>0&&(a["X-Access-Key"]=c),s.headers=Ra({},s.headers,a),g0(i,s)},this.fetch=this._fetch}}const Wp=Object.freeze(Object.defineProperty({__proto__:null,API:Fu,SequenceAPIClient:ma,SortOrder:Hp,WebRPCSchemaHash:Fp,WebRPCSchemaVersion:Up,WebRPCVersion:Lp},Symbol.toStringTag,{value:"Module"}));var nf={exports:{}};const jp={},qp=Object.freeze(Object.defineProperty({__proto__:null,default:jp},Symbol.toStringTag,{value:"Module"})),Gp=xp(qp);nf.exports;(function(r){(function(e,t){function n(M,l){if(!M)throw new Error(l||"Assertion failed")}function i(M,l){M.super_=l;var x=function(){};x.prototype=l.prototype,M.prototype=new x,M.prototype.constructor=M}function s(M,l,x){if(s.isBN(M))return M;this.negative=0,this.words=null,this.length=0,this.red=null,M!==null&&((l==="le"||l==="be")&&(x=l,l=10),this._init(M||0,l||10,x||"be"))}typeof e=="object"?e.exports=s:t.BN=s,s.BN=s,s.wordSize=26;var a;try{typeof window<"u"&&typeof window.Buffer<"u"?a=window.Buffer:a=Gp.Buffer}catch{}s.isBN=function(l){return l instanceof s?!0:l!==null&&typeof l=="object"&&l.constructor.wordSize===s.wordSize&&Array.isArray(l.words)},s.max=function(l,x){return l.cmp(x)>0?l:x},s.min=function(l,x){return l.cmp(x)<0?l:x},s.prototype._init=function(l,x,y){if(typeof l=="number")return this._initNumber(l,x,y);if(typeof l=="object")return this._initArray(l,x,y);x==="hex"&&(x=16),n(x===(x|0)&&x>=2&&x<=36),l=l.toString().replace(/\s+/g,"");var C=0;l[0]==="-"&&(C++,this.negative=1),C=0;C-=3)w=l[C]|l[C-1]<<8|l[C-2]<<16,this.words[p]|=w<>>26-v&67108863,v+=24,v>=26&&(v-=26,p++);else if(y==="le")for(C=0,p=0;C>>26-v&67108863,v+=24,v>=26&&(v-=26,p++);return this._strip()};function o(M,l){var x=M.charCodeAt(l);if(x>=48&&x<=57)return x-48;if(x>=65&&x<=70)return x-55;if(x>=97&&x<=102)return x-87;n(!1,"Invalid character in "+M)}function c(M,l,x){var y=o(M,x);return x-1>=l&&(y|=o(M,x-1)<<4),y}s.prototype._parseHex=function(l,x,y){this.length=Math.ceil((l.length-x)/6),this.words=new Array(this.length);for(var C=0;C=x;C-=2)v=c(l,x,C)<=18?(p-=18,w+=1,this.words[w]|=v>>>26):p+=8;else{var h=l.length-x;for(C=h%2===0?x+1:x;C=18?(p-=18,w+=1,this.words[w]|=v>>>26):p+=8}this._strip()};function u(M,l,x,y){for(var C=0,p=0,w=Math.min(M.length,x),v=l;v=49?p=h-49+10:h>=17?p=h-17+10:p=h,n(h>=0&&p1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},s.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{s.prototype[Symbol.for("nodejs.util.inspect.custom")]=b}catch{s.prototype.inspect=b}else s.prototype.inspect=b;function b(){return(this.red?""}var E=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],A=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],T=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];s.prototype.toString=function(l,x){l=l||10,x=x|0||1;var y;if(l===16||l==="hex"){y="";for(var C=0,p=0,w=0;w>>24-C&16777215,C+=2,C>=26&&(C-=26,w--),p!==0||w!==this.length-1?y=E[6-h.length]+h+y:y=h+y}for(p!==0&&(y=p.toString(16)+y);y.length%x!==0;)y="0"+y;return this.negative!==0&&(y="-"+y),y}if(l===(l|0)&&l>=2&&l<=36){var f=A[l],m=T[l];y="";var I=this.clone();for(I.negative=0;!I.isZero();){var d=I.modrn(m).toString(l);I=I.idivn(m),I.isZero()?y=d+y:y=E[f-d.length]+d+y}for(this.isZero()&&(y="0"+y);y.length%x!==0;)y="0"+y;return this.negative!==0&&(y="-"+y),y}n(!1,"Base should be between 2 and 36")},s.prototype.toNumber=function(){var l=this.words[0];return this.length===2?l+=this.words[1]*67108864:this.length===3&&this.words[2]===1?l+=4503599627370496+this.words[1]*67108864:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-l:l},s.prototype.toJSON=function(){return this.toString(16,2)},a&&(s.prototype.toBuffer=function(l,x){return this.toArrayLike(a,l,x)}),s.prototype.toArray=function(l,x){return this.toArrayLike(Array,l,x)};var k=function(l,x){return l.allocUnsafe?l.allocUnsafe(x):new l(x)};s.prototype.toArrayLike=function(l,x,y){this._strip();var C=this.byteLength(),p=y||Math.max(1,C);n(C<=p,"byte array longer than desired length"),n(p>0,"Requested array length <= 0");var w=k(l,p),v=x==="le"?"LE":"BE";return this["_toArrayLike"+v](w,C),w},s.prototype._toArrayLikeLE=function(l,x){for(var y=0,C=0,p=0,w=0;p>8&255),y>16&255),w===6?(y>24&255),C=0,w=0):(C=v>>>24,w+=2)}if(y=0&&(l[y--]=v>>8&255),y>=0&&(l[y--]=v>>16&255),w===6?(y>=0&&(l[y--]=v>>24&255),C=0,w=0):(C=v>>>24,w+=2)}if(y>=0)for(l[y--]=C;y>=0;)l[y--]=0},Math.clz32?s.prototype._countBits=function(l){return 32-Math.clz32(l)}:s.prototype._countBits=function(l){var x=l,y=0;return x>=4096&&(y+=13,x>>>=13),x>=64&&(y+=7,x>>>=7),x>=8&&(y+=4,x>>>=4),x>=2&&(y+=2,x>>>=2),y+x},s.prototype._zeroBits=function(l){if(l===0)return 26;var x=l,y=0;return x&8191||(y+=13,x>>>=13),x&127||(y+=7,x>>>=7),x&15||(y+=4,x>>>=4),x&3||(y+=2,x>>>=2),x&1||y++,y},s.prototype.bitLength=function(){var l=this.words[this.length-1],x=this._countBits(l);return(this.length-1)*26+x};function _(M){for(var l=new Array(M.bitLength()),x=0;x>>C&1}return l}s.prototype.zeroBits=function(){if(this.isZero())return 0;for(var l=0,x=0;xl.length?this.clone().ior(l):l.clone().ior(this)},s.prototype.uor=function(l){return this.length>l.length?this.clone().iuor(l):l.clone().iuor(this)},s.prototype.iuand=function(l){var x;this.length>l.length?x=l:x=this;for(var y=0;yl.length?this.clone().iand(l):l.clone().iand(this)},s.prototype.uand=function(l){return this.length>l.length?this.clone().iuand(l):l.clone().iuand(this)},s.prototype.iuxor=function(l){var x,y;this.length>l.length?(x=this,y=l):(x=l,y=this);for(var C=0;Cl.length?this.clone().ixor(l):l.clone().ixor(this)},s.prototype.uxor=function(l){return this.length>l.length?this.clone().iuxor(l):l.clone().iuxor(this)},s.prototype.inotn=function(l){n(typeof l=="number"&&l>=0);var x=Math.ceil(l/26)|0,y=l%26;this._expand(x),y>0&&x--;for(var C=0;C0&&(this.words[C]=~this.words[C]&67108863>>26-y),this._strip()},s.prototype.notn=function(l){return this.clone().inotn(l)},s.prototype.setn=function(l,x){n(typeof l=="number"&&l>=0);var y=l/26|0,C=l%26;return this._expand(y+1),x?this.words[y]=this.words[y]|1<l.length?(y=this,C=l):(y=l,C=this);for(var p=0,w=0;w>>26;for(;p!==0&&w>>26;if(this.length=y.length,p!==0)this.words[this.length]=p,this.length++;else if(y!==this)for(;wl.length?this.clone().iadd(l):l.clone().iadd(this)},s.prototype.isub=function(l){if(l.negative!==0){l.negative=0;var x=this.iadd(l);return l.negative=1,x._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(l),this.negative=1,this._normSign();var y=this.cmp(l);if(y===0)return this.negative=0,this.length=1,this.words[0]=0,this;var C,p;y>0?(C=this,p=l):(C=l,p=this);for(var w=0,v=0;v>26,this.words[v]=x&67108863;for(;w!==0&&v>26,this.words[v]=x&67108863;if(w===0&&v>>26,I=h&67108863,d=Math.min(f,l.length-1),S=Math.max(0,f-M.length+1);S<=d;S++){var O=f-S|0;C=M.words[O]|0,p=l.words[S]|0,w=C*p+I,m+=w/67108864|0,I=w&67108863}x.words[f]=I|0,h=m|0}return h!==0?x.words[f]=h|0:x.length--,x._strip()}var U=function(l,x,y){var C=l.words,p=x.words,w=y.words,v=0,h,f,m,I=C[0]|0,d=I&8191,S=I>>>13,O=C[1]|0,P=O&8191,F=O>>>13,V=C[2]|0,G=V&8191,K=V>>>13,he=C[3]|0,Y=he&8191,ie=he>>>13,sr=C[4]|0,Te=sr&8191,ve=sr>>>13,mt=C[5]|0,Ue=mt&8191,Fe=mt>>>13,Fn=C[6]|0,He=Fn&8191,We=Fn>>>13,Hn=C[7]|0,je=Hn&8191,qe=Hn>>>13,Wn=C[8]|0,Ge=Wn&8191,$e=Wn>>>13,jn=C[9]|0,ze=jn&8191,Ke=jn>>>13,qn=p[0]|0,Ve=qn&8191,Je=qn>>>13,Gn=p[1]|0,Qe=Gn&8191,Ye=Gn>>>13,$n=p[2]|0,Xe=$n&8191,Ze=$n>>>13,zn=p[3]|0,et=zn&8191,tt=zn>>>13,Kn=p[4]|0,rt=Kn&8191,nt=Kn>>>13,Vn=p[5]|0,it=Vn&8191,st=Vn>>>13,Jn=p[6]|0,at=Jn&8191,ot=Jn>>>13,Qn=p[7]|0,ct=Qn&8191,ft=Qn>>>13,Yn=p[8]|0,ut=Yn&8191,lt=Yn>>>13,Xn=p[9]|0,dt=Xn&8191,ht=Xn>>>13;y.negative=l.negative^x.negative,y.length=19,h=Math.imul(d,Ve),f=Math.imul(d,Je),f=f+Math.imul(S,Ve)|0,m=Math.imul(S,Je);var pn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(pn>>>26)|0,pn&=67108863,h=Math.imul(P,Ve),f=Math.imul(P,Je),f=f+Math.imul(F,Ve)|0,m=Math.imul(F,Je),h=h+Math.imul(d,Qe)|0,f=f+Math.imul(d,Ye)|0,f=f+Math.imul(S,Qe)|0,m=m+Math.imul(S,Ye)|0;var xn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(xn>>>26)|0,xn&=67108863,h=Math.imul(G,Ve),f=Math.imul(G,Je),f=f+Math.imul(K,Ve)|0,m=Math.imul(K,Je),h=h+Math.imul(P,Qe)|0,f=f+Math.imul(P,Ye)|0,f=f+Math.imul(F,Qe)|0,m=m+Math.imul(F,Ye)|0,h=h+Math.imul(d,Xe)|0,f=f+Math.imul(d,Ze)|0,f=f+Math.imul(S,Xe)|0,m=m+Math.imul(S,Ze)|0;var bn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(bn>>>26)|0,bn&=67108863,h=Math.imul(Y,Ve),f=Math.imul(Y,Je),f=f+Math.imul(ie,Ve)|0,m=Math.imul(ie,Je),h=h+Math.imul(G,Qe)|0,f=f+Math.imul(G,Ye)|0,f=f+Math.imul(K,Qe)|0,m=m+Math.imul(K,Ye)|0,h=h+Math.imul(P,Xe)|0,f=f+Math.imul(P,Ze)|0,f=f+Math.imul(F,Xe)|0,m=m+Math.imul(F,Ze)|0,h=h+Math.imul(d,et)|0,f=f+Math.imul(d,tt)|0,f=f+Math.imul(S,et)|0,m=m+Math.imul(S,tt)|0;var mn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(mn>>>26)|0,mn&=67108863,h=Math.imul(Te,Ve),f=Math.imul(Te,Je),f=f+Math.imul(ve,Ve)|0,m=Math.imul(ve,Je),h=h+Math.imul(Y,Qe)|0,f=f+Math.imul(Y,Ye)|0,f=f+Math.imul(ie,Qe)|0,m=m+Math.imul(ie,Ye)|0,h=h+Math.imul(G,Xe)|0,f=f+Math.imul(G,Ze)|0,f=f+Math.imul(K,Xe)|0,m=m+Math.imul(K,Ze)|0,h=h+Math.imul(P,et)|0,f=f+Math.imul(P,tt)|0,f=f+Math.imul(F,et)|0,m=m+Math.imul(F,tt)|0,h=h+Math.imul(d,rt)|0,f=f+Math.imul(d,nt)|0,f=f+Math.imul(S,rt)|0,m=m+Math.imul(S,nt)|0;var wn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(wn>>>26)|0,wn&=67108863,h=Math.imul(Ue,Ve),f=Math.imul(Ue,Je),f=f+Math.imul(Fe,Ve)|0,m=Math.imul(Fe,Je),h=h+Math.imul(Te,Qe)|0,f=f+Math.imul(Te,Ye)|0,f=f+Math.imul(ve,Qe)|0,m=m+Math.imul(ve,Ye)|0,h=h+Math.imul(Y,Xe)|0,f=f+Math.imul(Y,Ze)|0,f=f+Math.imul(ie,Xe)|0,m=m+Math.imul(ie,Ze)|0,h=h+Math.imul(G,et)|0,f=f+Math.imul(G,tt)|0,f=f+Math.imul(K,et)|0,m=m+Math.imul(K,tt)|0,h=h+Math.imul(P,rt)|0,f=f+Math.imul(P,nt)|0,f=f+Math.imul(F,rt)|0,m=m+Math.imul(F,nt)|0,h=h+Math.imul(d,it)|0,f=f+Math.imul(d,st)|0,f=f+Math.imul(S,it)|0,m=m+Math.imul(S,st)|0;var Mo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Mo>>>26)|0,Mo&=67108863,h=Math.imul(He,Ve),f=Math.imul(He,Je),f=f+Math.imul(We,Ve)|0,m=Math.imul(We,Je),h=h+Math.imul(Ue,Qe)|0,f=f+Math.imul(Ue,Ye)|0,f=f+Math.imul(Fe,Qe)|0,m=m+Math.imul(Fe,Ye)|0,h=h+Math.imul(Te,Xe)|0,f=f+Math.imul(Te,Ze)|0,f=f+Math.imul(ve,Xe)|0,m=m+Math.imul(ve,Ze)|0,h=h+Math.imul(Y,et)|0,f=f+Math.imul(Y,tt)|0,f=f+Math.imul(ie,et)|0,m=m+Math.imul(ie,tt)|0,h=h+Math.imul(G,rt)|0,f=f+Math.imul(G,nt)|0,f=f+Math.imul(K,rt)|0,m=m+Math.imul(K,nt)|0,h=h+Math.imul(P,it)|0,f=f+Math.imul(P,st)|0,f=f+Math.imul(F,it)|0,m=m+Math.imul(F,st)|0,h=h+Math.imul(d,at)|0,f=f+Math.imul(d,ot)|0,f=f+Math.imul(S,at)|0,m=m+Math.imul(S,ot)|0;var Oo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Oo>>>26)|0,Oo&=67108863,h=Math.imul(je,Ve),f=Math.imul(je,Je),f=f+Math.imul(qe,Ve)|0,m=Math.imul(qe,Je),h=h+Math.imul(He,Qe)|0,f=f+Math.imul(He,Ye)|0,f=f+Math.imul(We,Qe)|0,m=m+Math.imul(We,Ye)|0,h=h+Math.imul(Ue,Xe)|0,f=f+Math.imul(Ue,Ze)|0,f=f+Math.imul(Fe,Xe)|0,m=m+Math.imul(Fe,Ze)|0,h=h+Math.imul(Te,et)|0,f=f+Math.imul(Te,tt)|0,f=f+Math.imul(ve,et)|0,m=m+Math.imul(ve,tt)|0,h=h+Math.imul(Y,rt)|0,f=f+Math.imul(Y,nt)|0,f=f+Math.imul(ie,rt)|0,m=m+Math.imul(ie,nt)|0,h=h+Math.imul(G,it)|0,f=f+Math.imul(G,st)|0,f=f+Math.imul(K,it)|0,m=m+Math.imul(K,st)|0,h=h+Math.imul(P,at)|0,f=f+Math.imul(P,ot)|0,f=f+Math.imul(F,at)|0,m=m+Math.imul(F,ot)|0,h=h+Math.imul(d,ct)|0,f=f+Math.imul(d,ft)|0,f=f+Math.imul(S,ct)|0,m=m+Math.imul(S,ft)|0;var No=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(No>>>26)|0,No&=67108863,h=Math.imul(Ge,Ve),f=Math.imul(Ge,Je),f=f+Math.imul($e,Ve)|0,m=Math.imul($e,Je),h=h+Math.imul(je,Qe)|0,f=f+Math.imul(je,Ye)|0,f=f+Math.imul(qe,Qe)|0,m=m+Math.imul(qe,Ye)|0,h=h+Math.imul(He,Xe)|0,f=f+Math.imul(He,Ze)|0,f=f+Math.imul(We,Xe)|0,m=m+Math.imul(We,Ze)|0,h=h+Math.imul(Ue,et)|0,f=f+Math.imul(Ue,tt)|0,f=f+Math.imul(Fe,et)|0,m=m+Math.imul(Fe,tt)|0,h=h+Math.imul(Te,rt)|0,f=f+Math.imul(Te,nt)|0,f=f+Math.imul(ve,rt)|0,m=m+Math.imul(ve,nt)|0,h=h+Math.imul(Y,it)|0,f=f+Math.imul(Y,st)|0,f=f+Math.imul(ie,it)|0,m=m+Math.imul(ie,st)|0,h=h+Math.imul(G,at)|0,f=f+Math.imul(G,ot)|0,f=f+Math.imul(K,at)|0,m=m+Math.imul(K,ot)|0,h=h+Math.imul(P,ct)|0,f=f+Math.imul(P,ft)|0,f=f+Math.imul(F,ct)|0,m=m+Math.imul(F,ft)|0,h=h+Math.imul(d,ut)|0,f=f+Math.imul(d,lt)|0,f=f+Math.imul(S,ut)|0,m=m+Math.imul(S,lt)|0;var Po=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Po>>>26)|0,Po&=67108863,h=Math.imul(ze,Ve),f=Math.imul(ze,Je),f=f+Math.imul(Ke,Ve)|0,m=Math.imul(Ke,Je),h=h+Math.imul(Ge,Qe)|0,f=f+Math.imul(Ge,Ye)|0,f=f+Math.imul($e,Qe)|0,m=m+Math.imul($e,Ye)|0,h=h+Math.imul(je,Xe)|0,f=f+Math.imul(je,Ze)|0,f=f+Math.imul(qe,Xe)|0,m=m+Math.imul(qe,Ze)|0,h=h+Math.imul(He,et)|0,f=f+Math.imul(He,tt)|0,f=f+Math.imul(We,et)|0,m=m+Math.imul(We,tt)|0,h=h+Math.imul(Ue,rt)|0,f=f+Math.imul(Ue,nt)|0,f=f+Math.imul(Fe,rt)|0,m=m+Math.imul(Fe,nt)|0,h=h+Math.imul(Te,it)|0,f=f+Math.imul(Te,st)|0,f=f+Math.imul(ve,it)|0,m=m+Math.imul(ve,st)|0,h=h+Math.imul(Y,at)|0,f=f+Math.imul(Y,ot)|0,f=f+Math.imul(ie,at)|0,m=m+Math.imul(ie,ot)|0,h=h+Math.imul(G,ct)|0,f=f+Math.imul(G,ft)|0,f=f+Math.imul(K,ct)|0,m=m+Math.imul(K,ft)|0,h=h+Math.imul(P,ut)|0,f=f+Math.imul(P,lt)|0,f=f+Math.imul(F,ut)|0,m=m+Math.imul(F,lt)|0,h=h+Math.imul(d,dt)|0,f=f+Math.imul(d,ht)|0,f=f+Math.imul(S,dt)|0,m=m+Math.imul(S,ht)|0;var Ro=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Ro>>>26)|0,Ro&=67108863,h=Math.imul(ze,Qe),f=Math.imul(ze,Ye),f=f+Math.imul(Ke,Qe)|0,m=Math.imul(Ke,Ye),h=h+Math.imul(Ge,Xe)|0,f=f+Math.imul(Ge,Ze)|0,f=f+Math.imul($e,Xe)|0,m=m+Math.imul($e,Ze)|0,h=h+Math.imul(je,et)|0,f=f+Math.imul(je,tt)|0,f=f+Math.imul(qe,et)|0,m=m+Math.imul(qe,tt)|0,h=h+Math.imul(He,rt)|0,f=f+Math.imul(He,nt)|0,f=f+Math.imul(We,rt)|0,m=m+Math.imul(We,nt)|0,h=h+Math.imul(Ue,it)|0,f=f+Math.imul(Ue,st)|0,f=f+Math.imul(Fe,it)|0,m=m+Math.imul(Fe,st)|0,h=h+Math.imul(Te,at)|0,f=f+Math.imul(Te,ot)|0,f=f+Math.imul(ve,at)|0,m=m+Math.imul(ve,ot)|0,h=h+Math.imul(Y,ct)|0,f=f+Math.imul(Y,ft)|0,f=f+Math.imul(ie,ct)|0,m=m+Math.imul(ie,ft)|0,h=h+Math.imul(G,ut)|0,f=f+Math.imul(G,lt)|0,f=f+Math.imul(K,ut)|0,m=m+Math.imul(K,lt)|0,h=h+Math.imul(P,dt)|0,f=f+Math.imul(P,ht)|0,f=f+Math.imul(F,dt)|0,m=m+Math.imul(F,ht)|0;var Bo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Bo>>>26)|0,Bo&=67108863,h=Math.imul(ze,Xe),f=Math.imul(ze,Ze),f=f+Math.imul(Ke,Xe)|0,m=Math.imul(Ke,Ze),h=h+Math.imul(Ge,et)|0,f=f+Math.imul(Ge,tt)|0,f=f+Math.imul($e,et)|0,m=m+Math.imul($e,tt)|0,h=h+Math.imul(je,rt)|0,f=f+Math.imul(je,nt)|0,f=f+Math.imul(qe,rt)|0,m=m+Math.imul(qe,nt)|0,h=h+Math.imul(He,it)|0,f=f+Math.imul(He,st)|0,f=f+Math.imul(We,it)|0,m=m+Math.imul(We,st)|0,h=h+Math.imul(Ue,at)|0,f=f+Math.imul(Ue,ot)|0,f=f+Math.imul(Fe,at)|0,m=m+Math.imul(Fe,ot)|0,h=h+Math.imul(Te,ct)|0,f=f+Math.imul(Te,ft)|0,f=f+Math.imul(ve,ct)|0,m=m+Math.imul(ve,ft)|0,h=h+Math.imul(Y,ut)|0,f=f+Math.imul(Y,lt)|0,f=f+Math.imul(ie,ut)|0,m=m+Math.imul(ie,lt)|0,h=h+Math.imul(G,dt)|0,f=f+Math.imul(G,ht)|0,f=f+Math.imul(K,dt)|0,m=m+Math.imul(K,ht)|0;var Do=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Do>>>26)|0,Do&=67108863,h=Math.imul(ze,et),f=Math.imul(ze,tt),f=f+Math.imul(Ke,et)|0,m=Math.imul(Ke,tt),h=h+Math.imul(Ge,rt)|0,f=f+Math.imul(Ge,nt)|0,f=f+Math.imul($e,rt)|0,m=m+Math.imul($e,nt)|0,h=h+Math.imul(je,it)|0,f=f+Math.imul(je,st)|0,f=f+Math.imul(qe,it)|0,m=m+Math.imul(qe,st)|0,h=h+Math.imul(He,at)|0,f=f+Math.imul(He,ot)|0,f=f+Math.imul(We,at)|0,m=m+Math.imul(We,ot)|0,h=h+Math.imul(Ue,ct)|0,f=f+Math.imul(Ue,ft)|0,f=f+Math.imul(Fe,ct)|0,m=m+Math.imul(Fe,ft)|0,h=h+Math.imul(Te,ut)|0,f=f+Math.imul(Te,lt)|0,f=f+Math.imul(ve,ut)|0,m=m+Math.imul(ve,lt)|0,h=h+Math.imul(Y,dt)|0,f=f+Math.imul(Y,ht)|0,f=f+Math.imul(ie,dt)|0,m=m+Math.imul(ie,ht)|0;var Lo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Lo>>>26)|0,Lo&=67108863,h=Math.imul(ze,rt),f=Math.imul(ze,nt),f=f+Math.imul(Ke,rt)|0,m=Math.imul(Ke,nt),h=h+Math.imul(Ge,it)|0,f=f+Math.imul(Ge,st)|0,f=f+Math.imul($e,it)|0,m=m+Math.imul($e,st)|0,h=h+Math.imul(je,at)|0,f=f+Math.imul(je,ot)|0,f=f+Math.imul(qe,at)|0,m=m+Math.imul(qe,ot)|0,h=h+Math.imul(He,ct)|0,f=f+Math.imul(He,ft)|0,f=f+Math.imul(We,ct)|0,m=m+Math.imul(We,ft)|0,h=h+Math.imul(Ue,ut)|0,f=f+Math.imul(Ue,lt)|0,f=f+Math.imul(Fe,ut)|0,m=m+Math.imul(Fe,lt)|0,h=h+Math.imul(Te,dt)|0,f=f+Math.imul(Te,ht)|0,f=f+Math.imul(ve,dt)|0,m=m+Math.imul(ve,ht)|0;var Uo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Uo>>>26)|0,Uo&=67108863,h=Math.imul(ze,it),f=Math.imul(ze,st),f=f+Math.imul(Ke,it)|0,m=Math.imul(Ke,st),h=h+Math.imul(Ge,at)|0,f=f+Math.imul(Ge,ot)|0,f=f+Math.imul($e,at)|0,m=m+Math.imul($e,ot)|0,h=h+Math.imul(je,ct)|0,f=f+Math.imul(je,ft)|0,f=f+Math.imul(qe,ct)|0,m=m+Math.imul(qe,ft)|0,h=h+Math.imul(He,ut)|0,f=f+Math.imul(He,lt)|0,f=f+Math.imul(We,ut)|0,m=m+Math.imul(We,lt)|0,h=h+Math.imul(Ue,dt)|0,f=f+Math.imul(Ue,ht)|0,f=f+Math.imul(Fe,dt)|0,m=m+Math.imul(Fe,ht)|0;var Fo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Fo>>>26)|0,Fo&=67108863,h=Math.imul(ze,at),f=Math.imul(ze,ot),f=f+Math.imul(Ke,at)|0,m=Math.imul(Ke,ot),h=h+Math.imul(Ge,ct)|0,f=f+Math.imul(Ge,ft)|0,f=f+Math.imul($e,ct)|0,m=m+Math.imul($e,ft)|0,h=h+Math.imul(je,ut)|0,f=f+Math.imul(je,lt)|0,f=f+Math.imul(qe,ut)|0,m=m+Math.imul(qe,lt)|0,h=h+Math.imul(He,dt)|0,f=f+Math.imul(He,ht)|0,f=f+Math.imul(We,dt)|0,m=m+Math.imul(We,ht)|0;var Ho=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Ho>>>26)|0,Ho&=67108863,h=Math.imul(ze,ct),f=Math.imul(ze,ft),f=f+Math.imul(Ke,ct)|0,m=Math.imul(Ke,ft),h=h+Math.imul(Ge,ut)|0,f=f+Math.imul(Ge,lt)|0,f=f+Math.imul($e,ut)|0,m=m+Math.imul($e,lt)|0,h=h+Math.imul(je,dt)|0,f=f+Math.imul(je,ht)|0,f=f+Math.imul(qe,dt)|0,m=m+Math.imul(qe,ht)|0;var Wo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Wo>>>26)|0,Wo&=67108863,h=Math.imul(ze,ut),f=Math.imul(ze,lt),f=f+Math.imul(Ke,ut)|0,m=Math.imul(Ke,lt),h=h+Math.imul(Ge,dt)|0,f=f+Math.imul(Ge,ht)|0,f=f+Math.imul($e,dt)|0,m=m+Math.imul($e,ht)|0;var jo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(jo>>>26)|0,jo&=67108863,h=Math.imul(ze,dt),f=Math.imul(ze,ht),f=f+Math.imul(Ke,dt)|0,m=Math.imul(Ke,ht);var qo=(v+h|0)+((f&8191)<<13)|0;return v=(m+(f>>>13)|0)+(qo>>>26)|0,qo&=67108863,w[0]=pn,w[1]=xn,w[2]=bn,w[3]=mn,w[4]=wn,w[5]=Mo,w[6]=Oo,w[7]=No,w[8]=Po,w[9]=Ro,w[10]=Bo,w[11]=Do,w[12]=Lo,w[13]=Uo,w[14]=Fo,w[15]=Ho,w[16]=Wo,w[17]=jo,w[18]=qo,v!==0&&(w[19]=v,y.length++),y};Math.imul||(U=N);function D(M,l,x){x.negative=l.negative^M.negative,x.length=M.length+l.length;for(var y=0,C=0,p=0;p>>26)|0,C+=w>>>26,w&=67108863}x.words[p]=v,y=w,w=C}return y!==0?x.words[p]=y:x.length--,x._strip()}function $(M,l,x){return D(M,l,x)}s.prototype.mulTo=function(l,x){var y,C=this.length+l.length;return this.length===10&&l.length===10?y=U(this,l,x):C<63?y=N(this,l,x):C<1024?y=D(this,l,x):y=$(this,l,x),y},s.prototype.mul=function(l){var x=new s(null);return x.words=new Array(this.length+l.length),this.mulTo(l,x)},s.prototype.mulf=function(l){var x=new s(null);return x.words=new Array(this.length+l.length),$(this,l,x)},s.prototype.imul=function(l){return this.clone().mulTo(l,this)},s.prototype.imuln=function(l){var x=l<0;x&&(l=-l),n(typeof l=="number"),n(l<67108864);for(var y=0,C=0;C>=26,y+=p/67108864|0,y+=w>>>26,this.words[C]=w&67108863}return y!==0&&(this.words[C]=y,this.length++),x?this.ineg():this},s.prototype.muln=function(l){return this.clone().imuln(l)},s.prototype.sqr=function(){return this.mul(this)},s.prototype.isqr=function(){return this.imul(this.clone())},s.prototype.pow=function(l){var x=_(l);if(x.length===0)return new s(1);for(var y=this,C=0;C=0);var x=l%26,y=(l-x)/26,C=67108863>>>26-x<<26-x,p;if(x!==0){var w=0;for(p=0;p>>26-x}w&&(this.words[p]=w,this.length++)}if(y!==0){for(p=this.length-1;p>=0;p--)this.words[p+y]=this.words[p];for(p=0;p=0);var C;x?C=(x-x%26)/26:C=0;var p=l%26,w=Math.min((l-p)/26,this.length),v=67108863^67108863>>>p<w)for(this.length-=w,f=0;f=0&&(m!==0||f>=C);f--){var I=this.words[f]|0;this.words[f]=m<<26-p|I>>>p,m=I&v}return h&&m!==0&&(h.words[h.length++]=m),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},s.prototype.ishrn=function(l,x,y){return n(this.negative===0),this.iushrn(l,x,y)},s.prototype.shln=function(l){return this.clone().ishln(l)},s.prototype.ushln=function(l){return this.clone().iushln(l)},s.prototype.shrn=function(l){return this.clone().ishrn(l)},s.prototype.ushrn=function(l){return this.clone().iushrn(l)},s.prototype.testn=function(l){n(typeof l=="number"&&l>=0);var x=l%26,y=(l-x)/26,C=1<=0);var x=l%26,y=(l-x)/26;if(n(this.negative===0,"imaskn works only with positive numbers"),this.length<=y)return this;if(x!==0&&y++,this.length=Math.min(y,this.length),x!==0){var C=67108863^67108863>>>x<=67108864;x++)this.words[x]-=67108864,x===this.length-1?this.words[x+1]=1:this.words[x+1]++;return this.length=Math.max(this.length,x+1),this},s.prototype.isubn=function(l){if(n(typeof l=="number"),n(l<67108864),l<0)return this.iaddn(-l);if(this.negative!==0)return this.negative=0,this.iaddn(l),this.negative=1,this;if(this.words[0]-=l,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var x=0;x>26)-(h/67108864|0),this.words[p+y]=w&67108863}for(;p>26,this.words[p+y]=w&67108863;if(v===0)return this._strip();for(n(v===-1),v=0,p=0;p>26,this.words[p]=w&67108863;return this.negative=1,this._strip()},s.prototype._wordDiv=function(l,x){var y=this.length-l.length,C=this.clone(),p=l,w=p.words[p.length-1]|0,v=this._countBits(w);y=26-v,y!==0&&(p=p.ushln(y),C.iushln(y),w=p.words[p.length-1]|0);var h=C.length-p.length,f;if(x!=="mod"){f=new s(null),f.length=h+1,f.words=new Array(f.length);for(var m=0;m=0;d--){var S=(C.words[p.length+d]|0)*67108864+(C.words[p.length+d-1]|0);for(S=Math.min(S/w|0,67108863),C._ishlnsubmul(p,S,d);C.negative!==0;)S--,C.negative=0,C._ishlnsubmul(p,1,d),C.isZero()||(C.negative^=1);f&&(f.words[d]=S)}return f&&f._strip(),C._strip(),x!=="div"&&y!==0&&C.iushrn(y),{div:f||null,mod:C}},s.prototype.divmod=function(l,x,y){if(n(!l.isZero()),this.isZero())return{div:new s(0),mod:new s(0)};var C,p,w;return this.negative!==0&&l.negative===0?(w=this.neg().divmod(l,x),x!=="mod"&&(C=w.div.neg()),x!=="div"&&(p=w.mod.neg(),y&&p.negative!==0&&p.iadd(l)),{div:C,mod:p}):this.negative===0&&l.negative!==0?(w=this.divmod(l.neg(),x),x!=="mod"&&(C=w.div.neg()),{div:C,mod:w.mod}):this.negative&l.negative?(w=this.neg().divmod(l.neg(),x),x!=="div"&&(p=w.mod.neg(),y&&p.negative!==0&&p.isub(l)),{div:w.div,mod:p}):l.length>this.length||this.cmp(l)<0?{div:new s(0),mod:this}:l.length===1?x==="div"?{div:this.divn(l.words[0]),mod:null}:x==="mod"?{div:null,mod:new s(this.modrn(l.words[0]))}:{div:this.divn(l.words[0]),mod:new s(this.modrn(l.words[0]))}:this._wordDiv(l,x)},s.prototype.div=function(l){return this.divmod(l,"div",!1).div},s.prototype.mod=function(l){return this.divmod(l,"mod",!1).mod},s.prototype.umod=function(l){return this.divmod(l,"mod",!0).mod},s.prototype.divRound=function(l){var x=this.divmod(l);if(x.mod.isZero())return x.div;var y=x.div.negative!==0?x.mod.isub(l):x.mod,C=l.ushrn(1),p=l.andln(1),w=y.cmp(C);return w<0||p===1&&w===0?x.div:x.div.negative!==0?x.div.isubn(1):x.div.iaddn(1)},s.prototype.modrn=function(l){var x=l<0;x&&(l=-l),n(l<=67108863);for(var y=(1<<26)%l,C=0,p=this.length-1;p>=0;p--)C=(y*C+(this.words[p]|0))%l;return x?-C:C},s.prototype.modn=function(l){return this.modrn(l)},s.prototype.idivn=function(l){var x=l<0;x&&(l=-l),n(l<=67108863);for(var y=0,C=this.length-1;C>=0;C--){var p=(this.words[C]|0)+y*67108864;this.words[C]=p/l|0,y=p%l}return this._strip(),x?this.ineg():this},s.prototype.divn=function(l){return this.clone().idivn(l)},s.prototype.egcd=function(l){n(l.negative===0),n(!l.isZero());var x=this,y=l.clone();x.negative!==0?x=x.umod(l):x=x.clone();for(var C=new s(1),p=new s(0),w=new s(0),v=new s(1),h=0;x.isEven()&&y.isEven();)x.iushrn(1),y.iushrn(1),++h;for(var f=y.clone(),m=x.clone();!x.isZero();){for(var I=0,d=1;!(x.words[0]&d)&&I<26;++I,d<<=1);if(I>0)for(x.iushrn(I);I-- >0;)(C.isOdd()||p.isOdd())&&(C.iadd(f),p.isub(m)),C.iushrn(1),p.iushrn(1);for(var S=0,O=1;!(y.words[0]&O)&&S<26;++S,O<<=1);if(S>0)for(y.iushrn(S);S-- >0;)(w.isOdd()||v.isOdd())&&(w.iadd(f),v.isub(m)),w.iushrn(1),v.iushrn(1);x.cmp(y)>=0?(x.isub(y),C.isub(w),p.isub(v)):(y.isub(x),w.isub(C),v.isub(p))}return{a:w,b:v,gcd:y.iushln(h)}},s.prototype._invmp=function(l){n(l.negative===0),n(!l.isZero());var x=this,y=l.clone();x.negative!==0?x=x.umod(l):x=x.clone();for(var C=new s(1),p=new s(0),w=y.clone();x.cmpn(1)>0&&y.cmpn(1)>0;){for(var v=0,h=1;!(x.words[0]&h)&&v<26;++v,h<<=1);if(v>0)for(x.iushrn(v);v-- >0;)C.isOdd()&&C.iadd(w),C.iushrn(1);for(var f=0,m=1;!(y.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(y.iushrn(f);f-- >0;)p.isOdd()&&p.iadd(w),p.iushrn(1);x.cmp(y)>=0?(x.isub(y),C.isub(p)):(y.isub(x),p.isub(C))}var I;return x.cmpn(1)===0?I=C:I=p,I.cmpn(0)<0&&I.iadd(l),I},s.prototype.gcd=function(l){if(this.isZero())return l.abs();if(l.isZero())return this.abs();var x=this.clone(),y=l.clone();x.negative=0,y.negative=0;for(var C=0;x.isEven()&&y.isEven();C++)x.iushrn(1),y.iushrn(1);do{for(;x.isEven();)x.iushrn(1);for(;y.isEven();)y.iushrn(1);var p=x.cmp(y);if(p<0){var w=x;x=y,y=w}else if(p===0||y.cmpn(1)===0)break;x.isub(y)}while(!0);return y.iushln(C)},s.prototype.invm=function(l){return this.egcd(l).a.umod(l)},s.prototype.isEven=function(){return(this.words[0]&1)===0},s.prototype.isOdd=function(){return(this.words[0]&1)===1},s.prototype.andln=function(l){return this.words[0]&l},s.prototype.bincn=function(l){n(typeof l=="number");var x=l%26,y=(l-x)/26,C=1<>>26,v&=67108863,this.words[w]=v}return p!==0&&(this.words[w]=p,this.length++),this},s.prototype.isZero=function(){return this.length===1&&this.words[0]===0},s.prototype.cmpn=function(l){var x=l<0;if(this.negative!==0&&!x)return-1;if(this.negative===0&&x)return 1;this._strip();var y;if(this.length>1)y=1;else{x&&(l=-l),n(l<=67108863,"Number is too big");var C=this.words[0]|0;y=C===l?0:Cl.length)return 1;if(this.length=0;y--){var C=this.words[y]|0,p=l.words[y]|0;if(C!==p){Cp&&(x=1);break}}return x},s.prototype.gtn=function(l){return this.cmpn(l)===1},s.prototype.gt=function(l){return this.cmp(l)===1},s.prototype.gten=function(l){return this.cmpn(l)>=0},s.prototype.gte=function(l){return this.cmp(l)>=0},s.prototype.ltn=function(l){return this.cmpn(l)===-1},s.prototype.lt=function(l){return this.cmp(l)===-1},s.prototype.lten=function(l){return this.cmpn(l)<=0},s.prototype.lte=function(l){return this.cmp(l)<=0},s.prototype.eqn=function(l){return this.cmpn(l)===0},s.prototype.eq=function(l){return this.cmp(l)===0},s.red=function(l){return new re(l)},s.prototype.toRed=function(l){return n(!this.red,"Already a number in reduction context"),n(this.negative===0,"red works only with positives"),l.convertTo(this)._forceRed(l)},s.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},s.prototype._forceRed=function(l){return this.red=l,this},s.prototype.forceRed=function(l){return n(!this.red,"Already a number in reduction context"),this._forceRed(l)},s.prototype.redAdd=function(l){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,l)},s.prototype.redIAdd=function(l){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,l)},s.prototype.redSub=function(l){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,l)},s.prototype.redISub=function(l){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,l)},s.prototype.redShl=function(l){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,l)},s.prototype.redMul=function(l){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.mul(this,l)},s.prototype.redIMul=function(l){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.imul(this,l)},s.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},s.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},s.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},s.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},s.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},s.prototype.redPow=function(l){return n(this.red&&!l.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,l)};var L={k256:null,p224:null,p192:null,p25519:null};function z(M,l){this.name=M,this.p=new s(l,16),this.n=this.p.bitLength(),this.k=new s(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}z.prototype._tmp=function(){var l=new s(null);return l.words=new Array(Math.ceil(this.n/13)),l},z.prototype.ireduce=function(l){var x=l,y;do this.split(x,this.tmp),x=this.imulK(x),x=x.iadd(this.tmp),y=x.bitLength();while(y>this.n);var C=y0?x.isub(this.p):x.strip!==void 0?x.strip():x._strip(),x},z.prototype.split=function(l,x){l.iushrn(this.n,0,x)},z.prototype.imulK=function(l){return l.imul(this.k)};function Z(){z.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(Z,z),Z.prototype.split=function(l,x){for(var y=4194303,C=Math.min(l.length,9),p=0;p>>22,w=v}w>>>=22,l.words[p-10]=w,w===0&&l.length>10?l.length-=10:l.length-=9},Z.prototype.imulK=function(l){l.words[l.length]=0,l.words[l.length+1]=0,l.length+=2;for(var x=0,y=0;y>>=26,l.words[y]=p,x=C}return x!==0&&(l.words[l.length++]=x),l},s._prime=function(l){if(L[l])return L[l];var x;if(l==="k256")x=new Z;else if(l==="p224")x=new J;else if(l==="p192")x=new Q;else if(l==="p25519")x=new te;else throw new Error("Unknown prime "+l);return L[l]=x,x};function re(M){if(typeof M=="string"){var l=s._prime(M);this.m=l.p,this.prime=l}else n(M.gtn(1),"modulus must be greater than 1"),this.m=M,this.prime=null}re.prototype._verify1=function(l){n(l.negative===0,"red works only with positives"),n(l.red,"red works only with red numbers")},re.prototype._verify2=function(l,x){n((l.negative|x.negative)===0,"red works only with positives"),n(l.red&&l.red===x.red,"red works only with red numbers")},re.prototype.imod=function(l){return this.prime?this.prime.ireduce(l)._forceRed(this):(g(l,l.umod(this.m)._forceRed(this)),l)},re.prototype.neg=function(l){return l.isZero()?l.clone():this.m.sub(l)._forceRed(this)},re.prototype.add=function(l,x){this._verify2(l,x);var y=l.add(x);return y.cmp(this.m)>=0&&y.isub(this.m),y._forceRed(this)},re.prototype.iadd=function(l,x){this._verify2(l,x);var y=l.iadd(x);return y.cmp(this.m)>=0&&y.isub(this.m),y},re.prototype.sub=function(l,x){this._verify2(l,x);var y=l.sub(x);return y.cmpn(0)<0&&y.iadd(this.m),y._forceRed(this)},re.prototype.isub=function(l,x){this._verify2(l,x);var y=l.isub(x);return y.cmpn(0)<0&&y.iadd(this.m),y},re.prototype.shl=function(l,x){return this._verify1(l),this.imod(l.ushln(x))},re.prototype.imul=function(l,x){return this._verify2(l,x),this.imod(l.imul(x))},re.prototype.mul=function(l,x){return this._verify2(l,x),this.imod(l.mul(x))},re.prototype.isqr=function(l){return this.imul(l,l.clone())},re.prototype.sqr=function(l){return this.mul(l,l)},re.prototype.sqrt=function(l){if(l.isZero())return l.clone();var x=this.m.andln(3);if(n(x%2===1),x===3){var y=this.m.add(new s(1)).iushrn(2);return this.pow(l,y)}for(var C=this.m.subn(1),p=0;!C.isZero()&&C.andln(1)===0;)p++,C.iushrn(1);n(!C.isZero());var w=new s(1).toRed(this),v=w.redNeg(),h=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new s(2*f*f).toRed(this);this.pow(f,h).cmp(v)!==0;)f.redIAdd(v);for(var m=this.pow(f,C),I=this.pow(l,C.addn(1).iushrn(1)),d=this.pow(l,C),S=p;d.cmp(w)!==0;){for(var O=d,P=0;O.cmp(w)!==0;P++)O=O.redSqr();n(P=0;p--){for(var m=x.words[p],I=f-1;I>=0;I--){var d=m>>I&1;if(w!==C[0]&&(w=this.sqr(w)),d===0&&v===0){h=0;continue}v<<=1,v|=d,h++,!(h!==y&&(p!==0||I!==0))&&(w=this.mul(w,C[v]),h=0,v=0)}f=26}return w},re.prototype.convertTo=function(l){var x=l.umod(this.m);return x===l?x.clone():x},re.prototype.convertFrom=function(l){var x=l.clone();return x.red=null,x},s.mont=function(l){return new be(l)};function be(M){re.call(this,M),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new s(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}i(be,re),be.prototype.convertTo=function(l){return this.imod(l.ushln(this.shift))},be.prototype.convertFrom=function(l){var x=this.imod(l.mul(this.rinv));return x.red=null,x},be.prototype.imul=function(l,x){if(l.isZero()||x.isZero())return l.words[0]=0,l.length=1,l;var y=l.imul(x),C=y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=y.isub(C).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},be.prototype.mul=function(l,x){if(l.isZero()||x.isZero())return new s(0)._forceRed(this);var y=l.mul(x),C=y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=y.isub(C).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},be.prototype.invm=function(l){var x=this.imod(l._invmp(this.m).mul(this.r2));return x._forceRed(this)}})(r,Lu)})(nf);var $p=nf.exports;const oe=Xi($p),zp="logger/5.7.0";let p0=!1,x0=!1;const wa={debug:1,default:2,info:2,warning:3,error:4,off:5};let b0=wa.default,Go=null;function Kp(){try{const r=[];if(["NFD","NFC","NFKD","NFKC"].forEach(e=>{try{if("test".normalize(e)!=="test")throw new Error("bad normalize")}catch{r.push(e)}}),r.length)throw new Error("missing "+r.join(", "));if("é".normalize("NFD")!=="é")throw new Error("broken implementation")}catch(r){return r.message}return null}const m0=Kp();var gc;(function(r){r.DEBUG="DEBUG",r.INFO="INFO",r.WARNING="WARNING",r.ERROR="ERROR",r.OFF="OFF"})(gc||(gc={}));var Ar;(function(r){r.UNKNOWN_ERROR="UNKNOWN_ERROR",r.NOT_IMPLEMENTED="NOT_IMPLEMENTED",r.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",r.NETWORK_ERROR="NETWORK_ERROR",r.SERVER_ERROR="SERVER_ERROR",r.TIMEOUT="TIMEOUT",r.BUFFER_OVERRUN="BUFFER_OVERRUN",r.NUMERIC_FAULT="NUMERIC_FAULT",r.MISSING_NEW="MISSING_NEW",r.INVALID_ARGUMENT="INVALID_ARGUMENT",r.MISSING_ARGUMENT="MISSING_ARGUMENT",r.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",r.CALL_EXCEPTION="CALL_EXCEPTION",r.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",r.NONCE_EXPIRED="NONCE_EXPIRED",r.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",r.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",r.TRANSACTION_REPLACED="TRANSACTION_REPLACED",r.ACTION_REJECTED="ACTION_REJECTED"})(Ar||(Ar={}));const w0="0123456789abcdef";let B=class Tt{constructor(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}_log(e,t){const n=e.toLowerCase();wa[n]==null&&this.throwArgumentError("invalid log level name","logLevel",e),!(b0>wa[n])&&console.log.apply(console,t)}debug(...e){this._log(Tt.levels.DEBUG,e)}info(...e){this._log(Tt.levels.INFO,e)}warn(...e){this._log(Tt.levels.WARNING,e)}makeError(e,t,n){if(x0)return this.makeError("censored error",t,{});t||(t=Tt.errors.UNKNOWN_ERROR),n||(n={});const i=[];Object.keys(n).forEach(c=>{const u=n[c];try{if(u instanceof Uint8Array){let g="";for(let b=0;b>4],g+=w0[u[b]&15];i.push(c+"=Uint8Array(0x"+g+")")}else i.push(c+"="+JSON.stringify(u))}catch{i.push(c+"="+JSON.stringify(n[c].toString()))}}),i.push(`code=${t}`),i.push(`version=${this.version}`);const s=e;let a="";switch(t){case Ar.NUMERIC_FAULT:{a="NUMERIC_FAULT";const c=e;switch(c){case"overflow":case"underflow":case"division-by-zero":a+="-"+c;break;case"negative-power":case"negative-width":a+="-unsupported";break;case"unbound-bitwise-result":a+="-unbound-result";break}break}case Ar.CALL_EXCEPTION:case Ar.INSUFFICIENT_FUNDS:case Ar.MISSING_NEW:case Ar.NONCE_EXPIRED:case Ar.REPLACEMENT_UNDERPRICED:case Ar.TRANSACTION_REPLACED:case Ar.UNPREDICTABLE_GAS_LIMIT:a=t;break}a&&(e+=" [ See: https://links.ethers.org/v5-errors-"+a+" ]"),i.length&&(e+=" ("+i.join(", ")+")");const o=new Error(e);return o.reason=s,o.code=t,Object.keys(n).forEach(function(c){o[c]=n[c]}),o}throwError(e,t,n){throw this.makeError(e,t,n)}throwArgumentError(e,t,n){return this.throwError(e,Tt.errors.INVALID_ARGUMENT,{argument:t,value:n})}assert(e,t,n,i){e||this.throwError(t,n,i)}assertArgument(e,t,n,i){e||this.throwArgumentError(t,n,i)}checkNormalize(e){m0&&this.throwError("platform missing String.prototype.normalize",Tt.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:m0})}checkSafeUint53(e,t){typeof e=="number"&&(t==null&&(t="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(t,Tt.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(t,Tt.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))}checkArgumentCount(e,t,n){n?n=": "+n:n="",et&&this.throwError("too many arguments"+n,Tt.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:t})}checkNew(e,t){(e===Object||e==null)&&this.throwError("missing new",Tt.errors.MISSING_NEW,{name:t.name})}checkAbstract(e,t){e===t?this.throwError("cannot instantiate abstract class "+JSON.stringify(t.name)+" directly; use a sub-class",Tt.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):(e===Object||e==null)&&this.throwError("missing new",Tt.errors.MISSING_NEW,{name:t.name})}static globalLogger(){return Go||(Go=new Tt(zp)),Go}static setCensorship(e,t){if(!e&&t&&this.globalLogger().throwError("cannot permanently disable censorship",Tt.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),p0){if(!e)return;this.globalLogger().throwError("error censorship permanent",Tt.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}x0=!!e,p0=!!t}static setLogLevel(e){const t=wa[e.toLowerCase()];if(t==null){Tt.globalLogger().warn("invalid log level - "+e);return}b0=t}static from(e){return new Tt(e)}};B.errors=Ar;B.levels=gc;const Vp="bytes/5.7.0",wt=new B(Vp);function Hu(r){return!!r.toHexString}function Di(r){return r.slice||(r.slice=function(){const e=Array.prototype.slice.call(arguments);return Di(new Uint8Array(Array.prototype.slice.apply(r,e)))}),r}function Gr(r){return Ee(r)&&!(r.length%2)||Dn(r)}function y0(r){return typeof r=="number"&&r==r&&r%1===0}function Dn(r){if(r==null)return!1;if(r.constructor===Uint8Array)return!0;if(typeof r=="string"||!y0(r.length)||r.length<0)return!1;for(let e=0;e=256)return!1}return!0}function j(r,e){if(e||(e={}),typeof r=="number"){wt.checkSafeUint53(r,"invalid arrayify value");const t=[];for(;r;)t.unshift(r&255),r=parseInt(String(r/256));return t.length===0&&t.push(0),Di(new Uint8Array(t))}if(e.allowMissingPrefix&&typeof r=="string"&&r.substring(0,2)!=="0x"&&(r="0x"+r),Hu(r)&&(r=r.toHexString()),Ee(r)){let t=r.substring(2);t.length%2&&(e.hexPad==="left"?t="0"+t:e.hexPad==="right"?t+="0":wt.throwArgumentError("hex data is odd-length","value",r));const n=[];for(let i=0;ij(i)),t=e.reduce((i,s)=>i+s.length,0),n=new Uint8Array(t);return e.reduce((i,s)=>(n.set(s,i),i+s.length),0),Di(n)}function Hr(r){let e=j(r);if(e.length===0)return e;let t=0;for(;te&&wt.throwArgumentError("value out of range","value",arguments[0]);const t=new Uint8Array(e);return t.set(r,e-r.length),Di(t)}function Ee(r,e){return!(typeof r!="string"||!r.match(/^0x[0-9A-Fa-f]*$/)||e&&r.length!==2+2*e)}const $o="0123456789abcdef";function W(r,e){if(e||(e={}),typeof r=="number"){wt.checkSafeUint53(r,"invalid hexlify value");let t="";for(;r;)t=$o[r&15]+t,r=Math.floor(r/16);return t.length?(t.length%2&&(t="0"+t),"0x"+t):"0x00"}if(typeof r=="bigint")return r=r.toString(16),r.length%2?"0x0"+r:"0x"+r;if(e.allowMissingPrefix&&typeof r=="string"&&r.substring(0,2)!=="0x"&&(r="0x"+r),Hu(r))return r.toHexString();if(Ee(r))return r.length%2&&(e.hexPad==="left"?r="0x0"+r.substring(2):e.hexPad==="right"?r+="0":wt.throwArgumentError("hex data is odd-length","value",r)),r.toLowerCase();if(Dn(r)){let t="0x";for(let n=0;n>4]+$o[i&15]}return t}return wt.throwArgumentError("invalid hexlify value","value",r)}function $r(r){if(typeof r!="string")r=W(r);else if(!Ee(r)||r.length%2)return null;return(r.length-2)/2}function yt(r,e,t){return typeof r!="string"?r=W(r):(!Ee(r)||r.length%2)&&wt.throwArgumentError("invalid hexData","value",r),e=2+2*e,t!=null?"0x"+r.substring(e,2+2*t):"0x"+r.substring(e)}function Qt(r){let e="0x";return r.forEach(t=>{e+=W(t).substring(2)}),e}function kr(r){const e=Wu(W(r,{hexPad:"left"}));return e==="0x"?"0x0":e}function Wu(r){typeof r!="string"&&(r=W(r)),Ee(r)||wt.throwArgumentError("invalid hex string","value",r),r=r.substring(2);let e=0;for(;e2*e+2&&wt.throwArgumentError("value out of range","value",arguments[1]);r.length<2*e+2;)r="0x0"+r.substring(2);return r}function mi(r){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(Gr(r)){let t=j(r);t.length===64?(e.v=27+(t[32]>>7),t[32]&=127,e.r=W(t.slice(0,32)),e.s=W(t.slice(32,64))):t.length===65?(e.r=W(t.slice(0,32)),e.s=W(t.slice(32,64)),e.v=t[64]):wt.throwArgumentError("invalid signature string","signature",r),e.v<27&&(e.v===0||e.v===1?e.v+=27:wt.throwArgumentError("signature invalid v byte","signature",r)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(t[32]|=128),e._vs=W(t.slice(32,64))}else{if(e.r=r.r,e.s=r.s,e.v=r.v,e.recoveryParam=r.recoveryParam,e._vs=r._vs,e._vs!=null){const i=ws(j(e._vs),32);e._vs=W(i);const s=i[0]>=128?1:0;e.recoveryParam==null?e.recoveryParam=s:e.recoveryParam!==s&&wt.throwArgumentError("signature recoveryParam mismatch _vs","signature",r),i[0]&=127;const a=W(i);e.s==null?e.s=a:e.s!==a&&wt.throwArgumentError("signature v mismatch _vs","signature",r)}if(e.recoveryParam==null)e.v==null?wt.throwArgumentError("signature missing v and recoveryParam","signature",r):e.v===0||e.v===1?e.recoveryParam=e.v:e.recoveryParam=1-e.v%2;else if(e.v==null)e.v=27+e.recoveryParam;else{const i=e.v===0||e.v===1?e.v:1-e.v%2;e.recoveryParam!==i&&wt.throwArgumentError("signature recoveryParam mismatch v","signature",r)}e.r==null||!Ee(e.r)?wt.throwArgumentError("signature missing or invalid r","signature",r):e.r=Re(e.r,32),e.s==null||!Ee(e.s)?wt.throwArgumentError("signature missing or invalid s","signature",r):e.s=Re(e.s,32);const t=j(e.s);t[0]>=128&&wt.throwArgumentError("signature s out of range","signature",r),e.recoveryParam&&(t[0]|=128);const n=W(t);e._vs&&(Ee(e._vs)||wt.throwArgumentError("signature invalid _vs","signature",r),e._vs=Re(e._vs,32)),e._vs==null?e._vs=n:e._vs!==n&&wt.throwArgumentError("signature _vs mismatch v and s","signature",r)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}function pc(r){return r=mi(r),W(Pe([r.r,r.s,r.recoveryParam?"0x1c":"0x1b"]))}const ju="bignumber/5.7.0";var Bs=oe.BN;const Xr=new B(ju),zo={},v0=9007199254740991;function Jp(r){return r!=null&&(R.isBigNumber(r)||typeof r=="number"&&r%1===0||typeof r=="string"&&!!r.match(/^-?[0-9]+$/)||Ee(r)||typeof r=="bigint"||Dn(r))}let E0=!1;class R{constructor(e,t){e!==zo&&Xr.throwError("cannot call constructor directly; use BigNumber.from",B.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=t,this._isBigNumber=!0,Object.freeze(this)}fromTwos(e){return er(me(this).fromTwos(e))}toTwos(e){return er(me(this).toTwos(e))}abs(){return this._hex[0]==="-"?R.from(this._hex.substring(1)):this}add(e){return er(me(this).add(me(e)))}sub(e){return er(me(this).sub(me(e)))}div(e){return R.from(e).isZero()&&fr("division-by-zero","div"),er(me(this).div(me(e)))}mul(e){return er(me(this).mul(me(e)))}mod(e){const t=me(e);return t.isNeg()&&fr("division-by-zero","mod"),er(me(this).umod(t))}pow(e){const t=me(e);return t.isNeg()&&fr("negative-power","pow"),er(me(this).pow(t))}and(e){const t=me(e);return(this.isNegative()||t.isNeg())&&fr("unbound-bitwise-result","and"),er(me(this).and(t))}or(e){const t=me(e);return(this.isNegative()||t.isNeg())&&fr("unbound-bitwise-result","or"),er(me(this).or(t))}xor(e){const t=me(e);return(this.isNegative()||t.isNeg())&&fr("unbound-bitwise-result","xor"),er(me(this).xor(t))}mask(e){return(this.isNegative()||e<0)&&fr("negative-width","mask"),er(me(this).maskn(e))}shl(e){return(this.isNegative()||e<0)&&fr("negative-width","shl"),er(me(this).shln(e))}shr(e){return(this.isNegative()||e<0)&&fr("negative-width","shr"),er(me(this).shrn(e))}eq(e){return me(this).eq(me(e))}lt(e){return me(this).lt(me(e))}lte(e){return me(this).lte(me(e))}gt(e){return me(this).gt(me(e))}gte(e){return me(this).gte(me(e))}isNegative(){return this._hex[0]==="-"}isZero(){return me(this).isZero()}toNumber(){try{return me(this).toNumber()}catch{fr("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return Xr.throwError("this platform does not support BigInt",B.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?E0||(E0=!0,Xr.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?Xr.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",B.errors.UNEXPECTED_ARGUMENT,{}):Xr.throwError("BigNumber.toString does not accept parameters",B.errors.UNEXPECTED_ARGUMENT,{})),me(this).toString(10)}toHexString(){return this._hex}toJSON(e){return{type:"BigNumber",hex:this.toHexString()}}static from(e){if(e instanceof R)return e;if(typeof e=="string")return e.match(/^-?0x[0-9a-f]+$/i)?new R(zo,Ds(e)):e.match(/^-?[0-9]+$/)?new R(zo,Ds(new Bs(e))):Xr.throwArgumentError("invalid BigNumber string","value",e);if(typeof e=="number")return e%1&&fr("underflow","BigNumber.from",e),(e>=v0||e<=-v0)&&fr("overflow","BigNumber.from",e),R.from(String(e));const t=e;if(typeof t=="bigint")return R.from(t.toString());if(Dn(t))return R.from(W(t));if(t)if(t.toHexString){const n=t.toHexString();if(typeof n=="string")return R.from(n)}else{let n=t._hex;if(n==null&&t.type==="BigNumber"&&(n=t.hex),typeof n=="string"&&(Ee(n)||n[0]==="-"&&Ee(n.substring(1))))return R.from(n)}return Xr.throwArgumentError("invalid BigNumber value","value",e)}static isBigNumber(e){return!!(e&&e._isBigNumber)}}function Ds(r){if(typeof r!="string")return Ds(r.toString(16));if(r[0]==="-")return r=r.substring(1),r[0]==="-"&&Xr.throwArgumentError("invalid hex","value",r),r=Ds(r),r==="0x00"?r:"-"+r;if(r.substring(0,2)!=="0x"&&(r="0x"+r),r==="0x")return"0x00";for(r.length%2&&(r="0x0"+r.substring(2));r.length>4&&r.substring(0,4)==="0x00";)r="0x"+r.substring(4);return r}function er(r){return R.from(Ds(r))}function me(r){const e=R.from(r).toHexString();return e[0]==="-"?new Bs("-"+e.substring(3),16):new Bs(e.substring(2),16)}function fr(r,e,t){const n={fault:r,operation:e};return t!=null&&(n.value=t),Xr.throwError(r,B.errors.NUMERIC_FAULT,n)}function Qp(r){return new Bs(r,36).toString(16)}function Yp(r){return new Bs(r,16).toString(36)}const Yt=new B(ju),ys={},qu=R.from(0),Gu=R.from(-1);function $u(r,e,t,n){const i={fault:e,operation:t};return n!==void 0&&(i.value=n),Yt.throwError(r,B.errors.NUMERIC_FAULT,i)}let vs="0";for(;vs.length<256;)vs+=vs;function sf(r){if(typeof r!="number")try{r=R.from(r).toNumber()}catch{}return typeof r=="number"&&r>=0&&r<=256&&!(r%1)?"1"+vs.substring(0,r):Yt.throwArgumentError("invalid decimal size","decimals",r)}function ya(r,e){e==null&&(e=0);const t=sf(e);r=R.from(r);const n=r.lt(qu);n&&(r=r.mul(Gu));let i=r.mod(t).toString();for(;i.length2&&Yt.throwArgumentError("too many decimal points","value",r);let s=i[0],a=i[1];for(s||(s="0"),a||(a="0");a[a.length-1]==="0";)a=a.substring(0,a.length-1);for(a.length>t.length-1&&$u("fractional component exceeds decimals","underflow","parseFixed"),a===""&&(a="0");a.lengthe[a]==null?c:(typeof e[a]!==o&&Yt.throwArgumentError("invalid fixed format ("+a+" not "+o+")","format."+a,e[a]),e[a]);t=s("signed","boolean",t),n=s("width","number",n),i=s("decimals","number",i)}return n%8&&Yt.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",n),i>80&&Yt.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",i),new Li(ys,t,n,i)}}class Dt{constructor(e,t,n,i){e!==ys&&Yt.throwError("cannot use FixedNumber constructor; use FixedNumber.from",B.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=i,this._hex=t,this._value=n,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(e){this.format.name!==e.format.name&&Yt.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",e)}addUnsafe(e){this._checkFormat(e);const t=Nr(this._value,this.format.decimals),n=Nr(e._value,e.format.decimals);return Dt.fromValue(t.add(n),this.format.decimals,this.format)}subUnsafe(e){this._checkFormat(e);const t=Nr(this._value,this.format.decimals),n=Nr(e._value,e.format.decimals);return Dt.fromValue(t.sub(n),this.format.decimals,this.format)}mulUnsafe(e){this._checkFormat(e);const t=Nr(this._value,this.format.decimals),n=Nr(e._value,e.format.decimals);return Dt.fromValue(t.mul(n).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(e){this._checkFormat(e);const t=Nr(this._value,this.format.decimals),n=Nr(e._value,e.format.decimals);return Dt.fromValue(t.mul(this.format._multiplier).div(n),this.format.decimals,this.format)}floor(){const e=this.toString().split(".");e.length===1&&e.push("0");let t=Dt.from(e[0],this.format);const n=!e[1].match(/^(0*)$/);return this.isNegative()&&n&&(t=t.subUnsafe(A0.toFormat(t.format))),t}ceiling(){const e=this.toString().split(".");e.length===1&&e.push("0");let t=Dt.from(e[0],this.format);const n=!e[1].match(/^(0*)$/);return!this.isNegative()&&n&&(t=t.addUnsafe(A0.toFormat(t.format))),t}round(e){e==null&&(e=0);const t=this.toString().split(".");if(t.length===1&&t.push("0"),(e<0||e>80||e%1)&&Yt.throwArgumentError("invalid decimal count","decimals",e),t[1].length<=e)return this;const n=Dt.from("1"+vs.substring(0,e),this.format),i=Xp.toFormat(this.format);return this.mulUnsafe(n).addUnsafe(i).floor().divUnsafe(n)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(e){if(e==null)return this._hex;e%8&&Yt.throwArgumentError("invalid byte width","width",e);const t=R.from(this._hex).fromTwos(this.format.width).toTwos(e).toHexString();return Re(t,e/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(e){return Dt.fromString(this._value,e)}static fromValue(e,t,n){return n==null&&t!=null&&!Jp(t)&&(n=t,t=null),t==null&&(t=0),n==null&&(n="fixed"),Dt.fromString(ya(e,t),Li.from(n))}static fromString(e,t){t==null&&(t="fixed");const n=Li.from(t),i=Nr(e,n.decimals);!n.signed&&i.lt(qu)&&$u("unsigned value cannot be negative","overflow","value",e);let s=null;n.signed?s=i.toTwos(n.width).toHexString():(s=i.toHexString(),s=Re(s,n.width/8));const a=ya(i,n.decimals);return new Dt(ys,s,a,n)}static fromBytes(e,t){t==null&&(t="fixed");const n=Li.from(t);if(j(e).length>n.width/8)throw new Error("overflow");let i=R.from(e);n.signed&&(i=i.fromTwos(n.width));const s=i.toTwos((n.signed?0:1)+n.width).toHexString(),a=ya(i,n.decimals);return new Dt(ys,s,a,n)}static from(e,t){if(typeof e=="string")return Dt.fromString(e,t);if(Dn(e))return Dt.fromBytes(e,t);try{return Dt.fromValue(e,0,t)}catch(n){if(n.code!==B.errors.INVALID_ARGUMENT)throw n}return Yt.throwArgumentError("invalid FixedNumber value","value",e)}static isFixedNumber(e){return!!(e&&e._isFixedNumber)}}const A0=Dt.from(1),Xp=Dt.from("0.5"),Zp="properties/5.7.0";var e1=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(g){try{u(n.next(g))}catch(b){a(b)}}function c(g){try{u(n.throw(g))}catch(b){a(b)}}function u(g){g.done?s(g.value):i(g.value).then(o,c)}u((n=n.apply(r,e||[])).next())})};const Ba=new B(Zp);function q(r,e,t){Object.defineProperty(r,e,{enumerable:!0,value:t,writable:!1})}function Cr(r,e){for(let t=0;t<32;t++){if(r[e])return r[e];if(!r.prototype||typeof r.prototype!="object")break;r=Object.getPrototypeOf(r.prototype).constructor}return null}function Le(r){return e1(this,void 0,void 0,function*(){const e=Object.keys(r).map(n=>{const i=r[n];return Promise.resolve(i).then(s=>({key:n,value:s}))});return(yield Promise.all(e)).reduce((n,i)=>(n[i.key]=i.value,n),{})})}function af(r,e){(!r||typeof r!="object")&&Ba.throwArgumentError("invalid object","object",r),Object.keys(r).forEach(t=>{e[t]||Ba.throwArgumentError("invalid object key - "+t,"transaction:"+t,r)})}function kt(r){const e={};for(const t in r)e[t]=r[t];return e}const t1={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function zu(r){if(r==null||t1[typeof r])return!0;if(Array.isArray(r)||typeof r=="object"){if(!Object.isFrozen(r))return!1;const e=Object.keys(r);for(let t=0;tzr(e)));if(typeof r=="object"){const e={};for(const t in r){const n=r[t];n!==void 0&&q(e,t,zr(n))}return e}return Ba.throwArgumentError(`Cannot deepCopy ${typeof r}`,"object",r)}function zr(r){return r1(r)}class wi{constructor(e){for(const t in e)this[t]=zr(e[t])}}const Js="abi/5.7.0",Ae=new B(Js),li={};let _0={calldata:!0,memory:!0,storage:!0},n1={calldata:!0,memory:!0};function fa(r,e){if(r==="bytes"||r==="string"){if(_0[e])return!0}else if(r==="address"){if(e==="payable")return!0}else if((r.indexOf("[")>=0||r==="tuple")&&n1[e])return!0;return(_0[e]||e==="payable")&&Ae.throwArgumentError("invalid modifier","name",e),!1}function i1(r,e){let t=r;function n(o){Ae.throwArgumentError(`unexpected character at position ${o}`,"param",r)}r=r.replace(/\s/g," ");function i(o){let c={type:"",name:"",parent:o,state:{allowType:!0}};return e&&(c.indexed=!1),c}let s={type:"",name:"",state:{allowType:!0}},a=s;for(let o=0;oJSON.parse(i.format(e)))),JSON.stringify(n)}let t="";return this.baseType==="array"?(t+=this.arrayChildren.format(e),t+="["+(this.arrayLength<0?"":String(this.arrayLength))+"]"):this.baseType==="tuple"?(e!==Ce.sighash&&(t+=this.type),t+="("+this.components.map(n=>n.format(e)).join(e===Ce.full?", ":",")+")"):t+=this.type,e!==Ce.sighash&&(this.indexed===!0&&(t+=" indexed"),e===Ce.full&&this.name&&(t+=" "+this.name)),t}static from(e,t){return typeof e=="string"?Ot.fromString(e,t):Ot.fromObject(e)}static fromObject(e){return Ot.isParamType(e)?e:new Ot(li,{name:e.name||null,type:Ti(e.type),indexed:e.indexed==null?null:!!e.indexed,components:e.components?e.components.map(Ot.fromObject):null})}static fromString(e,t){function n(i){return Ot.fromObject({name:i.name,type:i.type,indexed:i.indexed,components:i.components})}return n(i1(e,!!t))}static isParamType(e){return!!(e!=null&&e._isParamType)}}function Ls(r,e){return o1(r).map(t=>Ot.fromString(t,e))}class Dr{constructor(e,t){e!==li&&Ae.throwError("use a static from method",B.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),va(this,t),this._isFragment=!0,Object.freeze(this)}static from(e){return Dr.isFragment(e)?e:typeof e=="string"?Dr.fromString(e):Dr.fromObject(e)}static fromObject(e){if(Dr.isFragment(e))return e;switch(e.type){case"function":return Sr.fromObject(e);case"event":return Br.fromObject(e);case"constructor":return _r.fromObject(e);case"error":return rn.fromObject(e);case"fallback":case"receive":return null}return Ae.throwArgumentError("invalid fragment object","value",e)}static fromString(e){return e=e.replace(/\s/g," "),e=e.replace(/\(/g," (").replace(/\)/g,") ").replace(/\s+/g," "),e=e.trim(),e.split(" ")[0]==="event"?Br.fromString(e.substring(5).trim()):e.split(" ")[0]==="function"?Sr.fromString(e.substring(8).trim()):e.split("(")[0].trim()==="constructor"?_r.fromString(e.trim()):e.split(" ")[0]==="error"?rn.fromString(e.substring(5).trim()):Ae.throwArgumentError("unsupported fragment","value",e)}static isFragment(e){return!!(e&&e._isFragment)}}class Br extends Dr{format(e){if(e||(e=Ce.sighash),Ce[e]||Ae.throwArgumentError("invalid format type","format",e),e===Ce.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map(n=>JSON.parse(n.format(e)))});let t="";return e!==Ce.sighash&&(t+="event "),t+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===Ce.full?", ":",")+") ",e!==Ce.sighash&&this.anonymous&&(t+="anonymous "),t.trim()}static from(e){return typeof e=="string"?Br.fromString(e):Br.fromObject(e)}static fromObject(e){if(Br.isEventFragment(e))return e;e.type!=="event"&&Ae.throwArgumentError("invalid event object","value",e);const t={name:Us(e.name),anonymous:e.anonymous,inputs:e.inputs?e.inputs.map(Ot.fromObject):[],type:"event"};return new Br(li,t)}static fromString(e){let t=e.match(Fs);t||Ae.throwArgumentError("invalid event string","value",e);let n=!1;return t[3].split(" ").forEach(i=>{switch(i.trim()){case"anonymous":n=!0;break;case"":break;default:Ae.warn("unknown modifier: "+i)}}),Br.fromObject({name:t[1].trim(),anonymous:n,inputs:Ls(t[2],!0),type:"event"})}static isEventFragment(e){return e&&e._isFragment&&e.type==="event"}}function Ku(r,e){e.gas=null;let t=r.split("@");return t.length!==1?(t.length>2&&Ae.throwArgumentError("invalid human-readable ABI signature","value",r),t[1].match(/^[0-9]+$/)||Ae.throwArgumentError("invalid human-readable ABI signature gas","value",r),e.gas=R.from(t[1]),t[0]):r}function Vu(r,e){e.constant=!1,e.payable=!1,e.stateMutability="nonpayable",r.split(" ").forEach(t=>{switch(t.trim()){case"constant":e.constant=!0;break;case"payable":e.payable=!0,e.stateMutability="payable";break;case"nonpayable":e.payable=!1,e.stateMutability="nonpayable";break;case"pure":e.constant=!0,e.stateMutability="pure";break;case"view":e.constant=!0,e.stateMutability="view";break;case"external":case"public":case"":break;default:console.log("unknown modifier: "+t)}})}function Ju(r){let e={constant:!1,payable:!0,stateMutability:"payable"};return r.stateMutability!=null?(e.stateMutability=r.stateMutability,e.constant=e.stateMutability==="view"||e.stateMutability==="pure",r.constant!=null&&!!r.constant!==e.constant&&Ae.throwArgumentError("cannot have constant function with mutability "+e.stateMutability,"value",r),e.payable=e.stateMutability==="payable",r.payable!=null&&!!r.payable!==e.payable&&Ae.throwArgumentError("cannot have payable function with mutability "+e.stateMutability,"value",r)):r.payable!=null?(e.payable=!!r.payable,r.constant==null&&!e.payable&&r.type!=="constructor"&&Ae.throwArgumentError("unable to determine stateMutability","value",r),e.constant=!!r.constant,e.constant?e.stateMutability="view":e.stateMutability=e.payable?"payable":"nonpayable",e.payable&&e.constant&&Ae.throwArgumentError("cannot have constant payable function","value",r)):r.constant!=null?(e.constant=!!r.constant,e.payable=!e.constant,e.stateMutability=e.constant?"view":"payable"):r.type!=="constructor"&&Ae.throwArgumentError("unable to determine stateMutability","value",r),e}class _r extends Dr{format(e){if(e||(e=Ce.sighash),Ce[e]||Ae.throwArgumentError("invalid format type","format",e),e===Ce.json)return JSON.stringify({type:"constructor",stateMutability:this.stateMutability!=="nonpayable"?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(n=>JSON.parse(n.format(e)))});e===Ce.sighash&&Ae.throwError("cannot format a constructor for sighash",B.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});let t="constructor("+this.inputs.map(n=>n.format(e)).join(e===Ce.full?", ":",")+") ";return this.stateMutability&&this.stateMutability!=="nonpayable"&&(t+=this.stateMutability+" "),t.trim()}static from(e){return typeof e=="string"?_r.fromString(e):_r.fromObject(e)}static fromObject(e){if(_r.isConstructorFragment(e))return e;e.type!=="constructor"&&Ae.throwArgumentError("invalid constructor object","value",e);let t=Ju(e);t.constant&&Ae.throwArgumentError("constructor cannot be constant","value",e);const n={name:null,type:e.type,inputs:e.inputs?e.inputs.map(Ot.fromObject):[],payable:t.payable,stateMutability:t.stateMutability,gas:e.gas?R.from(e.gas):null};return new _r(li,n)}static fromString(e){let t={type:"constructor"};e=Ku(e,t);let n=e.match(Fs);return(!n||n[1].trim()!=="constructor")&&Ae.throwArgumentError("invalid constructor string","value",e),t.inputs=Ls(n[2].trim(),!1),Vu(n[3].trim(),t),_r.fromObject(t)}static isConstructorFragment(e){return e&&e._isFragment&&e.type==="constructor"}}class Sr extends _r{format(e){if(e||(e=Ce.sighash),Ce[e]||Ae.throwArgumentError("invalid format type","format",e),e===Ce.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:this.stateMutability!=="nonpayable"?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(n=>JSON.parse(n.format(e))),outputs:this.outputs.map(n=>JSON.parse(n.format(e)))});let t="";return e!==Ce.sighash&&(t+="function "),t+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===Ce.full?", ":",")+") ",e!==Ce.sighash&&(this.stateMutability?this.stateMutability!=="nonpayable"&&(t+=this.stateMutability+" "):this.constant&&(t+="view "),this.outputs&&this.outputs.length&&(t+="returns ("+this.outputs.map(n=>n.format(e)).join(", ")+") "),this.gas!=null&&(t+="@"+this.gas.toString()+" ")),t.trim()}static from(e){return typeof e=="string"?Sr.fromString(e):Sr.fromObject(e)}static fromObject(e){if(Sr.isFunctionFragment(e))return e;e.type!=="function"&&Ae.throwArgumentError("invalid function object","value",e);let t=Ju(e);const n={type:e.type,name:Us(e.name),constant:t.constant,inputs:e.inputs?e.inputs.map(Ot.fromObject):[],outputs:e.outputs?e.outputs.map(Ot.fromObject):[],payable:t.payable,stateMutability:t.stateMutability,gas:e.gas?R.from(e.gas):null};return new Sr(li,n)}static fromString(e){let t={type:"function"};e=Ku(e,t);let n=e.split(" returns ");n.length>2&&Ae.throwArgumentError("invalid function string","value",e);let i=n[0].match(Fs);if(i||Ae.throwArgumentError("invalid function signature","value",e),t.name=i[1].trim(),t.name&&Us(t.name),t.inputs=Ls(i[2],!1),Vu(i[3].trim(),t),n.length>1){let s=n[1].match(Fs);(s[1].trim()!=""||s[3].trim()!="")&&Ae.throwArgumentError("unexpected tokens","value",e),t.outputs=Ls(s[2],!1)}else t.outputs=[];return Sr.fromObject(t)}static isFunctionFragment(e){return e&&e._isFragment&&e.type==="function"}}function S0(r){const e=r.format();return(e==="Error(string)"||e==="Panic(uint256)")&&Ae.throwArgumentError(`cannot specify user defined ${e} error`,"fragment",r),r}class rn extends Dr{format(e){if(e||(e=Ce.sighash),Ce[e]||Ae.throwArgumentError("invalid format type","format",e),e===Ce.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(n=>JSON.parse(n.format(e)))});let t="";return e!==Ce.sighash&&(t+="error "),t+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===Ce.full?", ":",")+") ",t.trim()}static from(e){return typeof e=="string"?rn.fromString(e):rn.fromObject(e)}static fromObject(e){if(rn.isErrorFragment(e))return e;e.type!=="error"&&Ae.throwArgumentError("invalid error object","value",e);const t={type:e.type,name:Us(e.name),inputs:e.inputs?e.inputs.map(Ot.fromObject):[]};return S0(new rn(li,t))}static fromString(e){let t={type:"error"},n=e.match(Fs);return n||Ae.throwArgumentError("invalid error signature","value",e),t.name=n[1].trim(),t.name&&Us(t.name),t.inputs=Ls(n[2],!1),S0(rn.fromObject(t))}static isErrorFragment(e){return e&&e._isFragment&&e.type==="error"}}function Ti(r){return r.match(/^uint($|[^1-9])/)?r="uint256"+r.substring(4):r.match(/^int($|[^1-9])/)&&(r="int256"+r.substring(3)),r}const a1=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function Us(r){return(!r||!r.match(a1))&&Ae.throwArgumentError(`invalid identifier "${r}"`,"value",r),r}const Fs=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");function o1(r){r=r.trim();let e=[],t="",n=0;for(let i=0;ithis.wordSize&&of.throwError("value out-of-bounds",B.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:t.length}),t.length%this.wordSize&&(t=Pe([this._padding.slice(t.length%this.wordSize),t])),t}writeValue(e){return this._writeData(this._getValue(e))}writeUpdatableValue(){const e=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,t=>{this._data[e]=this._getValue(t)}}}class Da{constructor(e,t,n,i){q(this,"_data",j(e)),q(this,"wordSize",t||32),q(this,"_coerceFunc",n),q(this,"allowLoose",i),this._offset=0}get data(){return W(this._data)}get consumed(){return this._offset}static coerce(e,t){let n=e.match("^u?int([0-9]+)$");return n&&parseInt(n[1])<=48&&(t=t.toNumber()),t}coerce(e,t){return this._coerceFunc?this._coerceFunc(e,t):Da.coerce(e,t)}_peekBytes(e,t,n){let i=Math.ceil(t/this.wordSize)*this.wordSize;return this._offset+i>this._data.length&&(this.allowLoose&&n&&this._offset+t<=this._data.length?i=t:of.throwError("data out-of-bounds",B.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+i})),this._data.slice(this._offset,this._offset+i)}subReader(e){return new Da(this._data.slice(this._offset+e),this.wordSize,this._coerceFunc,this.allowLoose)}readBytes(e,t){let n=this._peekBytes(0,e,!!t);return this._offset+=n.length,n.slice(0,e)}readValue(){return R.from(this.readBytes(this.wordSize))}}var Yu={exports:{}};/** +var gp=Object.defineProperty;var pp=(r,e,t)=>e in r?gp(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var Se=(r,e,t)=>(pp(r,typeof e!="symbol"?e+"":e,t),t);import{g as xp,f as Lu,h as Xi,i as bp,s as mp,r as ca,j as Ne,d as Uu}from"./index-DR6XzkYl.js";const wp=[{inputs:[{internalType:"bytes32",type:"bytes32"}],name:"getAlternativeSignature",outputs:[{internalType:"string",type:"string"}],stateMutability:"view",type:"function"}];var yp=Object.freeze({__proto__:null,abi:wp});const vp=[{type:"function",name:"isValidSignature",constant:!0,inputs:[{type:"bytes32"},{type:"bytes"}],outputs:[{type:"bytes4"}],payable:!1,stateMutability:"view"}],Ep={isValidSignatureBytes32:"0x1626ba7e"};var Ap=Object.freeze({__proto__:null,abi:vp,returns:Ep});const _p=[{inputs:[{internalType:"bytes",name:"error",type:"bytes"}],name:"ERC1271Revert",type:"error"},{inputs:[{internalType:"bytes",name:"error",type:"bytes"}],name:"ERC6492DeployFailed",type:"error"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],name:"isValidSig",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"},{internalType:"bool",name:"allowSideEffects",type:"bool"},{internalType:"bool",name:"deployAlreadyDeployed",type:"bool"}],name:"isValidSigImpl",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],name:"isValidSigNoThrow",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],name:"isValidSigWithSideEffects",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],name:"isValidSigWithSideEffectsNoThrow",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}];var Sp=Object.freeze({__proto__:null,abi:_p});const Cp=[{type:"function",name:"deploy",constant:!1,inputs:[{type:"address"},{type:"bytes32"}],outputs:[],payable:!0,stateMutability:"payable"}];var Ip=Object.freeze({__proto__:null,abi:Cp});const kp=[{type:"function",name:"nonce",constant:!0,inputs:[],outputs:[{type:"uint256"}],payable:!1,stateMutability:"view"},{type:"function",name:"readNonce",constant:!0,inputs:[{type:"uint256"}],outputs:[{type:"uint256"}],payable:!1,stateMutability:"view"},{type:"function",name:"updateImplementation",constant:!1,inputs:[{type:"address"}],outputs:[],payable:!1,stateMutability:"nonpayable"},{type:"function",name:"selfExecute",constant:!1,inputs:[{components:[{type:"bool",name:"delegateCall"},{type:"bool",name:"revertOnError"},{type:"uint256",name:"gasLimit"},{type:"address",name:"target"},{type:"uint256",name:"value"},{type:"bytes",name:"data"}],type:"tuple[]"}],outputs:[],payable:!1,stateMutability:"nonpayable"},{type:"function",name:"execute",constant:!1,inputs:[{components:[{type:"bool",name:"delegateCall"},{type:"bool",name:"revertOnError"},{type:"uint256",name:"gasLimit"},{type:"address",name:"target"},{type:"uint256",name:"value"},{type:"bytes",name:"data"}],type:"tuple[]"},{type:"uint256"},{type:"bytes"}],outputs:[],payable:!1,stateMutability:"nonpayable"},{type:"function",name:"createContract",inputs:[{type:"bytes"}],payable:!0,stateMutability:"payable"},{type:"function",name:"setExtraImageHash",constant:!1,inputs:[{type:"bytes32",name:"imageHash"},{type:"uint256",name:"expiration"}],outputs:[],payable:!1,stateMutability:"nonpayable"}];var Tp=Object.freeze({__proto__:null,abi:kp});const Mp=[{type:"function",name:"updateImageHash",constant:!0,inputs:[{type:"bytes32"}],outputs:[],payable:!1,stateMutability:"view"},{type:"function",name:"imageHash",constant:!0,inputs:[],outputs:[{type:"bytes32"}],payable:!1,stateMutability:"view"}];var Op=Object.freeze({__proto__:null,abi:Mp});const Np=[{inputs:[{internalType:"address",name:"_factory",type:"address"},{internalType:"address",name:"_mainModule",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_wallet",type:"address"},{indexed:!0,internalType:"bytes32",name:"_imageHash",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"_threshold",type:"uint256"},{indexed:!1,internalType:"bytes",name:"_signers",type:"bytes"}],name:"RequiredConfig",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_wallet",type:"address"},{indexed:!0,internalType:"address",name:"_signer",type:"address"}],name:"RequiredSigner",type:"event"},{inputs:[{internalType:"address",name:"_addr",type:"address"}],name:"callBalanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callBlockNumber",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_i",type:"uint256"}],name:"callBlockhash",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"callChainId",outputs:[{internalType:"uint256",name:"id",type:"uint256"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"_addr",type:"address"}],name:"callCode",outputs:[{internalType:"bytes",name:"code",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_addr",type:"address"}],name:"callCodeHash",outputs:[{internalType:"bytes32",name:"codeHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_addr",type:"address"}],name:"callCodeSize",outputs:[{internalType:"uint256",name:"size",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callCoinbase",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"callDifficulty",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callGasLeft",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callGasLimit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callGasPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callOrigin",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"callTimestamp",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"knownImageHashes",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"lastImageHashUpdate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"lastSignerUpdate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"lastWalletUpdate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"bool",name:"delegateCall",type:"bool"},{internalType:"bool",name:"revertOnError",type:"bool"},{internalType:"uint256",name:"gasLimit",type:"uint256"},{internalType:"address",name:"target",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],internalType:"struct IModuleCalls.Transaction[]",name:"_txs",type:"tuple[]"}],name:"multiCall",outputs:[{internalType:"bool[]",name:"_successes",type:"bool[]"},{internalType:"bytes[]",name:"_results",type:"bytes[]"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"_wallet",type:"address"},{internalType:"uint256",name:"_threshold",type:"uint256"},{components:[{internalType:"uint256",name:"weight",type:"uint256"},{internalType:"address",name:"signer",type:"address"}],internalType:"struct RequireUtils.Member[]",name:"_members",type:"tuple[]"},{internalType:"bool",name:"_index",type:"bool"}],name:"publishConfig",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_wallet",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"uint256",name:"_sizeMembers",type:"uint256"},{internalType:"bytes",name:"_signature",type:"bytes"},{internalType:"bool",name:"_index",type:"bool"}],name:"publishInitialSigners",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_wallet",type:"address"},{internalType:"uint256",name:"_nonce",type:"uint256"}],name:"requireMinNonce",outputs:[],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_expiration",type:"uint256"}],name:"requireNonExpired",outputs:[],stateMutability:"view",type:"function"}];var Pp=Object.freeze({__proto__:null,abi:Np});const Rp=[{inputs:[{internalType:"address",name:"",type:"address"}],name:"requireFreshSigner",outputs:[],stateMutability:"nonpayable",type:"function"}];var Bp=Object.freeze({__proto__:null,abi:Rp});const Rt={erc6492:Sp,erc5719:yp,erc1271:Ap,factory:Ip,mainModule:Tp,mainModuleUpgradable:Op,sequenceUtils:Pp,requireFreshSigner:Bp},Dp=Object.freeze(Object.defineProperty({__proto__:null,walletContracts:Rt},Symbol.toStringTag,{value:"Module"}));function Ra(){return Ra=Object.assign?Object.assign.bind():function(r){for(var e=1;ethis.fetch(this.url("Ping"),fe({},n)).then(i=>ue(i).then(s=>({status:s.status}))),this.version=n=>this.fetch(this.url("Version"),fe({},n)).then(i=>ue(i).then(s=>({version:s.version}))),this.runtimeStatus=n=>this.fetch(this.url("RuntimeStatus"),fe({},n)).then(i=>ue(i).then(s=>({status:s.status}))),this.clock=n=>this.fetch(this.url("Clock"),fe({},n)).then(i=>ue(i).then(s=>({serverTime:s.serverTime}))),this.getSequenceContext=n=>this.fetch(this.url("GetSequenceContext"),fe({},n)).then(i=>ue(i).then(s=>({data:s.data}))),this.getAuthToken=(n,i)=>this.fetch(this.url("GetAuthToken"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,jwtToken:a.jwtToken,address:a.address,user:a.user}))),this.getAuthToken2=(n,i)=>this.fetch(this.url("GetAuthToken2"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,jwtToken:a.jwtToken,address:a.address,user:a.user}))),this.sendPasswordlessLink=(n,i)=>this.fetch(this.url("SendPasswordlessLink"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status}))),this.friendList=(n,i)=>this.fetch(this.url("FriendList"),fe(n,i)).then(s=>ue(s).then(a=>({page:a.page,friends:a.friends}))),this.getFriendByAddress=(n,i)=>this.fetch(this.url("GetFriendByAddress"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,friend:a.friend}))),this.searchFriends=(n,i)=>this.fetch(this.url("SearchFriends"),fe(n,i)).then(s=>ue(s).then(a=>({friends:a.friends}))),this.addFriend=(n,i)=>this.fetch(this.url("AddFriend"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,friend:a.friend}))),this.updateFriendNickname=(n,i)=>this.fetch(this.url("UpdateFriendNickname"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,friend:a.friend}))),this.removeFriend=(n,i)=>this.fetch(this.url("RemoveFriend"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status}))),this.contractCall=(n,i)=>this.fetch(this.url("ContractCall"),fe(n,i)).then(s=>ue(s).then(a=>({returns:a.returns}))),this.decodeContractCall=(n,i)=>this.fetch(this.url("DecodeContractCall"),fe(n,i)).then(s=>ue(s).then(a=>({call:a.call}))),this.lookupContractCallSelectors=(n,i)=>this.fetch(this.url("LookupContractCallSelectors"),fe(n,i)).then(s=>ue(s).then(a=>({signatures:a.signatures}))),this.userStorageFetch=(n,i)=>this.fetch(this.url("UserStorageFetch"),fe(n,i)).then(s=>ue(s).then(a=>({object:a.object}))),this.userStorageSave=(n,i)=>this.fetch(this.url("UserStorageSave"),fe(n,i)).then(s=>ue(s).then(a=>({ok:a.ok}))),this.userStorageDelete=(n,i)=>this.fetch(this.url("UserStorageDelete"),fe(n,i)).then(s=>ue(s).then(a=>({ok:a.ok}))),this.userStorageFetchAll=(n,i)=>this.fetch(this.url("UserStorageFetchAll"),fe(n,i)).then(s=>ue(s).then(a=>({objects:a.objects}))),this.getMoonpayLink=(n,i)=>this.fetch(this.url("GetMoonpayLink"),fe(n,i)).then(s=>ue(s).then(a=>({signedUrl:a.signedUrl}))),this.getSardineClientToken=n=>this.fetch(this.url("GetSardineClientToken"),fe({},n)).then(i=>ue(i).then(s=>({token:s.token}))),this.resolveENSAddress=(n,i)=>this.fetch(this.url("ResolveENSAddress"),fe(n,i)).then(s=>ue(s).then(a=>({address:a.address,ok:a.ok}))),this.isValidSignature=(n,i)=>this.fetch(this.url("IsValidSignature"),fe(n,i)).then(s=>ue(s).then(a=>({isValid:a.isValid}))),this.isValidMessageSignature=(n,i)=>this.fetch(this.url("IsValidMessageSignature"),fe(n,i)).then(s=>ue(s).then(a=>({isValid:a.isValid}))),this.isValidTypedDataSignature=(n,i)=>this.fetch(this.url("IsValidTypedDataSignature"),fe(n,i)).then(s=>ue(s).then(a=>({isValid:a.isValid}))),this.isValidETHAuthProof=(n,i)=>this.fetch(this.url("IsValidETHAuthProof"),fe(n,i)).then(s=>ue(s).then(a=>({isValid:a.isValid}))),this.getCoinPrices=(n,i)=>this.fetch(this.url("GetCoinPrices"),fe(n,i)).then(s=>ue(s).then(a=>({tokenPrices:a.tokenPrices}))),this.getCollectiblePrices=(n,i)=>this.fetch(this.url("GetCollectiblePrices"),fe(n,i)).then(s=>ue(s).then(a=>({tokenPrices:a.tokenPrices}))),this.getExchangeRate=(n,i)=>this.fetch(this.url("GetExchangeRate"),fe(n,i)).then(s=>ue(s).then(a=>({exchangeRate:a.exchangeRate}))),this.memoryStore=(n,i)=>this.fetch(this.url("MemoryStore"),fe(n,i)).then(s=>ue(s).then(a=>({ok:a.ok}))),this.memoryLoad=(n,i)=>this.fetch(this.url("MemoryLoad"),fe(n,i)).then(s=>ue(s).then(a=>({value:a.value}))),this.getInviteInfo=n=>this.fetch(this.url("GetInviteInfo"),fe({},n)).then(i=>ue(i).then(s=>({inviteInfo:s.inviteInfo}))),this.isValidAccessCode=(n,i)=>this.fetch(this.url("IsValidAccessCode"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status}))),this.internalClaimAccessCode=(n,i)=>this.fetch(this.url("InternalClaimAccessCode"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status}))),this.blockNumberAtTime=(n,i)=>this.fetch(this.url("BlockNumberAtTime"),fe(n,i)).then(s=>ue(s).then(a=>({blocks:a.blocks}))),this.paperSessionSecret=(n,i)=>this.fetch(this.url("PaperSessionSecret"),fe(n,i)).then(s=>ue(s).then(a=>({secret:a.secret}))),this.paperSessionSecret2=(n,i)=>this.fetch(this.url("PaperSessionSecret2"),fe(n,i)).then(s=>ue(s).then(a=>({secret:a.secret}))),this.linkWallet=(n,i)=>this.fetch(this.url("LinkWallet"),fe(n,i)).then(s=>ue(s).then(a=>({status:a.status,linkedWalletAddress:a.linkedWalletAddress}))),this.getLinkedWallets=(n,i)=>this.fetch(this.url("GetLinkedWallets"),fe(n,i)).then(s=>ue(s).then(a=>({linkedWallets:a.linkedWallets}))),this.hostname=e,this.fetch=(n,i)=>t(n,i)}url(e){return this.hostname+this.path+e}}const fe=(r={},e={})=>({method:"POST",headers:Ra({},e,{"Content-Type":"application/json"}),body:JSON.stringify(r||{})}),ue=r=>r.text().then(e=>{let t;try{t=JSON.parse(e)}catch{throw{code:"unknown",msg:`expecting JSON, got: ${e}`,status:r.status}}if(!r.ok)throw t;return t}),g0=typeof global=="object"?global.fetch:window.fetch;class ma extends Fu{constructor(e,t,n){super(e.endsWith("/")?e.slice(0,-1):e,g0),this.projectAccessKey=t,this.jwtAuth=n,this._fetch=(i,s)=>{const a={},o=this.jwtAuth,c=this.projectAccessKey;return o&&o.length>0&&(a.Authorization=`BEARER ${o}`),c&&c.length>0&&(a["X-Access-Key"]=c),s.headers=Ra({},s.headers,a),g0(i,s)},this.fetch=this._fetch}}const Wp=Object.freeze(Object.defineProperty({__proto__:null,API:Fu,SequenceAPIClient:ma,SortOrder:Hp,WebRPCSchemaHash:Fp,WebRPCSchemaVersion:Up,WebRPCVersion:Lp},Symbol.toStringTag,{value:"Module"}));var nf={exports:{}};const jp={},qp=Object.freeze(Object.defineProperty({__proto__:null,default:jp},Symbol.toStringTag,{value:"Module"})),Gp=xp(qp);nf.exports;(function(r){(function(e,t){function n(M,l){if(!M)throw new Error(l||"Assertion failed")}function i(M,l){M.super_=l;var x=function(){};x.prototype=l.prototype,M.prototype=new x,M.prototype.constructor=M}function s(M,l,x){if(s.isBN(M))return M;this.negative=0,this.words=null,this.length=0,this.red=null,M!==null&&((l==="le"||l==="be")&&(x=l,l=10),this._init(M||0,l||10,x||"be"))}typeof e=="object"?e.exports=s:t.BN=s,s.BN=s,s.wordSize=26;var a;try{typeof window<"u"&&typeof window.Buffer<"u"?a=window.Buffer:a=Gp.Buffer}catch{}s.isBN=function(l){return l instanceof s?!0:l!==null&&typeof l=="object"&&l.constructor.wordSize===s.wordSize&&Array.isArray(l.words)},s.max=function(l,x){return l.cmp(x)>0?l:x},s.min=function(l,x){return l.cmp(x)<0?l:x},s.prototype._init=function(l,x,y){if(typeof l=="number")return this._initNumber(l,x,y);if(typeof l=="object")return this._initArray(l,x,y);x==="hex"&&(x=16),n(x===(x|0)&&x>=2&&x<=36),l=l.toString().replace(/\s+/g,"");var C=0;l[0]==="-"&&(C++,this.negative=1),C=0;C-=3)w=l[C]|l[C-1]<<8|l[C-2]<<16,this.words[p]|=w<>>26-v&67108863,v+=24,v>=26&&(v-=26,p++);else if(y==="le")for(C=0,p=0;C>>26-v&67108863,v+=24,v>=26&&(v-=26,p++);return this._strip()};function o(M,l){var x=M.charCodeAt(l);if(x>=48&&x<=57)return x-48;if(x>=65&&x<=70)return x-55;if(x>=97&&x<=102)return x-87;n(!1,"Invalid character in "+M)}function c(M,l,x){var y=o(M,x);return x-1>=l&&(y|=o(M,x-1)<<4),y}s.prototype._parseHex=function(l,x,y){this.length=Math.ceil((l.length-x)/6),this.words=new Array(this.length);for(var C=0;C=x;C-=2)v=c(l,x,C)<=18?(p-=18,w+=1,this.words[w]|=v>>>26):p+=8;else{var h=l.length-x;for(C=h%2===0?x+1:x;C=18?(p-=18,w+=1,this.words[w]|=v>>>26):p+=8}this._strip()};function u(M,l,x,y){for(var C=0,p=0,w=Math.min(M.length,x),v=l;v=49?p=h-49+10:h>=17?p=h-17+10:p=h,n(h>=0&&p1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},s.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{s.prototype[Symbol.for("nodejs.util.inspect.custom")]=b}catch{s.prototype.inspect=b}else s.prototype.inspect=b;function b(){return(this.red?""}var E=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],A=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],T=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];s.prototype.toString=function(l,x){l=l||10,x=x|0||1;var y;if(l===16||l==="hex"){y="";for(var C=0,p=0,w=0;w>>24-C&16777215,C+=2,C>=26&&(C-=26,w--),p!==0||w!==this.length-1?y=E[6-h.length]+h+y:y=h+y}for(p!==0&&(y=p.toString(16)+y);y.length%x!==0;)y="0"+y;return this.negative!==0&&(y="-"+y),y}if(l===(l|0)&&l>=2&&l<=36){var f=A[l],m=T[l];y="";var I=this.clone();for(I.negative=0;!I.isZero();){var d=I.modrn(m).toString(l);I=I.idivn(m),I.isZero()?y=d+y:y=E[f-d.length]+d+y}for(this.isZero()&&(y="0"+y);y.length%x!==0;)y="0"+y;return this.negative!==0&&(y="-"+y),y}n(!1,"Base should be between 2 and 36")},s.prototype.toNumber=function(){var l=this.words[0];return this.length===2?l+=this.words[1]*67108864:this.length===3&&this.words[2]===1?l+=4503599627370496+this.words[1]*67108864:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-l:l},s.prototype.toJSON=function(){return this.toString(16,2)},a&&(s.prototype.toBuffer=function(l,x){return this.toArrayLike(a,l,x)}),s.prototype.toArray=function(l,x){return this.toArrayLike(Array,l,x)};var k=function(l,x){return l.allocUnsafe?l.allocUnsafe(x):new l(x)};s.prototype.toArrayLike=function(l,x,y){this._strip();var C=this.byteLength(),p=y||Math.max(1,C);n(C<=p,"byte array longer than desired length"),n(p>0,"Requested array length <= 0");var w=k(l,p),v=x==="le"?"LE":"BE";return this["_toArrayLike"+v](w,C),w},s.prototype._toArrayLikeLE=function(l,x){for(var y=0,C=0,p=0,w=0;p>8&255),y>16&255),w===6?(y>24&255),C=0,w=0):(C=v>>>24,w+=2)}if(y=0&&(l[y--]=v>>8&255),y>=0&&(l[y--]=v>>16&255),w===6?(y>=0&&(l[y--]=v>>24&255),C=0,w=0):(C=v>>>24,w+=2)}if(y>=0)for(l[y--]=C;y>=0;)l[y--]=0},Math.clz32?s.prototype._countBits=function(l){return 32-Math.clz32(l)}:s.prototype._countBits=function(l){var x=l,y=0;return x>=4096&&(y+=13,x>>>=13),x>=64&&(y+=7,x>>>=7),x>=8&&(y+=4,x>>>=4),x>=2&&(y+=2,x>>>=2),y+x},s.prototype._zeroBits=function(l){if(l===0)return 26;var x=l,y=0;return x&8191||(y+=13,x>>>=13),x&127||(y+=7,x>>>=7),x&15||(y+=4,x>>>=4),x&3||(y+=2,x>>>=2),x&1||y++,y},s.prototype.bitLength=function(){var l=this.words[this.length-1],x=this._countBits(l);return(this.length-1)*26+x};function _(M){for(var l=new Array(M.bitLength()),x=0;x>>C&1}return l}s.prototype.zeroBits=function(){if(this.isZero())return 0;for(var l=0,x=0;xl.length?this.clone().ior(l):l.clone().ior(this)},s.prototype.uor=function(l){return this.length>l.length?this.clone().iuor(l):l.clone().iuor(this)},s.prototype.iuand=function(l){var x;this.length>l.length?x=l:x=this;for(var y=0;yl.length?this.clone().iand(l):l.clone().iand(this)},s.prototype.uand=function(l){return this.length>l.length?this.clone().iuand(l):l.clone().iuand(this)},s.prototype.iuxor=function(l){var x,y;this.length>l.length?(x=this,y=l):(x=l,y=this);for(var C=0;Cl.length?this.clone().ixor(l):l.clone().ixor(this)},s.prototype.uxor=function(l){return this.length>l.length?this.clone().iuxor(l):l.clone().iuxor(this)},s.prototype.inotn=function(l){n(typeof l=="number"&&l>=0);var x=Math.ceil(l/26)|0,y=l%26;this._expand(x),y>0&&x--;for(var C=0;C0&&(this.words[C]=~this.words[C]&67108863>>26-y),this._strip()},s.prototype.notn=function(l){return this.clone().inotn(l)},s.prototype.setn=function(l,x){n(typeof l=="number"&&l>=0);var y=l/26|0,C=l%26;return this._expand(y+1),x?this.words[y]=this.words[y]|1<l.length?(y=this,C=l):(y=l,C=this);for(var p=0,w=0;w>>26;for(;p!==0&&w>>26;if(this.length=y.length,p!==0)this.words[this.length]=p,this.length++;else if(y!==this)for(;wl.length?this.clone().iadd(l):l.clone().iadd(this)},s.prototype.isub=function(l){if(l.negative!==0){l.negative=0;var x=this.iadd(l);return l.negative=1,x._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(l),this.negative=1,this._normSign();var y=this.cmp(l);if(y===0)return this.negative=0,this.length=1,this.words[0]=0,this;var C,p;y>0?(C=this,p=l):(C=l,p=this);for(var w=0,v=0;v>26,this.words[v]=x&67108863;for(;w!==0&&v>26,this.words[v]=x&67108863;if(w===0&&v>>26,I=h&67108863,d=Math.min(f,l.length-1),S=Math.max(0,f-M.length+1);S<=d;S++){var O=f-S|0;C=M.words[O]|0,p=l.words[S]|0,w=C*p+I,m+=w/67108864|0,I=w&67108863}x.words[f]=I|0,h=m|0}return h!==0?x.words[f]=h|0:x.length--,x._strip()}var U=function(l,x,y){var C=l.words,p=x.words,w=y.words,v=0,h,f,m,I=C[0]|0,d=I&8191,S=I>>>13,O=C[1]|0,P=O&8191,F=O>>>13,V=C[2]|0,G=V&8191,K=V>>>13,he=C[3]|0,Y=he&8191,ie=he>>>13,sr=C[4]|0,Te=sr&8191,ve=sr>>>13,mt=C[5]|0,Ue=mt&8191,Fe=mt>>>13,Fn=C[6]|0,He=Fn&8191,We=Fn>>>13,Hn=C[7]|0,je=Hn&8191,qe=Hn>>>13,Wn=C[8]|0,Ge=Wn&8191,$e=Wn>>>13,jn=C[9]|0,ze=jn&8191,Ke=jn>>>13,qn=p[0]|0,Ve=qn&8191,Je=qn>>>13,Gn=p[1]|0,Qe=Gn&8191,Ye=Gn>>>13,$n=p[2]|0,Xe=$n&8191,Ze=$n>>>13,zn=p[3]|0,et=zn&8191,tt=zn>>>13,Kn=p[4]|0,rt=Kn&8191,nt=Kn>>>13,Vn=p[5]|0,it=Vn&8191,st=Vn>>>13,Jn=p[6]|0,at=Jn&8191,ot=Jn>>>13,Qn=p[7]|0,ct=Qn&8191,ft=Qn>>>13,Yn=p[8]|0,ut=Yn&8191,lt=Yn>>>13,Xn=p[9]|0,dt=Xn&8191,ht=Xn>>>13;y.negative=l.negative^x.negative,y.length=19,h=Math.imul(d,Ve),f=Math.imul(d,Je),f=f+Math.imul(S,Ve)|0,m=Math.imul(S,Je);var pn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(pn>>>26)|0,pn&=67108863,h=Math.imul(P,Ve),f=Math.imul(P,Je),f=f+Math.imul(F,Ve)|0,m=Math.imul(F,Je),h=h+Math.imul(d,Qe)|0,f=f+Math.imul(d,Ye)|0,f=f+Math.imul(S,Qe)|0,m=m+Math.imul(S,Ye)|0;var xn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(xn>>>26)|0,xn&=67108863,h=Math.imul(G,Ve),f=Math.imul(G,Je),f=f+Math.imul(K,Ve)|0,m=Math.imul(K,Je),h=h+Math.imul(P,Qe)|0,f=f+Math.imul(P,Ye)|0,f=f+Math.imul(F,Qe)|0,m=m+Math.imul(F,Ye)|0,h=h+Math.imul(d,Xe)|0,f=f+Math.imul(d,Ze)|0,f=f+Math.imul(S,Xe)|0,m=m+Math.imul(S,Ze)|0;var bn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(bn>>>26)|0,bn&=67108863,h=Math.imul(Y,Ve),f=Math.imul(Y,Je),f=f+Math.imul(ie,Ve)|0,m=Math.imul(ie,Je),h=h+Math.imul(G,Qe)|0,f=f+Math.imul(G,Ye)|0,f=f+Math.imul(K,Qe)|0,m=m+Math.imul(K,Ye)|0,h=h+Math.imul(P,Xe)|0,f=f+Math.imul(P,Ze)|0,f=f+Math.imul(F,Xe)|0,m=m+Math.imul(F,Ze)|0,h=h+Math.imul(d,et)|0,f=f+Math.imul(d,tt)|0,f=f+Math.imul(S,et)|0,m=m+Math.imul(S,tt)|0;var mn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(mn>>>26)|0,mn&=67108863,h=Math.imul(Te,Ve),f=Math.imul(Te,Je),f=f+Math.imul(ve,Ve)|0,m=Math.imul(ve,Je),h=h+Math.imul(Y,Qe)|0,f=f+Math.imul(Y,Ye)|0,f=f+Math.imul(ie,Qe)|0,m=m+Math.imul(ie,Ye)|0,h=h+Math.imul(G,Xe)|0,f=f+Math.imul(G,Ze)|0,f=f+Math.imul(K,Xe)|0,m=m+Math.imul(K,Ze)|0,h=h+Math.imul(P,et)|0,f=f+Math.imul(P,tt)|0,f=f+Math.imul(F,et)|0,m=m+Math.imul(F,tt)|0,h=h+Math.imul(d,rt)|0,f=f+Math.imul(d,nt)|0,f=f+Math.imul(S,rt)|0,m=m+Math.imul(S,nt)|0;var wn=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(wn>>>26)|0,wn&=67108863,h=Math.imul(Ue,Ve),f=Math.imul(Ue,Je),f=f+Math.imul(Fe,Ve)|0,m=Math.imul(Fe,Je),h=h+Math.imul(Te,Qe)|0,f=f+Math.imul(Te,Ye)|0,f=f+Math.imul(ve,Qe)|0,m=m+Math.imul(ve,Ye)|0,h=h+Math.imul(Y,Xe)|0,f=f+Math.imul(Y,Ze)|0,f=f+Math.imul(ie,Xe)|0,m=m+Math.imul(ie,Ze)|0,h=h+Math.imul(G,et)|0,f=f+Math.imul(G,tt)|0,f=f+Math.imul(K,et)|0,m=m+Math.imul(K,tt)|0,h=h+Math.imul(P,rt)|0,f=f+Math.imul(P,nt)|0,f=f+Math.imul(F,rt)|0,m=m+Math.imul(F,nt)|0,h=h+Math.imul(d,it)|0,f=f+Math.imul(d,st)|0,f=f+Math.imul(S,it)|0,m=m+Math.imul(S,st)|0;var Mo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Mo>>>26)|0,Mo&=67108863,h=Math.imul(He,Ve),f=Math.imul(He,Je),f=f+Math.imul(We,Ve)|0,m=Math.imul(We,Je),h=h+Math.imul(Ue,Qe)|0,f=f+Math.imul(Ue,Ye)|0,f=f+Math.imul(Fe,Qe)|0,m=m+Math.imul(Fe,Ye)|0,h=h+Math.imul(Te,Xe)|0,f=f+Math.imul(Te,Ze)|0,f=f+Math.imul(ve,Xe)|0,m=m+Math.imul(ve,Ze)|0,h=h+Math.imul(Y,et)|0,f=f+Math.imul(Y,tt)|0,f=f+Math.imul(ie,et)|0,m=m+Math.imul(ie,tt)|0,h=h+Math.imul(G,rt)|0,f=f+Math.imul(G,nt)|0,f=f+Math.imul(K,rt)|0,m=m+Math.imul(K,nt)|0,h=h+Math.imul(P,it)|0,f=f+Math.imul(P,st)|0,f=f+Math.imul(F,it)|0,m=m+Math.imul(F,st)|0,h=h+Math.imul(d,at)|0,f=f+Math.imul(d,ot)|0,f=f+Math.imul(S,at)|0,m=m+Math.imul(S,ot)|0;var Oo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Oo>>>26)|0,Oo&=67108863,h=Math.imul(je,Ve),f=Math.imul(je,Je),f=f+Math.imul(qe,Ve)|0,m=Math.imul(qe,Je),h=h+Math.imul(He,Qe)|0,f=f+Math.imul(He,Ye)|0,f=f+Math.imul(We,Qe)|0,m=m+Math.imul(We,Ye)|0,h=h+Math.imul(Ue,Xe)|0,f=f+Math.imul(Ue,Ze)|0,f=f+Math.imul(Fe,Xe)|0,m=m+Math.imul(Fe,Ze)|0,h=h+Math.imul(Te,et)|0,f=f+Math.imul(Te,tt)|0,f=f+Math.imul(ve,et)|0,m=m+Math.imul(ve,tt)|0,h=h+Math.imul(Y,rt)|0,f=f+Math.imul(Y,nt)|0,f=f+Math.imul(ie,rt)|0,m=m+Math.imul(ie,nt)|0,h=h+Math.imul(G,it)|0,f=f+Math.imul(G,st)|0,f=f+Math.imul(K,it)|0,m=m+Math.imul(K,st)|0,h=h+Math.imul(P,at)|0,f=f+Math.imul(P,ot)|0,f=f+Math.imul(F,at)|0,m=m+Math.imul(F,ot)|0,h=h+Math.imul(d,ct)|0,f=f+Math.imul(d,ft)|0,f=f+Math.imul(S,ct)|0,m=m+Math.imul(S,ft)|0;var No=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(No>>>26)|0,No&=67108863,h=Math.imul(Ge,Ve),f=Math.imul(Ge,Je),f=f+Math.imul($e,Ve)|0,m=Math.imul($e,Je),h=h+Math.imul(je,Qe)|0,f=f+Math.imul(je,Ye)|0,f=f+Math.imul(qe,Qe)|0,m=m+Math.imul(qe,Ye)|0,h=h+Math.imul(He,Xe)|0,f=f+Math.imul(He,Ze)|0,f=f+Math.imul(We,Xe)|0,m=m+Math.imul(We,Ze)|0,h=h+Math.imul(Ue,et)|0,f=f+Math.imul(Ue,tt)|0,f=f+Math.imul(Fe,et)|0,m=m+Math.imul(Fe,tt)|0,h=h+Math.imul(Te,rt)|0,f=f+Math.imul(Te,nt)|0,f=f+Math.imul(ve,rt)|0,m=m+Math.imul(ve,nt)|0,h=h+Math.imul(Y,it)|0,f=f+Math.imul(Y,st)|0,f=f+Math.imul(ie,it)|0,m=m+Math.imul(ie,st)|0,h=h+Math.imul(G,at)|0,f=f+Math.imul(G,ot)|0,f=f+Math.imul(K,at)|0,m=m+Math.imul(K,ot)|0,h=h+Math.imul(P,ct)|0,f=f+Math.imul(P,ft)|0,f=f+Math.imul(F,ct)|0,m=m+Math.imul(F,ft)|0,h=h+Math.imul(d,ut)|0,f=f+Math.imul(d,lt)|0,f=f+Math.imul(S,ut)|0,m=m+Math.imul(S,lt)|0;var Po=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Po>>>26)|0,Po&=67108863,h=Math.imul(ze,Ve),f=Math.imul(ze,Je),f=f+Math.imul(Ke,Ve)|0,m=Math.imul(Ke,Je),h=h+Math.imul(Ge,Qe)|0,f=f+Math.imul(Ge,Ye)|0,f=f+Math.imul($e,Qe)|0,m=m+Math.imul($e,Ye)|0,h=h+Math.imul(je,Xe)|0,f=f+Math.imul(je,Ze)|0,f=f+Math.imul(qe,Xe)|0,m=m+Math.imul(qe,Ze)|0,h=h+Math.imul(He,et)|0,f=f+Math.imul(He,tt)|0,f=f+Math.imul(We,et)|0,m=m+Math.imul(We,tt)|0,h=h+Math.imul(Ue,rt)|0,f=f+Math.imul(Ue,nt)|0,f=f+Math.imul(Fe,rt)|0,m=m+Math.imul(Fe,nt)|0,h=h+Math.imul(Te,it)|0,f=f+Math.imul(Te,st)|0,f=f+Math.imul(ve,it)|0,m=m+Math.imul(ve,st)|0,h=h+Math.imul(Y,at)|0,f=f+Math.imul(Y,ot)|0,f=f+Math.imul(ie,at)|0,m=m+Math.imul(ie,ot)|0,h=h+Math.imul(G,ct)|0,f=f+Math.imul(G,ft)|0,f=f+Math.imul(K,ct)|0,m=m+Math.imul(K,ft)|0,h=h+Math.imul(P,ut)|0,f=f+Math.imul(P,lt)|0,f=f+Math.imul(F,ut)|0,m=m+Math.imul(F,lt)|0,h=h+Math.imul(d,dt)|0,f=f+Math.imul(d,ht)|0,f=f+Math.imul(S,dt)|0,m=m+Math.imul(S,ht)|0;var Ro=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Ro>>>26)|0,Ro&=67108863,h=Math.imul(ze,Qe),f=Math.imul(ze,Ye),f=f+Math.imul(Ke,Qe)|0,m=Math.imul(Ke,Ye),h=h+Math.imul(Ge,Xe)|0,f=f+Math.imul(Ge,Ze)|0,f=f+Math.imul($e,Xe)|0,m=m+Math.imul($e,Ze)|0,h=h+Math.imul(je,et)|0,f=f+Math.imul(je,tt)|0,f=f+Math.imul(qe,et)|0,m=m+Math.imul(qe,tt)|0,h=h+Math.imul(He,rt)|0,f=f+Math.imul(He,nt)|0,f=f+Math.imul(We,rt)|0,m=m+Math.imul(We,nt)|0,h=h+Math.imul(Ue,it)|0,f=f+Math.imul(Ue,st)|0,f=f+Math.imul(Fe,it)|0,m=m+Math.imul(Fe,st)|0,h=h+Math.imul(Te,at)|0,f=f+Math.imul(Te,ot)|0,f=f+Math.imul(ve,at)|0,m=m+Math.imul(ve,ot)|0,h=h+Math.imul(Y,ct)|0,f=f+Math.imul(Y,ft)|0,f=f+Math.imul(ie,ct)|0,m=m+Math.imul(ie,ft)|0,h=h+Math.imul(G,ut)|0,f=f+Math.imul(G,lt)|0,f=f+Math.imul(K,ut)|0,m=m+Math.imul(K,lt)|0,h=h+Math.imul(P,dt)|0,f=f+Math.imul(P,ht)|0,f=f+Math.imul(F,dt)|0,m=m+Math.imul(F,ht)|0;var Bo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Bo>>>26)|0,Bo&=67108863,h=Math.imul(ze,Xe),f=Math.imul(ze,Ze),f=f+Math.imul(Ke,Xe)|0,m=Math.imul(Ke,Ze),h=h+Math.imul(Ge,et)|0,f=f+Math.imul(Ge,tt)|0,f=f+Math.imul($e,et)|0,m=m+Math.imul($e,tt)|0,h=h+Math.imul(je,rt)|0,f=f+Math.imul(je,nt)|0,f=f+Math.imul(qe,rt)|0,m=m+Math.imul(qe,nt)|0,h=h+Math.imul(He,it)|0,f=f+Math.imul(He,st)|0,f=f+Math.imul(We,it)|0,m=m+Math.imul(We,st)|0,h=h+Math.imul(Ue,at)|0,f=f+Math.imul(Ue,ot)|0,f=f+Math.imul(Fe,at)|0,m=m+Math.imul(Fe,ot)|0,h=h+Math.imul(Te,ct)|0,f=f+Math.imul(Te,ft)|0,f=f+Math.imul(ve,ct)|0,m=m+Math.imul(ve,ft)|0,h=h+Math.imul(Y,ut)|0,f=f+Math.imul(Y,lt)|0,f=f+Math.imul(ie,ut)|0,m=m+Math.imul(ie,lt)|0,h=h+Math.imul(G,dt)|0,f=f+Math.imul(G,ht)|0,f=f+Math.imul(K,dt)|0,m=m+Math.imul(K,ht)|0;var Do=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Do>>>26)|0,Do&=67108863,h=Math.imul(ze,et),f=Math.imul(ze,tt),f=f+Math.imul(Ke,et)|0,m=Math.imul(Ke,tt),h=h+Math.imul(Ge,rt)|0,f=f+Math.imul(Ge,nt)|0,f=f+Math.imul($e,rt)|0,m=m+Math.imul($e,nt)|0,h=h+Math.imul(je,it)|0,f=f+Math.imul(je,st)|0,f=f+Math.imul(qe,it)|0,m=m+Math.imul(qe,st)|0,h=h+Math.imul(He,at)|0,f=f+Math.imul(He,ot)|0,f=f+Math.imul(We,at)|0,m=m+Math.imul(We,ot)|0,h=h+Math.imul(Ue,ct)|0,f=f+Math.imul(Ue,ft)|0,f=f+Math.imul(Fe,ct)|0,m=m+Math.imul(Fe,ft)|0,h=h+Math.imul(Te,ut)|0,f=f+Math.imul(Te,lt)|0,f=f+Math.imul(ve,ut)|0,m=m+Math.imul(ve,lt)|0,h=h+Math.imul(Y,dt)|0,f=f+Math.imul(Y,ht)|0,f=f+Math.imul(ie,dt)|0,m=m+Math.imul(ie,ht)|0;var Lo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Lo>>>26)|0,Lo&=67108863,h=Math.imul(ze,rt),f=Math.imul(ze,nt),f=f+Math.imul(Ke,rt)|0,m=Math.imul(Ke,nt),h=h+Math.imul(Ge,it)|0,f=f+Math.imul(Ge,st)|0,f=f+Math.imul($e,it)|0,m=m+Math.imul($e,st)|0,h=h+Math.imul(je,at)|0,f=f+Math.imul(je,ot)|0,f=f+Math.imul(qe,at)|0,m=m+Math.imul(qe,ot)|0,h=h+Math.imul(He,ct)|0,f=f+Math.imul(He,ft)|0,f=f+Math.imul(We,ct)|0,m=m+Math.imul(We,ft)|0,h=h+Math.imul(Ue,ut)|0,f=f+Math.imul(Ue,lt)|0,f=f+Math.imul(Fe,ut)|0,m=m+Math.imul(Fe,lt)|0,h=h+Math.imul(Te,dt)|0,f=f+Math.imul(Te,ht)|0,f=f+Math.imul(ve,dt)|0,m=m+Math.imul(ve,ht)|0;var Uo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Uo>>>26)|0,Uo&=67108863,h=Math.imul(ze,it),f=Math.imul(ze,st),f=f+Math.imul(Ke,it)|0,m=Math.imul(Ke,st),h=h+Math.imul(Ge,at)|0,f=f+Math.imul(Ge,ot)|0,f=f+Math.imul($e,at)|0,m=m+Math.imul($e,ot)|0,h=h+Math.imul(je,ct)|0,f=f+Math.imul(je,ft)|0,f=f+Math.imul(qe,ct)|0,m=m+Math.imul(qe,ft)|0,h=h+Math.imul(He,ut)|0,f=f+Math.imul(He,lt)|0,f=f+Math.imul(We,ut)|0,m=m+Math.imul(We,lt)|0,h=h+Math.imul(Ue,dt)|0,f=f+Math.imul(Ue,ht)|0,f=f+Math.imul(Fe,dt)|0,m=m+Math.imul(Fe,ht)|0;var Fo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Fo>>>26)|0,Fo&=67108863,h=Math.imul(ze,at),f=Math.imul(ze,ot),f=f+Math.imul(Ke,at)|0,m=Math.imul(Ke,ot),h=h+Math.imul(Ge,ct)|0,f=f+Math.imul(Ge,ft)|0,f=f+Math.imul($e,ct)|0,m=m+Math.imul($e,ft)|0,h=h+Math.imul(je,ut)|0,f=f+Math.imul(je,lt)|0,f=f+Math.imul(qe,ut)|0,m=m+Math.imul(qe,lt)|0,h=h+Math.imul(He,dt)|0,f=f+Math.imul(He,ht)|0,f=f+Math.imul(We,dt)|0,m=m+Math.imul(We,ht)|0;var Ho=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Ho>>>26)|0,Ho&=67108863,h=Math.imul(ze,ct),f=Math.imul(ze,ft),f=f+Math.imul(Ke,ct)|0,m=Math.imul(Ke,ft),h=h+Math.imul(Ge,ut)|0,f=f+Math.imul(Ge,lt)|0,f=f+Math.imul($e,ut)|0,m=m+Math.imul($e,lt)|0,h=h+Math.imul(je,dt)|0,f=f+Math.imul(je,ht)|0,f=f+Math.imul(qe,dt)|0,m=m+Math.imul(qe,ht)|0;var Wo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(Wo>>>26)|0,Wo&=67108863,h=Math.imul(ze,ut),f=Math.imul(ze,lt),f=f+Math.imul(Ke,ut)|0,m=Math.imul(Ke,lt),h=h+Math.imul(Ge,dt)|0,f=f+Math.imul(Ge,ht)|0,f=f+Math.imul($e,dt)|0,m=m+Math.imul($e,ht)|0;var jo=(v+h|0)+((f&8191)<<13)|0;v=(m+(f>>>13)|0)+(jo>>>26)|0,jo&=67108863,h=Math.imul(ze,dt),f=Math.imul(ze,ht),f=f+Math.imul(Ke,dt)|0,m=Math.imul(Ke,ht);var qo=(v+h|0)+((f&8191)<<13)|0;return v=(m+(f>>>13)|0)+(qo>>>26)|0,qo&=67108863,w[0]=pn,w[1]=xn,w[2]=bn,w[3]=mn,w[4]=wn,w[5]=Mo,w[6]=Oo,w[7]=No,w[8]=Po,w[9]=Ro,w[10]=Bo,w[11]=Do,w[12]=Lo,w[13]=Uo,w[14]=Fo,w[15]=Ho,w[16]=Wo,w[17]=jo,w[18]=qo,v!==0&&(w[19]=v,y.length++),y};Math.imul||(U=N);function D(M,l,x){x.negative=l.negative^M.negative,x.length=M.length+l.length;for(var y=0,C=0,p=0;p>>26)|0,C+=w>>>26,w&=67108863}x.words[p]=v,y=w,w=C}return y!==0?x.words[p]=y:x.length--,x._strip()}function $(M,l,x){return D(M,l,x)}s.prototype.mulTo=function(l,x){var y,C=this.length+l.length;return this.length===10&&l.length===10?y=U(this,l,x):C<63?y=N(this,l,x):C<1024?y=D(this,l,x):y=$(this,l,x),y},s.prototype.mul=function(l){var x=new s(null);return x.words=new Array(this.length+l.length),this.mulTo(l,x)},s.prototype.mulf=function(l){var x=new s(null);return x.words=new Array(this.length+l.length),$(this,l,x)},s.prototype.imul=function(l){return this.clone().mulTo(l,this)},s.prototype.imuln=function(l){var x=l<0;x&&(l=-l),n(typeof l=="number"),n(l<67108864);for(var y=0,C=0;C>=26,y+=p/67108864|0,y+=w>>>26,this.words[C]=w&67108863}return y!==0&&(this.words[C]=y,this.length++),x?this.ineg():this},s.prototype.muln=function(l){return this.clone().imuln(l)},s.prototype.sqr=function(){return this.mul(this)},s.prototype.isqr=function(){return this.imul(this.clone())},s.prototype.pow=function(l){var x=_(l);if(x.length===0)return new s(1);for(var y=this,C=0;C=0);var x=l%26,y=(l-x)/26,C=67108863>>>26-x<<26-x,p;if(x!==0){var w=0;for(p=0;p>>26-x}w&&(this.words[p]=w,this.length++)}if(y!==0){for(p=this.length-1;p>=0;p--)this.words[p+y]=this.words[p];for(p=0;p=0);var C;x?C=(x-x%26)/26:C=0;var p=l%26,w=Math.min((l-p)/26,this.length),v=67108863^67108863>>>p<w)for(this.length-=w,f=0;f=0&&(m!==0||f>=C);f--){var I=this.words[f]|0;this.words[f]=m<<26-p|I>>>p,m=I&v}return h&&m!==0&&(h.words[h.length++]=m),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},s.prototype.ishrn=function(l,x,y){return n(this.negative===0),this.iushrn(l,x,y)},s.prototype.shln=function(l){return this.clone().ishln(l)},s.prototype.ushln=function(l){return this.clone().iushln(l)},s.prototype.shrn=function(l){return this.clone().ishrn(l)},s.prototype.ushrn=function(l){return this.clone().iushrn(l)},s.prototype.testn=function(l){n(typeof l=="number"&&l>=0);var x=l%26,y=(l-x)/26,C=1<=0);var x=l%26,y=(l-x)/26;if(n(this.negative===0,"imaskn works only with positive numbers"),this.length<=y)return this;if(x!==0&&y++,this.length=Math.min(y,this.length),x!==0){var C=67108863^67108863>>>x<=67108864;x++)this.words[x]-=67108864,x===this.length-1?this.words[x+1]=1:this.words[x+1]++;return this.length=Math.max(this.length,x+1),this},s.prototype.isubn=function(l){if(n(typeof l=="number"),n(l<67108864),l<0)return this.iaddn(-l);if(this.negative!==0)return this.negative=0,this.iaddn(l),this.negative=1,this;if(this.words[0]-=l,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var x=0;x>26)-(h/67108864|0),this.words[p+y]=w&67108863}for(;p>26,this.words[p+y]=w&67108863;if(v===0)return this._strip();for(n(v===-1),v=0,p=0;p>26,this.words[p]=w&67108863;return this.negative=1,this._strip()},s.prototype._wordDiv=function(l,x){var y=this.length-l.length,C=this.clone(),p=l,w=p.words[p.length-1]|0,v=this._countBits(w);y=26-v,y!==0&&(p=p.ushln(y),C.iushln(y),w=p.words[p.length-1]|0);var h=C.length-p.length,f;if(x!=="mod"){f=new s(null),f.length=h+1,f.words=new Array(f.length);for(var m=0;m=0;d--){var S=(C.words[p.length+d]|0)*67108864+(C.words[p.length+d-1]|0);for(S=Math.min(S/w|0,67108863),C._ishlnsubmul(p,S,d);C.negative!==0;)S--,C.negative=0,C._ishlnsubmul(p,1,d),C.isZero()||(C.negative^=1);f&&(f.words[d]=S)}return f&&f._strip(),C._strip(),x!=="div"&&y!==0&&C.iushrn(y),{div:f||null,mod:C}},s.prototype.divmod=function(l,x,y){if(n(!l.isZero()),this.isZero())return{div:new s(0),mod:new s(0)};var C,p,w;return this.negative!==0&&l.negative===0?(w=this.neg().divmod(l,x),x!=="mod"&&(C=w.div.neg()),x!=="div"&&(p=w.mod.neg(),y&&p.negative!==0&&p.iadd(l)),{div:C,mod:p}):this.negative===0&&l.negative!==0?(w=this.divmod(l.neg(),x),x!=="mod"&&(C=w.div.neg()),{div:C,mod:w.mod}):this.negative&l.negative?(w=this.neg().divmod(l.neg(),x),x!=="div"&&(p=w.mod.neg(),y&&p.negative!==0&&p.isub(l)),{div:w.div,mod:p}):l.length>this.length||this.cmp(l)<0?{div:new s(0),mod:this}:l.length===1?x==="div"?{div:this.divn(l.words[0]),mod:null}:x==="mod"?{div:null,mod:new s(this.modrn(l.words[0]))}:{div:this.divn(l.words[0]),mod:new s(this.modrn(l.words[0]))}:this._wordDiv(l,x)},s.prototype.div=function(l){return this.divmod(l,"div",!1).div},s.prototype.mod=function(l){return this.divmod(l,"mod",!1).mod},s.prototype.umod=function(l){return this.divmod(l,"mod",!0).mod},s.prototype.divRound=function(l){var x=this.divmod(l);if(x.mod.isZero())return x.div;var y=x.div.negative!==0?x.mod.isub(l):x.mod,C=l.ushrn(1),p=l.andln(1),w=y.cmp(C);return w<0||p===1&&w===0?x.div:x.div.negative!==0?x.div.isubn(1):x.div.iaddn(1)},s.prototype.modrn=function(l){var x=l<0;x&&(l=-l),n(l<=67108863);for(var y=(1<<26)%l,C=0,p=this.length-1;p>=0;p--)C=(y*C+(this.words[p]|0))%l;return x?-C:C},s.prototype.modn=function(l){return this.modrn(l)},s.prototype.idivn=function(l){var x=l<0;x&&(l=-l),n(l<=67108863);for(var y=0,C=this.length-1;C>=0;C--){var p=(this.words[C]|0)+y*67108864;this.words[C]=p/l|0,y=p%l}return this._strip(),x?this.ineg():this},s.prototype.divn=function(l){return this.clone().idivn(l)},s.prototype.egcd=function(l){n(l.negative===0),n(!l.isZero());var x=this,y=l.clone();x.negative!==0?x=x.umod(l):x=x.clone();for(var C=new s(1),p=new s(0),w=new s(0),v=new s(1),h=0;x.isEven()&&y.isEven();)x.iushrn(1),y.iushrn(1),++h;for(var f=y.clone(),m=x.clone();!x.isZero();){for(var I=0,d=1;!(x.words[0]&d)&&I<26;++I,d<<=1);if(I>0)for(x.iushrn(I);I-- >0;)(C.isOdd()||p.isOdd())&&(C.iadd(f),p.isub(m)),C.iushrn(1),p.iushrn(1);for(var S=0,O=1;!(y.words[0]&O)&&S<26;++S,O<<=1);if(S>0)for(y.iushrn(S);S-- >0;)(w.isOdd()||v.isOdd())&&(w.iadd(f),v.isub(m)),w.iushrn(1),v.iushrn(1);x.cmp(y)>=0?(x.isub(y),C.isub(w),p.isub(v)):(y.isub(x),w.isub(C),v.isub(p))}return{a:w,b:v,gcd:y.iushln(h)}},s.prototype._invmp=function(l){n(l.negative===0),n(!l.isZero());var x=this,y=l.clone();x.negative!==0?x=x.umod(l):x=x.clone();for(var C=new s(1),p=new s(0),w=y.clone();x.cmpn(1)>0&&y.cmpn(1)>0;){for(var v=0,h=1;!(x.words[0]&h)&&v<26;++v,h<<=1);if(v>0)for(x.iushrn(v);v-- >0;)C.isOdd()&&C.iadd(w),C.iushrn(1);for(var f=0,m=1;!(y.words[0]&m)&&f<26;++f,m<<=1);if(f>0)for(y.iushrn(f);f-- >0;)p.isOdd()&&p.iadd(w),p.iushrn(1);x.cmp(y)>=0?(x.isub(y),C.isub(p)):(y.isub(x),p.isub(C))}var I;return x.cmpn(1)===0?I=C:I=p,I.cmpn(0)<0&&I.iadd(l),I},s.prototype.gcd=function(l){if(this.isZero())return l.abs();if(l.isZero())return this.abs();var x=this.clone(),y=l.clone();x.negative=0,y.negative=0;for(var C=0;x.isEven()&&y.isEven();C++)x.iushrn(1),y.iushrn(1);do{for(;x.isEven();)x.iushrn(1);for(;y.isEven();)y.iushrn(1);var p=x.cmp(y);if(p<0){var w=x;x=y,y=w}else if(p===0||y.cmpn(1)===0)break;x.isub(y)}while(!0);return y.iushln(C)},s.prototype.invm=function(l){return this.egcd(l).a.umod(l)},s.prototype.isEven=function(){return(this.words[0]&1)===0},s.prototype.isOdd=function(){return(this.words[0]&1)===1},s.prototype.andln=function(l){return this.words[0]&l},s.prototype.bincn=function(l){n(typeof l=="number");var x=l%26,y=(l-x)/26,C=1<>>26,v&=67108863,this.words[w]=v}return p!==0&&(this.words[w]=p,this.length++),this},s.prototype.isZero=function(){return this.length===1&&this.words[0]===0},s.prototype.cmpn=function(l){var x=l<0;if(this.negative!==0&&!x)return-1;if(this.negative===0&&x)return 1;this._strip();var y;if(this.length>1)y=1;else{x&&(l=-l),n(l<=67108863,"Number is too big");var C=this.words[0]|0;y=C===l?0:Cl.length)return 1;if(this.length=0;y--){var C=this.words[y]|0,p=l.words[y]|0;if(C!==p){Cp&&(x=1);break}}return x},s.prototype.gtn=function(l){return this.cmpn(l)===1},s.prototype.gt=function(l){return this.cmp(l)===1},s.prototype.gten=function(l){return this.cmpn(l)>=0},s.prototype.gte=function(l){return this.cmp(l)>=0},s.prototype.ltn=function(l){return this.cmpn(l)===-1},s.prototype.lt=function(l){return this.cmp(l)===-1},s.prototype.lten=function(l){return this.cmpn(l)<=0},s.prototype.lte=function(l){return this.cmp(l)<=0},s.prototype.eqn=function(l){return this.cmpn(l)===0},s.prototype.eq=function(l){return this.cmp(l)===0},s.red=function(l){return new re(l)},s.prototype.toRed=function(l){return n(!this.red,"Already a number in reduction context"),n(this.negative===0,"red works only with positives"),l.convertTo(this)._forceRed(l)},s.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},s.prototype._forceRed=function(l){return this.red=l,this},s.prototype.forceRed=function(l){return n(!this.red,"Already a number in reduction context"),this._forceRed(l)},s.prototype.redAdd=function(l){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,l)},s.prototype.redIAdd=function(l){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,l)},s.prototype.redSub=function(l){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,l)},s.prototype.redISub=function(l){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,l)},s.prototype.redShl=function(l){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,l)},s.prototype.redMul=function(l){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.mul(this,l)},s.prototype.redIMul=function(l){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.imul(this,l)},s.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},s.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},s.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},s.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},s.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},s.prototype.redPow=function(l){return n(this.red&&!l.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,l)};var L={k256:null,p224:null,p192:null,p25519:null};function z(M,l){this.name=M,this.p=new s(l,16),this.n=this.p.bitLength(),this.k=new s(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}z.prototype._tmp=function(){var l=new s(null);return l.words=new Array(Math.ceil(this.n/13)),l},z.prototype.ireduce=function(l){var x=l,y;do this.split(x,this.tmp),x=this.imulK(x),x=x.iadd(this.tmp),y=x.bitLength();while(y>this.n);var C=y0?x.isub(this.p):x.strip!==void 0?x.strip():x._strip(),x},z.prototype.split=function(l,x){l.iushrn(this.n,0,x)},z.prototype.imulK=function(l){return l.imul(this.k)};function Z(){z.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(Z,z),Z.prototype.split=function(l,x){for(var y=4194303,C=Math.min(l.length,9),p=0;p>>22,w=v}w>>>=22,l.words[p-10]=w,w===0&&l.length>10?l.length-=10:l.length-=9},Z.prototype.imulK=function(l){l.words[l.length]=0,l.words[l.length+1]=0,l.length+=2;for(var x=0,y=0;y>>=26,l.words[y]=p,x=C}return x!==0&&(l.words[l.length++]=x),l},s._prime=function(l){if(L[l])return L[l];var x;if(l==="k256")x=new Z;else if(l==="p224")x=new J;else if(l==="p192")x=new Q;else if(l==="p25519")x=new te;else throw new Error("Unknown prime "+l);return L[l]=x,x};function re(M){if(typeof M=="string"){var l=s._prime(M);this.m=l.p,this.prime=l}else n(M.gtn(1),"modulus must be greater than 1"),this.m=M,this.prime=null}re.prototype._verify1=function(l){n(l.negative===0,"red works only with positives"),n(l.red,"red works only with red numbers")},re.prototype._verify2=function(l,x){n((l.negative|x.negative)===0,"red works only with positives"),n(l.red&&l.red===x.red,"red works only with red numbers")},re.prototype.imod=function(l){return this.prime?this.prime.ireduce(l)._forceRed(this):(g(l,l.umod(this.m)._forceRed(this)),l)},re.prototype.neg=function(l){return l.isZero()?l.clone():this.m.sub(l)._forceRed(this)},re.prototype.add=function(l,x){this._verify2(l,x);var y=l.add(x);return y.cmp(this.m)>=0&&y.isub(this.m),y._forceRed(this)},re.prototype.iadd=function(l,x){this._verify2(l,x);var y=l.iadd(x);return y.cmp(this.m)>=0&&y.isub(this.m),y},re.prototype.sub=function(l,x){this._verify2(l,x);var y=l.sub(x);return y.cmpn(0)<0&&y.iadd(this.m),y._forceRed(this)},re.prototype.isub=function(l,x){this._verify2(l,x);var y=l.isub(x);return y.cmpn(0)<0&&y.iadd(this.m),y},re.prototype.shl=function(l,x){return this._verify1(l),this.imod(l.ushln(x))},re.prototype.imul=function(l,x){return this._verify2(l,x),this.imod(l.imul(x))},re.prototype.mul=function(l,x){return this._verify2(l,x),this.imod(l.mul(x))},re.prototype.isqr=function(l){return this.imul(l,l.clone())},re.prototype.sqr=function(l){return this.mul(l,l)},re.prototype.sqrt=function(l){if(l.isZero())return l.clone();var x=this.m.andln(3);if(n(x%2===1),x===3){var y=this.m.add(new s(1)).iushrn(2);return this.pow(l,y)}for(var C=this.m.subn(1),p=0;!C.isZero()&&C.andln(1)===0;)p++,C.iushrn(1);n(!C.isZero());var w=new s(1).toRed(this),v=w.redNeg(),h=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new s(2*f*f).toRed(this);this.pow(f,h).cmp(v)!==0;)f.redIAdd(v);for(var m=this.pow(f,C),I=this.pow(l,C.addn(1).iushrn(1)),d=this.pow(l,C),S=p;d.cmp(w)!==0;){for(var O=d,P=0;O.cmp(w)!==0;P++)O=O.redSqr();n(P=0;p--){for(var m=x.words[p],I=f-1;I>=0;I--){var d=m>>I&1;if(w!==C[0]&&(w=this.sqr(w)),d===0&&v===0){h=0;continue}v<<=1,v|=d,h++,!(h!==y&&(p!==0||I!==0))&&(w=this.mul(w,C[v]),h=0,v=0)}f=26}return w},re.prototype.convertTo=function(l){var x=l.umod(this.m);return x===l?x.clone():x},re.prototype.convertFrom=function(l){var x=l.clone();return x.red=null,x},s.mont=function(l){return new be(l)};function be(M){re.call(this,M),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new s(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}i(be,re),be.prototype.convertTo=function(l){return this.imod(l.ushln(this.shift))},be.prototype.convertFrom=function(l){var x=this.imod(l.mul(this.rinv));return x.red=null,x},be.prototype.imul=function(l,x){if(l.isZero()||x.isZero())return l.words[0]=0,l.length=1,l;var y=l.imul(x),C=y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=y.isub(C).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},be.prototype.mul=function(l,x){if(l.isZero()||x.isZero())return new s(0)._forceRed(this);var y=l.mul(x),C=y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=y.isub(C).iushrn(this.shift),w=p;return p.cmp(this.m)>=0?w=p.isub(this.m):p.cmpn(0)<0&&(w=p.iadd(this.m)),w._forceRed(this)},be.prototype.invm=function(l){var x=this.imod(l._invmp(this.m).mul(this.r2));return x._forceRed(this)}})(r,Lu)})(nf);var $p=nf.exports;const oe=Xi($p),zp="logger/5.7.0";let p0=!1,x0=!1;const wa={debug:1,default:2,info:2,warning:3,error:4,off:5};let b0=wa.default,Go=null;function Kp(){try{const r=[];if(["NFD","NFC","NFKD","NFKC"].forEach(e=>{try{if("test".normalize(e)!=="test")throw new Error("bad normalize")}catch{r.push(e)}}),r.length)throw new Error("missing "+r.join(", "));if("é".normalize("NFD")!=="é")throw new Error("broken implementation")}catch(r){return r.message}return null}const m0=Kp();var gc;(function(r){r.DEBUG="DEBUG",r.INFO="INFO",r.WARNING="WARNING",r.ERROR="ERROR",r.OFF="OFF"})(gc||(gc={}));var Ar;(function(r){r.UNKNOWN_ERROR="UNKNOWN_ERROR",r.NOT_IMPLEMENTED="NOT_IMPLEMENTED",r.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",r.NETWORK_ERROR="NETWORK_ERROR",r.SERVER_ERROR="SERVER_ERROR",r.TIMEOUT="TIMEOUT",r.BUFFER_OVERRUN="BUFFER_OVERRUN",r.NUMERIC_FAULT="NUMERIC_FAULT",r.MISSING_NEW="MISSING_NEW",r.INVALID_ARGUMENT="INVALID_ARGUMENT",r.MISSING_ARGUMENT="MISSING_ARGUMENT",r.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",r.CALL_EXCEPTION="CALL_EXCEPTION",r.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",r.NONCE_EXPIRED="NONCE_EXPIRED",r.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",r.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",r.TRANSACTION_REPLACED="TRANSACTION_REPLACED",r.ACTION_REJECTED="ACTION_REJECTED"})(Ar||(Ar={}));const w0="0123456789abcdef";let B=class Tt{constructor(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}_log(e,t){const n=e.toLowerCase();wa[n]==null&&this.throwArgumentError("invalid log level name","logLevel",e),!(b0>wa[n])&&console.log.apply(console,t)}debug(...e){this._log(Tt.levels.DEBUG,e)}info(...e){this._log(Tt.levels.INFO,e)}warn(...e){this._log(Tt.levels.WARNING,e)}makeError(e,t,n){if(x0)return this.makeError("censored error",t,{});t||(t=Tt.errors.UNKNOWN_ERROR),n||(n={});const i=[];Object.keys(n).forEach(c=>{const u=n[c];try{if(u instanceof Uint8Array){let g="";for(let b=0;b>4],g+=w0[u[b]&15];i.push(c+"=Uint8Array(0x"+g+")")}else i.push(c+"="+JSON.stringify(u))}catch{i.push(c+"="+JSON.stringify(n[c].toString()))}}),i.push(`code=${t}`),i.push(`version=${this.version}`);const s=e;let a="";switch(t){case Ar.NUMERIC_FAULT:{a="NUMERIC_FAULT";const c=e;switch(c){case"overflow":case"underflow":case"division-by-zero":a+="-"+c;break;case"negative-power":case"negative-width":a+="-unsupported";break;case"unbound-bitwise-result":a+="-unbound-result";break}break}case Ar.CALL_EXCEPTION:case Ar.INSUFFICIENT_FUNDS:case Ar.MISSING_NEW:case Ar.NONCE_EXPIRED:case Ar.REPLACEMENT_UNDERPRICED:case Ar.TRANSACTION_REPLACED:case Ar.UNPREDICTABLE_GAS_LIMIT:a=t;break}a&&(e+=" [ See: https://links.ethers.org/v5-errors-"+a+" ]"),i.length&&(e+=" ("+i.join(", ")+")");const o=new Error(e);return o.reason=s,o.code=t,Object.keys(n).forEach(function(c){o[c]=n[c]}),o}throwError(e,t,n){throw this.makeError(e,t,n)}throwArgumentError(e,t,n){return this.throwError(e,Tt.errors.INVALID_ARGUMENT,{argument:t,value:n})}assert(e,t,n,i){e||this.throwError(t,n,i)}assertArgument(e,t,n,i){e||this.throwArgumentError(t,n,i)}checkNormalize(e){m0&&this.throwError("platform missing String.prototype.normalize",Tt.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:m0})}checkSafeUint53(e,t){typeof e=="number"&&(t==null&&(t="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(t,Tt.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(t,Tt.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))}checkArgumentCount(e,t,n){n?n=": "+n:n="",et&&this.throwError("too many arguments"+n,Tt.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:t})}checkNew(e,t){(e===Object||e==null)&&this.throwError("missing new",Tt.errors.MISSING_NEW,{name:t.name})}checkAbstract(e,t){e===t?this.throwError("cannot instantiate abstract class "+JSON.stringify(t.name)+" directly; use a sub-class",Tt.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):(e===Object||e==null)&&this.throwError("missing new",Tt.errors.MISSING_NEW,{name:t.name})}static globalLogger(){return Go||(Go=new Tt(zp)),Go}static setCensorship(e,t){if(!e&&t&&this.globalLogger().throwError("cannot permanently disable censorship",Tt.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),p0){if(!e)return;this.globalLogger().throwError("error censorship permanent",Tt.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}x0=!!e,p0=!!t}static setLogLevel(e){const t=wa[e.toLowerCase()];if(t==null){Tt.globalLogger().warn("invalid log level - "+e);return}b0=t}static from(e){return new Tt(e)}};B.errors=Ar;B.levels=gc;const Vp="bytes/5.7.0",wt=new B(Vp);function Hu(r){return!!r.toHexString}function Di(r){return r.slice||(r.slice=function(){const e=Array.prototype.slice.call(arguments);return Di(new Uint8Array(Array.prototype.slice.apply(r,e)))}),r}function Gr(r){return Ee(r)&&!(r.length%2)||Dn(r)}function y0(r){return typeof r=="number"&&r==r&&r%1===0}function Dn(r){if(r==null)return!1;if(r.constructor===Uint8Array)return!0;if(typeof r=="string"||!y0(r.length)||r.length<0)return!1;for(let e=0;e=256)return!1}return!0}function j(r,e){if(e||(e={}),typeof r=="number"){wt.checkSafeUint53(r,"invalid arrayify value");const t=[];for(;r;)t.unshift(r&255),r=parseInt(String(r/256));return t.length===0&&t.push(0),Di(new Uint8Array(t))}if(e.allowMissingPrefix&&typeof r=="string"&&r.substring(0,2)!=="0x"&&(r="0x"+r),Hu(r)&&(r=r.toHexString()),Ee(r)){let t=r.substring(2);t.length%2&&(e.hexPad==="left"?t="0"+t:e.hexPad==="right"?t+="0":wt.throwArgumentError("hex data is odd-length","value",r));const n=[];for(let i=0;ij(i)),t=e.reduce((i,s)=>i+s.length,0),n=new Uint8Array(t);return e.reduce((i,s)=>(n.set(s,i),i+s.length),0),Di(n)}function Hr(r){let e=j(r);if(e.length===0)return e;let t=0;for(;te&&wt.throwArgumentError("value out of range","value",arguments[0]);const t=new Uint8Array(e);return t.set(r,e-r.length),Di(t)}function Ee(r,e){return!(typeof r!="string"||!r.match(/^0x[0-9A-Fa-f]*$/)||e&&r.length!==2+2*e)}const $o="0123456789abcdef";function W(r,e){if(e||(e={}),typeof r=="number"){wt.checkSafeUint53(r,"invalid hexlify value");let t="";for(;r;)t=$o[r&15]+t,r=Math.floor(r/16);return t.length?(t.length%2&&(t="0"+t),"0x"+t):"0x00"}if(typeof r=="bigint")return r=r.toString(16),r.length%2?"0x0"+r:"0x"+r;if(e.allowMissingPrefix&&typeof r=="string"&&r.substring(0,2)!=="0x"&&(r="0x"+r),Hu(r))return r.toHexString();if(Ee(r))return r.length%2&&(e.hexPad==="left"?r="0x0"+r.substring(2):e.hexPad==="right"?r+="0":wt.throwArgumentError("hex data is odd-length","value",r)),r.toLowerCase();if(Dn(r)){let t="0x";for(let n=0;n>4]+$o[i&15]}return t}return wt.throwArgumentError("invalid hexlify value","value",r)}function $r(r){if(typeof r!="string")r=W(r);else if(!Ee(r)||r.length%2)return null;return(r.length-2)/2}function yt(r,e,t){return typeof r!="string"?r=W(r):(!Ee(r)||r.length%2)&&wt.throwArgumentError("invalid hexData","value",r),e=2+2*e,t!=null?"0x"+r.substring(e,2+2*t):"0x"+r.substring(e)}function Qt(r){let e="0x";return r.forEach(t=>{e+=W(t).substring(2)}),e}function kr(r){const e=Wu(W(r,{hexPad:"left"}));return e==="0x"?"0x0":e}function Wu(r){typeof r!="string"&&(r=W(r)),Ee(r)||wt.throwArgumentError("invalid hex string","value",r),r=r.substring(2);let e=0;for(;e2*e+2&&wt.throwArgumentError("value out of range","value",arguments[1]);r.length<2*e+2;)r="0x0"+r.substring(2);return r}function mi(r){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(Gr(r)){let t=j(r);t.length===64?(e.v=27+(t[32]>>7),t[32]&=127,e.r=W(t.slice(0,32)),e.s=W(t.slice(32,64))):t.length===65?(e.r=W(t.slice(0,32)),e.s=W(t.slice(32,64)),e.v=t[64]):wt.throwArgumentError("invalid signature string","signature",r),e.v<27&&(e.v===0||e.v===1?e.v+=27:wt.throwArgumentError("signature invalid v byte","signature",r)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(t[32]|=128),e._vs=W(t.slice(32,64))}else{if(e.r=r.r,e.s=r.s,e.v=r.v,e.recoveryParam=r.recoveryParam,e._vs=r._vs,e._vs!=null){const i=ws(j(e._vs),32);e._vs=W(i);const s=i[0]>=128?1:0;e.recoveryParam==null?e.recoveryParam=s:e.recoveryParam!==s&&wt.throwArgumentError("signature recoveryParam mismatch _vs","signature",r),i[0]&=127;const a=W(i);e.s==null?e.s=a:e.s!==a&&wt.throwArgumentError("signature v mismatch _vs","signature",r)}if(e.recoveryParam==null)e.v==null?wt.throwArgumentError("signature missing v and recoveryParam","signature",r):e.v===0||e.v===1?e.recoveryParam=e.v:e.recoveryParam=1-e.v%2;else if(e.v==null)e.v=27+e.recoveryParam;else{const i=e.v===0||e.v===1?e.v:1-e.v%2;e.recoveryParam!==i&&wt.throwArgumentError("signature recoveryParam mismatch v","signature",r)}e.r==null||!Ee(e.r)?wt.throwArgumentError("signature missing or invalid r","signature",r):e.r=Re(e.r,32),e.s==null||!Ee(e.s)?wt.throwArgumentError("signature missing or invalid s","signature",r):e.s=Re(e.s,32);const t=j(e.s);t[0]>=128&&wt.throwArgumentError("signature s out of range","signature",r),e.recoveryParam&&(t[0]|=128);const n=W(t);e._vs&&(Ee(e._vs)||wt.throwArgumentError("signature invalid _vs","signature",r),e._vs=Re(e._vs,32)),e._vs==null?e._vs=n:e._vs!==n&&wt.throwArgumentError("signature _vs mismatch v and s","signature",r)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}function pc(r){return r=mi(r),W(Pe([r.r,r.s,r.recoveryParam?"0x1c":"0x1b"]))}const ju="bignumber/5.7.0";var Bs=oe.BN;const Xr=new B(ju),zo={},v0=9007199254740991;function Jp(r){return r!=null&&(R.isBigNumber(r)||typeof r=="number"&&r%1===0||typeof r=="string"&&!!r.match(/^-?[0-9]+$/)||Ee(r)||typeof r=="bigint"||Dn(r))}let E0=!1;class R{constructor(e,t){e!==zo&&Xr.throwError("cannot call constructor directly; use BigNumber.from",B.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=t,this._isBigNumber=!0,Object.freeze(this)}fromTwos(e){return er(me(this).fromTwos(e))}toTwos(e){return er(me(this).toTwos(e))}abs(){return this._hex[0]==="-"?R.from(this._hex.substring(1)):this}add(e){return er(me(this).add(me(e)))}sub(e){return er(me(this).sub(me(e)))}div(e){return R.from(e).isZero()&&fr("division-by-zero","div"),er(me(this).div(me(e)))}mul(e){return er(me(this).mul(me(e)))}mod(e){const t=me(e);return t.isNeg()&&fr("division-by-zero","mod"),er(me(this).umod(t))}pow(e){const t=me(e);return t.isNeg()&&fr("negative-power","pow"),er(me(this).pow(t))}and(e){const t=me(e);return(this.isNegative()||t.isNeg())&&fr("unbound-bitwise-result","and"),er(me(this).and(t))}or(e){const t=me(e);return(this.isNegative()||t.isNeg())&&fr("unbound-bitwise-result","or"),er(me(this).or(t))}xor(e){const t=me(e);return(this.isNegative()||t.isNeg())&&fr("unbound-bitwise-result","xor"),er(me(this).xor(t))}mask(e){return(this.isNegative()||e<0)&&fr("negative-width","mask"),er(me(this).maskn(e))}shl(e){return(this.isNegative()||e<0)&&fr("negative-width","shl"),er(me(this).shln(e))}shr(e){return(this.isNegative()||e<0)&&fr("negative-width","shr"),er(me(this).shrn(e))}eq(e){return me(this).eq(me(e))}lt(e){return me(this).lt(me(e))}lte(e){return me(this).lte(me(e))}gt(e){return me(this).gt(me(e))}gte(e){return me(this).gte(me(e))}isNegative(){return this._hex[0]==="-"}isZero(){return me(this).isZero()}toNumber(){try{return me(this).toNumber()}catch{fr("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return Xr.throwError("this platform does not support BigInt",B.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?E0||(E0=!0,Xr.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?Xr.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",B.errors.UNEXPECTED_ARGUMENT,{}):Xr.throwError("BigNumber.toString does not accept parameters",B.errors.UNEXPECTED_ARGUMENT,{})),me(this).toString(10)}toHexString(){return this._hex}toJSON(e){return{type:"BigNumber",hex:this.toHexString()}}static from(e){if(e instanceof R)return e;if(typeof e=="string")return e.match(/^-?0x[0-9a-f]+$/i)?new R(zo,Ds(e)):e.match(/^-?[0-9]+$/)?new R(zo,Ds(new Bs(e))):Xr.throwArgumentError("invalid BigNumber string","value",e);if(typeof e=="number")return e%1&&fr("underflow","BigNumber.from",e),(e>=v0||e<=-v0)&&fr("overflow","BigNumber.from",e),R.from(String(e));const t=e;if(typeof t=="bigint")return R.from(t.toString());if(Dn(t))return R.from(W(t));if(t)if(t.toHexString){const n=t.toHexString();if(typeof n=="string")return R.from(n)}else{let n=t._hex;if(n==null&&t.type==="BigNumber"&&(n=t.hex),typeof n=="string"&&(Ee(n)||n[0]==="-"&&Ee(n.substring(1))))return R.from(n)}return Xr.throwArgumentError("invalid BigNumber value","value",e)}static isBigNumber(e){return!!(e&&e._isBigNumber)}}function Ds(r){if(typeof r!="string")return Ds(r.toString(16));if(r[0]==="-")return r=r.substring(1),r[0]==="-"&&Xr.throwArgumentError("invalid hex","value",r),r=Ds(r),r==="0x00"?r:"-"+r;if(r.substring(0,2)!=="0x"&&(r="0x"+r),r==="0x")return"0x00";for(r.length%2&&(r="0x0"+r.substring(2));r.length>4&&r.substring(0,4)==="0x00";)r="0x"+r.substring(4);return r}function er(r){return R.from(Ds(r))}function me(r){const e=R.from(r).toHexString();return e[0]==="-"?new Bs("-"+e.substring(3),16):new Bs(e.substring(2),16)}function fr(r,e,t){const n={fault:r,operation:e};return t!=null&&(n.value=t),Xr.throwError(r,B.errors.NUMERIC_FAULT,n)}function Qp(r){return new Bs(r,36).toString(16)}function Yp(r){return new Bs(r,16).toString(36)}const Yt=new B(ju),ys={},qu=R.from(0),Gu=R.from(-1);function $u(r,e,t,n){const i={fault:e,operation:t};return n!==void 0&&(i.value=n),Yt.throwError(r,B.errors.NUMERIC_FAULT,i)}let vs="0";for(;vs.length<256;)vs+=vs;function sf(r){if(typeof r!="number")try{r=R.from(r).toNumber()}catch{}return typeof r=="number"&&r>=0&&r<=256&&!(r%1)?"1"+vs.substring(0,r):Yt.throwArgumentError("invalid decimal size","decimals",r)}function ya(r,e){e==null&&(e=0);const t=sf(e);r=R.from(r);const n=r.lt(qu);n&&(r=r.mul(Gu));let i=r.mod(t).toString();for(;i.length2&&Yt.throwArgumentError("too many decimal points","value",r);let s=i[0],a=i[1];for(s||(s="0"),a||(a="0");a[a.length-1]==="0";)a=a.substring(0,a.length-1);for(a.length>t.length-1&&$u("fractional component exceeds decimals","underflow","parseFixed"),a===""&&(a="0");a.lengthe[a]==null?c:(typeof e[a]!==o&&Yt.throwArgumentError("invalid fixed format ("+a+" not "+o+")","format."+a,e[a]),e[a]);t=s("signed","boolean",t),n=s("width","number",n),i=s("decimals","number",i)}return n%8&&Yt.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",n),i>80&&Yt.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",i),new Li(ys,t,n,i)}}class Dt{constructor(e,t,n,i){e!==ys&&Yt.throwError("cannot use FixedNumber constructor; use FixedNumber.from",B.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=i,this._hex=t,this._value=n,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(e){this.format.name!==e.format.name&&Yt.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",e)}addUnsafe(e){this._checkFormat(e);const t=Nr(this._value,this.format.decimals),n=Nr(e._value,e.format.decimals);return Dt.fromValue(t.add(n),this.format.decimals,this.format)}subUnsafe(e){this._checkFormat(e);const t=Nr(this._value,this.format.decimals),n=Nr(e._value,e.format.decimals);return Dt.fromValue(t.sub(n),this.format.decimals,this.format)}mulUnsafe(e){this._checkFormat(e);const t=Nr(this._value,this.format.decimals),n=Nr(e._value,e.format.decimals);return Dt.fromValue(t.mul(n).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(e){this._checkFormat(e);const t=Nr(this._value,this.format.decimals),n=Nr(e._value,e.format.decimals);return Dt.fromValue(t.mul(this.format._multiplier).div(n),this.format.decimals,this.format)}floor(){const e=this.toString().split(".");e.length===1&&e.push("0");let t=Dt.from(e[0],this.format);const n=!e[1].match(/^(0*)$/);return this.isNegative()&&n&&(t=t.subUnsafe(A0.toFormat(t.format))),t}ceiling(){const e=this.toString().split(".");e.length===1&&e.push("0");let t=Dt.from(e[0],this.format);const n=!e[1].match(/^(0*)$/);return!this.isNegative()&&n&&(t=t.addUnsafe(A0.toFormat(t.format))),t}round(e){e==null&&(e=0);const t=this.toString().split(".");if(t.length===1&&t.push("0"),(e<0||e>80||e%1)&&Yt.throwArgumentError("invalid decimal count","decimals",e),t[1].length<=e)return this;const n=Dt.from("1"+vs.substring(0,e),this.format),i=Xp.toFormat(this.format);return this.mulUnsafe(n).addUnsafe(i).floor().divUnsafe(n)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(e){if(e==null)return this._hex;e%8&&Yt.throwArgumentError("invalid byte width","width",e);const t=R.from(this._hex).fromTwos(this.format.width).toTwos(e).toHexString();return Re(t,e/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(e){return Dt.fromString(this._value,e)}static fromValue(e,t,n){return n==null&&t!=null&&!Jp(t)&&(n=t,t=null),t==null&&(t=0),n==null&&(n="fixed"),Dt.fromString(ya(e,t),Li.from(n))}static fromString(e,t){t==null&&(t="fixed");const n=Li.from(t),i=Nr(e,n.decimals);!n.signed&&i.lt(qu)&&$u("unsigned value cannot be negative","overflow","value",e);let s=null;n.signed?s=i.toTwos(n.width).toHexString():(s=i.toHexString(),s=Re(s,n.width/8));const a=ya(i,n.decimals);return new Dt(ys,s,a,n)}static fromBytes(e,t){t==null&&(t="fixed");const n=Li.from(t);if(j(e).length>n.width/8)throw new Error("overflow");let i=R.from(e);n.signed&&(i=i.fromTwos(n.width));const s=i.toTwos((n.signed?0:1)+n.width).toHexString(),a=ya(i,n.decimals);return new Dt(ys,s,a,n)}static from(e,t){if(typeof e=="string")return Dt.fromString(e,t);if(Dn(e))return Dt.fromBytes(e,t);try{return Dt.fromValue(e,0,t)}catch(n){if(n.code!==B.errors.INVALID_ARGUMENT)throw n}return Yt.throwArgumentError("invalid FixedNumber value","value",e)}static isFixedNumber(e){return!!(e&&e._isFixedNumber)}}const A0=Dt.from(1),Xp=Dt.from("0.5"),Zp="properties/5.7.0";var e1=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(g){try{u(n.next(g))}catch(b){a(b)}}function c(g){try{u(n.throw(g))}catch(b){a(b)}}function u(g){g.done?s(g.value):i(g.value).then(o,c)}u((n=n.apply(r,e||[])).next())})};const Ba=new B(Zp);function q(r,e,t){Object.defineProperty(r,e,{enumerable:!0,value:t,writable:!1})}function Cr(r,e){for(let t=0;t<32;t++){if(r[e])return r[e];if(!r.prototype||typeof r.prototype!="object")break;r=Object.getPrototypeOf(r.prototype).constructor}return null}function Le(r){return e1(this,void 0,void 0,function*(){const e=Object.keys(r).map(n=>{const i=r[n];return Promise.resolve(i).then(s=>({key:n,value:s}))});return(yield Promise.all(e)).reduce((n,i)=>(n[i.key]=i.value,n),{})})}function af(r,e){(!r||typeof r!="object")&&Ba.throwArgumentError("invalid object","object",r),Object.keys(r).forEach(t=>{e[t]||Ba.throwArgumentError("invalid object key - "+t,"transaction:"+t,r)})}function kt(r){const e={};for(const t in r)e[t]=r[t];return e}const t1={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function zu(r){if(r==null||t1[typeof r])return!0;if(Array.isArray(r)||typeof r=="object"){if(!Object.isFrozen(r))return!1;const e=Object.keys(r);for(let t=0;tzr(e)));if(typeof r=="object"){const e={};for(const t in r){const n=r[t];n!==void 0&&q(e,t,zr(n))}return e}return Ba.throwArgumentError(`Cannot deepCopy ${typeof r}`,"object",r)}function zr(r){return r1(r)}class wi{constructor(e){for(const t in e)this[t]=zr(e[t])}}const Js="abi/5.7.0",Ae=new B(Js),li={};let _0={calldata:!0,memory:!0,storage:!0},n1={calldata:!0,memory:!0};function fa(r,e){if(r==="bytes"||r==="string"){if(_0[e])return!0}else if(r==="address"){if(e==="payable")return!0}else if((r.indexOf("[")>=0||r==="tuple")&&n1[e])return!0;return(_0[e]||e==="payable")&&Ae.throwArgumentError("invalid modifier","name",e),!1}function i1(r,e){let t=r;function n(o){Ae.throwArgumentError(`unexpected character at position ${o}`,"param",r)}r=r.replace(/\s/g," ");function i(o){let c={type:"",name:"",parent:o,state:{allowType:!0}};return e&&(c.indexed=!1),c}let s={type:"",name:"",state:{allowType:!0}},a=s;for(let o=0;oJSON.parse(i.format(e)))),JSON.stringify(n)}let t="";return this.baseType==="array"?(t+=this.arrayChildren.format(e),t+="["+(this.arrayLength<0?"":String(this.arrayLength))+"]"):this.baseType==="tuple"?(e!==Ce.sighash&&(t+=this.type),t+="("+this.components.map(n=>n.format(e)).join(e===Ce.full?", ":",")+")"):t+=this.type,e!==Ce.sighash&&(this.indexed===!0&&(t+=" indexed"),e===Ce.full&&this.name&&(t+=" "+this.name)),t}static from(e,t){return typeof e=="string"?Ot.fromString(e,t):Ot.fromObject(e)}static fromObject(e){return Ot.isParamType(e)?e:new Ot(li,{name:e.name||null,type:Ti(e.type),indexed:e.indexed==null?null:!!e.indexed,components:e.components?e.components.map(Ot.fromObject):null})}static fromString(e,t){function n(i){return Ot.fromObject({name:i.name,type:i.type,indexed:i.indexed,components:i.components})}return n(i1(e,!!t))}static isParamType(e){return!!(e!=null&&e._isParamType)}}function Ls(r,e){return o1(r).map(t=>Ot.fromString(t,e))}class Dr{constructor(e,t){e!==li&&Ae.throwError("use a static from method",B.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),va(this,t),this._isFragment=!0,Object.freeze(this)}static from(e){return Dr.isFragment(e)?e:typeof e=="string"?Dr.fromString(e):Dr.fromObject(e)}static fromObject(e){if(Dr.isFragment(e))return e;switch(e.type){case"function":return Sr.fromObject(e);case"event":return Br.fromObject(e);case"constructor":return _r.fromObject(e);case"error":return rn.fromObject(e);case"fallback":case"receive":return null}return Ae.throwArgumentError("invalid fragment object","value",e)}static fromString(e){return e=e.replace(/\s/g," "),e=e.replace(/\(/g," (").replace(/\)/g,") ").replace(/\s+/g," "),e=e.trim(),e.split(" ")[0]==="event"?Br.fromString(e.substring(5).trim()):e.split(" ")[0]==="function"?Sr.fromString(e.substring(8).trim()):e.split("(")[0].trim()==="constructor"?_r.fromString(e.trim()):e.split(" ")[0]==="error"?rn.fromString(e.substring(5).trim()):Ae.throwArgumentError("unsupported fragment","value",e)}static isFragment(e){return!!(e&&e._isFragment)}}class Br extends Dr{format(e){if(e||(e=Ce.sighash),Ce[e]||Ae.throwArgumentError("invalid format type","format",e),e===Ce.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map(n=>JSON.parse(n.format(e)))});let t="";return e!==Ce.sighash&&(t+="event "),t+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===Ce.full?", ":",")+") ",e!==Ce.sighash&&this.anonymous&&(t+="anonymous "),t.trim()}static from(e){return typeof e=="string"?Br.fromString(e):Br.fromObject(e)}static fromObject(e){if(Br.isEventFragment(e))return e;e.type!=="event"&&Ae.throwArgumentError("invalid event object","value",e);const t={name:Us(e.name),anonymous:e.anonymous,inputs:e.inputs?e.inputs.map(Ot.fromObject):[],type:"event"};return new Br(li,t)}static fromString(e){let t=e.match(Fs);t||Ae.throwArgumentError("invalid event string","value",e);let n=!1;return t[3].split(" ").forEach(i=>{switch(i.trim()){case"anonymous":n=!0;break;case"":break;default:Ae.warn("unknown modifier: "+i)}}),Br.fromObject({name:t[1].trim(),anonymous:n,inputs:Ls(t[2],!0),type:"event"})}static isEventFragment(e){return e&&e._isFragment&&e.type==="event"}}function Ku(r,e){e.gas=null;let t=r.split("@");return t.length!==1?(t.length>2&&Ae.throwArgumentError("invalid human-readable ABI signature","value",r),t[1].match(/^[0-9]+$/)||Ae.throwArgumentError("invalid human-readable ABI signature gas","value",r),e.gas=R.from(t[1]),t[0]):r}function Vu(r,e){e.constant=!1,e.payable=!1,e.stateMutability="nonpayable",r.split(" ").forEach(t=>{switch(t.trim()){case"constant":e.constant=!0;break;case"payable":e.payable=!0,e.stateMutability="payable";break;case"nonpayable":e.payable=!1,e.stateMutability="nonpayable";break;case"pure":e.constant=!0,e.stateMutability="pure";break;case"view":e.constant=!0,e.stateMutability="view";break;case"external":case"public":case"":break;default:console.log("unknown modifier: "+t)}})}function Ju(r){let e={constant:!1,payable:!0,stateMutability:"payable"};return r.stateMutability!=null?(e.stateMutability=r.stateMutability,e.constant=e.stateMutability==="view"||e.stateMutability==="pure",r.constant!=null&&!!r.constant!==e.constant&&Ae.throwArgumentError("cannot have constant function with mutability "+e.stateMutability,"value",r),e.payable=e.stateMutability==="payable",r.payable!=null&&!!r.payable!==e.payable&&Ae.throwArgumentError("cannot have payable function with mutability "+e.stateMutability,"value",r)):r.payable!=null?(e.payable=!!r.payable,r.constant==null&&!e.payable&&r.type!=="constructor"&&Ae.throwArgumentError("unable to determine stateMutability","value",r),e.constant=!!r.constant,e.constant?e.stateMutability="view":e.stateMutability=e.payable?"payable":"nonpayable",e.payable&&e.constant&&Ae.throwArgumentError("cannot have constant payable function","value",r)):r.constant!=null?(e.constant=!!r.constant,e.payable=!e.constant,e.stateMutability=e.constant?"view":"payable"):r.type!=="constructor"&&Ae.throwArgumentError("unable to determine stateMutability","value",r),e}class _r extends Dr{format(e){if(e||(e=Ce.sighash),Ce[e]||Ae.throwArgumentError("invalid format type","format",e),e===Ce.json)return JSON.stringify({type:"constructor",stateMutability:this.stateMutability!=="nonpayable"?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(n=>JSON.parse(n.format(e)))});e===Ce.sighash&&Ae.throwError("cannot format a constructor for sighash",B.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});let t="constructor("+this.inputs.map(n=>n.format(e)).join(e===Ce.full?", ":",")+") ";return this.stateMutability&&this.stateMutability!=="nonpayable"&&(t+=this.stateMutability+" "),t.trim()}static from(e){return typeof e=="string"?_r.fromString(e):_r.fromObject(e)}static fromObject(e){if(_r.isConstructorFragment(e))return e;e.type!=="constructor"&&Ae.throwArgumentError("invalid constructor object","value",e);let t=Ju(e);t.constant&&Ae.throwArgumentError("constructor cannot be constant","value",e);const n={name:null,type:e.type,inputs:e.inputs?e.inputs.map(Ot.fromObject):[],payable:t.payable,stateMutability:t.stateMutability,gas:e.gas?R.from(e.gas):null};return new _r(li,n)}static fromString(e){let t={type:"constructor"};e=Ku(e,t);let n=e.match(Fs);return(!n||n[1].trim()!=="constructor")&&Ae.throwArgumentError("invalid constructor string","value",e),t.inputs=Ls(n[2].trim(),!1),Vu(n[3].trim(),t),_r.fromObject(t)}static isConstructorFragment(e){return e&&e._isFragment&&e.type==="constructor"}}class Sr extends _r{format(e){if(e||(e=Ce.sighash),Ce[e]||Ae.throwArgumentError("invalid format type","format",e),e===Ce.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:this.stateMutability!=="nonpayable"?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(n=>JSON.parse(n.format(e))),outputs:this.outputs.map(n=>JSON.parse(n.format(e)))});let t="";return e!==Ce.sighash&&(t+="function "),t+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===Ce.full?", ":",")+") ",e!==Ce.sighash&&(this.stateMutability?this.stateMutability!=="nonpayable"&&(t+=this.stateMutability+" "):this.constant&&(t+="view "),this.outputs&&this.outputs.length&&(t+="returns ("+this.outputs.map(n=>n.format(e)).join(", ")+") "),this.gas!=null&&(t+="@"+this.gas.toString()+" ")),t.trim()}static from(e){return typeof e=="string"?Sr.fromString(e):Sr.fromObject(e)}static fromObject(e){if(Sr.isFunctionFragment(e))return e;e.type!=="function"&&Ae.throwArgumentError("invalid function object","value",e);let t=Ju(e);const n={type:e.type,name:Us(e.name),constant:t.constant,inputs:e.inputs?e.inputs.map(Ot.fromObject):[],outputs:e.outputs?e.outputs.map(Ot.fromObject):[],payable:t.payable,stateMutability:t.stateMutability,gas:e.gas?R.from(e.gas):null};return new Sr(li,n)}static fromString(e){let t={type:"function"};e=Ku(e,t);let n=e.split(" returns ");n.length>2&&Ae.throwArgumentError("invalid function string","value",e);let i=n[0].match(Fs);if(i||Ae.throwArgumentError("invalid function signature","value",e),t.name=i[1].trim(),t.name&&Us(t.name),t.inputs=Ls(i[2],!1),Vu(i[3].trim(),t),n.length>1){let s=n[1].match(Fs);(s[1].trim()!=""||s[3].trim()!="")&&Ae.throwArgumentError("unexpected tokens","value",e),t.outputs=Ls(s[2],!1)}else t.outputs=[];return Sr.fromObject(t)}static isFunctionFragment(e){return e&&e._isFragment&&e.type==="function"}}function S0(r){const e=r.format();return(e==="Error(string)"||e==="Panic(uint256)")&&Ae.throwArgumentError(`cannot specify user defined ${e} error`,"fragment",r),r}class rn extends Dr{format(e){if(e||(e=Ce.sighash),Ce[e]||Ae.throwArgumentError("invalid format type","format",e),e===Ce.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(n=>JSON.parse(n.format(e)))});let t="";return e!==Ce.sighash&&(t+="error "),t+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===Ce.full?", ":",")+") ",t.trim()}static from(e){return typeof e=="string"?rn.fromString(e):rn.fromObject(e)}static fromObject(e){if(rn.isErrorFragment(e))return e;e.type!=="error"&&Ae.throwArgumentError("invalid error object","value",e);const t={type:e.type,name:Us(e.name),inputs:e.inputs?e.inputs.map(Ot.fromObject):[]};return S0(new rn(li,t))}static fromString(e){let t={type:"error"},n=e.match(Fs);return n||Ae.throwArgumentError("invalid error signature","value",e),t.name=n[1].trim(),t.name&&Us(t.name),t.inputs=Ls(n[2],!1),S0(rn.fromObject(t))}static isErrorFragment(e){return e&&e._isFragment&&e.type==="error"}}function Ti(r){return r.match(/^uint($|[^1-9])/)?r="uint256"+r.substring(4):r.match(/^int($|[^1-9])/)&&(r="int256"+r.substring(3)),r}const a1=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function Us(r){return(!r||!r.match(a1))&&Ae.throwArgumentError(`invalid identifier "${r}"`,"value",r),r}const Fs=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");function o1(r){r=r.trim();let e=[],t="",n=0;for(let i=0;ithis.wordSize&&of.throwError("value out-of-bounds",B.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:t.length}),t.length%this.wordSize&&(t=Pe([this._padding.slice(t.length%this.wordSize),t])),t}writeValue(e){return this._writeData(this._getValue(e))}writeUpdatableValue(){const e=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,t=>{this._data[e]=this._getValue(t)}}}class Da{constructor(e,t,n,i){q(this,"_data",j(e)),q(this,"wordSize",t||32),q(this,"_coerceFunc",n),q(this,"allowLoose",i),this._offset=0}get data(){return W(this._data)}get consumed(){return this._offset}static coerce(e,t){let n=e.match("^u?int([0-9]+)$");return n&&parseInt(n[1])<=48&&(t=t.toNumber()),t}coerce(e,t){return this._coerceFunc?this._coerceFunc(e,t):Da.coerce(e,t)}_peekBytes(e,t,n){let i=Math.ceil(t/this.wordSize)*this.wordSize;return this._offset+i>this._data.length&&(this.allowLoose&&n&&this._offset+t<=this._data.length?i=t:of.throwError("data out-of-bounds",B.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+i})),this._data.slice(this._offset,this._offset+i)}subReader(e){return new Da(this._data.slice(this._offset+e),this.wordSize,this._coerceFunc,this.allowLoose)}readBytes(e,t){let n=this._peekBytes(0,e,!!t);return this._offset+=n.length,n.slice(0,e)}readValue(){return R.from(this.readBytes(this.wordSize))}}var Yu={exports:{}};/** * [js-sha3]{@link https://github.com/emn178/js-sha3} * * @version 0.8.0 diff --git a/assets/01-overview-eenILnvj.js b/assets/01-overview-CkEtw05F.js similarity index 98% rename from assets/01-overview-eenILnvj.js rename to assets/01-overview-CkEtw05F.js index c46a6a1cc10..d8958ae6066 100644 --- a/assets/01-overview-eenILnvj.js +++ b/assets/01-overview-CkEtw05F.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";const r={title:"Sequence Embedded Wallet",description:"undefined"};function a(n){const t={a:"a",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"sequence-embedded-wallet",children:["Sequence Embedded Wallet",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-embedded-wallet",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-DR6XzkYl.js";const r={title:"Sequence Embedded Wallet",description:"undefined"};function a(n){const t={a:"a",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"sequence-embedded-wallet",children:["Sequence Embedded Wallet",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-embedded-wallet",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"Sequence Embedded Wallet (or Wallet-as-a-Service) enables the creation, management and usage of fully functional EVM compatible wallets. These wallets can be created on-demand for each user and allow you to integrate an application with an Ethereum compatible blockchain, while using familiar constructions like RPC APIs."}),` `,e.jsx(t.p,{children:"Sequence Embedded Wallet offers real non-custodial wallets and the system guarantees that each created wallet can only be accessed with the consent of the owner of the wallet."}),` `,e.jsxs(t.h2,{id:"architecture-overview",children:["Architecture overview",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#architecture-overview",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/01-overview-DuQI0pZU.js b/assets/01-overview-D4iMjiil.js similarity index 95% rename from assets/01-overview-DuQI0pZU.js rename to assets/01-overview-D4iMjiil.js index ccaceea2126..032dbf612ee 100644 --- a/assets/01-overview-DuQI0pZU.js +++ b/assets/01-overview-D4iMjiil.js @@ -1,4 +1,4 @@ -import{d as n,j as e,e as s}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";import{C as i,a as o}from"./CardGrid-aCCIcMd4.js";const u={title:"Sequence Market",description:"undefined"};function a(r){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",hr:"hr",p:"p",...n(),...r.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"sequence-market",children:["Sequence Market",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-market",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as e,e as s}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";import{C as i,a as o}from"./CardGrid-BnCcSD8R.js";const u={title:"Sequence Market",description:"undefined"};function a(r){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",hr:"hr",p:"p",...n(),...r.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"sequence-market",children:["Sequence Market",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-market",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"The Sequence Marketplace API service offers a simple and fast way to interact with sequence marketplace protocols to build a custom marketplace while accelerating your development time. The API is designed to be easy to use and to have all the features you need to build a fully functional marketplace."}),` `,e.jsx(t.hr,{}),` `,e.jsxs(s,{type:"tip",children:[e.jsxs(t.p,{children:["Sequence Market contract is fully audited and can be found at ",e.jsx(t.a,{href:"https://github.com/0xsequence/marketplace-contracts",children:"https://github.com/0xsequence/marketplace-contracts"})]}),e.jsxs(t.p,{children:["The officially maintained contract address is ",e.jsx(t.code,{children:"0xB537a160472183f2150d42EB1c3DD6684A55f74c"}),", and is available with the same address on all networks supported by the sequence stack."]})]}),` diff --git a/assets/01-overview-DNWqy07K.js b/assets/01-overview-Dynuydhs.js similarity index 97% rename from assets/01-overview-DNWqy07K.js rename to assets/01-overview-Dynuydhs.js index 71929bdec0a..9add69d50a7 100644 --- a/assets/01-overview-DNWqy07K.js +++ b/assets/01-overview-Dynuydhs.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-Bn6H9hrN.js";const o={title:"Introduction",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"introduction",children:["Introduction",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-DR6XzkYl.js";const o={title:"Introduction",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"introduction",children:["Introduction",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["The Sequence Unity Embedded Wallet SDK provides full Sequence ",e.jsx(n.a,{href:"/solutions/wallets/embedded-wallet/01-overview",children:"Embedded Wallet"})," and ",e.jsx(n.a,{href:"/api/indexer/overview",children:"Indexer"})," integration for your Unity Games, integrated with our own purpose-built for Unity SequenceEthereum library. That's right, no Nethereum required!"]}),` `,e.jsxs(n.p,{children:["This SDK follows ",e.jsx(n.a,{href:"https://semver.org/",children:"Semantic Versioning"})," (",e.jsx(n.code,{children:"major.minor.patch"}),"). While we're still in ",e.jsx(n.code,{children:"0.x.y"})," builds, API breaking changes can be made at any time. After ",e.jsx(n.code,{children:"1.0.0"}),", breaking changes will always cause a ",e.jsx(n.code,{children:"major"})," version increment, non-breaking new features will cause a ",e.jsx(n.code,{children:"minor"})," version increment, and bugfixes will cause a ",e.jsx(n.code,{children:"patch"})," version increment."]}),` `,e.jsxs(n.h2,{id:"requirements",children:["Requirements",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#requirements",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/01-overview-D8Tn9zZW.js b/assets/01-overview-RSvgNLyz.js similarity index 97% rename from assets/01-overview-D8Tn9zZW.js rename to assets/01-overview-RSvgNLyz.js index c285161fb29..74b5eead098 100644 --- a/assets/01-overview-D8Tn9zZW.js +++ b/assets/01-overview-RSvgNLyz.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-Bn6H9hrN.js";const s={title:"Wallet Connectors",description:"undefined"};function t(o){const n={a:"a",div:"div",h1:"h1",header:"header",li:"li",p:"p",ul:"ul",...r(),...o.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"wallet-connectors",children:["Wallet Connectors",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-connectors",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-DR6XzkYl.js";const s={title:"Wallet Connectors",description:"undefined"};function t(o){const n={a:"a",div:"div",h1:"h1",header:"header",li:"li",p:"p",ul:"ul",...r(),...o.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"wallet-connectors",children:["Wallet Connectors",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-connectors",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:`Sequence is compatible with all standard Ethereum libraries and connectors. If you've developed your dapp to with work Metamask, it will also automatically work with Sequence.`}),` `,e.jsxs(n.p,{children:[`Our SDKs offer all the functionality you'd need to build a web3 dapp, but you can also diff --git a/assets/01-why-CAG2t7n0.js b/assets/01-why-DAXaMsU-.js similarity index 98% rename from assets/01-why-CAG2t7n0.js rename to assets/01-why-DAXaMsU-.js index 986cb1d8093..df3f15b2422 100644 --- a/assets/01-why-CAG2t7n0.js +++ b/assets/01-why-DAXaMsU-.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-Bn6H9hrN.js";const i={title:"Why smart contracts wallets?",description:"undefined"};function a(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"why-smart-contracts-wallets",children:["Why smart contracts wallets?",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#why-smart-contracts-wallets",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-DR6XzkYl.js";const i={title:"Why smart contracts wallets?",description:"undefined"};function a(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"why-smart-contracts-wallets",children:["Why smart contracts wallets?",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#why-smart-contracts-wallets",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:`Ethereum wallets may take two different forms, Externally owned accounts (EOAs) or Smart Contract Wallets. The Sequence wallet is implemented as a smart contract, which allows the system to provide additional security and functionality.`}),` `,e.jsxs(n.h2,{id:"externally-owned-accounts",children:["Externally owned accounts",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#externally-owned-accounts",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/02-auth-address-BJKV5nL6.js b/assets/02-auth-address-60THvB2w.js similarity index 99% rename from assets/02-auth-address-BJKV5nL6.js rename to assets/02-auth-address-60THvB2w.js index 01d0fe4a3e6..d4d2ed19e0d 100644 --- a/assets/02-auth-address-BJKV5nL6.js +++ b/assets/02-auth-address-60THvB2w.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-Bn6H9hrN.js";const a={title:"Authenticate Users with Message Signature",description:"undefined"};function r(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"authenticate-users-with-message-signature",children:["Authenticate Users with Message Signature",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#authenticate-users-with-message-signature",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s}from"./index-DR6XzkYl.js";const a={title:"Authenticate Users with Message Signature",description:"undefined"};function r(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"authenticate-users-with-message-signature",children:["Authenticate Users with Message Signature",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#authenticate-users-with-message-signature",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h2,{id:"ask-for-the-wallet-address",children:["Ask for the wallet address",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#ask-for-the-wallet-address",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:"To get the user's Sequence wallet address:"}),` `,s.jsx(e.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(e.code,{children:[s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" wallet"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" sequence."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"getWallet"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"()"})]}),` diff --git a/assets/02-auth-address-BZh1230X.js b/assets/02-auth-address-BnIOwp7v.js similarity index 99% rename from assets/02-auth-address-BZh1230X.js rename to assets/02-auth-address-BnIOwp7v.js index 01d0fe4a3e6..d4d2ed19e0d 100644 --- a/assets/02-auth-address-BZh1230X.js +++ b/assets/02-auth-address-BnIOwp7v.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-Bn6H9hrN.js";const a={title:"Authenticate Users with Message Signature",description:"undefined"};function r(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"authenticate-users-with-message-signature",children:["Authenticate Users with Message Signature",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#authenticate-users-with-message-signature",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s}from"./index-DR6XzkYl.js";const a={title:"Authenticate Users with Message Signature",description:"undefined"};function r(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"authenticate-users-with-message-signature",children:["Authenticate Users with Message Signature",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#authenticate-users-with-message-signature",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h2,{id:"ask-for-the-wallet-address",children:["Ask for the wallet address",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#ask-for-the-wallet-address",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:"To get the user's Sequence wallet address:"}),` `,s.jsx(e.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(e.code,{children:[s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" wallet"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" sequence."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"getWallet"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"()"})]}),` diff --git a/assets/02-building-relaying-server-BYO9i9QM.js b/assets/02-building-relaying-server-CuDszrRI.js similarity index 99% rename from assets/02-building-relaying-server-BYO9i9QM.js rename to assets/02-building-relaying-server-CuDszrRI.js index 6767c2a5778..4413c140da6 100644 --- a/assets/02-building-relaying-server-BYO9i9QM.js +++ b/assets/02-building-relaying-server-CuDszrRI.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-Bn6H9hrN.js";const a={slug:"/relayer/building-relaying-server",title:"Building a Relaying Server",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",p:"p",pre:"pre",span:"span",...l(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"building-a-relaying-server",children:["Building a Relaying Server",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#building-a-relaying-server",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-DR6XzkYl.js";const a={slug:"/relayer/building-relaying-server",title:"Building a Relaying Server",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",p:"p",pre:"pre",span:"span",...l(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"building-a-relaying-server",children:["Building a Relaying Server",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#building-a-relaying-server",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:`With Sequence, you can create a smart contract wallet your server can use to dispatch transactions for your users without you having to be worried about transaction speed, throughput and re-orgs.`}),` `,s.jsx(e.p,{children:`:::info Sequentual Transactions diff --git a/assets/02-deploy-ERC20-currency-D8ac1LPl.js b/assets/02-deploy-ERC20-currency-B-IsDW0E.js similarity index 99% rename from assets/02-deploy-ERC20-currency-D8ac1LPl.js rename to assets/02-deploy-ERC20-currency-B-IsDW0E.js index 4e3bd28ddbc..c6289bc649e 100644 --- a/assets/02-deploy-ERC20-currency-D8ac1LPl.js +++ b/assets/02-deploy-ERC20-currency-B-IsDW0E.js @@ -1,4 +1,4 @@ -import{d as s,j as e,e as i}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const a={title:"How to Deploy in-game Currency in Builder",description:"undefined"};function r(t){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",p:"p",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"how-to-deploy-in-game-currency-in-builder",children:["How to Deploy in-game Currency in Builder",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#how-to-deploy-in-game-currency-in-builder",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e,e as i}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const a={title:"How to Deploy in-game Currency in Builder",description:"undefined"};function r(t){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",p:"p",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"how-to-deploy-in-game-currency-in-builder",children:["How to Deploy in-game Currency in Builder",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#how-to-deploy-in-game-currency-in-builder",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.h2,{id:"introduction",children:["Introduction",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(n.p,{children:"In this guide, we'll walk you through the process of creating your own in-game currency through deploying and minting from an ERC20 contract."}),` `,e.jsx(n.p,{children:"Currency tokens add new and interesting dimensions to in-game economies, transactions, and player interactions to unlock and distribute value."}),` diff --git a/assets/02-getting-started-CGtMGBD4.js b/assets/02-getting-started-CjU9QgdR.js similarity index 99% rename from assets/02-getting-started-CGtMGBD4.js rename to assets/02-getting-started-CjU9QgdR.js index 653b6d6d3a3..5a2d397a986 100644 --- a/assets/02-getting-started-CGtMGBD4.js +++ b/assets/02-getting-started-CjU9QgdR.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-Bn6H9hrN.js";const a={sidebar_label:"Getting Started",title:"Getting Started with Sequence Kit",description:"undefined"};function l(e){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"getting-started-with-sequence-kit",children:["Getting Started with Sequence Kit",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#getting-started-with-sequence-kit",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s}from"./index-DR6XzkYl.js";const a={sidebar_label:"Getting Started",title:"Getting Started with Sequence Kit",description:"undefined"};function l(e){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"getting-started-with-sequence-kit",children:["Getting Started with Sequence Kit",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#getting-started-with-sequence-kit",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(i.p,{children:"In this guide, we will walk you through installing Sequence Kit, triggering the connection modal, and displaying the embedded wallet in your application."}),` `,s.jsxs(i.h2,{id:"installing-sequence-kit-packages",children:["Installing Sequence Kit Packages",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#installing-sequence-kit-packages",children:s.jsx(i.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(i.p,{children:["Sequence Kit is modular, allowing you to install only the necessary packages. To get started, install the ",s.jsx(i.code,{children:"kit"})," core package, the ",s.jsx(i.code,{children:"connectors"})," package for interfacing with various wallet providers, and the ",s.jsx(i.code,{children:"wallet"})," for the embedded wallet. Additionally, install other dependencies such as wagmi, viem, and 0xsequence."]}),` diff --git a/assets/02-installation-D5fb_9zG.js b/assets/02-installation-BPirNZOA.js similarity index 99% rename from assets/02-installation-D5fb_9zG.js rename to assets/02-installation-BPirNZOA.js index e0283a41bed..79f9b6c5d2d 100644 --- a/assets/02-installation-D5fb_9zG.js +++ b/assets/02-installation-BPirNZOA.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";const o={title:"Installation",description:"undefined"};function a(n){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"installation",children:["Installation",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#installation",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-DR6XzkYl.js";const o={title:"Installation",description:"undefined"};function a(n){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"installation",children:["Installation",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#installation",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(t.h2,{id:"package-manager---recommended",children:["Package Manager - Recommended",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#package-manager---recommended",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(t.ol,{children:[` `,e.jsx(t.li,{children:"Ensure you have Git 2.14.0 or above installed on your machine"}),` diff --git a/assets/02-installation-fEYPhuch.js b/assets/02-installation-D_1-cGrW.js similarity index 97% rename from assets/02-installation-fEYPhuch.js rename to assets/02-installation-D_1-cGrW.js index 9e2bfe47093..58dc23a86b3 100644 --- a/assets/02-installation-fEYPhuch.js +++ b/assets/02-installation-D_1-cGrW.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-Bn6H9hrN.js";const s={title:"Installation",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"installation",children:["Installation",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#installation",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-DR6XzkYl.js";const s={title:"Installation",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"installation",children:["Installation",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#installation",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.h2,{id:"credentials",children:["Credentials",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#credentials",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(n.p,{children:"Before you can use this plugin, you need to acquire the following credentials from Sequence:"}),` `,e.jsxs(n.ul,{children:[` diff --git a/assets/02-quickstart-Dw_dstON.js b/assets/02-quickstart--nv7V4Yc.js similarity index 99% rename from assets/02-quickstart-Dw_dstON.js rename to assets/02-quickstart--nv7V4Yc.js index a9dd26c5276..6a5d131cfa1 100644 --- a/assets/02-quickstart-Dw_dstON.js +++ b/assets/02-quickstart--nv7V4Yc.js @@ -1,4 +1,4 @@ -import{d as n,j as e}from"./index-Bn6H9hrN.js";const l={title:"Quickstart",description:"undefined"};function a(i){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"quickstart",children:["Quickstart",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quickstart",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as e}from"./index-DR6XzkYl.js";const l={title:"Quickstart",description:"undefined"};function a(i){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"quickstart",children:["Quickstart",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quickstart",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.h2,{id:"try-a-demo",children:["Try a Demo",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#try-a-demo",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(s.aside,{"data-callout":"info",children:e.jsxs(s.p,{children:["Try out seamless UX of our embedded wallet at our ",e.jsx(s.a,{href:"https://0xsequence.github.io/demo-waas-auth/",children:"demo"})]})}),` `,e.jsxs(s.h2,{id:"template",children:["Template",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#template",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/02-quickstart-CPH7FQRk.js b/assets/02-quickstart-BpRhgBt9.js similarity index 98% rename from assets/02-quickstart-CPH7FQRk.js rename to assets/02-quickstart-BpRhgBt9.js index 873b8379ba0..695e3b8b9f0 100644 --- a/assets/02-quickstart-CPH7FQRk.js +++ b/assets/02-quickstart-BpRhgBt9.js @@ -1,4 +1,4 @@ -import{d as n,j as e}from"./index-Bn6H9hrN.js";const l={title:"Quickstart",description:"undefined"};function i(a){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...n(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"quickstart",children:["Quickstart",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quickstart",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as e}from"./index-DR6XzkYl.js";const l={title:"Quickstart",description:"undefined"};function i(a){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...n(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"quickstart",children:["Quickstart",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quickstart",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.h2,{id:"try-a-demo",children:["Try a Demo",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#try-a-demo",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(s.aside,{"data-callout":"info",children:e.jsxs(s.p,{children:["Check out our ",e.jsx(s.a,{href:"https://0xsequence-demos.github.io/aviator-custom-marketplace/",children:"demo"})," to see a custom marketplace in action."]})}),` `,e.jsxs(s.h2,{id:"template",children:["Template",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#template",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/02-quickstart-D4ediW1_.js b/assets/02-quickstart-DQkU9QH6.js similarity index 99% rename from assets/02-quickstart-D4ediW1_.js rename to assets/02-quickstart-DQkU9QH6.js index f737f737b73..74608db1698 100644 --- a/assets/02-quickstart-D4ediW1_.js +++ b/assets/02-quickstart-DQkU9QH6.js @@ -1,4 +1,4 @@ -import{d as a,j as s}from"./index-Bn6H9hrN.js";const l={title:"Quickstart",description:"undefined"};function n(i){const e={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"quickstart",children:["Quickstart",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quickstart",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as s}from"./index-DR6XzkYl.js";const l={title:"Quickstart",description:"undefined"};function n(i){const e={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"quickstart",children:["Quickstart",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quickstart",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h2,{id:"try-a-demo",children:["Try a Demo",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#try-a-demo",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.aside,{"data-callout":"info",children:s.jsxs(e.p,{children:["Try out the Universal Wallet leveraging SequenceKit at our ",s.jsx(e.a,{href:"https://0xsequence.github.io/kit/",children:"demo"})]})}),` `,s.jsxs(e.h2,{id:"template",children:["Template",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#template",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/04-sequence-kit-BRgz76hA.js b/assets/02-sequence-kit-R_H4ChxU.js similarity index 97% rename from assets/04-sequence-kit-BRgz76hA.js rename to assets/02-sequence-kit-R_H4ChxU.js index 1bb7629d853..216961ceacb 100644 --- a/assets/04-sequence-kit-BRgz76hA.js +++ b/assets/02-sequence-kit-R_H4ChxU.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-Bn6H9hrN.js";const o={slug:"overview",title:"Sequence Kit Documentation",description:"undefined"};function i(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications",children:["Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-DR6XzkYl.js";const o={slug:"overview",title:"Sequence Kit Documentation",description:"undefined"};function i(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications",children:["Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular ",e.jsx(n.a,{href:"https://wagmi.sh/",children:"wagmi"})," library, unlock a realm of possibilities in the world of web3."]}),` `,e.jsxs(n.h2,{id:"key-features",children:["Key Features",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#key-features",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.ul,{children:[` diff --git a/assets/02-wallets-CyLSnOCH.js b/assets/02-wallets-DULr0dXt.js similarity index 99% rename from assets/02-wallets-CyLSnOCH.js rename to assets/02-wallets-DULr0dXt.js index e6228fd4171..9ee88d75ffe 100644 --- a/assets/02-wallets-CyLSnOCH.js +++ b/assets/02-wallets-DULr0dXt.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-Bn6H9hrN.js";const l={title:"Wallets",description:"undefined"};function t(i){const a={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...s(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"wallets",children:["Wallets",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallets",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-DR6XzkYl.js";const l={title:"Wallets",description:"undefined"};function t(i){const a={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...s(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"wallets",children:["Wallets",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallets",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(a.p,{children:["In the context of SequenceEthereum, a ",e.jsx(a.code,{children:"Wallet"})," is defined by the ",e.jsx(a.code,{children:"IWallet"})," interface. There are currently 2 implementations of the ",e.jsx(a.code,{children:"IWallet"})," interface in this SDK."]}),` `,e.jsxs(a.h2,{id:"1-ethwallet",children:["1. ",e.jsx(a.a,{href:"https://github.com/0xsequence/sequence-unity/blob/master/Assets/SequenceSDK/Ethereum/Wallet/EthWallet.cs",children:"EthWallet"}),e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#1-ethwallet",children:e.jsx(a.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(a.p,{children:[e.jsx(a.code,{children:"EthWallet"})," is a standard ",e.jsx(a.a,{href:"https://ethereum.stackexchange.com/questions/5828/what-is-an-eoa-account",children:"EOA wallet"})," for EVM chains."]}),` diff --git a/assets/03-clients-CVLGz0EF.js b/assets/03-clients-BNM_xCZa.js similarity index 99% rename from assets/03-clients-CVLGz0EF.js rename to assets/03-clients-BNM_xCZa.js index a804ed3cbd7..76318348a5e 100644 --- a/assets/03-clients-CVLGz0EF.js +++ b/assets/03-clients-BNM_xCZa.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-Bn6H9hrN.js";const r={title:"Clients",description:"undefined"};function n(a){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...s(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"clients",children:["Clients",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#clients",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-DR6XzkYl.js";const r={title:"Clients",description:"undefined"};function n(a){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...s(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"clients",children:["Clients",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#clients",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(i.p,{children:["In the context of SequenceEthereum, a ",e.jsx(i.code,{children:"Client"})," is defined by the ",e.jsxs(i.a,{href:"https://github.com/0xsequence/sequence-unity/blob/master/Assets/SequenceSDK/Ethereum/Provider/IEthClient.cs",children:[e.jsx(i.code,{children:"IEthClient"})," interface"]}),"."]}),` `,e.jsxs(i.p,{children:["Creating a client requires a ",e.jsx(i.code,{children:"Chain"}),". This will use our highly available and responsive Node Gateway service for your RPC requests; accessed using the API key from the Builder you've provided in your ",e.jsx(i.code,{children:"SequenceConfig"})," scriptable object. If you prefer to use your own RPC URL, you can create a ",e.jsx(i.code,{children:"SequenceEthClient"})," using a URL string as a parameter instead."]}),` `,e.jsx(i.p,{children:"You can create a client using this snippet:"}),` diff --git a/assets/03-configuration--HWmf-Mm.js b/assets/03-configuration-D1joKIQx.js similarity index 99% rename from assets/03-configuration--HWmf-Mm.js rename to assets/03-configuration-D1joKIQx.js index 0f32e88d4e5..18066fc4347 100644 --- a/assets/03-configuration--HWmf-Mm.js +++ b/assets/03-configuration-D1joKIQx.js @@ -1,4 +1,4 @@ -import{d as t,j as e}from"./index-Bn6H9hrN.js";const r={sidebar_label:"Configuration",title:"Configuration Options",description:"undefined"};function s(n){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...t(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"configuration-options",children:["Configuration Options",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#configuration-options",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{d as t,j as e}from"./index-DR6XzkYl.js";const r={sidebar_label:"Configuration",title:"Configuration Options",description:"undefined"};function s(n){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...t(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"configuration-options",children:["Configuration Options",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#configuration-options",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(i.p,{children:["Developers can customize the Sequence Kit experience by passing configuration options to the ",e.jsx(i.code,{children:"KitProvider"})," wrapper."]}),` `,e.jsx(i.p,{children:"Here's how you can configure the kit using these options:"}),` `,e.jsx(i.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:e.jsxs(i.code,{children:[e.jsx(i.span,{className:"line","data-empty-line":!0,children:" "}),` diff --git a/assets/03-get-top-orders-DESIlbG0.js b/assets/03-get-top-orders-CLca8zvz.js similarity index 99% rename from assets/03-get-top-orders-DESIlbG0.js rename to assets/03-get-top-orders-CLca8zvz.js index 0b1ec7e0b12..73ebd59c75c 100644 --- a/assets/03-get-top-orders-DESIlbG0.js +++ b/assets/03-get-top-orders-CLca8zvz.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const c=void 0;function i(r){const e={a:"a",code:"code",div:"div",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...r.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"gettoporders",children:["GetTopOrders",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#gettoporders",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +import{d as n,j as s}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const c=void 0;function i(r){const e={a:"a",code:"code",div:"div",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...r.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"gettoporders",children:["GetTopOrders",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#gettoporders",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:"Query the protocol for the top order based on various filters."}),` `,s.jsx(e.p,{children:"Fetch the top orders from the protocol, optionally excluding those created by a specific user."}),` `,s.jsxs(e.ul,{children:[` diff --git a/assets/03-manage-sessions-pkLElreW.js b/assets/03-manage-sessions-4mTx5Qtc.js similarity index 99% rename from assets/03-manage-sessions-pkLElreW.js rename to assets/03-manage-sessions-4mTx5Qtc.js index 03c44217609..5e8cd7b8b20 100644 --- a/assets/03-manage-sessions-pkLElreW.js +++ b/assets/03-manage-sessions-4mTx5Qtc.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-Bn6H9hrN.js";const a={title:"Session Management",description:"undefined"};function l(e){const i={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"session-management",children:["Session Management",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#session-management",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s}from"./index-DR6XzkYl.js";const a={title:"Session Management",description:"undefined"};function l(e){const i={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"session-management",children:["Session Management",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#session-management",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(i.p,{children:"Sequence Auth + Embedded Wallet handles the following aspects of your application:"}),` `,s.jsxs(i.ul,{children:[` `,s.jsx(i.li,{children:"User creation"}),` diff --git a/assets/03-mint-collectibles-serverless-BJtBuUYk.js b/assets/03-mint-collectibles-serverless-CpfiFoVo.js similarity index 99% rename from assets/03-mint-collectibles-serverless-BJtBuUYk.js rename to assets/03-mint-collectibles-serverless-CpfiFoVo.js index fd273a0b768..5143418f028 100644 --- a/assets/03-mint-collectibles-serverless-BJtBuUYk.js +++ b/assets/03-mint-collectibles-serverless-CpfiFoVo.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-Bn6H9hrN.js";const a={title:"Mint Collectibles Using a Gasless Serverless Relayer",description:"undefined"};function i(l){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...r(),...l.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"mint-collectibles-using-a-gasless-serverless-relayer",children:["Mint Collectibles Using a Gasless Serverless Relayer",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#mint-collectibles-using-a-gasless-serverless-relayer",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-DR6XzkYl.js";const a={title:"Mint Collectibles Using a Gasless Serverless Relayer",description:"undefined"};function i(l){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...r(),...l.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"mint-collectibles-using-a-gasless-serverless-relayer",children:["Mint Collectibles Using a Gasless Serverless Relayer",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#mint-collectibles-using-a-gasless-serverless-relayer",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"Time to complete: 20-30 minutes"}),` `,s.jsxs(e.p,{children:["The Sequence Relayer can be implemented on a serverless ",s.jsx(e.a,{href:"https://cloudflare.com/",children:"Cloudflare"})," worker so a game or app user interaction is seamless without a confirmation signature or gas payment. You'll also benefit from not having to be worried about transaction speed, throughput and re-orgs by the relayer, and experience automatic scaling with Cloudflare."]}),` `,s.jsx(e.p,{children:"The following steps will guide you through how to build your hosted minter API in 4 steps:"}),` diff --git a/assets/03-setup-C0dwh71D.js b/assets/03-setup-CHg84Z-0.js similarity index 97% rename from assets/03-setup-C0dwh71D.js rename to assets/03-setup-CHg84Z-0.js index 56db1a78a47..52eaea71deb 100644 --- a/assets/03-setup-C0dwh71D.js +++ b/assets/03-setup-CHg84Z-0.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-Bn6H9hrN.js";const r={title:"Setup",description:"undefined"};function i(t){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",li:"li",ol:"ol",p:"p",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"setup",children:["Setup",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#setup",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-DR6XzkYl.js";const r={title:"Setup",description:"undefined"};function i(t){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",li:"li",ol:"ol",p:"p",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"setup",children:["Setup",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#setup",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.ol,{children:[` `,e.jsxs(n.li,{children:[` `,e.jsxs(n.p,{children:["Navigate to the Resources folder imported via the ",e.jsx(n.code,{children:"Setup"})," sample and locate the ",e.jsx(n.code,{children:"SequenceConfig"})," ScriptableObject"]}),` diff --git a/assets/03-setup-BqxPVrTQ.js b/assets/03-setup-LfdLm5v0.js similarity index 97% rename from assets/03-setup-BqxPVrTQ.js rename to assets/03-setup-LfdLm5v0.js index e8ba64684a2..9a56dffd983 100644 --- a/assets/03-setup-BqxPVrTQ.js +++ b/assets/03-setup-LfdLm5v0.js @@ -1,4 +1,4 @@ -import{d as o,j as e}from"./index-Bn6H9hrN.js";const r={title:"Setup",description:"undefined"};function i(t){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",li:"li",ol:"ol",p:"p",...o(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"setup",children:["Setup",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#setup",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as o,j as e}from"./index-DR6XzkYl.js";const r={title:"Setup",description:"undefined"};function i(t){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",li:"li",ol:"ol",p:"p",...o(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"setup",children:["Setup",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#setup",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.ol,{children:[` `,e.jsxs(n.li,{children:[` `,e.jsxs(n.p,{children:["Once you have the the ",e.jsx(n.code,{children:"SequencePlugin"})," folder, you'll need to go to your project directory and create a ",e.jsx(n.code,{children:"Plugins"})," folder in it, then copy over the ",e.jsx(n.code,{children:"SequencePlugin"})," folder into the ",e.jsx(n.code,{children:"Plugins"})," folder. If a ",e.jsx(n.code,{children:"Plugins"})," folder already exists just copy the ",e.jsx(n.code,{children:"SequencePlugin"})," folder into it."]}),` diff --git a/assets/03-sign-message-CbKbpn7U.js b/assets/03-sign-message-Cen7X5iw.js similarity index 90% rename from assets/03-sign-message-CbKbpn7U.js rename to assets/03-sign-message-Cen7X5iw.js index 9649541b1ec..91aa2f002b8 100644 --- a/assets/03-sign-message-CbKbpn7U.js +++ b/assets/03-sign-message-Cen7X5iw.js @@ -1 +1 @@ -import{d as r,j as t}from"./index-Bn6H9hrN.js";const s={title:"TODO - Replace with Code Groups from Vocs",description:"undefined"};function n(o){const e={a:"a",div:"div",h1:"h1",header:"header",...r(),...o.components};return t.jsx(e.header,{children:t.jsxs(e.h1,{id:"todo---replace-with-code-groups-from-vocs",children:["TODO - Replace with Code Groups from Vocs",t.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#todo---replace-with-code-groups-from-vocs",children:t.jsx(e.div,{"data-autolink-icon":!0})})]})})}function c(o={}){const{wrapper:e}={...r(),...o.components};return e?t.jsx(e,{...o,children:t.jsx(n,{...o})}):n(o)}export{c as default,s as frontmatter}; +import{d as r,j as t}from"./index-DR6XzkYl.js";const s={title:"TODO - Replace with Code Groups from Vocs",description:"undefined"};function n(o){const e={a:"a",div:"div",h1:"h1",header:"header",...r(),...o.components};return t.jsx(e.header,{children:t.jsxs(e.h1,{id:"todo---replace-with-code-groups-from-vocs",children:["TODO - Replace with Code Groups from Vocs",t.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#todo---replace-with-code-groups-from-vocs",children:t.jsx(e.div,{"data-autolink-icon":!0})})]})})}function c(o={}){const{wrapper:e}={...r(),...o.components};return e?t.jsx(e,{...o,children:t.jsx(n,{...o})}):n(o)}export{c as default,s as frontmatter}; diff --git a/assets/03-sign-message-lAsd9YJN.js b/assets/03-sign-message-MaCTUdGD.js similarity index 99% rename from assets/03-sign-message-lAsd9YJN.js rename to assets/03-sign-message-MaCTUdGD.js index 5bbc63f6063..5df6138986b 100644 --- a/assets/03-sign-message-lAsd9YJN.js +++ b/assets/03-sign-message-MaCTUdGD.js @@ -1,4 +1,4 @@ -import{d as n,j as s,e as l}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const c={title:"Signing & Verifying Messages",description:"undefined"};function a(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"signing--verifying-messages",children:["Signing & Verifying Messages",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#signing--verifying-messages",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s,e as l}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const c={title:"Signing & Verifying Messages",description:"undefined"};function a(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"signing--verifying-messages",children:["Signing & Verifying Messages",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#signing--verifying-messages",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h2,{id:"signing-messages",children:["Signing Messages",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#signing-messages",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:"Sequence wallets are able to sign arbitrary messages."}),` `,s.jsx(e.strong,{children:"To request a user's signature of a simple message:"}),` diff --git a/assets/03-wagmi-CpdgCO8V.js b/assets/03-wagmi-CBCxbzm8.js similarity index 99% rename from assets/03-wagmi-CpdgCO8V.js rename to assets/03-wagmi-CBCxbzm8.js index df2e62a2137..d3af255dff2 100644 --- a/assets/03-wagmi-CpdgCO8V.js +++ b/assets/03-wagmi-CBCxbzm8.js @@ -1,4 +1,4 @@ -import{d as a,j as e}from"./index-Bn6H9hrN.js";const l={sidebar_label:"Using Wagmi",title:"Using Wagmi",description:"undefined"};function i(n){const s={a:"a",br:"br",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"using-wagmi",children:["Using Wagmi",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-wagmi",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e}from"./index-DR6XzkYl.js";const l={sidebar_label:"Using Wagmi",title:"Using Wagmi",description:"undefined"};function i(n){const s={a:"a",br:"br",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"using-wagmi",children:["Using Wagmi",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-wagmi",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:"The Sequence wallet used with Wagmi through the connector."}),` `,e.jsxs(s.p,{children:[`:::tip Try it live :) Try `,e.jsx(s.a,{href:"https://0xsequence.github.io/demo-dapp-wagmi/",children:"a live Dapp example"})," using Sequence + Metamask + Wallet Connect with wagmi."]}),` diff --git a/assets/03-wallet-factory-TFAMxFf_.js b/assets/03-wallet-factory-R5wOcB3Z.js similarity index 99% rename from assets/03-wallet-factory-TFAMxFf_.js rename to assets/03-wallet-factory-R5wOcB3Z.js index 7976225f651..4de9484de11 100644 --- a/assets/03-wallet-factory-TFAMxFf_.js +++ b/assets/03-wallet-factory-R5wOcB3Z.js @@ -1,4 +1,4 @@ -import{d as r,j as e,e as n}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Wallet Factory",description:"undefined"};function a(t){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...r(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"wallet-factory",children:["Wallet Factory",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-factory",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e,e as n}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Wallet Factory",description:"undefined"};function a(t){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...r(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"wallet-factory",children:["Wallet Factory",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-factory",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.p,{children:["Sequence Wallets are created using the ",e.jsx(s.a,{href:"https://github.com/0xsequence/wallet-contracts/blob/e0c5382636a88b4db4bcf0a70623355d7cd30fb4/contracts/Factory.sol",children:"Factory"})," contract, when called it creates child ",e.jsx(s.a,{href:"https://github.com/0xsequence/wallet-contracts/blob/e0c5382636a88b4db4bcf0a70623355d7cd30fb4/contracts/Wallet.sol",children:"MinimalUpgradeableProxies"}),' contracts, which are in essence the "boot" code of all Sequence wallets.']}),` `,e.jsxs(s.h2,{id:"factory-api",children:["Factory API",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#factory-api",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(s.h3,{id:"deploy",children:["deploy",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/04-authentication-C_pTtnTW.js b/assets/04-authentication-8J7N8os-.js similarity index 99% rename from assets/04-authentication-C_pTtnTW.js rename to assets/04-authentication-8J7N8os-.js index 3cceb98c3ae..7af69cfad83 100644 --- a/assets/04-authentication-C_pTtnTW.js +++ b/assets/04-authentication-8J7N8os-.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-Bn6H9hrN.js";const a={title:"Authentication",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"authentication",children:["Authentication",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#authentication",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-DR6XzkYl.js";const a={title:"Authentication",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"authentication",children:["Authentication",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#authentication",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h3,{id:"custom-ui-integration",children:["Custom UI Integration",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#custom-ui-integration",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.p,{children:["In a C++ backend with a series of pass through ",s.jsx(e.code,{children:"[UFUNCTIONS]"})," setup similarly to ",s.jsx(e.code,{children:"[SequenceBackendManager.h/.cpp]"}),". Each of these calls are implemented in ",s.jsx(e.code,{children:"[UAuthenticator]"})," you just need to pass through the data with YOUR UAuthenticator UObject"]}),` `,s.jsx(e.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(e.code,{children:[s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"//This call is platform dependent on windows & mac this is required for SSO WIP"})}),` diff --git a/assets/04-authentication-0345J8l8.js b/assets/04-authentication-Jevds3CY.js similarity index 99% rename from assets/04-authentication-0345J8l8.js rename to assets/04-authentication-Jevds3CY.js index fcfbf9e2356..a4b8e42a264 100644 --- a/assets/04-authentication-0345J8l8.js +++ b/assets/04-authentication-Jevds3CY.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-Bn6H9hrN.js";const a={title:"Authentication",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"authentication",children:["Authentication",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#authentication",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-DR6XzkYl.js";const a={title:"Authentication",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"authentication",children:["Authentication",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#authentication",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["As a WaaS SDK, authentication is extremely important. Authentication works by establishing a session signing wallet through association with an ",s.jsx(e.a,{href:"https://auth0.com/docs/secure/tokens/id-tokens/id-token-structure#sample-id-token",children:"OIDC idToken"}),". For more on how our Embedded Wallet works, please ",s.jsx(e.a,{href:"/solutions/wallets/embedded-wallet/01-overview",children:"see Embedded Wallet docs"}),"."]}),` `,s.jsxs(e.p,{children:["To implement authentication, we recommend using our ",s.jsx(e.code,{children:"LoginPanel"})," prefab. Locate this prefab under ",s.jsx(e.code,{children:"SequenceExamples > Prefabs"})," and drag it under a ",s.jsx(e.a,{href:"https://docs.unity3d.com/2020.1/Documentation/Manual/UICanvas.html",children:"Canvas"}),` in your scene. We recommend having the `,s.jsx(e.code,{children:"Canvas Scaler"})," component attached to your ",s.jsx(e.code,{children:"Canvas"}),' use the "Scale with Screen Size" UI Scale Mode. This will make it so that the LoginPanel (and any other UI elements under this Canvas) are scaled automatically when switching between build targets.']}),` diff --git a/assets/04-checkout-BVPq6FfX.js b/assets/04-checkout-VW3jQ2DG.js similarity index 99% rename from assets/04-checkout-BVPq6FfX.js rename to assets/04-checkout-VW3jQ2DG.js index 55144f44bfe..d83fb2f9187 100644 --- a/assets/04-checkout-BVPq6FfX.js +++ b/assets/04-checkout-VW3jQ2DG.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-Bn6H9hrN.js";const a={sidebar_label:"Checkout",title:"Overview",description:"undefined"};function l(e){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"overview",children:["Overview",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#overview",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s}from"./index-DR6XzkYl.js";const a={sidebar_label:"Checkout",title:"Overview",description:"undefined"};function l(e){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"overview",children:["Overview",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#overview",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(i.p,{children:"The checkout modal enables developers to easily facilitate cryptocurrency payments."}),` `,s.jsx("div",{class:"text--center",children:s.jsx("img",{src:"/img/kit/checkout-modal.png"})}),` `,s.jsx(i.header,{children:s.jsxs(i.h1,{id:"integration",children:["Integration",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integration",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` diff --git a/assets/04-configuration-DDJEt13u.js b/assets/04-configuration-Ke_7PJJc.js similarity index 99% rename from assets/04-configuration-DDJEt13u.js rename to assets/04-configuration-Ke_7PJJc.js index c8b804f67d0..c8d4c6807c0 100644 --- a/assets/04-configuration-DDJEt13u.js +++ b/assets/04-configuration-Ke_7PJJc.js @@ -1,4 +1,4 @@ -import{d as l,j as e}from"./index-Bn6H9hrN.js";const a={title:"Wallet Configuration",description:"undefined"};function n(i){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...l(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"wallet-configuration",children:["Wallet Configuration",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-configuration",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as e}from"./index-DR6XzkYl.js";const a={title:"Wallet Configuration",description:"undefined"};function n(i){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...l(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"wallet-configuration",children:["Wallet Configuration",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-configuration",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:'In the context of Sequence Wallets, the "Wallet Configuration" is a set of parameters that defines the behavior of the wallet, primarily used to define the access control of the wallet, meaning who can sign transactions and how many signatures are needed.'}),` `,e.jsxs(s.h2,{id:"top-level-properties",children:["Top level properties",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#top-level-properties",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(s.p,{children:"Sequence v2 configurations contain the following 3 properties:"}),` diff --git a/assets/04-get-orderbook-CcHbZi_W.js b/assets/04-get-orderbook-BLMldV4p.js similarity index 99% rename from assets/04-get-orderbook-CcHbZi_W.js rename to assets/04-get-orderbook-BLMldV4p.js index ea7d20a1659..fe38786b9a7 100644 --- a/assets/04-get-orderbook-CcHbZi_W.js +++ b/assets/04-get-orderbook-BLMldV4p.js @@ -1,4 +1,4 @@ -import{d as i,j as s,e as l}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const c=void 0;function n(r){const e={a:"a",code:"code",div:"div",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...i(),...r.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"getorderbookorders",children:["GetOrderbookOrders",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#getorderbookorders",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +import{d as i,j as s,e as l}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const c=void 0;function n(r){const e={a:"a",code:"code",div:"div",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...i(),...r.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"getorderbookorders",children:["GetOrderbookOrders",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#getorderbookorders",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:"Query the protocol for orders based on various filters."}),` `,s.jsx(e.p,{children:s.jsxs(e.em,{children:["Sequence Orderbook ",s.jsx(e.code,{children:"GetOrderbookOrders"})," Method:"]})}),` `,s.jsxs(e.ul,{children:[` diff --git a/assets/04-rainbow-kit-DA-KWee4.js b/assets/04-rainbow-kit-Dg34mmXH.js similarity index 99% rename from assets/04-rainbow-kit-DA-KWee4.js rename to assets/04-rainbow-kit-Dg34mmXH.js index 642382dae2b..ace5c99eeed 100644 --- a/assets/04-rainbow-kit-DA-KWee4.js +++ b/assets/04-rainbow-kit-Dg34mmXH.js @@ -1,4 +1,4 @@ -import{d as a,j as e}from"./index-Bn6H9hrN.js";const l={sidebar_label:"Using RainbowKit",title:"Using RainbowKit",description:"undefined"};function n(i){const s={a:"a",br:"br",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"using-rainbowkit",children:["Using RainbowKit",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-rainbowkit",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e}from"./index-DR6XzkYl.js";const l={sidebar_label:"Using RainbowKit",title:"Using RainbowKit",description:"undefined"};function n(i){const s={a:"a",br:"br",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"using-rainbowkit",children:["Using RainbowKit",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-rainbowkit",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:"The Sequence wallet can be added to RainbowKit through the connector."}),` `,e.jsxs(s.p,{children:[`:::tip Try it live :) Try `,e.jsx(s.a,{href:"https://0xsequence.github.io/demo-dapp-rainbowkit/",children:"a live Dapp example"})," using Sequence + Metamask + Rainbow + Wallet Connect with RainbowKit."]}),` diff --git a/assets/02-sequence-kit-DK2NtjwN.js b/assets/04-sequence-kit-BaLVgDtU.js similarity index 97% rename from assets/02-sequence-kit-DK2NtjwN.js rename to assets/04-sequence-kit-BaLVgDtU.js index 1bb7629d853..216961ceacb 100644 --- a/assets/02-sequence-kit-DK2NtjwN.js +++ b/assets/04-sequence-kit-BaLVgDtU.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-Bn6H9hrN.js";const o={slug:"overview",title:"Sequence Kit Documentation",description:"undefined"};function i(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications",children:["Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-DR6XzkYl.js";const o={slug:"overview",title:"Sequence Kit Documentation",description:"undefined"};function i(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications",children:["Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular ",e.jsx(n.a,{href:"https://wagmi.sh/",children:"wagmi"})," library, unlock a realm of possibilities in the world of web3."]}),` `,e.jsxs(n.h2,{id:"key-features",children:["Key Features",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#key-features",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.ul,{children:[` diff --git a/assets/04-session-keys-DffAoXbb.js b/assets/04-session-keys-CMKstS7R.js similarity index 99% rename from assets/04-session-keys-DffAoXbb.js rename to assets/04-session-keys-CMKstS7R.js index b4f96750aa7..769896386f7 100644 --- a/assets/04-session-keys-DffAoXbb.js +++ b/assets/04-session-keys-CMKstS7R.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-Bn6H9hrN.js";const a={title:"No-Wallet-Confirmation Signatures",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...r(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"no-wallet-confirmation-signatures",children:["No-Wallet-Confirmation Signatures",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#no-wallet-confirmation-signatures",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-DR6XzkYl.js";const a={title:"No-Wallet-Confirmation Signatures",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...r(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"no-wallet-confirmation-signatures",children:["No-Wallet-Confirmation Signatures",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#no-wallet-confirmation-signatures",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["It is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using ",s.jsx(e.em,{children:"session keys"}),", or ephemeral keys."]}),` `,s.jsx(e.header,{children:s.jsxs(e.h1,{id:"session-keys",children:["Session Keys",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#session-keys",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"Session keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet."}),` diff --git a/assets/04-session-keys-mzqz-yOg.js b/assets/04-session-keys-DJCy4k-0.js similarity index 99% rename from assets/04-session-keys-mzqz-yOg.js rename to assets/04-session-keys-DJCy4k-0.js index b4f96750aa7..769896386f7 100644 --- a/assets/04-session-keys-mzqz-yOg.js +++ b/assets/04-session-keys-DJCy4k-0.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-Bn6H9hrN.js";const a={title:"No-Wallet-Confirmation Signatures",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...r(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"no-wallet-confirmation-signatures",children:["No-Wallet-Confirmation Signatures",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#no-wallet-confirmation-signatures",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-DR6XzkYl.js";const a={title:"No-Wallet-Confirmation Signatures",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...r(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"no-wallet-confirmation-signatures",children:["No-Wallet-Confirmation Signatures",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#no-wallet-confirmation-signatures",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["It is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using ",s.jsx(e.em,{children:"session keys"}),", or ephemeral keys."]}),` `,s.jsx(e.header,{children:s.jsxs(e.h1,{id:"session-keys",children:["Session Keys",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#session-keys",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"Session keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet."}),` diff --git a/assets/04-transfers-fldLL6k8.js b/assets/04-transfers-BqvVNfJP.js similarity index 96% rename from assets/04-transfers-fldLL6k8.js rename to assets/04-transfers-BqvVNfJP.js index 822ccdf3ee6..faae7f919bb 100644 --- a/assets/04-transfers-fldLL6k8.js +++ b/assets/04-transfers-BqvVNfJP.js @@ -1,4 +1,4 @@ -import{d as a,j as e}from"./index-Bn6H9hrN.js";const s={title:"Transfers",description:"undefined"};function t(r){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...a(),...r.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"transfers",children:["Transfers",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#transfers",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e}from"./index-DR6XzkYl.js";const s={title:"Transfers",description:"undefined"};function t(r){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...a(),...r.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"transfers",children:["Transfers",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#transfers",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["In order to transfer ETH (or the gas currency for your network), it is recommended to use ",e.jsx(n.code,{children:"TranferEth.CreateTransaction"})]}),` `,e.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:e.jsxs(n.code,{children:[e.jsx(n.span,{className:"line",children:e.jsx(n.span,{children:"EthTransaction transferTransaction = await TransferEth.CreateTransaction(client, wallet, recipientAddress, DecimalNormalizer.Normalize(1));"})}),` `,e.jsx(n.span,{className:"line",children:e.jsx(n.span,{children:"TransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transferTransaction);"})})]})}),` diff --git a/assets/04-use-wallets-IfyNDXW5.js b/assets/04-use-wallets-C_DQ6UCq.js similarity index 99% rename from assets/04-use-wallets-IfyNDXW5.js rename to assets/04-use-wallets-C_DQ6UCq.js index fd51206330e..91e0fa75876 100644 --- a/assets/04-use-wallets-IfyNDXW5.js +++ b/assets/04-use-wallets-C_DQ6UCq.js @@ -1,4 +1,4 @@ -import{d as n,j as s,e as a}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Wallets and transactions",description:"undefined"};function l(i){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"wallets-and-transactions",children:["Wallets and transactions",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallets-and-transactions",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s,e as a}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Wallets and transactions",description:"undefined"};function l(i){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"wallets-and-transactions",children:["Wallets and transactions",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallets-and-transactions",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"Once the SDK is initialized and the user has been authenticated, you can access the wallet corresponding to that user's account. The wallet is the entry point to all the operations that can be performed on the user's account."}),` `,s.jsxs(e.h2,{id:"wallet-address",children:["Wallet address",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-address",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.p,{children:["The wallet address is unique to each user, can't be changed, and is used to identify the user's account. It is a string of 42 characters starting with ",s.jsx(e.code,{children:"0x"}),"."]}),` diff --git a/assets/04-wallet-configuration-Ezwe96dL.js b/assets/04-wallet-configuration-DagmVdyS.js similarity index 99% rename from assets/04-wallet-configuration-Ezwe96dL.js rename to assets/04-wallet-configuration-DagmVdyS.js index ed82ccdf43e..6d3bf7b53b7 100644 --- a/assets/04-wallet-configuration-Ezwe96dL.js +++ b/assets/04-wallet-configuration-DagmVdyS.js @@ -1,4 +1,4 @@ -import{d as a,j as s}from"./index-Bn6H9hrN.js";const r={title:"Wallet Configuration",description:"undefined"};function l(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...a(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"wallet-configuration",children:["Wallet Configuration",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-configuration",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as s}from"./index-DR6XzkYl.js";const r={title:"Wallet Configuration",description:"undefined"};function l(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...a(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"wallet-configuration",children:["Wallet Configuration",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-configuration",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"Every Sequence wallet has a configuration defined by a threshold and a list of signers with their corresponding weights."}),` `,s.jsxs(e.h2,{id:"configuration-layout",children:["Configuration layout",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#configuration-layout",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.table,{children:[s.jsx(e.thead,{children:s.jsxs(e.tr,{children:[s.jsx(e.th,{children:"Name"}),s.jsx(e.th,{children:"Type"}),s.jsx(e.th,{children:"Range"}),s.jsx(e.th,{children:"Description"})]})}),s.jsxs(e.tbody,{children:[s.jsxs(e.tr,{children:[s.jsx(e.td,{children:"Threshold"}),s.jsx(e.td,{children:s.jsx(e.code,{children:"uint16"})}),s.jsx(e.td,{children:"1 - 65535"}),s.jsx(e.td,{children:'Required combined total "weight" of signers for a signature to be considered valid.'})]}),s.jsxs(e.tr,{children:[s.jsx(e.td,{children:"Signers"}),s.jsx(e.td,{children:s.jsx(e.code,{children:"signer[]"})}),s.jsx(e.td,{children:"unlimited - bounded by gas"}),s.jsx(e.td,{children:'List of signers that with their corresponding "weight"s.'})]})]})]}),` diff --git a/assets/05-api-integration-BAkxldxc.js b/assets/05-api-integration-BHJnIyv7.js similarity index 99% rename from assets/05-api-integration-BAkxldxc.js rename to assets/05-api-integration-BHJnIyv7.js index e35d5e17da9..136136b9de2 100644 --- a/assets/05-api-integration-BAkxldxc.js +++ b/assets/05-api-integration-BHJnIyv7.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-Bn6H9hrN.js";const a={title:"API Integration",description:"undefined"};function n(i){const s={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"api-integration",children:["API Integration",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#api-integration",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-DR6XzkYl.js";const a={title:"API Integration",description:"undefined"};function n(i){const s={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"api-integration",children:["API Integration",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#api-integration",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.h3,{id:"sequence-api",children:["Sequence API",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-api",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(s.p,{children:["After you've completed initial authentication and have intercepted the credentials either through your UI or ours, to use the Sequence API you'll need to create a ",e.jsx(s.code,{children:"[USequenceWallet]"})," by using:"]}),` `,e.jsx(s.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:e.jsx(s.code,{children:e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"`[USequenceWallet "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"*"}),e.jsx(s.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:" Api"}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" USequenceWallet"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(CredentialsIn)]` or `[USequenceWallet * Api = USequenceWallet::Make("}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"CredentialsIn"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"ProviderURL"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")]`"})]})})}),` diff --git a/assets/05-contracts-FJ80mg17.js b/assets/05-contracts-DjQ4iIgh.js similarity index 99% rename from assets/05-contracts-FJ80mg17.js rename to assets/05-contracts-DjQ4iIgh.js index 356b0a8daec..24858a0a514 100644 --- a/assets/05-contracts-FJ80mg17.js +++ b/assets/05-contracts-DjQ4iIgh.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-Bn6H9hrN.js";const i={title:"Contracts",description:"undefined"};function a(t){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...r(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"contracts",children:["Contracts",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contracts",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-DR6XzkYl.js";const i={title:"Contracts",description:"undefined"};function a(t){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...r(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"contracts",children:["Contracts",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contracts",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["Creating a ",e.jsx(n.code,{children:"Contract"})," object for an already deployed contract is rather straightforward."]}),` `,e.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:e.jsx(n.code,{children:e.jsx(n.span,{className:"line",children:e.jsx(n.span,{children:"Contract contract = new Contract(contractAddress, abi);"})})})}),` `,e.jsxs(n.p,{children:["While it is not strictly required, it is ",e.jsx("i",{children:"highly"}),` recommended to provide the contract ABI as a string when creating a contract object. Failure to do so will make it so that you cannot fully take advantage of our ABI encoding and decoding. diff --git a/assets/05-custom-connectors-Brj3CoYB.js b/assets/05-custom-connectors-WWzLXGT6.js similarity index 99% rename from assets/05-custom-connectors-Brj3CoYB.js rename to assets/05-custom-connectors-WWzLXGT6.js index f195aa0e35d..76f7eece2e9 100644 --- a/assets/05-custom-connectors-Brj3CoYB.js +++ b/assets/05-custom-connectors-WWzLXGT6.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-Bn6H9hrN.js";const c={sidebar_label:"Custom Connectors",title:"Custom Connectors in Sequence Kit",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...r(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"custom-connectors-in-sequence-kit",children:["Custom Connectors in Sequence Kit",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#custom-connectors-in-sequence-kit",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-DR6XzkYl.js";const c={sidebar_label:"Custom Connectors",title:"Custom Connectors in Sequence Kit",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...r(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"custom-connectors-in-sequence-kit",children:["Custom Connectors in Sequence Kit",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#custom-connectors-in-sequence-kit",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["Sequence Kit provides official connectors via the ",s.jsx(e.a,{href:"https://github.com/0xsequence/kit/tree/master/packages/connectors",children:"@0xsequence/kit-connectors"})," package. However, you can also integrate custom connectors with Sequence Kit to support additional wallets. This guide will walk you through creating and using custom connectors."]}),` `,s.jsxs(e.h2,{id:"creating-a-custom-connector",children:["Creating a Custom Connector",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#creating-a-custom-connector",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.p,{children:["To create a custom connector, you can use an existing connector as a basis. For example, the ",s.jsx(e.a,{href:"https://github.com/0xsequence/kit/blob/master/packages/connectors/src/connectors/metamask/metamask.ts",children:"Metamask Connector"})," is a good starting point. Here's an example of how to create a custom connector:"]}),` diff --git a/assets/05-get-user-activities-FpRCBXoE.js b/assets/05-get-user-activities-CQNuLaE7.js similarity index 99% rename from assets/05-get-user-activities-FpRCBXoE.js rename to assets/05-get-user-activities-CQNuLaE7.js index 61f5deca923..98fabfe39cf 100644 --- a/assets/05-get-user-activities-FpRCBXoE.js +++ b/assets/05-get-user-activities-CQNuLaE7.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-Bn6H9hrN.js";const c=void 0;function r(i){const e={a:"a",code:"code",div:"div",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"getuseractivities",children:["GetUserActivities",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#getuseractivities",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +import{d as n,j as s}from"./index-DR6XzkYl.js";const c=void 0;function r(i){const e={a:"a",code:"code",div:"div",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"getuseractivities",children:["GetUserActivities",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#getuseractivities",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:"Retrieve activity data for a specific user, including orders and trades."}),` `,s.jsxs(e.ul,{children:[` `,s.jsx(e.li,{children:"Request: POST /api/Marketplace/GetUserActivities"}),` diff --git a/assets/05-modules-and-updates-B745dCXv.js b/assets/05-modules-and-updates-D6-_b8g4.js similarity index 99% rename from assets/05-modules-and-updates-B745dCXv.js rename to assets/05-modules-and-updates-D6-_b8g4.js index b6040824324..ce1be3f612a 100644 --- a/assets/05-modules-and-updates-B745dCXv.js +++ b/assets/05-modules-and-updates-D6-_b8g4.js @@ -1,4 +1,4 @@ -import{d as a,j as e}from"./index-Bn6H9hrN.js";const r={title:"Modules & wallet update",description:"undefined"};function n(i){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"modules--wallet-update",children:["Modules & wallet update",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#modules--wallet-update",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e}from"./index-DR6XzkYl.js";const r={title:"Modules & wallet update",description:"undefined"};function n(i){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"modules--wallet-update",children:["Modules & wallet update",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#modules--wallet-update",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:"Sequence modules are the underlying program implementation of the wallets; wallets can change modules at runtime."}),` `,e.jsxs(s.p,{children:["The ",e.jsx(s.code,{children:"MainModule"})," is the initial module of every Sequence wallet; it differs from the other modules because it doesn't store the set of signers on contract storage; it uses the ",e.jsx(s.a,{href:"solutions/technical-references/wallet-contracts/03-wallet-factory#deploy",children:"salt"})," provided to the Factory contract."]}),` `,e.jsxs(s.h2,{id:"wallet-implementation",children:["Wallet implementation",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-implementation",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/05-platforms-Qn5r-I38.js b/assets/05-platforms-BG2ngyqG.js similarity index 97% rename from assets/05-platforms-Qn5r-I38.js rename to assets/05-platforms-BG2ngyqG.js index 9186d1b1f97..69f3e70d589 100644 --- a/assets/05-platforms-Qn5r-I38.js +++ b/assets/05-platforms-BG2ngyqG.js @@ -1,4 +1,4 @@ -import{d as l,j as e}from"./index-Bn6H9hrN.js";const a={title:"Platforms",description:"undefined"};function s(n){const t={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",img:"img",p:"p",...l(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"platforms",children:["Platforms",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#platforms",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as e}from"./index-DR6XzkYl.js";const a={title:"Platforms",description:"undefined"};function s(n){const t={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",img:"img",p:"p",...l(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"platforms",children:["Platforms",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#platforms",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(t.h2,{id:"web-wallet",children:["Web Wallet",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#web-wallet",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(t.p,{children:["Sequence works beautifully on all modern Web Browsers! Try it at ",e.jsx(t.a,{href:"https://sequence.app",children:"https://sequence.app"})," from any computer, phone or tablet."]}),` `,e.jsxs(t.p,{children:["See ",e.jsx(t.a,{href:"/solutions/wallets/universal-wallet/02-quickstart",children:"Build With Sequence"})," to get started."]}),` diff --git a/assets/05-send-transaction-DMhvmYLj.js b/assets/05-send-transaction-CPTudBdL.js similarity index 98% rename from assets/05-send-transaction-DMhvmYLj.js rename to assets/05-send-transaction-CPTudBdL.js index 3d7d923eff0..caced2a3454 100644 --- a/assets/05-send-transaction-DMhvmYLj.js +++ b/assets/05-send-transaction-CPTudBdL.js @@ -1,4 +1,4 @@ -import{d as a,j as s}from"./index-Bn6H9hrN.js";const l={title:"Sending Transactions",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...a(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-transactions",children:["Sending Transactions",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-transactions",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as s}from"./index-DR6XzkYl.js";const l={title:"Sending Transactions",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...a(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-transactions",children:["Sending Transactions",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-transactions",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(n.p,{children:[`Signing a transaction will only retrieve the signed payload. If you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from `,s.jsx(n.code,{children:"signTransactions"})," to ",s.jsx(n.code,{children:"sendTransaction"}),"):"]}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" transaction"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` diff --git a/assets/05-send-transaction-CYUsi7f0.js b/assets/05-send-transaction-Cd0zCRZo.js similarity index 98% rename from assets/05-send-transaction-CYUsi7f0.js rename to assets/05-send-transaction-Cd0zCRZo.js index 3d7d923eff0..caced2a3454 100644 --- a/assets/05-send-transaction-CYUsi7f0.js +++ b/assets/05-send-transaction-Cd0zCRZo.js @@ -1,4 +1,4 @@ -import{d as a,j as s}from"./index-Bn6H9hrN.js";const l={title:"Sending Transactions",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...a(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-transactions",children:["Sending Transactions",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-transactions",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as s}from"./index-DR6XzkYl.js";const l={title:"Sending Transactions",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...a(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-transactions",children:["Sending Transactions",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-transactions",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(n.p,{children:[`Signing a transaction will only retrieve the signed payload. If you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from `,s.jsx(n.code,{children:"signTransactions"})," to ",s.jsx(n.code,{children:"sendTransaction"}),"):"]}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" transaction"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` diff --git a/assets/05-validation-BMAIT7lp.js b/assets/05-validation-fu6h6RT4.js similarity index 99% rename from assets/05-validation-BMAIT7lp.js rename to assets/05-validation-fu6h6RT4.js index 26545900263..0765d4c9159 100644 --- a/assets/05-validation-BMAIT7lp.js +++ b/assets/05-validation-fu6h6RT4.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-Bn6H9hrN.js";const l={title:"Validation",description:"undefined"};function a(e){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"validation",children:["Validation",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#validation",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s}from"./index-DR6XzkYl.js";const l={title:"Validation",description:"undefined"};function a(e){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"validation",children:["Validation",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#validation",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(i.p,{children:"Users with Auth + Embedded Wallet go through two distinct flows based on the login method:"}),` `,s.jsxs(i.h3,{id:"email-login-one-time-code",children:["Email login (one-time code)",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#email-login-one-time-code",children:s.jsx(i.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(i.p,{children:"For users logging in with an email, Amazon Cognito sends a one-time code to validate their identity. This is a trusted method that does not require additional verification."}),` diff --git a/assets/05-web3-onboard-C59AlOaH.js b/assets/05-web3-onboard-NhfD69Ky.js similarity index 99% rename from assets/05-web3-onboard-C59AlOaH.js rename to assets/05-web3-onboard-NhfD69Ky.js index 03b60b79af8..b081f9e46fd 100644 --- a/assets/05-web3-onboard-C59AlOaH.js +++ b/assets/05-web3-onboard-NhfD69Ky.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";const l={sidebar_label:"Using Web3 Onboard",title:"Using Web3-Onboard",description:"undefined"};function a(n){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"using-web3-onboard",children:["Using Web3-Onboard",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-web3-onboard",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-DR6XzkYl.js";const l={sidebar_label:"Using Web3 Onboard",title:"Using Web3-Onboard",description:"undefined"};function a(n){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"using-web3-onboard",children:["Using Web3-Onboard",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-web3-onboard",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:"The Sequence wallet can be added through the Blocknative web3-onboard package."}),` `,e.jsxs(s.p,{children:[`:::tip Try it live :) Try `,e.jsx(s.a,{href:"https://0xsequence.github.io/demo-dapp-web3-onboard/",children:"a live Dapp example"})," using Sequence + Metamask + Wallet Connect with Web3-Onboard."]}),` diff --git a/assets/05-write-to-blockchain-BhNClGRn.js b/assets/05-write-to-blockchain-CbixjMAO.js similarity index 99% rename from assets/05-write-to-blockchain-BhNClGRn.js rename to assets/05-write-to-blockchain-CbixjMAO.js index 4c7842c0981..e93eeb4b06c 100644 --- a/assets/05-write-to-blockchain-BhNClGRn.js +++ b/assets/05-write-to-blockchain-CbixjMAO.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";const l={title:"Write to Blockchain",description:"undefined"};function a(s){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...i(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"write-to-blockchain",children:["Write to Blockchain",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#write-to-blockchain",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-DR6XzkYl.js";const l={title:"Write to Blockchain",description:"undefined"};function a(s){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...i(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"write-to-blockchain",children:["Write to Blockchain",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#write-to-blockchain",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["The blockchain can be thought of as a general-purpose, publically viewable and verified, database. To write to a blockchain, similar to with a typical database, you must make a ",e.jsx("u",{children:"transaction"}),"."]}),` `,e.jsxs(n.p,{children:["Typically, creating a blockchain transaction is rather complex, but WaaS handles that complexity for you and exposes 5 types of ",e.jsx(n.code,{children:"Transactions"}),"."]}),` `,e.jsxs(n.p,{children:["Sending a transaction is an ",e.jsx(n.a,{href:"https://medium.com/@sonusprocks/async-await-in-c-unity-explained-in-easy-words-571ebb6a9369",children:"asynchronous Task"}),". You can use ",e.jsx(n.code,{children:"await"})," when calling ",e.jsx(n.code,{children:"WaaSWallet.SendTransaction"})," from within an async Task if you wish to obtain the ",e.jsx(n.code,{children:"TransactionReturn"})," object directly. Or, you can take the recommended approach which is to setup handler functions for the ",e.jsx(n.code,{children:"WaaSWallet.OnSendTransactionComplete"})," and ",e.jsx(n.code,{children:"WaaSWallet.OnSendTransactionFailed"})," events and call the ",e.jsx(n.code,{children:"WaaSWallet.SendTransaction"})," method from anywhere (without await). For example:"]}),` diff --git a/assets/06-fiat-on-ramps-T0-3NKJP.js b/assets/06-fiat-on-ramps-BnTibKTi.js similarity index 96% rename from assets/06-fiat-on-ramps-T0-3NKJP.js rename to assets/06-fiat-on-ramps-BnTibKTi.js index f963c65f9e9..343b56434b8 100644 --- a/assets/06-fiat-on-ramps-T0-3NKJP.js +++ b/assets/06-fiat-on-ramps-BnTibKTi.js @@ -1,4 +1,4 @@ -import{d as t,j as e}from"./index-Bn6H9hrN.js";const a={slug:"/fiat-on-ramps",title:"Fiat On-Ramps",description:"undefined"};function i(r){const n={a:"a",div:"div",h1:"h1",header:"header",img:"img",li:"li",p:"p",ul:"ul",...t(),...r.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"fiat-on-ramps",children:["Fiat On-Ramps",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fiat-on-ramps",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as t,j as e}from"./index-DR6XzkYl.js";const a={slug:"/fiat-on-ramps",title:"Fiat On-Ramps",description:"undefined"};function i(r){const n={a:"a",div:"div",h1:"h1",header:"header",img:"img",li:"li",p:"p",ul:"ul",...t(),...r.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"fiat-on-ramps",children:["Fiat On-Ramps",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fiat-on-ramps",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"Sequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;"}),` `,e.jsxs(n.ul,{children:[` `,e.jsx(n.li,{children:e.jsx(n.a,{href:"https://www.moonpay.com/",children:"Moonpay"})}),` diff --git a/assets/06-main-module-upgradeable-Cv58TY4K.js b/assets/06-main-module-upgradeable-qn_mvGhb.js similarity index 90% rename from assets/06-main-module-upgradeable-Cv58TY4K.js rename to assets/06-main-module-upgradeable-qn_mvGhb.js index 0e0237b92ce..9a6dd8503f4 100644 --- a/assets/06-main-module-upgradeable-Cv58TY4K.js +++ b/assets/06-main-module-upgradeable-qn_mvGhb.js @@ -1 +1 @@ -import{d as i,j as t}from"./index-Bn6H9hrN.js";const r={title:"MainModuleUpgradeable & configuration migration",description:"undefined"};function a(e){const n={a:"a",div:"div",h1:"h1",header:"header",...i(),...e.components};return t.jsx(n.header,{children:t.jsxs(n.h1,{id:"mainmoduleupgradeable--configuration-migration",children:["MainModuleUpgradeable & configuration migration",t.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#mainmoduleupgradeable--configuration-migration",children:t.jsx(n.div,{"data-autolink-icon":!0})})]})})}function d(e={}){const{wrapper:n}={...i(),...e.components};return n?t.jsx(n,{...e,children:t.jsx(a,{...e})}):a(e)}export{d as default,r as frontmatter}; +import{d as i,j as t}from"./index-DR6XzkYl.js";const r={title:"MainModuleUpgradeable & configuration migration",description:"undefined"};function a(e){const n={a:"a",div:"div",h1:"h1",header:"header",...i(),...e.components};return t.jsx(n.header,{children:t.jsxs(n.h1,{id:"mainmoduleupgradeable--configuration-migration",children:["MainModuleUpgradeable & configuration migration",t.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#mainmoduleupgradeable--configuration-migration",children:t.jsx(n.div,{"data-autolink-icon":!0})})]})})}function d(e={}){const{wrapper:n}={...i(),...e.components};return n?t.jsx(n,{...e,children:t.jsx(a,{...e})}):a(e)}export{d as default,r as frontmatter}; diff --git a/assets/06-orderbook-transactions-DgOnZQxx.js b/assets/06-orderbook-transactions-DqH4CAJH.js similarity index 99% rename from assets/06-orderbook-transactions-DgOnZQxx.js rename to assets/06-orderbook-transactions-DqH4CAJH.js index 1d8a8b6b441..4cb0d06beb0 100644 --- a/assets/06-orderbook-transactions-DgOnZQxx.js +++ b/assets/06-orderbook-transactions-DqH4CAJH.js @@ -1,4 +1,4 @@ -import{d as i,j as s,e as l}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Sequence Market Orderbook Transactions",description:"undefined"};function r(n){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...i(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"sequence-market-orderbook-transactions",children:["Sequence Market Orderbook Transactions",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-market-orderbook-transactions",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as s,e as l}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Sequence Market Orderbook Transactions",description:"undefined"};function r(n){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...i(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"sequence-market-orderbook-transactions",children:["Sequence Market Orderbook Transactions",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-market-orderbook-transactions",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["All transactions run through a contract at address ",s.jsx(e.code,{children:"0xB537a160472183f2150d42EB1c3DD6684A55f74c"})," on all currently offered networks:"]}),` `,s.jsxs(e.ul,{children:[` `,s.jsx(e.li,{children:"polygon"}),` diff --git a/assets/06-packaging-CeTraCJv.js b/assets/06-packaging-DCgamZU5.js similarity index 98% rename from assets/06-packaging-CeTraCJv.js rename to assets/06-packaging-DCgamZU5.js index 3035ca84e84..c811930692e 100644 --- a/assets/06-packaging-CeTraCJv.js +++ b/assets/06-packaging-DCgamZU5.js @@ -1,4 +1,4 @@ -import{d as o,j as e}from"./index-Bn6H9hrN.js";const a={title:"Packaging",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",ul:"ul",...o(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"packaging",children:["Packaging",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#packaging",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as o,j as e}from"./index-DR6XzkYl.js";const a={title:"Packaging",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",ul:"ul",...o(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"packaging",children:["Packaging",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#packaging",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"To set your system up for Packaging please refer to the following links:"}),` `,e.jsxs(n.ul,{children:[` `,e.jsx(n.li,{children:e.jsx(n.a,{href:"https://docs.unrealengine.com/5.0/en-US/packaging-unreal-engine-projects/",children:"Windows and macOS"})}),` diff --git a/assets/06-read-from-blockchain-B3uVBIhc.js b/assets/06-read-from-blockchain-S3XaeQAP.js similarity index 97% rename from assets/06-read-from-blockchain-B3uVBIhc.js rename to assets/06-read-from-blockchain-S3XaeQAP.js index 62f7541a92b..f9c4a4971ac 100644 --- a/assets/06-read-from-blockchain-B3uVBIhc.js +++ b/assets/06-read-from-blockchain-S3XaeQAP.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-Bn6H9hrN.js";const c={title:"Read from Blockchain",description:"undefined"};function i(s){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...r(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.p,{children:"#TODO Add code tabs"}),` +import{d as r,j as e}from"./index-DR6XzkYl.js";const c={title:"Read from Blockchain",description:"undefined"};function i(s){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...r(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.p,{children:"#TODO Add code tabs"}),` `,e.jsx(n.header,{children:e.jsxs(n.h1,{id:"read-from-blockchain",children:["Read from Blockchain",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#read-from-blockchain",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["Reading from the blockchain is done using Unity-Native implementation of our ",e.jsx(n.a,{href:"/api/indexer/overview",children:"Sequence Indexer"}),"."]}),` `,e.jsxs(n.p,{children:["We recommend creating an instance of the ",e.jsxs(n.a,{href:"https://github.com/0xsequence/sequence-unity/blob/master/Assets/SequenceSDK/Indexer/ChainIndexer.cs",children:[e.jsx(n.code,{children:"ChainIndexer"})," class"]}),". This will expose you to all the functionality offered by the ",e.jsxs(n.a,{href:"https://github.com/0xsequence/sequence-unity/blob/master/Assets/SequenceSDK/Indexer/IIndexer.cs",children:[e.jsx(n.code,{children:"IIndexer"})," interface"]}),"."]}),` diff --git a/assets/06-send-erc20-BswrOfdh.js b/assets/06-send-erc20-DK7j3wYS.js similarity index 99% rename from assets/06-send-erc20-BswrOfdh.js rename to assets/06-send-erc20-DK7j3wYS.js index 93906158c2a..8ee0098f2da 100644 --- a/assets/06-send-erc20-BswrOfdh.js +++ b/assets/06-send-erc20-DK7j3wYS.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-Bn6H9hrN.js";const r={title:"Sending ERC-20 Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-20-tokens",children:["Sending ERC-20 Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-20-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-DR6XzkYl.js";const r={title:"Sending ERC-20 Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-20-tokens",children:["Sending ERC-20 Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-20-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(n.p,{children:"You can ask the wallet to send a single ERC-20 token transfer:"}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" erc20Interface"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(n.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(["})]}),` `,s.jsx(n.span,{className:"line",children:s.jsx(n.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" 'function transfer(address _to, uint256 _value)'"})}),` diff --git a/assets/06-send-erc20-Dlnoxfm2.js b/assets/06-send-erc20-DSzwbCHJ.js similarity index 99% rename from assets/06-send-erc20-Dlnoxfm2.js rename to assets/06-send-erc20-DSzwbCHJ.js index 93906158c2a..8ee0098f2da 100644 --- a/assets/06-send-erc20-Dlnoxfm2.js +++ b/assets/06-send-erc20-DSzwbCHJ.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-Bn6H9hrN.js";const r={title:"Sending ERC-20 Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-20-tokens",children:["Sending ERC-20 Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-20-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-DR6XzkYl.js";const r={title:"Sending ERC-20 Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-20-tokens",children:["Sending ERC-20 Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-20-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(n.p,{children:"You can ask the wallet to send a single ERC-20 token transfer:"}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" erc20Interface"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(n.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(["})]}),` `,s.jsx(n.span,{className:"line",children:s.jsx(n.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" 'function transfer(address _to, uint256 _value)'"})}),` diff --git a/assets/06-tokens-BvNhWInG.js b/assets/06-tokens-DgF_JSY-.js similarity index 98% rename from assets/06-tokens-BvNhWInG.js rename to assets/06-tokens-DgF_JSY-.js index 9b464492f65..4b67178dd57 100644 --- a/assets/06-tokens-BvNhWInG.js +++ b/assets/06-tokens-DgF_JSY-.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-Bn6H9hrN.js";const t={title:"Tokens",description:"undefined"};function i(a){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"tokens",children:["Tokens",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#tokens",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-DR6XzkYl.js";const t={title:"Tokens",description:"undefined"};function i(a){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"tokens",children:["Tokens",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#tokens",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["Since their use is so ubiquitous, we've provided ",e.jsx(n.code,{children:"ERC20"}),", ",e.jsx(n.code,{children:"ERC721"}),", and ",e.jsx(n.code,{children:"ERC1155"})," wrappers of the ",e.jsx(n.code,{children:"Contract"})," class with pre-defined ABIs for your convenience. When interacting with tokens, it is recommended to use these."]}),` `,e.jsx(n.p,{children:"Any of these contract wrappers can be created via a standard constructor requiring only the contract address. For example:"}),` `,e.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:e.jsx(n.code,{children:e.jsx(n.span,{className:"line",children:e.jsx(n.span,{children:"ERC20 erc20 = new ERC20(contractAddress);"})})})}),` diff --git a/assets/06-transaction-receipts-Bur2MgK_.js b/assets/06-transaction-receipts-kCr4ctoT.js similarity index 99% rename from assets/06-transaction-receipts-Bur2MgK_.js rename to assets/06-transaction-receipts-kCr4ctoT.js index 57ce65d3e9e..696931e703c 100644 --- a/assets/06-transaction-receipts-Bur2MgK_.js +++ b/assets/06-transaction-receipts-kCr4ctoT.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-Bn6H9hrN.js";const r={title:"Transaction receipts",description:"undefined"};function l(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"transaction-receipts",children:["Transaction receipts",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#transaction-receipts",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s}from"./index-DR6XzkYl.js";const r={title:"Transaction receipts",description:"undefined"};function l(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"transaction-receipts",children:["Transaction receipts",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#transaction-receipts",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["Any methods that involve sending transactions will return either ",s.jsx(e.em,{children:"successful"})," or ",s.jsx(e.em,{children:"failed"})," transaction receipts. Failed transaction receipts are generated without executing the transaction."]}),` `,s.jsxs(e.h2,{id:"successful-transaction-response",children:["Successful transaction response",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#successful-transaction-response",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.p,{children:["Any transaction that is successfully included in a block will return a ",s.jsx(e.code,{children:"SentTransactionResponse"})," object. This must be checked for before accessing the transaction hash, using the ",s.jsx(e.code,{children:"isSentTransactionResponse"})," type guard."]}),` diff --git a/assets/06-web3-react-v6-DPgVqEZy.js b/assets/06-web3-react-v6-DsVPcEC0.js similarity index 99% rename from assets/06-web3-react-v6-DPgVqEZy.js rename to assets/06-web3-react-v6-DsVPcEC0.js index 931df126e78..b666b2f7d5d 100644 --- a/assets/06-web3-react-v6-DPgVqEZy.js +++ b/assets/06-web3-react-v6-DsVPcEC0.js @@ -1,4 +1,4 @@ -import{d as a,j as e}from"./index-Bn6H9hrN.js";const l={sidebar_label:"Web3 React V6",title:"Using Web3-React V6",description:"undefined"};function n(i){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"using-web3-react-v6",children:["Using Web3-React V6",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-web3-react-v6",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e}from"./index-DR6XzkYl.js";const l={sidebar_label:"Web3 React V6",title:"Using Web3-React V6",description:"undefined"};function n(i){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"using-web3-react-v6",children:["Using Web3-React V6",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-web3-react-v6",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:"The connector is available for web3-react V6. Please note that later versions of web3-react cannot be used with the Web3-React V6 connector due to breaking changes."}),` `,e.jsxs(s.h2,{id:"installation",children:["Installation",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#installation",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(s.p,{children:"The connector may be installed via the npm package:"}),` diff --git a/assets/07-Architecture-CFB_rX-9.js b/assets/07-Architecture-BcBe-PC2.js similarity index 75% rename from assets/07-Architecture-CFB_rX-9.js rename to assets/07-Architecture-BcBe-PC2.js index 2dbad503f22..ed96a024c9f 100644 --- a/assets/07-Architecture-CFB_rX-9.js +++ b/assets/07-Architecture-BcBe-PC2.js @@ -1 +1 @@ -import{d as r,j as n}from"./index-Bn6H9hrN.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; +import{d as r,j as n}from"./index-DR6XzkYl.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/07-key-management-JqgkrJAs.js b/assets/07-key-management-31l3CdaD.js similarity index 98% rename from assets/07-key-management-JqgkrJAs.js rename to assets/07-key-management-31l3CdaD.js index 99e6455811f..74df153ab07 100644 --- a/assets/07-key-management-JqgkrJAs.js +++ b/assets/07-key-management-31l3CdaD.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";const o={slug:"/key-management",title:"Key Management",description:"undefined"};function n(s){const t={a:"a",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",...i(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"key-management",children:["Key Management",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#key-management",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-DR6XzkYl.js";const o={slug:"/key-management",title:"Key Management",description:"undefined"};function n(s){const t={a:"a",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",...i(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"key-management",children:["Key Management",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#key-management",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"Each Sequence wallet can be controlled by multiple private keys, acting like a multisignature wallet. Users can either create a Sequence wallet using one of the supported social login options or create a wallet with a private key stored only on that device."}),` `,e.jsx(t.p,{children:"The improved security compared to traditional blockchain wallet comes from the fact that multiple independent keys need to be compromised for a malicious actor to take control of a user’s wallet, instead of a single key. The philosophy is that the more independent private-keys the user adds to their wallet, the more secure their wallet becomes, even if each individual key is only moderately secure on their own."}),` `,e.jsxs(t.h2,{id:"social-login-wallets",children:["Social Login Wallets",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#social-login-wallets",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/07-send-erc721-CsBCYkAg.js b/assets/07-send-erc721-CLlkpkZ7.js similarity index 99% rename from assets/07-send-erc721-CsBCYkAg.js rename to assets/07-send-erc721-CLlkpkZ7.js index b21ae43bdb5..d1ba9672324 100644 --- a/assets/07-send-erc721-CsBCYkAg.js +++ b/assets/07-send-erc721-CLlkpkZ7.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-Bn6H9hrN.js";const r={title:"Sending ERC-721 (NFT) Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-721-nft-tokens",children:["Sending ERC-721 (NFT) Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-721-nft-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-DR6XzkYl.js";const r={title:"Sending ERC-721 (NFT) Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-721-nft-tokens",children:["Sending ERC-721 (NFT) Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-721-nft-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(n.p,{children:`Sending an ERC-721 NFT is similar to sending an ERC-20 token. The only notable difference is in the contract standard itself:`}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" erc721Interface"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(n.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(["})]}),` diff --git a/assets/07-send-erc721-CuoiTcG6.js b/assets/07-send-erc721-Crk85xhq.js similarity index 99% rename from assets/07-send-erc721-CuoiTcG6.js rename to assets/07-send-erc721-Crk85xhq.js index b21ae43bdb5..d1ba9672324 100644 --- a/assets/07-send-erc721-CuoiTcG6.js +++ b/assets/07-send-erc721-Crk85xhq.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-Bn6H9hrN.js";const r={title:"Sending ERC-721 (NFT) Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-721-nft-tokens",children:["Sending ERC-721 (NFT) Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-721-nft-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-DR6XzkYl.js";const r={title:"Sending ERC-721 (NFT) Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-721-nft-tokens",children:["Sending ERC-721 (NFT) Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-721-nft-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(n.p,{children:`Sending an ERC-721 NFT is similar to sending an ERC-20 token. The only notable difference is in the contract standard itself:`}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" erc721Interface"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(n.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(["})]}),` diff --git a/assets/07-sign-messages-CJrdbWnF.js b/assets/07-sign-messages-DrXhCl-Q.js similarity index 97% rename from assets/07-sign-messages-CJrdbWnF.js rename to assets/07-sign-messages-DrXhCl-Q.js index 4df54334cce..d65dc36f890 100644 --- a/assets/07-sign-messages-CJrdbWnF.js +++ b/assets/07-sign-messages-DrXhCl-Q.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";const l={title:"Sign Messages",description:"undefined"};function a(n){const s={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"sign-messages",children:["Sign Messages",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sign-messages",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-DR6XzkYl.js";const l={title:"Sign Messages",description:"undefined"};function a(n){const s={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"sign-messages",children:["Sign Messages",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sign-messages",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.p,{children:["Signing a message is an ",e.jsx(s.a,{href:"https://medium.com/@sonusprocks/async-await-in-c-unity-explained-in-easy-words-571ebb6a9369",children:"asynchronous Task"}),". You can use ",e.jsx(s.code,{children:"await"})," when calling ",e.jsx(s.code,{children:"WaaSWallet.SignMessage"})," from within an async Task if you wish to obtain the ",e.jsx(s.code,{children:"SignMessageReturn"})," object directly. Or, you can take the recommended approach which is to setup a handler function for the ",e.jsx(s.code,{children:"WaaSWallet.OnSignMessageComplete"})," event and call the ",e.jsx(s.code,{children:"WaaSWallet.SignMessage"})," method from anywhere (without await). For example:"]}),` `,e.jsx(s.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:e.jsxs(s.code,{children:[e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"public void OnSignMessageCompleteHandler(string signature) {"})}),` `,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:" // Do something"})}),` diff --git a/assets/07-web3modal-CJWNDuPy.js b/assets/07-web3modal-UaDM0Ykz.js similarity index 96% rename from assets/07-web3modal-CJWNDuPy.js rename to assets/07-web3modal-UaDM0Ykz.js index 0cf253d5378..0222473159b 100644 --- a/assets/07-web3modal-CJWNDuPy.js +++ b/assets/07-web3modal-UaDM0Ykz.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";const s={sidebar_label:"Using Web3Modal",title:"Using Web3Modal",description:"undefined"};function t(a){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",...i(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"using-web3modal",children:["Using Web3Modal",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-web3modal",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-DR6XzkYl.js";const s={sidebar_label:"Using Web3Modal",title:"Using Web3Modal",description:"undefined"};function t(a){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",...i(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"using-web3modal",children:["Using Web3Modal",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-web3modal",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"The Sequence wallet can easily be used with Web3Modal."}),` `,e.jsxs(n.p,{children:[`:::tip Try it live :) Try `,e.jsx(n.a,{href:"https://0xsequence.github.io/demo-dapp-web3modal/",children:"a live Dapp example"})," using Sequence + Wallet Connect with Web3Modal."]}),` diff --git a/assets/08-FAQ-BnZeRgpC.js b/assets/08-FAQ-CuGN-2pd.js similarity index 99% rename from assets/08-FAQ-BnZeRgpC.js rename to assets/08-FAQ-CuGN-2pd.js index dc3ca693480..d509fe812db 100644 --- a/assets/08-FAQ-BnZeRgpC.js +++ b/assets/08-FAQ-CuGN-2pd.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-Bn6H9hrN.js";const a={sidebar_label:"FAQ"};function i(n){const s={a:"a",code:"code",div:"div",h2:"h2",h3:"h3",p:"p",pre:"pre",span:"span",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.p,{children:"Below are frequently asked questions related to the integration of the Sequence wallet connector."}),` +import{d as r,j as e}from"./index-DR6XzkYl.js";const a={sidebar_label:"FAQ"};function i(n){const s={a:"a",code:"code",div:"div",h2:"h2",h3:"h3",p:"p",pre:"pre",span:"span",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.p,{children:"Below are frequently asked questions related to the integration of the Sequence wallet connector."}),` `,e.jsxs(s.h2,{id:"nextjs",children:["NextJs",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#nextjs",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(s.h3,{id:"why-does-my-wallet-integration-produce-an-error-when-used-with-nextjs",children:["Why does my wallet integration produce an error when used with next.js?",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#why-does-my-wallet-integration-produce-an-error-when-used-with-nextjs",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(s.p,{children:"Wallet libraries and connectors must be rendered in the browser. This is particularly true for Wagmi and Wagmi-based libraries. Attempts to render the page elsewhere, such as on backend server, can produce errors in some situations. Rendering on the server is therefore highly discouraged."}),` diff --git a/assets/08-deploy-contracts-COfdfYKV.js b/assets/08-deploy-contracts-BI-L_Iwr.js similarity index 98% rename from assets/08-deploy-contracts-COfdfYKV.js rename to assets/08-deploy-contracts-BI-L_Iwr.js index d4fc80785ab..2180a1eca51 100644 --- a/assets/08-deploy-contracts-COfdfYKV.js +++ b/assets/08-deploy-contracts-BI-L_Iwr.js @@ -1,4 +1,4 @@ -import{d as t,j as e}from"./index-Bn6H9hrN.js";const i={title:"Contract Deployment",description:"undefined"};function s(a){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...t(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"contract-deployment",children:["Contract Deployment",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-deployment",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as t,j as e}from"./index-DR6XzkYl.js";const i={title:"Contract Deployment",description:"undefined"};function s(a){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...t(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"contract-deployment",children:["Contract Deployment",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-deployment",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["While, in general, we would recommend deploying your smart contracts via the ",e.jsx(n.a,{href:"https://sequence.build/",children:"Builder"}),", we recognize that there are some use cases where deploying a smart contract from Unity (or a Made-With-Unity application) is useful."]}),` `,e.jsxs(n.p,{children:["Contract deployment involves sending a transaction, which is done via an ",e.jsx(n.a,{href:"https://medium.com/@sonusprocks/async-await-in-c-unity-explained-in-easy-words-571ebb6a9369",children:"asynchronous Task"}),". You can use ",e.jsx(n.code,{children:"await"})," when calling ",e.jsx(n.code,{children:"WaaSWallet.DeployContract"})," from within an async Task if you wish to obtain the ",e.jsx(n.code,{children:"ContractDeploymentReturn"})," object directly. Or, you can take the recommended approach which is to setup handler functions for the ",e.jsx(n.code,{children:"WaaSWallet.OnDeployContractComplete"})," and ",e.jsx(n.code,{children:"WaaSWallet.OnDeployContractFailed"})," events and call the ",e.jsx(n.code,{children:"WaaSWallet.DeployContract"})," method from anywhere (without await)."]}),` `,e.jsxs(n.p,{children:[e.jsx(n.code,{children:"WaaSWallet.DeployContract"})," is essentially a wrapper for a very special ",e.jsx(n.code,{children:"WaaSWallet.SendTransaction"})," call and therefore, you can expect to still receive the ",e.jsx(n.code,{children:"WaaSWallet.OnSendTransactionComplete"})," or ",e.jsx(n.code,{children:"WaaSWallet.OnSendTransactionFailed"})," events in addition."]}),` diff --git a/assets/08-send-erc1155-BvjJ3TJQ.js b/assets/08-send-erc1155-BS-Icmoz.js similarity index 99% rename from assets/08-send-erc1155-BvjJ3TJQ.js rename to assets/08-send-erc1155-BS-Icmoz.js index 334e7300a5a..9334278d5c6 100644 --- a/assets/08-send-erc1155-BvjJ3TJQ.js +++ b/assets/08-send-erc1155-BS-Icmoz.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-Bn6H9hrN.js";const r={title:"Sending ERC-1155 (Collectible) Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-1155-collectible-tokens",children:["Sending ERC-1155 (Collectible) Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-1155-collectible-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-DR6XzkYl.js";const r={title:"Sending ERC-1155 (Collectible) Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-1155-collectible-tokens",children:["Sending ERC-1155 (Collectible) Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-1155-collectible-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(n.p,{children:`Sending an ERC-1155 collectible is similar to sending an ERC-20 token. The only notable difference is in the contract standard itself:`}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" erc1155Interface"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(n.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(["})]}),` diff --git a/assets/08-send-erc1155-CZ-semBW.js b/assets/08-send-erc1155-vmPKw9IF.js similarity index 99% rename from assets/08-send-erc1155-CZ-semBW.js rename to assets/08-send-erc1155-vmPKw9IF.js index 334e7300a5a..9334278d5c6 100644 --- a/assets/08-send-erc1155-CZ-semBW.js +++ b/assets/08-send-erc1155-vmPKw9IF.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-Bn6H9hrN.js";const r={title:"Sending ERC-1155 (Collectible) Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-1155-collectible-tokens",children:["Sending ERC-1155 (Collectible) Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-1155-collectible-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-DR6XzkYl.js";const r={title:"Sending ERC-1155 (Collectible) Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-1155-collectible-tokens",children:["Sending ERC-1155 (Collectible) Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-1155-collectible-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(n.p,{children:`Sending an ERC-1155 collectible is similar to sending an ERC-20 token. The only notable difference is in the contract standard itself:`}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" erc1155Interface"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(n.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(["})]}),` diff --git a/assets/08-signature-encoding-CuAO-4z4.js b/assets/08-signature-encoding--DDkWq4i.js similarity index 99% rename from assets/08-signature-encoding-CuAO-4z4.js rename to assets/08-signature-encoding--DDkWq4i.js index 352af230451..0794b8660bc 100644 --- a/assets/08-signature-encoding-CuAO-4z4.js +++ b/assets/08-signature-encoding--DDkWq4i.js @@ -1,4 +1,4 @@ -import{d as a,j as s}from"./index-Bn6H9hrN.js";const r={title:"Signature Encoding",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"signature-encoding",children:["Signature Encoding",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#signature-encoding",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as s}from"./index-DR6XzkYl.js";const r={title:"Signature Encoding",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"signature-encoding",children:["Signature Encoding",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#signature-encoding",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["Sequence Wallets support ",s.jsx(e.a,{href:"https://eips.ethereum.org/EIPS/eip-1271",children:"ERC-1271 Standard Contract Signature Verification"})," to allow signing of transactions and messages."]}),` `,s.jsxs(e.h2,{id:"erc-191-ethereum-signed-data",children:["ERC-191 Ethereum Signed Data",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#erc-191-ethereum-signed-data",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.p,{children:["Messages encoded with as ",s.jsx(e.a,{href:"https://eips.ethereum.org/EIPS/eip-191",children:"ERC-191 Ethereum Signed Data"})," are able to be created and signed as follows."]}),` diff --git a/assets/09-nested-transaction-batching-Cai87NjL.js b/assets/09-nested-transaction-batching-i_3yyQlj.js similarity index 89% rename from assets/09-nested-transaction-batching-Cai87NjL.js rename to assets/09-nested-transaction-batching-i_3yyQlj.js index 38891cee542..bd1393276ad 100644 --- a/assets/09-nested-transaction-batching-Cai87NjL.js +++ b/assets/09-nested-transaction-batching-i_3yyQlj.js @@ -1 +1 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";const s={title:"Nested Transaction Batching",description:"undefined"};function a(t){const n={a:"a",div:"div",h1:"h1",header:"header",...i(),...t.components};return e.jsx(n.header,{children:e.jsxs(n.h1,{id:"nested-transaction-batching",children:["Nested Transaction Batching",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#nested-transaction-batching",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})})}function d(t={}){const{wrapper:n}={...i(),...t.components};return n?e.jsx(n,{...t,children:e.jsx(a,{...t})}):a(t)}export{d as default,s as frontmatter}; +import{d as i,j as e}from"./index-DR6XzkYl.js";const s={title:"Nested Transaction Batching",description:"undefined"};function a(t){const n={a:"a",div:"div",h1:"h1",header:"header",...i(),...t.components};return e.jsx(n.header,{children:e.jsxs(n.h1,{id:"nested-transaction-batching",children:["Nested Transaction Batching",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#nested-transaction-batching",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})})}function d(t={}){const{wrapper:n}={...i(),...t.components};return n?e.jsx(n,{...t,children:e.jsx(a,{...t})}):a(t)}export{d as default,s as frontmatter}; diff --git a/assets/09-send-batch-transactions-DABe3vy4.js b/assets/09-send-batch-transactions-D-VMCWEl.js similarity index 99% rename from assets/09-send-batch-transactions-DABe3vy4.js rename to assets/09-send-batch-transactions-D-VMCWEl.js index abb0ac00a42..53b081f4e60 100644 --- a/assets/09-send-batch-transactions-DABe3vy4.js +++ b/assets/09-send-batch-transactions-D-VMCWEl.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-Bn6H9hrN.js";const l={title:"Sending a Batch of Transactions",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...r(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-a-batch-of-transactions",children:["Sending a Batch of Transactions",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-a-batch-of-transactions",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-DR6XzkYl.js";const l={title:"Sending a Batch of Transactions",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...r(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-a-batch-of-transactions",children:["Sending a Batch of Transactions",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-a-batch-of-transactions",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(n.p,{children:"Likewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:"}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" transaction1"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` `,s.jsx(n.span,{className:"line",children:s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" to: recipient1Address,"})}),` diff --git a/assets/09-send-batch-transactions-DK07H4Kh.js b/assets/09-send-batch-transactions-DGwawNlD.js similarity index 99% rename from assets/09-send-batch-transactions-DK07H4Kh.js rename to assets/09-send-batch-transactions-DGwawNlD.js index abb0ac00a42..53b081f4e60 100644 --- a/assets/09-send-batch-transactions-DK07H4Kh.js +++ b/assets/09-send-batch-transactions-DGwawNlD.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-Bn6H9hrN.js";const l={title:"Sending a Batch of Transactions",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...r(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-a-batch-of-transactions",children:["Sending a Batch of Transactions",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-a-batch-of-transactions",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-DR6XzkYl.js";const l={title:"Sending a Batch of Transactions",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...r(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-a-batch-of-transactions",children:["Sending a Batch of Transactions",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-a-batch-of-transactions",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(n.p,{children:"Likewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:"}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" transaction1"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` `,s.jsx(n.span,{className:"line",children:s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" to: recipient1Address,"})}),` diff --git a/assets/09-wallet-ui-IOp_A6vv.js b/assets/09-wallet-ui-DQWmGe8q.js similarity index 99% rename from assets/09-wallet-ui-IOp_A6vv.js rename to assets/09-wallet-ui-DQWmGe8q.js index 73a07bf3f6d..7ae8bd0c2a0 100644 --- a/assets/09-wallet-ui-IOp_A6vv.js +++ b/assets/09-wallet-ui-DQWmGe8q.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-Bn6H9hrN.js";const o={title:"Wallet UI",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",...s(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"wallet-ui",children:["Wallet UI",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-ui",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-DR6XzkYl.js";const o={title:"Wallet UI",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",...s(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"wallet-ui",children:["Wallet UI",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-ui",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"As a Wallet as a Service product, this SDK requires no UI. However, as we expect some apps will still choose to provide some form of wallet UI to users, we are making efforts to provide a default UI for you to use."}),` `,e.jsxs(n.p,{children:["This UI can be found under ",e.jsx(n.code,{children:"SequenceExamples"}),"."]}),` `,e.jsxs(n.p,{children:["To add the UI to your scene, you can add the ",e.jsx(n.code,{children:"WalletPanel"})," prefab found under ",e.jsx(n.code,{children:"SequenceExamples > Prefabs"}),". It is opened using the Open method; you must provide an ",e.jsx(n.a,{href:"https://github.com/0xsequence/sequence-unity/blob/master/Assets/SequenceSDK/WaaS/IWallet.cs",children:e.jsx(n.code,{children:"IWallet"})})," (e.g. a ",e.jsx(n.code,{children:"WaaSWallet"}),") as an argument."]}),` diff --git a/assets/10-building-backends-B5UE4lHW.js b/assets/10-building-backends-BAI9VV8A.js similarity index 98% rename from assets/10-building-backends-B5UE4lHW.js rename to assets/10-building-backends-BAI9VV8A.js index f1b346ea8f0..881d0358a10 100644 --- a/assets/10-building-backends-B5UE4lHW.js +++ b/assets/10-building-backends-BAI9VV8A.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";const r={title:"Building Backends with Sequence",description:"undefined"};function s(t){const n={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"building-backends-with-sequence",children:["Building Backends with Sequence",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#building-backends-with-sequence",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-DR6XzkYl.js";const r={title:"Building Backends with Sequence",description:"undefined"};function s(t){const n={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"building-backends-with-sequence",children:["Building Backends with Sequence",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#building-backends-with-sequence",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.h3,{id:"nodejs",children:["nodejs",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#nodejs",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.p,{children:["The ",e.jsx(n.a,{href:"https://github.com/0xsequence/sequence.js",children:"0xsequence"}),` package which is available for browser / client use, also works perfectly on nodejs backends written in Javascript or Typescript.`]}),` diff --git a/assets/10-building-backends-qcbLp100.js b/assets/10-building-backends-D9uYDf2v.js similarity index 98% rename from assets/10-building-backends-qcbLp100.js rename to assets/10-building-backends-D9uYDf2v.js index f1b346ea8f0..881d0358a10 100644 --- a/assets/10-building-backends-qcbLp100.js +++ b/assets/10-building-backends-D9uYDf2v.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";const r={title:"Building Backends with Sequence",description:"undefined"};function s(t){const n={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"building-backends-with-sequence",children:["Building Backends with Sequence",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#building-backends-with-sequence",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-DR6XzkYl.js";const r={title:"Building Backends with Sequence",description:"undefined"};function s(t){const n={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"building-backends-with-sequence",children:["Building Backends with Sequence",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#building-backends-with-sequence",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.h3,{id:"nodejs",children:["nodejs",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#nodejs",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.p,{children:["The ",e.jsx(n.a,{href:"https://github.com/0xsequence/sequence.js",children:"0xsequence"}),` package which is available for browser / client use, also works perfectly on nodejs backends written in Javascript or Typescript.`]}),` diff --git a/assets/10-guest-module-Cau816gI.js b/assets/10-guest-module-aJInQEuh.js similarity index 90% rename from assets/10-guest-module-Cau816gI.js rename to assets/10-guest-module-aJInQEuh.js index 2f154c05e99..44ac88521bb 100644 --- a/assets/10-guest-module-Cau816gI.js +++ b/assets/10-guest-module-aJInQEuh.js @@ -1 +1 @@ -import{d as o,j as d}from"./index-Bn6H9hrN.js";const r={title:"GuestModule and on-demand deployment",description:"undefined"};function t(n){const e={a:"a",div:"div",h1:"h1",header:"header",...o(),...n.components};return d.jsx(e.header,{children:d.jsxs(e.h1,{id:"guestmodule-and-on-demand-deployment",children:["GuestModule and on-demand deployment",d.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#guestmodule-and-on-demand-deployment",children:d.jsx(e.div,{"data-autolink-icon":!0})})]})})}function s(n={}){const{wrapper:e}={...o(),...n.components};return e?d.jsx(e,{...n,children:d.jsx(t,{...n})}):t(n)}export{s as default,r as frontmatter}; +import{d as o,j as d}from"./index-DR6XzkYl.js";const r={title:"GuestModule and on-demand deployment",description:"undefined"};function t(n){const e={a:"a",div:"div",h1:"h1",header:"header",...o(),...n.components};return d.jsx(e.header,{children:d.jsxs(e.h1,{id:"guestmodule-and-on-demand-deployment",children:["GuestModule and on-demand deployment",d.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#guestmodule-and-on-demand-deployment",children:d.jsx(e.div,{"data-autolink-icon":!0})})]})})}function s(n={}){const{wrapper:e}={...o(),...n.components};return e?d.jsx(e,{...n,children:d.jsx(t,{...n})}):t(n)}export{s as default,r as frontmatter}; diff --git a/assets/11-wallet-context-munICQdC.js b/assets/11-wallet-context-Bq48GAe9.js similarity index 98% rename from assets/11-wallet-context-munICQdC.js rename to assets/11-wallet-context-Bq48GAe9.js index 77bcbdeb575..972f8f876f4 100644 --- a/assets/11-wallet-context-munICQdC.js +++ b/assets/11-wallet-context-Bq48GAe9.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-Bn6H9hrN.js";const a={title:"Wallet Context",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",h1:"h1",header:"header",pre:"pre",span:"span",...l(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"wallet-context",children:["Wallet Context",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-context",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-DR6XzkYl.js";const a={title:"Wallet Context",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",h1:"h1",header:"header",pre:"pre",span:"span",...l(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"wallet-context",children:["Wallet Context",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-context",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(e.code,{children:[s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"export"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" sequenceContext"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:" WalletContext"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` `,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" factory: "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"'0xf9D09D634Fb818b05149329C1dcCFAeA53639d96'"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` `,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" mainModule: "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"'0xd01F11855bCcb95f88D7A48492F66410d4637313'"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` diff --git a/assets/12-contract-audits-CIZsucst.js b/assets/12-contract-audits-CQhSuOeI.js similarity index 97% rename from assets/12-contract-audits-CIZsucst.js rename to assets/12-contract-audits-CQhSuOeI.js index 28353dd9e28..a69f2e48156 100644 --- a/assets/12-contract-audits-CIZsucst.js +++ b/assets/12-contract-audits-CQhSuOeI.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";const r={title:"Contract Audits",description:"undefined"};function s(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"contract-audits",children:["Contract Audits",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-audits",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-DR6XzkYl.js";const r={title:"Contract Audits",description:"undefined"};function s(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"contract-audits",children:["Contract Audits",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-audits",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"Sequence wallet contracts underwent two independent audits by Consensys Diligence and Quantstamp."}),` `,e.jsxs(n.p,{children:[e.jsx(n.strong,{children:"Note"}),': Sequence Wallet was formerly known as "Arcadeum Wallet". Any references of "Arcadeum" in these reports are synonymous with "Sequence".']}),` `,e.jsxs(n.h2,{id:"quantstamp",children:["Quantstamp",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quantstamp",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/5189-4337-eFMx7GIk.js b/assets/5189-4337-C0tAKxP9.js similarity index 75% rename from assets/5189-4337-eFMx7GIk.js rename to assets/5189-4337-C0tAKxP9.js index 2dbad503f22..ed96a024c9f 100644 --- a/assets/5189-4337-eFMx7GIk.js +++ b/assets/5189-4337-C0tAKxP9.js @@ -1 +1 @@ -import{d as r,j as n}from"./index-Bn6H9hrN.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; +import{d as r,j as n}from"./index-DR6XzkYl.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/800-manage-metadata-builder-BdRNcAvW.js b/assets/800-manage-metadata-builder-D4heEJGP.js similarity index 99% rename from assets/800-manage-metadata-builder-BdRNcAvW.js rename to assets/800-manage-metadata-builder-D4heEJGP.js index 22ca11356f4..1ebac36945e 100644 --- a/assets/800-manage-metadata-builder-BdRNcAvW.js +++ b/assets/800-manage-metadata-builder-D4heEJGP.js @@ -1,4 +1,4 @@ -import{d as n,j as e}from"./index-Bn6H9hrN.js";const d={title:"How to Manage Item Metadata in Sequence Builder",description:"undefined"};function i(t){const a={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",img:"img",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"how-to-manage-item-metadata-in-sequence-builder",children:["How to Manage Item Metadata in Sequence Builder",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#how-to-manage-item-metadata-in-sequence-builder",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as e}from"./index-DR6XzkYl.js";const d={title:"How to Manage Item Metadata in Sequence Builder",description:"undefined"};function i(t){const a={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",img:"img",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"how-to-manage-item-metadata-in-sequence-builder",children:["How to Manage Item Metadata in Sequence Builder",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#how-to-manage-item-metadata-in-sequence-builder",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(a.h2,{id:"introduction",children:["Introduction",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:e.jsx(a.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(a.p,{children:["Following this guide, you can easily manage token metadata for your contract items in Sequence Builder, with a little help from ",e.jsx(a.a,{href:"https://www.pinata.cloud/",children:"Pinata"})," for IPFS hosting."]}),` `,e.jsxs(a.h2,{id:"step-1-prepare-your-token-images-and-metadata",children:["Step 1: Prepare Your Token Images and Metadata",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#step-1-prepare-your-token-images-and-metadata",children:e.jsx(a.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/CardGrid-aCCIcMd4.js b/assets/CardGrid-BnCcSD8R.js similarity index 87% rename from assets/CardGrid-aCCIcMd4.js rename to assets/CardGrid-BnCcSD8R.js index ad9c75f3d02..e9d7573ab1c 100644 --- a/assets/CardGrid-aCCIcMd4.js +++ b/assets/CardGrid-BnCcSD8R.js @@ -1 +1 @@ -import{j as s}from"./index-Bn6H9hrN.js";const n=({title:a,description:r,icon:c,link:d})=>{const e=s.jsxs("div",{className:"card",children:[s.jsx("div",{className:"card-icon",children:c}),s.jsxs("div",{className:"card-content",children:[s.jsx("h2",{className:"card-title",children:a}),s.jsx("p",{className:"card-description",children:r})]})]});return s.jsx("a",{href:d,className:"card-link",children:e})},t=({children:a})=>s.jsx("div",{className:"card-grid",children:a});export{t as C,n as a}; +import{j as s}from"./index-DR6XzkYl.js";const n=({title:a,description:r,icon:c,link:d})=>{const e=s.jsxs("div",{className:"card",children:[s.jsx("div",{className:"card-icon",children:c}),s.jsxs("div",{className:"card-content",children:[s.jsx("h2",{className:"card-title",children:a}),s.jsx("p",{className:"card-description",children:r})]})]});return s.jsx("a",{href:d,className:"card-link",children:e})},t=({children:a})=>s.jsx("div",{className:"card-grid",children:a});export{t as C,n as a}; diff --git a/assets/Video-C_LaYbpR.js b/assets/Video-DrWW48g_.js similarity index 90% rename from assets/Video-C_LaYbpR.js rename to assets/Video-DrWW48g_.js index 4ed8c422dac..22caaab48c9 100644 --- a/assets/Video-C_LaYbpR.js +++ b/assets/Video-DrWW48g_.js @@ -1 +1 @@ -import{r as t,j as s}from"./index-Bn6H9hrN.js";const a=i=>{const e=t.useRef(null),r=t.useRef(null);return t.useEffect(()=>{const c=()=>{r.current&&e.current&&(r.current.style.display="block",e.current.style.display="none",r.current.src+="?autoplay=1")},n=e.current;return n.addEventListener("click",c),()=>{n.removeEventListener("click",c)}},[]),s.jsxs("div",{className:"video-container",children:[s.jsx("img",{ref:e,className:"preview-image",src:i.videoPreviewSrc,alt:"Preview"}),s.jsx("video",{ref:r,className:"video-frame",width:"560",height:"315",controls:!0,muted:!0,src:i.videoSrc,type:"video/mp4",style:{display:"none"}})]})};export{a as V}; +import{r as t,j as s}from"./index-DR6XzkYl.js";const a=i=>{const e=t.useRef(null),r=t.useRef(null);return t.useEffect(()=>{const c=()=>{r.current&&e.current&&(r.current.style.display="block",e.current.style.display="none",r.current.src+="?autoplay=1")},n=e.current;return n.addEventListener("click",c),()=>{n.removeEventListener("click",c)}},[]),s.jsxs("div",{className:"video-container",children:[s.jsx("img",{ref:e,className:"preview-image",src:i.videoPreviewSrc,alt:"Preview"}),s.jsx("video",{ref:r,className:"video-frame",width:"560",height:"315",controls:!0,muted:!0,src:i.videoSrc,type:"video/mp4",style:{display:"none"}})]})};export{a as V}; diff --git a/assets/analytics-DX16d0wm.js b/assets/analytics-ByaRhbRP.js similarity index 98% rename from assets/analytics-DX16d0wm.js rename to assets/analytics-ByaRhbRP.js index 23f474fe72e..eb4ad42e5c0 100644 --- a/assets/analytics-DX16d0wm.js +++ b/assets/analytics-ByaRhbRP.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";const r={title:"Analytics in Builder",description:"undefined"};function a(n){const t={a:"a",aside:"aside",div:"div",em:"em",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",p:"p",strong:"strong",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"analytics-in-builder",children:["Analytics in Builder",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#analytics-in-builder",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-DR6XzkYl.js";const r={title:"Analytics in Builder",description:"undefined"};function a(n){const t={a:"a",aside:"aside",div:"div",em:"em",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",p:"p",strong:"strong",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"analytics-in-builder",children:["Analytics in Builder",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#analytics-in-builder",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:`When you use Sequence, via our SDKs, to build your application, you can see key insights in Sequence Builder. You don't need to do any additional work to see valuable metrics about your project, such as the number of connected wallets or daily transaction requests.`}),` diff --git a/assets/android-CWO8hRFR.js b/assets/android-DcRYKII9.js similarity index 75% rename from assets/android-CWO8hRFR.js rename to assets/android-DcRYKII9.js index 2dbad503f22..ed96a024c9f 100644 --- a/assets/android-CWO8hRFR.js +++ b/assets/android-DcRYKII9.js @@ -1 +1 @@ -import{d as r,j as n}from"./index-Bn6H9hrN.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; +import{d as r,j as n}from"./index-DR6XzkYl.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/chain-support-CVTb5aJk.js b/assets/chain-support-B29jrp7j.js similarity index 98% rename from assets/chain-support-CVTb5aJk.js rename to assets/chain-support-B29jrp7j.js index 23401d389b5..a0d32530cc6 100644 --- a/assets/chain-support-CVTb5aJk.js +++ b/assets/chain-support-B29jrp7j.js @@ -1,4 +1,4 @@ -import{j as e,d}from"./index-Bn6H9hrN.js";const p=({title:t})=>e.jsx("th",{children:t}),c=({children:t,index:n})=>{const r=n%2===0?"#3c393f":"#1e1d1f";return e.jsx("tr",{style:{backgroundColor:r},children:t})},i=({content:t,imgSrc:n})=>e.jsx("td",{children:e.jsxs("div",{className:"cell-content",children:[n&&e.jsx("img",{src:n,alt:"",className:"cell-image"}),e.jsx("span",{className:"cell-text",children:t})]})}),a=({rows:t,columns:n})=>e.jsxs("table",{children:[e.jsx("thead",{children:e.jsx("tr",{children:n.map(r=>e.jsx(p,{title:r}))})}),e.jsx("tbody",{children:t.map((r,s)=>e.jsxs(c,{index:s,children:[e.jsx(i,{content:r.network,imgSrc:r.networkImage}),e.jsx(i,{content:r.chainHandle}),e.jsx(i,{content:r.indexerEndpoint})]},s))})]}),h={title:"Multi-Chain Support",description:"undefined"};function o(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",strong:"strong",...d(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"multi-chain-support",children:["Multi-Chain Support",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#multi-chain-support",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{j as e,d}from"./index-DR6XzkYl.js";const p=({title:t})=>e.jsx("th",{children:t}),c=({children:t,index:n})=>{const r=n%2===0?"#3c393f":"#1e1d1f";return e.jsx("tr",{style:{backgroundColor:r},children:t})},i=({content:t,imgSrc:n})=>e.jsx("td",{children:e.jsxs("div",{className:"cell-content",children:[n&&e.jsx("img",{src:n,alt:"",className:"cell-image"}),e.jsx("span",{className:"cell-text",children:t})]})}),a=({rows:t,columns:n})=>e.jsxs("table",{children:[e.jsx("thead",{children:e.jsx("tr",{children:n.map(r=>e.jsx(p,{title:r}))})}),e.jsx("tbody",{children:t.map((r,s)=>e.jsxs(c,{index:s,children:[e.jsx(i,{content:r.network,imgSrc:r.networkImage}),e.jsx(i,{content:r.chainHandle}),e.jsx(i,{content:r.indexerEndpoint})]},s))})]}),h={title:"Multi-Chain Support",description:"undefined"};function o(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",strong:"strong",...d(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"multi-chain-support",children:["Multi-Chain Support",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#multi-chain-support",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,` `,e.jsxs(n.strong,{children:["Sequence Status Page: ",e.jsx(n.a,{href:"https://status.sequence.info",children:"https://status.sequence.info"})]}),` `,e.jsx(n.p,{children:`Sequence can support all EVM compatible chains. The following networks are currently supported by Sequence Wallet, Sequence Indexer, diff --git a/assets/contract-metadata-DoBtUdQP.js b/assets/contract-metadata-Cn9ZCQ29.js similarity index 99% rename from assets/contract-metadata-DoBtUdQP.js rename to assets/contract-metadata-Cn9ZCQ29.js index 41bce806b0f..4d5f455bca2 100644 --- a/assets/contract-metadata-DoBtUdQP.js +++ b/assets/contract-metadata-Cn9ZCQ29.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-Bn6H9hrN.js";const l={title:"Contract Metadata",description:"undefined"};function n(a){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...a.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"contract-metadata",children:["Contract Metadata",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-metadata",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-DR6XzkYl.js";const l={title:"Contract Metadata",description:"undefined"};function n(a){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...a.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"contract-metadata",children:["Contract Metadata",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-metadata",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.ul,{children:[` `,s.jsx(e.li,{children:s.jsx(e.a,{href:"/api/metadata/token-metadata#fetch-token-metadata-for-any-erc721-or-erc1155-contract",children:"Learn how to query contract-level metadata directly for any contract"})}),` `,s.jsx(e.li,{children:s.jsx(e.a,{href:"/api/metadata/token-metadata#token-metadata-standards",children:"Learn about contract-level metadata for ERC20, ERC721 and ERC1155 tokens"})}),` diff --git a/assets/contracts-Cq03dBTm.js b/assets/contracts-BBI-SsfV.js similarity index 97% rename from assets/contracts-Cq03dBTm.js rename to assets/contracts-BBI-SsfV.js index b1f9c1aa893..54769df0576 100644 --- a/assets/contracts-Cq03dBTm.js +++ b/assets/contracts-BBI-SsfV.js @@ -1,4 +1,4 @@ -import{d as o,j as e}from"./index-Bn6H9hrN.js";import{V as a}from"./Video-C_LaYbpR.js";const s={title:"Contracts in Builder",description:"undefined"};function i(n){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",img:"img",li:"li",p:"p",ul:"ul",...o(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"contracts-in-builder",children:["Contracts in Builder",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contracts-in-builder",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as o,j as e}from"./index-DR6XzkYl.js";import{V as a}from"./Video-DrWW48g_.js";const s={title:"Contracts in Builder",description:"undefined"};function i(n){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",img:"img",li:"li",p:"p",ul:"ul",...o(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"contracts-in-builder",children:["Contracts in Builder",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contracts-in-builder",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"Sequence Builder simplifies smart contract deployment and management with a suite of user-friendly features. Import, deploy, and add contract collaborators to a smart contract in the contracts dashboard and interact directly with your contract."}),` `,e.jsxs(t.h5,{id:"what-are-my-deployment-options",children:["What are my deployment options?",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#what-are-my-deployment-options",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(t.p,{children:"Deployment of contracts with Sequence Builder is simplified through a streamlined process directly within our dashboard. Choose from various contract templates (ERC1155, ERC721, ERC20). The Builder also gives you the option to upload your own custom contracts - saved to your project - and can be deployed directly to a network of your choosing."}),` diff --git a/assets/embedded-wallet-C8P-szcQ.js b/assets/embedded-wallet-C5b57Xms.js similarity index 95% rename from assets/embedded-wallet-C8P-szcQ.js rename to assets/embedded-wallet-C5b57Xms.js index 27cc1d8711a..41a26d6a246 100644 --- a/assets/embedded-wallet-C8P-szcQ.js +++ b/assets/embedded-wallet-C5b57Xms.js @@ -1,4 +1,4 @@ -import{d as l,j as e,e as d}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const s={title:"Embedded Wallet API",description:"undefined"};function a(n){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...l(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"embedded-wallet-api",children:["Embedded Wallet API",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#embedded-wallet-api",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as e,e as d}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const s={title:"Embedded Wallet API",description:"undefined"};function a(n){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...l(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"embedded-wallet-api",children:["Embedded Wallet API",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#embedded-wallet-api",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(d,{type:"note",children:"API Documentation Coming Soon"}),` `,e.jsx(t.p,{children:"Sequence Embedded Wallet (or Wallet-as-a-Service) enables the creation, management and usage of fully functional EVM compatible wallets. These wallets can be created on-demand for each user and allow you to integrate an application with an Ethereum compatible blockchain, while using familiar constructions like RPC APIs."}),` `,e.jsx(t.p,{children:"Sequence Embedded Wallet offers real non-custodial wallets and the system guarantees that each created wallet can only be accessed with the consent of the owner of the wallet."})]})}function r(n={}){const{wrapper:t}={...l(),...n.components};return t?e.jsx(t,{...n,children:e.jsx(a,{...n})}):a(n)}export{r as default,s as frontmatter}; diff --git a/assets/fetch-tokens-DdYnFJtr.js b/assets/fetch-tokens-BUhULbfD.js similarity index 97% rename from assets/fetch-tokens-DdYnFJtr.js rename to assets/fetch-tokens-BUhULbfD.js index 6e7bb8c0c9a..9a5f7bd089f 100644 --- a/assets/fetch-tokens-DdYnFJtr.js +++ b/assets/fetch-tokens-BUhULbfD.js @@ -1,4 +1,4 @@ -import{d as i,j as s}from"./index-Bn6H9hrN.js";const a={title:"Tokens API",description:"undefined"};function l(n){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...i(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"tokens-api",children:["Tokens API",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#tokens-api",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as s}from"./index-DR6XzkYl.js";const a={title:"Tokens API",description:"undefined"};function l(n){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...i(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"tokens-api",children:["Tokens API",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#tokens-api",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.aside,{"data-callout":"warning",children:[s.jsx(e.strong,{"data-callout-title":!0,children:"INTRODUCING THE SEQUENCE BUILDER - "}),s.jsxs(e.p,{children:["Our ",s.jsx(e.strong,{children:"Indexer"})," service is now managed through ",s.jsx(e.strong,{children:s.jsx(e.a,{href:"https://sequence.build",children:"Sequence Builder"})}),". Sign up to grab your API access key."]}),s.jsx(e.p,{children:s.jsxs(e.a,{href:"https://sequence.build",children:["Get started with the ",s.jsx(e.strong,{children:"Sequence Builder"})," Free Plan today!"]})})]}),` `,s.jsxs(e.h3,{id:"fetches-list-of-erc20-erc721-and-erc1155-tokens-and-metadata-in-any-wallet",children:["Fetches list of ERC20, ERC721 and ERC1155 tokens and metadata in any wallet.",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fetches-list-of-erc20-erc721-and-erc1155-tokens-and-metadata-in-any-wallet",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:s.jsxs(e.em,{children:["Sequence Indexer ",s.jsx(e.code,{children:"GetTokenBalances"})," Method:"]})}),` @@ -15,6 +15,7 @@ import{d as i,j as s}from"./index-Bn6H9hrN.js";const a={title:"Tokens API",descr `,s.jsxs(e.li,{children:[s.jsx(e.code,{children:"includeContracts"})," ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled."]}),` `]}),` `]}),` +`,s.jsxs(e.li,{children:[s.jsx(e.code,{children:"includeCollectionTokens"})," (boolean - optional - default: true) -- toggle to represent ERC721 / ERC1155 tokens as a single summary item in the response"]}),` `]}),` `]}),` `]}),` @@ -48,7 +49,7 @@ import{d as i,j as s}from"./index-Bn6H9hrN.js";const a={title:"Tokens API",descr `,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` `,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" includeMetadata "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":="}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" true"})]}),` `,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` -`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" tokenBalances, _, err "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" seqIndexer."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"GetTokenBalances"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(context."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Background"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(), "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"accountAddress, "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"includeMetadata, "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" tokenBalances, _, err "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" seqIndexer."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"GetTokenBalances"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(context."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Background"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(), "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"accountAddress, "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"includeMetadata, "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]}),` `,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" err "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"!="}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" nil"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` `,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" log."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Fatal"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(err)"})]}),` `,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` @@ -110,7 +111,7 @@ See section below for more information.`]})]}),` `,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` `,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" includeMetadata "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":="}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" true"})]}),` `,s.jsx(e.span,{className:"line","data-empty-line":!0,children:" "}),` -`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" nftBalances, _, err "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" seqIndexer."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"GetTokenBalances"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(context."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Background"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(), "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"accountAddress, "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"contractAddress, "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"includeMetadata, "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]}),` +`,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" nftBalances, _, err "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" seqIndexer."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"GetTokenBalances"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(context."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Background"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(), "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"accountAddress, "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"contractAddress, "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"includeMetadata, "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]}),` `,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" if"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" err "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"!="}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" nil"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` `,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" log."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Fatal"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(err)"})]}),` `,s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" }"})}),` diff --git a/assets/gas-tank-1dDav1bf.js b/assets/gas-tank-DiwJApz7.js similarity index 95% rename from assets/gas-tank-1dDav1bf.js rename to assets/gas-tank-DiwJApz7.js index 6b7338244b6..07e982959e1 100644 --- a/assets/gas-tank-1dDav1bf.js +++ b/assets/gas-tank-DiwJApz7.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";import{V as t}from"./Video-C_LaYbpR.js";const d={title:"Gas Tank in Builder",description:"undefined"};function s(a){const n={a:"a",div:"div",em:"em",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...i(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"gas-tank-in-builder",children:["Gas Tank in Builder",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#gas-tank-in-builder",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-DR6XzkYl.js";import{V as t}from"./Video-DrWW48g_.js";const d={title:"Gas Tank in Builder",description:"undefined"};function s(a){const n={a:"a",div:"div",em:"em",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...i(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"gas-tank-in-builder",children:["Gas Tank in Builder",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#gas-tank-in-builder",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["Sequence wallets are controlled by smart contracts, enabling transaction fees to be abstracted away from users, a concept known in web3 as ",e.jsx(n.em,{children:"gas"}),". With Sequence Builder's Gas Tank, you have a streamlined process for sponsoring gas for your users."]}),` `,e.jsxs(n.h5,{id:"why-would-i-want-to-sponsor-gas-for-my-game",children:["Why would I want to sponsor gas for my game?",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#why-would-i-want-to-sponsor-gas-for-my-game",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(n.p,{children:"Obtaining the crypto needed to cover fees poses a challenge for traditional gamers. Sponsoring gas on their behalf solves this problem."}),` diff --git a/assets/getting-started-MmoMcmqN.js b/assets/getting-started-BHBhNsDI.js similarity index 98% rename from assets/getting-started-MmoMcmqN.js rename to assets/getting-started-BHBhNsDI.js index 0aef67fb186..d407b6b48b1 100644 --- a/assets/getting-started-MmoMcmqN.js +++ b/assets/getting-started-BHBhNsDI.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-Bn6H9hrN.js";import{C as l,a as n}from"./CardGrid-aCCIcMd4.js";const c={title:"Get Started",description:"undefined"};function t(s){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",p:"p",pre:"pre",span:"span",...r(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"get-started",children:["Get Started",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#get-started",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-DR6XzkYl.js";import{C as l,a as n}from"./CardGrid-BnCcSD8R.js";const c={title:"Get Started",description:"undefined"};function t(s){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",p:"p",pre:"pre",span:"span",...r(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"get-started",children:["Get Started",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#get-started",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(i.p,{children:"Signing up and creating a project is easy to do with Sequence Builder and should take you less than a few minutes. In this tutorial, we will help you sign up for Builder and then create your first project."}),` `,e.jsx(i.p,{children:"Let's get started!"}),` `,e.jsxs(i.h2,{id:"sign-up-for-builder",children:["Sign up for Builder",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sign-up-for-builder",children:e.jsx(i.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/iOS-CWO8hRFR.js b/assets/iOS-DcRYKII9.js similarity index 75% rename from assets/iOS-CWO8hRFR.js rename to assets/iOS-DcRYKII9.js index 2dbad503f22..ed96a024c9f 100644 --- a/assets/iOS-CWO8hRFR.js +++ b/assets/iOS-DcRYKII9.js @@ -1 +1 @@ -import{d as r,j as n}from"./index-Bn6H9hrN.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; +import{d as r,j as n}from"./index-DR6XzkYl.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/index-Bn6H9hrN.js b/assets/index-DR6XzkYl.js similarity index 83% rename from assets/index-Bn6H9hrN.js rename to assets/index-DR6XzkYl.js index fee4f94c883..c8beea39c27 100644 --- a/assets/index-Bn6H9hrN.js +++ b/assets/index-DR6XzkYl.js @@ -1,6 +1,6 @@ function __vite__mapDeps(indexes) { if (!__vite__mapDeps.viteFileDeps) { - __vite__mapDeps.viteFileDeps = ["assets/index-eiT-MmI_.js","assets/HomePage.css.js.vanilla-l0sNRNKZ.js","assets/embedded-wallet-C8P-szcQ.js","assets/template-marketplace-api-KSdx9fWf.js","assets/webgl-guide-DDNEifOK.js","assets/token-directory-Jq2mFKpk.js","assets/contracts-Cq03dBTm.js","assets/Video-C_LaYbpR.js","assets/gas-tank-1dDav1bf.js","assets/getting-started-MmoMcmqN.js","assets/CardGrid-aCCIcMd4.js","assets/indexer-DbL1OAlD.js","assets/marketplaces-CfqPZAL8.js","assets/node-gateway-DAIQ9evn.js","assets/overview-6OEMZgDS.js","assets/project-management-CmuszwoH.js","assets/project-settings-D3XgthWQ.js","assets/wallet-sdks-X-nd6U1N.js","assets/white-label-marketplace-jOtVsaEx.js","assets/01-deploy-an-item-collection-DMRfZ8XO.js","assets/02-deploy-ERC20-currency-D8ac1LPl.js","assets/01-overview-DuQI0pZU.js","assets/01-deployment-HSTak7lQ.js","assets/03-get-top-orders-DESIlbG0.js","assets/04-get-orderbook-CcHbZi_W.js","assets/06-orderbook-transactions-DgOnZQxx.js","assets/01-deploy-D1dR_q22.js","assets/03-wallet-factory-TFAMxFf_.js","assets/01-deploy-Fo7CmIWR.js","assets/04-use-wallets-IfyNDXW5.js","assets/01-connect-wallet-BMqUSRDo.js","assets/03-sign-message-lAsd9YJN.js"] + __vite__mapDeps.viteFileDeps = ["assets/index-MK2InkVl.js","assets/HomePage.css.js.vanilla-l0sNRNKZ.js","assets/embedded-wallet-C5b57Xms.js","assets/template-marketplace-api-DqwwDq0f.js","assets/webgl-guide-BHUb9UMj.js","assets/token-directory-5btJcM6h.js","assets/contracts-BBI-SsfV.js","assets/Video-DrWW48g_.js","assets/gas-tank-DiwJApz7.js","assets/getting-started-BHBhNsDI.js","assets/CardGrid-BnCcSD8R.js","assets/indexer-o1f299nU.js","assets/marketplaces-DnTDXOuk.js","assets/node-gateway-9-nhMRrS.js","assets/overview-BeMF62oO.js","assets/project-management-BucGlQ55.js","assets/project-settings-euqN4X2M.js","assets/wallet-sdks-Bh4_Xwxg.js","assets/white-label-marketplace-yYRKW9O-.js","assets/01-deploy-an-item-collection-DmHaXqli.js","assets/02-deploy-ERC20-currency-B-IsDW0E.js","assets/01-overview-D4iMjiil.js","assets/01-deployment-By40m2sO.js","assets/03-get-top-orders-CLca8zvz.js","assets/04-get-orderbook-BLMldV4p.js","assets/06-orderbook-transactions-DqH4CAJH.js","assets/01-deploy-C7jVGn4X.js","assets/03-wallet-factory-R5wOcB3Z.js","assets/01-deploy-BFX8y6pi.js","assets/04-use-wallets-C_DQ6UCq.js","assets/01-connect-wallet-DqzhSN1W.js","assets/03-sign-message-MaCTUdGD.js"] } return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) } @@ -36,14 +36,14 @@ function zc(e,t){for(var n=0;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),du=Object.prototype.hasOwnProperty,e2=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Af={},Sf={};function t2(e){return du.call(Sf,e)?!0:du.call(Af,e)?!1:e2.test(e)?Sf[e]=!0:(Af[e]=!0,!1)}function n2(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function r2(e,t,n,r){if(t===null||typeof t>"u"||n2(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function ct(e,t,n,r,o,i,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=a}var Xe={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Xe[e]=new ct(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Xe[t]=new ct(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Xe[e]=new ct(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Xe[e]=new ct(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Xe[e]=new ct(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Xe[e]=new ct(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Xe[e]=new ct(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Xe[e]=new ct(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Xe[e]=new ct(e,5,!1,e.toLowerCase(),null,!1,!1)});var Kc=/[\-:]([a-z])/g;function Gc(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Kc,Gc);Xe[t]=new ct(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Kc,Gc);Xe[t]=new ct(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Kc,Gc);Xe[t]=new ct(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Xe[e]=new ct(e,1,!1,e.toLowerCase(),null,!1,!1)});Xe.xlinkHref=new ct("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Xe[e]=new ct(e,1,!1,e.toLowerCase(),null,!0,!0)});function qc(e,t,n,r){var o=Xe.hasOwnProperty(t)?Xe[t]:null;(o!==null?o.type!==0:r||!(2"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),du=Object.prototype.hasOwnProperty,ex=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Af={},Sf={};function tx(e){return du.call(Sf,e)?!0:du.call(Af,e)?!1:ex.test(e)?Sf[e]=!0:(Af[e]=!0,!1)}function nx(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function rx(e,t,n,r){if(t===null||typeof t>"u"||nx(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function ct(e,t,n,r,o,i,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=a}var Xe={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Xe[e]=new ct(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Xe[t]=new ct(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Xe[e]=new ct(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Xe[e]=new ct(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Xe[e]=new ct(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Xe[e]=new ct(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Xe[e]=new ct(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Xe[e]=new ct(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Xe[e]=new ct(e,5,!1,e.toLowerCase(),null,!1,!1)});var Kc=/[\-:]([a-z])/g;function Gc(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Kc,Gc);Xe[t]=new ct(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Kc,Gc);Xe[t]=new ct(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Kc,Gc);Xe[t]=new ct(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Xe[e]=new ct(e,1,!1,e.toLowerCase(),null,!1,!1)});Xe.xlinkHref=new ct("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Xe[e]=new ct(e,1,!1,e.toLowerCase(),null,!0,!0)});function qc(e,t,n,r){var o=Xe.hasOwnProperty(t)?Xe[t]:null;(o!==null?o.type!==0:r||!(2l||o[a]!==i[l]){var s=` -`+o[a].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=a&&0<=l);break}}}finally{fs=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?ti(e):""}function o2(e){switch(e.tag){case 5:return ti(e.type);case 16:return ti("Lazy");case 13:return ti("Suspense");case 19:return ti("SuspenseList");case 0:case 2:case 15:return e=ps(e.type,!1),e;case 11:return e=ps(e.type.render,!1),e;case 1:return e=ps(e.type,!0),e;default:return""}}function mu(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Wr:return"Fragment";case Hr:return"Portal";case fu:return"Profiler";case Yc:return"StrictMode";case pu:return"Suspense";case hu:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Am:return(e.displayName||"Context")+".Consumer";case Pm:return(e._context.displayName||"Context")+".Provider";case Qc:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Zc:return t=e.displayName||null,t!==null?t:mu(e.type)||"Memo";case Dn:t=e._payload,e=e._init;try{return mu(e(t))}catch{}}return null}function i2(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return mu(t);case 8:return t===Yc?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Yn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Tm(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function a2(e){var t=Tm(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(a){r=""+a,i.call(this,a)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(a){r=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function ra(e){e._valueTracker||(e._valueTracker=a2(e))}function Rm(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Tm(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Ya(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function vu(e,t){var n=t.checked;return Te({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Rf(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Yn(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function $m(e,t){t=t.checked,t!=null&&qc(e,"checked",t,!1)}function gu(e,t){$m(e,t);var n=Yn(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?yu(e,t.type,n):t.hasOwnProperty("defaultValue")&&yu(e,t.type,Yn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function $f(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function yu(e,t,n){(t!=="number"||Ya(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var ni=Array.isArray;function oo(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=oa.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function gi(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var ai={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},l2=["Webkit","ms","Moz","O"];Object.keys(ai).forEach(function(e){l2.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ai[t]=ai[e]})});function Dm(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||ai.hasOwnProperty(e)&&ai[e]?(""+t).trim():t+"px"}function Nm(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=Dm(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var s2=Te({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function wu(e,t){if(t){if(s2[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(M(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(M(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(M(61))}if(t.style!=null&&typeof t.style!="object")throw Error(M(62))}}function Eu(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ku=null;function Xc(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var bu=null,io=null,ao=null;function Lf(e){if(e=Bi(e)){if(typeof bu!="function")throw Error(M(280));var t=e.stateNode;t&&(t=Il(t),bu(e.stateNode,e.type,t))}}function Mm(e){io?ao?ao.push(e):ao=[e]:io=e}function jm(){if(io){var e=io,t=ao;if(ao=io=null,Lf(e),t)for(e=0;e>>=0,e===0?32:31-(x2(e)/_2|0)|0}var ia=64,aa=4194304;function ri(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Ja(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,o=e.suspendedLanes,i=e.pingedLanes,a=n&268435455;if(a!==0){var l=a&~o;l!==0?r=ri(l):(i&=a,i!==0&&(r=ri(i)))}else a=n&~o,a!==0?r=ri(a):i!==0&&(r=ri(i));if(r===0)return 0;if(t!==0&&t!==r&&!(t&o)&&(o=r&-r,i=t&-t,o>=i||o===16&&(i&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Ui(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Wt(t),e[t]=n}function b2(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=si),Bf=" ",Hf=!1;function o0(e,t){switch(e){case"keyup":return X2.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function i0(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Kr=!1;function ex(e,t){switch(e){case"compositionend":return i0(t);case"keypress":return t.which!==32?null:(Hf=!0,Bf);case"textInput":return e=t.data,e===Bf&&Hf?null:e;default:return null}}function tx(e,t){if(Kr)return e==="compositionend"||!ad&&o0(e,t)?(e=n0(),La=rd=Fn=null,Kr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=qf(n)}}function u0(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?u0(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function c0(){for(var e=window,t=Ya();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ya(e.document)}return t}function ld(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function cx(e){var t=c0(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&u0(n.ownerDocument.documentElement,n)){if(r!==null&&ld(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=n.textContent.length,i=Math.min(r.start,o);r=r.end===void 0?i:Math.min(r.end,o),!e.extend&&i>r&&(o=r,r=i,i=o),o=Yf(n,i);var a=Yf(n,r);o&&a&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Gr=null,Ru=null,ci=null,$u=!1;function Qf(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;$u||Gr==null||Gr!==Ya(r)||(r=Gr,"selectionStart"in r&&ld(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),ci&&ki(ci,r)||(ci=r,r=nl(Ru,"onSelect"),0Qr||(e.current=Mu[Qr],Mu[Qr]=null,Qr--)}function ve(e,t){Qr++,Mu[Qr]=e.current,e.current=t}var Qn={},ot=rr(Qn),vt=rr(!1),xr=Qn;function mo(e,t){var n=e.type.contextTypes;if(!n)return Qn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},i;for(i in n)o[i]=t[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function gt(e){return e=e.childContextTypes,e!=null}function ol(){ye(vt),ye(ot)}function rp(e,t,n){if(ot.current!==Qn)throw Error(M(168));ve(ot,t),ve(vt,n)}function x0(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(M(108,i2(e)||"Unknown",o));return Te({},n,r)}function il(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Qn,xr=ot.current,ve(ot,e),ve(vt,vt.current),!0}function op(e,t,n){var r=e.stateNode;if(!r)throw Error(M(169));n?(e=x0(e,t,xr),r.__reactInternalMemoizedMergedChildContext=e,ye(vt),ye(ot),ve(ot,e)):ye(vt),ve(vt,n)}var un=null,Ll=!1,As=!1;function _0(e){un===null?un=[e]:un.push(e)}function Ex(e){Ll=!0,_0(e)}function or(){if(!As&&un!==null){As=!0;var e=0,t=de;try{var n=un;for(de=1;e>=a,o-=a,cn=1<<32-Wt(t)+o|n<A?(S=P,P=null):S=P.sibling;var O=f(m,P,_[A],E);if(O===null){P===null&&(P=S);break}e&&P&&O.alternate===null&&t(m,P),v=i(O,v,A),k===null?C=O:k.sibling=O,k=O,P=S}if(A===_.length)return n(m,P),be&&sr(m,A),C;if(P===null){for(;A<_.length;A++)P=u(m,_[A],E),P!==null&&(v=i(P,v,A),k===null?C=P:k.sibling=P,k=P);return be&&sr(m,A),C}for(P=r(m,P);A<_.length;A++)S=h(P,m,A,_[A],E),S!==null&&(e&&S.alternate!==null&&P.delete(S.key===null?A:S.key),v=i(S,v,A),k===null?C=S:k.sibling=S,k=S);return e&&P.forEach(function(j){return t(m,j)}),be&&sr(m,A),C}function g(m,v,_,E){var C=jo(_);if(typeof C!="function")throw Error(M(150));if(_=C.call(_),_==null)throw Error(M(151));for(var k=C=null,P=v,A=v=0,S=null,O=_.next();P!==null&&!O.done;A++,O=_.next()){P.index>A?(S=P,P=null):S=P.sibling;var j=f(m,P,O.value,E);if(j===null){P===null&&(P=S);break}e&&P&&j.alternate===null&&t(m,P),v=i(j,v,A),k===null?C=j:k.sibling=j,k=j,P=S}if(O.done)return n(m,P),be&&sr(m,A),C;if(P===null){for(;!O.done;A++,O=_.next())O=u(m,O.value,E),O!==null&&(v=i(O,v,A),k===null?C=O:k.sibling=O,k=O);return be&&sr(m,A),C}for(P=r(m,P);!O.done;A++,O=_.next())O=h(P,m,A,O.value,E),O!==null&&(e&&O.alternate!==null&&P.delete(O.key===null?A:O.key),v=i(O,v,A),k===null?C=O:k.sibling=O,k=O);return e&&P.forEach(function(N){return t(m,N)}),be&&sr(m,A),C}function w(m,v,_,E){if(typeof _=="object"&&_!==null&&_.type===Wr&&_.key===null&&(_=_.props.children),typeof _=="object"&&_!==null){switch(_.$$typeof){case na:e:{for(var C=_.key,k=v;k!==null;){if(k.key===C){if(C=_.type,C===Wr){if(k.tag===7){n(m,k.sibling),v=o(k,_.props.children),v.return=m,m=v;break e}}else if(k.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===Dn&&dp(C)===k.type){n(m,k.sibling),v=o(k,_.props),v.ref=Bo(m,k,_),v.return=m,m=v;break e}n(m,k);break}else t(m,k);k=k.sibling}_.type===Wr?(v=gr(_.props.children,m.mode,E,_.key),v.return=m,m=v):(E=Va(_.type,_.key,_.props,null,m.mode,E),E.ref=Bo(m,v,_),E.return=m,m=E)}return a(m);case Hr:e:{for(k=_.key;v!==null;){if(v.key===k)if(v.tag===4&&v.stateNode.containerInfo===_.containerInfo&&v.stateNode.implementation===_.implementation){n(m,v.sibling),v=o(v,_.children||[]),v.return=m,m=v;break e}else{n(m,v);break}else t(m,v);v=v.sibling}v=Ds(_,m.mode,E),v.return=m,m=v}return a(m);case Dn:return k=_._init,w(m,v,k(_._payload),E)}if(ni(_))return y(m,v,_,E);if(jo(_))return g(m,v,_,E);pa(m,_)}return typeof _=="string"&&_!==""||typeof _=="number"?(_=""+_,v!==null&&v.tag===6?(n(m,v.sibling),v=o(v,_),v.return=m,m=v):(n(m,v),v=Ls(_,m.mode,E),v.return=m,m=v),a(m)):n(m,v)}return w}var go=S0(!0),T0=S0(!1),Hi={},nn=rr(Hi),Ai=rr(Hi),Si=rr(Hi);function fr(e){if(e===Hi)throw Error(M(174));return e}function vd(e,t){switch(ve(Si,t),ve(Ai,e),ve(nn,Hi),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:_u(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=_u(t,e)}ye(nn),ve(nn,t)}function yo(){ye(nn),ye(Ai),ye(Si)}function R0(e){fr(Si.current);var t=fr(nn.current),n=_u(t,e.type);t!==n&&(ve(Ai,e),ve(nn,n))}function gd(e){Ai.current===e&&(ye(nn),ye(Ai))}var Ae=rr(0);function dl(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Ss=[];function yd(){for(var e=0;en?n:4,e(!0);var r=Ts.transition;Ts.transition={};try{e(!1),t()}finally{de=n,Ts.transition=r}}function K0(){return Dt().memoizedState}function Px(e,t,n){var r=Gn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},G0(e))q0(t,n);else if(n=b0(e,t,n,r),n!==null){var o=lt();Kt(n,e,r,o),Y0(n,t,r)}}function Ax(e,t,n){var r=Gn(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(G0(e))q0(t,o);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var a=t.lastRenderedState,l=i(a,n);if(o.hasEagerState=!0,o.eagerState=l,Gt(l,a)){var s=t.interleaved;s===null?(o.next=o,hd(t)):(o.next=s.next,s.next=o),t.interleaved=o;return}}catch{}finally{}n=b0(e,t,o,r),n!==null&&(o=lt(),Kt(n,e,r,o),Y0(n,t,r))}}function G0(e){var t=e.alternate;return e===Se||t!==null&&t===Se}function q0(e,t){di=fl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Y0(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ed(e,n)}}var pl={readContext:Lt,useCallback:et,useContext:et,useEffect:et,useImperativeHandle:et,useInsertionEffect:et,useLayoutEffect:et,useMemo:et,useReducer:et,useRef:et,useState:et,useDebugValue:et,useDeferredValue:et,useTransition:et,useMutableSource:et,useSyncExternalStore:et,useId:et,unstable_isNewReconciler:!1},Sx={readContext:Lt,useCallback:function(e,t){return Xt().memoizedState=[e,t===void 0?null:t],e},useContext:Lt,useEffect:pp,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,ja(4194308,4,U0.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ja(4194308,4,e,t)},useInsertionEffect:function(e,t){return ja(4,2,e,t)},useMemo:function(e,t){var n=Xt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Xt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Px.bind(null,Se,e),[r.memoizedState,e]},useRef:function(e){var t=Xt();return e={current:e},t.memoizedState=e},useState:fp,useDebugValue:kd,useDeferredValue:function(e){return Xt().memoizedState=e},useTransition:function(){var e=fp(!1),t=e[0];return e=Cx.bind(null,e[1]),Xt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Se,o=Xt();if(be){if(n===void 0)throw Error(M(407));n=n()}else{if(n=t(),Ge===null)throw Error(M(349));wr&30||I0(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,pp(D0.bind(null,r,i,e),[e]),r.flags|=2048,$i(9,L0.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Xt(),t=Ge.identifierPrefix;if(be){var n=dn,r=cn;n=(r&~(1<<32-Wt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Ti++,0")&&(s=s.replace("",e.displayName)),s}while(1<=a&&0<=l);break}}}finally{fs=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?ti(e):""}function ox(e){switch(e.tag){case 5:return ti(e.type);case 16:return ti("Lazy");case 13:return ti("Suspense");case 19:return ti("SuspenseList");case 0:case 2:case 15:return e=ps(e.type,!1),e;case 11:return e=ps(e.type.render,!1),e;case 1:return e=ps(e.type,!0),e;default:return""}}function mu(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Wr:return"Fragment";case Hr:return"Portal";case fu:return"Profiler";case Yc:return"StrictMode";case pu:return"Suspense";case hu:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Am:return(e.displayName||"Context")+".Consumer";case Pm:return(e._context.displayName||"Context")+".Provider";case Qc:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Zc:return t=e.displayName||null,t!==null?t:mu(e.type)||"Memo";case Dn:t=e._payload,e=e._init;try{return mu(e(t))}catch{}}return null}function ix(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return mu(t);case 8:return t===Yc?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Yn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Tm(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function ax(e){var t=Tm(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(a){r=""+a,i.call(this,a)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(a){r=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function ra(e){e._valueTracker||(e._valueTracker=ax(e))}function Rm(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Tm(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Ya(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function vu(e,t){var n=t.checked;return Te({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Rf(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Yn(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function $m(e,t){t=t.checked,t!=null&&qc(e,"checked",t,!1)}function gu(e,t){$m(e,t);var n=Yn(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?yu(e,t.type,n):t.hasOwnProperty("defaultValue")&&yu(e,t.type,Yn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function $f(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function yu(e,t,n){(t!=="number"||Ya(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var ni=Array.isArray;function oo(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=oa.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function gi(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var ai={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},lx=["Webkit","ms","Moz","O"];Object.keys(ai).forEach(function(e){lx.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ai[t]=ai[e]})});function Dm(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||ai.hasOwnProperty(e)&&ai[e]?(""+t).trim():t+"px"}function Nm(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=Dm(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var sx=Te({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function wu(e,t){if(t){if(sx[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(M(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(M(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(M(61))}if(t.style!=null&&typeof t.style!="object")throw Error(M(62))}}function Eu(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ku=null;function Xc(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var bu=null,io=null,ao=null;function Lf(e){if(e=Bi(e)){if(typeof bu!="function")throw Error(M(280));var t=e.stateNode;t&&(t=Il(t),bu(e.stateNode,e.type,t))}}function Mm(e){io?ao?ao.push(e):ao=[e]:io=e}function jm(){if(io){var e=io,t=ao;if(ao=io=null,Lf(e),t)for(e=0;e>>=0,e===0?32:31-(xx(e)/_x|0)|0}var ia=64,aa=4194304;function ri(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Ja(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,o=e.suspendedLanes,i=e.pingedLanes,a=n&268435455;if(a!==0){var l=a&~o;l!==0?r=ri(l):(i&=a,i!==0&&(r=ri(i)))}else a=n&~o,a!==0?r=ri(a):i!==0&&(r=ri(i));if(r===0)return 0;if(t!==0&&t!==r&&!(t&o)&&(o=r&-r,i=t&-t,o>=i||o===16&&(i&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Ui(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Wt(t),e[t]=n}function bx(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=si),Bf=" ",Hf=!1;function o0(e,t){switch(e){case"keyup":return Xx.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function i0(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Kr=!1;function e2(e,t){switch(e){case"compositionend":return i0(t);case"keypress":return t.which!==32?null:(Hf=!0,Bf);case"textInput":return e=t.data,e===Bf&&Hf?null:e;default:return null}}function t2(e,t){if(Kr)return e==="compositionend"||!ad&&o0(e,t)?(e=n0(),La=rd=Fn=null,Kr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=qf(n)}}function u0(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?u0(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function c0(){for(var e=window,t=Ya();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ya(e.document)}return t}function ld(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function c2(e){var t=c0(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&u0(n.ownerDocument.documentElement,n)){if(r!==null&&ld(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=n.textContent.length,i=Math.min(r.start,o);r=r.end===void 0?i:Math.min(r.end,o),!e.extend&&i>r&&(o=r,r=i,i=o),o=Yf(n,i);var a=Yf(n,r);o&&a&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Gr=null,Ru=null,ci=null,$u=!1;function Qf(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;$u||Gr==null||Gr!==Ya(r)||(r=Gr,"selectionStart"in r&&ld(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),ci&&ki(ci,r)||(ci=r,r=nl(Ru,"onSelect"),0Qr||(e.current=Mu[Qr],Mu[Qr]=null,Qr--)}function ve(e,t){Qr++,Mu[Qr]=e.current,e.current=t}var Qn={},ot=rr(Qn),vt=rr(!1),xr=Qn;function mo(e,t){var n=e.type.contextTypes;if(!n)return Qn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},i;for(i in n)o[i]=t[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function gt(e){return e=e.childContextTypes,e!=null}function ol(){ye(vt),ye(ot)}function rp(e,t,n){if(ot.current!==Qn)throw Error(M(168));ve(ot,t),ve(vt,n)}function x0(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(M(108,ix(e)||"Unknown",o));return Te({},n,r)}function il(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Qn,xr=ot.current,ve(ot,e),ve(vt,vt.current),!0}function op(e,t,n){var r=e.stateNode;if(!r)throw Error(M(169));n?(e=x0(e,t,xr),r.__reactInternalMemoizedMergedChildContext=e,ye(vt),ye(ot),ve(ot,e)):ye(vt),ve(vt,n)}var un=null,Ll=!1,As=!1;function _0(e){un===null?un=[e]:un.push(e)}function E2(e){Ll=!0,_0(e)}function or(){if(!As&&un!==null){As=!0;var e=0,t=de;try{var n=un;for(de=1;e>=a,o-=a,cn=1<<32-Wt(t)+o|n<A?(S=P,P=null):S=P.sibling;var O=f(m,P,_[A],E);if(O===null){P===null&&(P=S);break}e&&P&&O.alternate===null&&t(m,P),v=i(O,v,A),k===null?C=O:k.sibling=O,k=O,P=S}if(A===_.length)return n(m,P),be&&sr(m,A),C;if(P===null){for(;A<_.length;A++)P=u(m,_[A],E),P!==null&&(v=i(P,v,A),k===null?C=P:k.sibling=P,k=P);return be&&sr(m,A),C}for(P=r(m,P);A<_.length;A++)S=h(P,m,A,_[A],E),S!==null&&(e&&S.alternate!==null&&P.delete(S.key===null?A:S.key),v=i(S,v,A),k===null?C=S:k.sibling=S,k=S);return e&&P.forEach(function(j){return t(m,j)}),be&&sr(m,A),C}function g(m,v,_,E){var C=jo(_);if(typeof C!="function")throw Error(M(150));if(_=C.call(_),_==null)throw Error(M(151));for(var k=C=null,P=v,A=v=0,S=null,O=_.next();P!==null&&!O.done;A++,O=_.next()){P.index>A?(S=P,P=null):S=P.sibling;var j=f(m,P,O.value,E);if(j===null){P===null&&(P=S);break}e&&P&&j.alternate===null&&t(m,P),v=i(j,v,A),k===null?C=j:k.sibling=j,k=j,P=S}if(O.done)return n(m,P),be&&sr(m,A),C;if(P===null){for(;!O.done;A++,O=_.next())O=u(m,O.value,E),O!==null&&(v=i(O,v,A),k===null?C=O:k.sibling=O,k=O);return be&&sr(m,A),C}for(P=r(m,P);!O.done;A++,O=_.next())O=h(P,m,A,O.value,E),O!==null&&(e&&O.alternate!==null&&P.delete(O.key===null?A:O.key),v=i(O,v,A),k===null?C=O:k.sibling=O,k=O);return e&&P.forEach(function(N){return t(m,N)}),be&&sr(m,A),C}function w(m,v,_,E){if(typeof _=="object"&&_!==null&&_.type===Wr&&_.key===null&&(_=_.props.children),typeof _=="object"&&_!==null){switch(_.$$typeof){case na:e:{for(var C=_.key,k=v;k!==null;){if(k.key===C){if(C=_.type,C===Wr){if(k.tag===7){n(m,k.sibling),v=o(k,_.props.children),v.return=m,m=v;break e}}else if(k.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===Dn&&dp(C)===k.type){n(m,k.sibling),v=o(k,_.props),v.ref=Bo(m,k,_),v.return=m,m=v;break e}n(m,k);break}else t(m,k);k=k.sibling}_.type===Wr?(v=gr(_.props.children,m.mode,E,_.key),v.return=m,m=v):(E=Va(_.type,_.key,_.props,null,m.mode,E),E.ref=Bo(m,v,_),E.return=m,m=E)}return a(m);case Hr:e:{for(k=_.key;v!==null;){if(v.key===k)if(v.tag===4&&v.stateNode.containerInfo===_.containerInfo&&v.stateNode.implementation===_.implementation){n(m,v.sibling),v=o(v,_.children||[]),v.return=m,m=v;break e}else{n(m,v);break}else t(m,v);v=v.sibling}v=Ds(_,m.mode,E),v.return=m,m=v}return a(m);case Dn:return k=_._init,w(m,v,k(_._payload),E)}if(ni(_))return y(m,v,_,E);if(jo(_))return g(m,v,_,E);pa(m,_)}return typeof _=="string"&&_!==""||typeof _=="number"?(_=""+_,v!==null&&v.tag===6?(n(m,v.sibling),v=o(v,_),v.return=m,m=v):(n(m,v),v=Ls(_,m.mode,E),v.return=m,m=v),a(m)):n(m,v)}return w}var go=S0(!0),T0=S0(!1),Hi={},nn=rr(Hi),Ai=rr(Hi),Si=rr(Hi);function fr(e){if(e===Hi)throw Error(M(174));return e}function vd(e,t){switch(ve(Si,t),ve(Ai,e),ve(nn,Hi),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:_u(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=_u(t,e)}ye(nn),ve(nn,t)}function yo(){ye(nn),ye(Ai),ye(Si)}function R0(e){fr(Si.current);var t=fr(nn.current),n=_u(t,e.type);t!==n&&(ve(Ai,e),ve(nn,n))}function gd(e){Ai.current===e&&(ye(nn),ye(Ai))}var Ae=rr(0);function dl(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Ss=[];function yd(){for(var e=0;en?n:4,e(!0);var r=Ts.transition;Ts.transition={};try{e(!1),t()}finally{de=n,Ts.transition=r}}function K0(){return Dt().memoizedState}function P2(e,t,n){var r=Gn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},G0(e))q0(t,n);else if(n=b0(e,t,n,r),n!==null){var o=lt();Kt(n,e,r,o),Y0(n,t,r)}}function A2(e,t,n){var r=Gn(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(G0(e))q0(t,o);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var a=t.lastRenderedState,l=i(a,n);if(o.hasEagerState=!0,o.eagerState=l,Gt(l,a)){var s=t.interleaved;s===null?(o.next=o,hd(t)):(o.next=s.next,s.next=o),t.interleaved=o;return}}catch{}finally{}n=b0(e,t,o,r),n!==null&&(o=lt(),Kt(n,e,r,o),Y0(n,t,r))}}function G0(e){var t=e.alternate;return e===Se||t!==null&&t===Se}function q0(e,t){di=fl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Y0(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ed(e,n)}}var pl={readContext:Lt,useCallback:et,useContext:et,useEffect:et,useImperativeHandle:et,useInsertionEffect:et,useLayoutEffect:et,useMemo:et,useReducer:et,useRef:et,useState:et,useDebugValue:et,useDeferredValue:et,useTransition:et,useMutableSource:et,useSyncExternalStore:et,useId:et,unstable_isNewReconciler:!1},S2={readContext:Lt,useCallback:function(e,t){return Xt().memoizedState=[e,t===void 0?null:t],e},useContext:Lt,useEffect:pp,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,ja(4194308,4,U0.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ja(4194308,4,e,t)},useInsertionEffect:function(e,t){return ja(4,2,e,t)},useMemo:function(e,t){var n=Xt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Xt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=P2.bind(null,Se,e),[r.memoizedState,e]},useRef:function(e){var t=Xt();return e={current:e},t.memoizedState=e},useState:fp,useDebugValue:kd,useDeferredValue:function(e){return Xt().memoizedState=e},useTransition:function(){var e=fp(!1),t=e[0];return e=C2.bind(null,e[1]),Xt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Se,o=Xt();if(be){if(n===void 0)throw Error(M(407));n=n()}else{if(n=t(),Ge===null)throw Error(M(349));wr&30||I0(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,pp(D0.bind(null,r,i,e),[e]),r.flags|=2048,$i(9,L0.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Xt(),t=Ge.identifierPrefix;if(be){var n=dn,r=cn;n=(r&~(1<<32-Wt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Ti++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=a.createElement(n,{is:r.is}):(e=a.createElement(n),n==="select"&&(a=e,r.multiple?a.multiple=!0:r.size&&(a.size=r.size))):e=a.createElementNS(e,n),e[Jt]=t,e[Pi]=r,ov(e,t,!1,!1),t.stateNode=e;e:{switch(a=Eu(n,r),n){case"dialog":ge("cancel",e),ge("close",e),o=r;break;case"iframe":case"object":case"embed":ge("load",e),o=r;break;case"video":case"audio":for(o=0;o_o&&(t.flags|=128,r=!0,Ho(i,!1),t.lanes=4194304)}else{if(!r)if(e=dl(a),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Ho(i,!0),i.tail===null&&i.tailMode==="hidden"&&!a.alternate&&!be)return tt(t),null}else 2*Me()-i.renderingStartTime>_o&&n!==1073741824&&(t.flags|=128,r=!0,Ho(i,!1),t.lanes=4194304);i.isBackwards?(a.sibling=t.child,t.child=a):(n=i.last,n!==null?n.sibling=a:t.child=a,i.last=a)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Me(),t.sibling=null,n=Ae.current,ve(Ae,r?n&1|2:n&1),t):(tt(t),null);case 22:case 23:return Td(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?wt&1073741824&&(tt(t),t.subtreeFlags&6&&(t.flags|=8192)):tt(t),null;case 24:return null;case 25:return null}throw Error(M(156,t.tag))}function Nx(e,t){switch(ud(t),t.tag){case 1:return gt(t.type)&&ol(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return yo(),ye(vt),ye(ot),yd(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return gd(t),null;case 13:if(ye(Ae),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(M(340));vo()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ye(Ae),null;case 4:return yo(),null;case 10:return pd(t.type._context),null;case 22:case 23:return Td(),null;case 24:return null;default:return null}}var ma=!1,nt=!1,Mx=typeof WeakSet=="function"?WeakSet:Set,H=null;function eo(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Ie(e,t,r)}else n.current=null}function Yu(e,t,n){try{n()}catch(r){Ie(e,t,r)}}var Ep=!1;function jx(e,t){if(Ou=el,e=c0(),ld(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var a=0,l=-1,s=-1,c=0,d=0,u=e,f=null;t:for(;;){for(var h;u!==n||o!==0&&u.nodeType!==3||(l=a+o),u!==i||r!==0&&u.nodeType!==3||(s=a+r),u.nodeType===3&&(a+=u.nodeValue.length),(h=u.firstChild)!==null;)f=u,u=h;for(;;){if(u===e)break t;if(f===n&&++c===o&&(l=a),f===i&&++d===r&&(s=a),(h=u.nextSibling)!==null)break;u=f,f=u.parentNode}u=h}n=l===-1||s===-1?null:{start:l,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(Iu={focusedElem:e,selectionRange:n},el=!1,H=t;H!==null;)if(t=H,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,H=e;else for(;H!==null;){t=H;try{var y=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var g=y.memoizedProps,w=y.memoizedState,m=t.stateNode,v=m.getSnapshotBeforeUpdate(t.elementType===t.type?g:Ft(t.type,g),w);m.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var _=t.stateNode.containerInfo;_.nodeType===1?_.textContent="":_.nodeType===9&&_.documentElement&&_.removeChild(_.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(M(163))}}catch(E){Ie(t,t.return,E)}if(e=t.sibling,e!==null){e.return=t.return,H=e;break}H=t.return}return y=Ep,Ep=!1,y}function fi(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var i=o.destroy;o.destroy=void 0,i!==void 0&&Yu(t,n,i)}o=o.next}while(o!==r)}}function Ml(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Qu(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function lv(e){var t=e.alternate;t!==null&&(e.alternate=null,lv(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Jt],delete t[Pi],delete t[Nu],delete t[_x],delete t[wx])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function sv(e){return e.tag===5||e.tag===3||e.tag===4}function kp(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||sv(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Zu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=rl));else if(r!==4&&(e=e.child,e!==null))for(Zu(e,t,n),e=e.sibling;e!==null;)Zu(e,t,n),e=e.sibling}function Xu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Xu(e,t,n),e=e.sibling;e!==null;)Xu(e,t,n),e=e.sibling}var Ye=null,zt=!1;function Rn(e,t,n){for(n=n.child;n!==null;)uv(e,t,n),n=n.sibling}function uv(e,t,n){if(tn&&typeof tn.onCommitFiberUnmount=="function")try{tn.onCommitFiberUnmount(Tl,n)}catch{}switch(n.tag){case 5:nt||eo(n,t);case 6:var r=Ye,o=zt;Ye=null,Rn(e,t,n),Ye=r,zt=o,Ye!==null&&(zt?(e=Ye,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Ye.removeChild(n.stateNode));break;case 18:Ye!==null&&(zt?(e=Ye,n=n.stateNode,e.nodeType===8?Ps(e.parentNode,n):e.nodeType===1&&Ps(e,n),wi(e)):Ps(Ye,n.stateNode));break;case 4:r=Ye,o=zt,Ye=n.stateNode.containerInfo,zt=!0,Rn(e,t,n),Ye=r,zt=o;break;case 0:case 11:case 14:case 15:if(!nt&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var i=o,a=i.destroy;i=i.tag,a!==void 0&&(i&2||i&4)&&Yu(n,t,a),o=o.next}while(o!==r)}Rn(e,t,n);break;case 1:if(!nt&&(eo(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(l){Ie(n,t,l)}Rn(e,t,n);break;case 21:Rn(e,t,n);break;case 22:n.mode&1?(nt=(r=nt)||n.memoizedState!==null,Rn(e,t,n),nt=r):Rn(e,t,n);break;default:Rn(e,t,n)}}function bp(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Mx),t.forEach(function(r){var o=Gx.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function jt(e,t){var n=t.deletions;if(n!==null)for(var r=0;ro&&(o=a),r&=~i}if(r=o,r=Me()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*zx(r/1960))-r,10e?16:e,zn===null)var r=!1;else{if(e=zn,zn=null,vl=0,se&6)throw Error(M(331));var o=se;for(se|=4,H=e.current;H!==null;){var i=H,a=i.child;if(H.flags&16){var l=i.deletions;if(l!==null){for(var s=0;sMe()-Ad?vr(e,0):Pd|=n),yt(e,t)}function gv(e,t){t===0&&(e.mode&1?(t=aa,aa<<=1,!(aa&130023424)&&(aa=4194304)):t=1);var n=lt();e=vn(e,t),e!==null&&(Ui(e,t,n),yt(e,n))}function Kx(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),gv(e,n)}function Gx(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(M(314))}r!==null&&r.delete(t),gv(e,n)}var yv;yv=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||vt.current)mt=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return mt=!1,Lx(e,t,n);mt=!!(e.flags&131072)}else mt=!1,be&&t.flags&1048576&&w0(t,ll,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Fa(e,t),e=t.pendingProps;var o=mo(t,ot.current);so(t,n),o=_d(null,t,r,e,o,n);var i=wd();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,gt(r)?(i=!0,il(t)):i=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,md(t),o.updater=Dl,t.stateNode=o,o._reactInternals=t,Vu(t,r,e,n),t=Wu(null,t,r,!0,i,n)):(t.tag=0,be&&i&&sd(t),it(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Fa(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=Yx(r),e=Ft(r,e),o){case 0:t=Hu(null,t,r,e,n);break e;case 1:t=xp(null,t,r,e,n);break e;case 11:t=gp(null,t,r,e,n);break e;case 14:t=yp(null,t,r,Ft(r.type,e),n);break e}throw Error(M(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Ft(r,o),Hu(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Ft(r,o),xp(e,t,r,o,n);case 3:e:{if(tv(t),e===null)throw Error(M(387));r=t.pendingProps,i=t.memoizedState,o=i.element,C0(e,t),cl(t,r,null,n);var a=t.memoizedState;if(r=a.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){o=xo(Error(M(423)),t),t=_p(e,t,r,n,o);break e}else if(r!==o){o=xo(Error(M(424)),t),t=_p(e,t,r,n,o);break e}else for(kt=Hn(t.stateNode.containerInfo.firstChild),bt=t,be=!0,Vt=null,n=T0(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(vo(),r===o){t=gn(e,t,n);break e}it(e,t,r,n)}t=t.child}return t;case 5:return R0(t),e===null&&Fu(t),r=t.type,o=t.pendingProps,i=e!==null?e.memoizedProps:null,a=o.children,Lu(r,o)?a=null:i!==null&&Lu(r,i)&&(t.flags|=32),ev(e,t),it(e,t,a,n),t.child;case 6:return e===null&&Fu(t),null;case 13:return nv(e,t,n);case 4:return vd(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=go(t,null,r,n):it(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Ft(r,o),gp(e,t,r,o,n);case 7:return it(e,t,t.pendingProps,n),t.child;case 8:return it(e,t,t.pendingProps.children,n),t.child;case 12:return it(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,a=o.value,ve(sl,r._currentValue),r._currentValue=a,i!==null)if(Gt(i.value,a)){if(i.children===o.children&&!vt.current){t=gn(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var l=i.dependencies;if(l!==null){a=i.child;for(var s=l.firstContext;s!==null;){if(s.context===r){if(i.tag===1){s=fn(-1,n&-n),s.tag=2;var c=i.updateQueue;if(c!==null){c=c.shared;var d=c.pending;d===null?s.next=s:(s.next=d.next,d.next=s),c.pending=s}}i.lanes|=n,s=i.alternate,s!==null&&(s.lanes|=n),zu(i.return,n,t),l.lanes|=n;break}s=s.next}}else if(i.tag===10)a=i.type===t.type?null:i.child;else if(i.tag===18){if(a=i.return,a===null)throw Error(M(341));a.lanes|=n,l=a.alternate,l!==null&&(l.lanes|=n),zu(a,n,t),a=i.sibling}else a=i.child;if(a!==null)a.return=i;else for(a=i;a!==null;){if(a===t){a=null;break}if(i=a.sibling,i!==null){i.return=a.return,a=i;break}a=a.return}i=a}it(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,so(t,n),o=Lt(o),r=r(o),t.flags|=1,it(e,t,r,n),t.child;case 14:return r=t.type,o=Ft(r,t.pendingProps),o=Ft(r.type,o),yp(e,t,r,o,n);case 15:return X0(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Ft(r,o),Fa(e,t),t.tag=1,gt(r)?(e=!0,il(t)):e=!1,so(t,n),A0(t,r,o),Vu(t,r,o,n),Wu(null,t,r,!0,e,n);case 19:return rv(e,t,n);case 22:return J0(e,t,n)}throw Error(M(156,t.tag))};function xv(e,t){return Wm(e,t)}function qx(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ot(e,t,n,r){return new qx(e,t,n,r)}function $d(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Yx(e){if(typeof e=="function")return $d(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Qc)return 11;if(e===Zc)return 14}return 2}function qn(e,t){var n=e.alternate;return n===null?(n=Ot(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Va(e,t,n,r,o,i){var a=2;if(r=e,typeof e=="function")$d(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case Wr:return gr(n.children,o,i,t);case Yc:a=8,o|=8;break;case fu:return e=Ot(12,n,t,o|2),e.elementType=fu,e.lanes=i,e;case pu:return e=Ot(13,n,t,o),e.elementType=pu,e.lanes=i,e;case hu:return e=Ot(19,n,t,o),e.elementType=hu,e.lanes=i,e;case Sm:return Fl(n,o,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Pm:a=10;break e;case Am:a=9;break e;case Qc:a=11;break e;case Zc:a=14;break e;case Dn:a=16,r=null;break e}throw Error(M(130,e==null?e:typeof e,""))}return t=Ot(a,n,t,o),t.elementType=e,t.type=r,t.lanes=i,t}function gr(e,t,n,r){return e=Ot(7,e,r,t),e.lanes=n,e}function Fl(e,t,n,r){return e=Ot(22,e,r,t),e.elementType=Sm,e.lanes=n,e.stateNode={isHidden:!1},e}function Ls(e,t,n){return e=Ot(6,e,null,t),e.lanes=n,e}function Ds(e,t,n){return t=Ot(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Qx(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=ms(0),this.expirationTimes=ms(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ms(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Od(e,t,n,r,o,i,a,l,s){return e=new Qx(e,t,n,l,s),t===1?(t=1,i===!0&&(t|=8)):t=0,i=Ot(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},md(i),e}function Zx(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(kv)}catch(e){console.error(e)}}kv(),wm.exports=At;var Ro=wm.exports;const bv=tr(Ro),n_=zc({__proto__:null,default:bv},[Ro]);var Cv,Op=Ro;Op.createRoot,Cv=Op.hydrateRoot;/** +`+i.stack}return{value:e,source:t,stack:o,digest:null}}function Os(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function Bu(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var $2=typeof WeakMap=="function"?WeakMap:Map;function Q0(e,t,n){n=fn(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){ml||(ml=!0,Ju=r),Bu(e,t)},n}function Z0(e,t,n){n=fn(-1,n),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var o=t.value;n.payload=function(){return r(o)},n.callback=function(){Bu(e,t)}}var i=e.stateNode;return i!==null&&typeof i.componentDidCatch=="function"&&(n.callback=function(){Bu(e,t),typeof r!="function"&&(Kn===null?Kn=new Set([this]):Kn.add(this));var a=t.stack;this.componentDidCatch(t.value,{componentStack:a!==null?a:""})}),n}function hp(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new $2;var o=new Set;r.set(t,o)}else o=r.get(t),o===void 0&&(o=new Set,r.set(t,o));o.has(n)||(o.add(n),e=W2.bind(null,e,t,n),t.then(e,e))}function mp(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function vp(e,t,n,r,o){return e.mode&1?(e.flags|=65536,e.lanes=o,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(t=fn(-1,1),t.tag=2,Wn(n,t,1))),n.lanes|=1),e)}var O2=wn.ReactCurrentOwner,mt=!1;function it(e,t,n,r){t.child=e===null?T0(t,null,n,r):go(t,e.child,n,r)}function gp(e,t,n,r,o){n=n.render;var i=t.ref;return so(t,o),r=_d(e,t,n,r,i,o),n=wd(),e!==null&&!mt?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,gn(e,t,o)):(be&&n&&sd(t),t.flags|=1,it(e,t,r,o),t.child)}function yp(e,t,n,r,o){if(e===null){var i=n.type;return typeof i=="function"&&!$d(i)&&i.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=i,X0(e,t,i,r,o)):(e=Va(n.type,null,r,t,t.mode,o),e.ref=t.ref,e.return=t,t.child=e)}if(i=e.child,!(e.lanes&o)){var a=i.memoizedProps;if(n=n.compare,n=n!==null?n:ki,n(a,r)&&e.ref===t.ref)return gn(e,t,o)}return t.flags|=1,e=qn(i,r),e.ref=t.ref,e.return=t,t.child=e}function X0(e,t,n,r,o){if(e!==null){var i=e.memoizedProps;if(ki(i,r)&&e.ref===t.ref)if(mt=!1,t.pendingProps=r=i,(e.lanes&o)!==0)e.flags&131072&&(mt=!0);else return t.lanes=e.lanes,gn(e,t,o)}return Hu(e,t,n,r,o)}function J0(e,t,n){var r=t.pendingProps,o=r.children,i=e!==null?e.memoizedState:null;if(r.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},ve(to,wt),wt|=n;else{if(!(n&1073741824))return e=i!==null?i.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,ve(to,wt),wt|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=i!==null?i.baseLanes:n,ve(to,wt),wt|=r}else i!==null?(r=i.baseLanes|n,t.memoizedState=null):r=n,ve(to,wt),wt|=r;return it(e,t,o,n),t.child}function ev(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Hu(e,t,n,r,o){var i=gt(n)?xr:ot.current;return i=mo(t,i),so(t,o),n=_d(e,t,n,r,i,o),r=wd(),e!==null&&!mt?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,gn(e,t,o)):(be&&r&&sd(t),t.flags|=1,it(e,t,n,o),t.child)}function xp(e,t,n,r,o){if(gt(n)){var i=!0;il(t)}else i=!1;if(so(t,o),t.stateNode===null)Fa(e,t),A0(t,n,r),Vu(t,n,r,o),r=!0;else if(e===null){var a=t.stateNode,l=t.memoizedProps;a.props=l;var s=a.context,c=n.contextType;typeof c=="object"&&c!==null?c=Lt(c):(c=gt(n)?xr:ot.current,c=mo(t,c));var d=n.getDerivedStateFromProps,u=typeof d=="function"||typeof a.getSnapshotBeforeUpdate=="function";u||typeof a.UNSAFE_componentWillReceiveProps!="function"&&typeof a.componentWillReceiveProps!="function"||(l!==r||s!==c)&&cp(t,a,r,c),Nn=!1;var f=t.memoizedState;a.state=f,cl(t,r,a,o),s=t.memoizedState,l!==r||f!==s||vt.current||Nn?(typeof d=="function"&&(Uu(t,n,d,r),s=t.memoizedState),(l=Nn||up(t,n,l,r,f,s,c))?(u||typeof a.UNSAFE_componentWillMount!="function"&&typeof a.componentWillMount!="function"||(typeof a.componentWillMount=="function"&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount=="function"&&a.UNSAFE_componentWillMount()),typeof a.componentDidMount=="function"&&(t.flags|=4194308)):(typeof a.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),a.props=r,a.state=s,a.context=c,r=l):(typeof a.componentDidMount=="function"&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,C0(e,t),l=t.memoizedProps,c=t.type===t.elementType?l:Ft(t.type,l),a.props=c,u=t.pendingProps,f=a.context,s=n.contextType,typeof s=="object"&&s!==null?s=Lt(s):(s=gt(n)?xr:ot.current,s=mo(t,s));var h=n.getDerivedStateFromProps;(d=typeof h=="function"||typeof a.getSnapshotBeforeUpdate=="function")||typeof a.UNSAFE_componentWillReceiveProps!="function"&&typeof a.componentWillReceiveProps!="function"||(l!==u||f!==s)&&cp(t,a,r,s),Nn=!1,f=t.memoizedState,a.state=f,cl(t,r,a,o);var y=t.memoizedState;l!==u||f!==y||vt.current||Nn?(typeof h=="function"&&(Uu(t,n,h,r),y=t.memoizedState),(c=Nn||up(t,n,c,r,f,y,s)||!1)?(d||typeof a.UNSAFE_componentWillUpdate!="function"&&typeof a.componentWillUpdate!="function"||(typeof a.componentWillUpdate=="function"&&a.componentWillUpdate(r,y,s),typeof a.UNSAFE_componentWillUpdate=="function"&&a.UNSAFE_componentWillUpdate(r,y,s)),typeof a.componentDidUpdate=="function"&&(t.flags|=4),typeof a.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof a.componentDidUpdate!="function"||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!="function"||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=y),a.props=r,a.state=y,a.context=s,r=c):(typeof a.componentDidUpdate!="function"||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!="function"||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),r=!1)}return Wu(e,t,n,r,i,o)}function Wu(e,t,n,r,o,i){ev(e,t);var a=(t.flags&128)!==0;if(!r&&!a)return o&&op(t,n,!1),gn(e,t,i);r=t.stateNode,O2.current=t;var l=a&&typeof n.getDerivedStateFromError!="function"?null:r.render();return t.flags|=1,e!==null&&a?(t.child=go(t,e.child,null,i),t.child=go(t,null,l,i)):it(e,t,l,i),t.memoizedState=r.state,o&&op(t,n,!0),t.child}function tv(e){var t=e.stateNode;t.pendingContext?rp(e,t.pendingContext,t.pendingContext!==t.context):t.context&&rp(e,t.context,!1),vd(e,t.containerInfo)}function _p(e,t,n,r,o){return vo(),cd(o),t.flags|=256,it(e,t,n,r),t.child}var Ku={dehydrated:null,treeContext:null,retryLane:0};function Gu(e){return{baseLanes:e,cachePool:null,transitions:null}}function nv(e,t,n){var r=t.pendingProps,o=Ae.current,i=!1,a=(t.flags&128)!==0,l;if((l=a)||(l=e!==null&&e.memoizedState===null?!1:(o&2)!==0),l?(i=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(o|=1),ve(Ae,o&1),e===null)return Fu(t),e=t.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?(t.mode&1?e.data==="$!"?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(a=r.children,e=r.fallback,i?(r=t.mode,i=t.child,a={mode:"hidden",children:a},!(r&1)&&i!==null?(i.childLanes=0,i.pendingProps=a):i=Fl(a,r,0,null),e=gr(e,r,n,null),i.return=t,e.return=t,i.sibling=e,t.child=i,t.child.memoizedState=Gu(n),t.memoizedState=Ku,e):bd(t,a));if(o=e.memoizedState,o!==null&&(l=o.dehydrated,l!==null))return I2(e,t,a,r,l,o,n);if(i){i=r.fallback,a=t.mode,o=e.child,l=o.sibling;var s={mode:"hidden",children:r.children};return!(a&1)&&t.child!==o?(r=t.child,r.childLanes=0,r.pendingProps=s,t.deletions=null):(r=qn(o,s),r.subtreeFlags=o.subtreeFlags&14680064),l!==null?i=qn(l,i):(i=gr(i,a,n,null),i.flags|=2),i.return=t,r.return=t,r.sibling=i,t.child=r,r=i,i=t.child,a=e.child.memoizedState,a=a===null?Gu(n):{baseLanes:a.baseLanes|n,cachePool:null,transitions:a.transitions},i.memoizedState=a,i.childLanes=e.childLanes&~n,t.memoizedState=Ku,r}return i=e.child,e=i.sibling,r=qn(i,{mode:"visible",children:r.children}),!(t.mode&1)&&(r.lanes=n),r.return=t,r.sibling=null,e!==null&&(n=t.deletions,n===null?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=r,t.memoizedState=null,r}function bd(e,t){return t=Fl({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function ha(e,t,n,r){return r!==null&&cd(r),go(t,e.child,null,n),e=bd(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function I2(e,t,n,r,o,i,a){if(n)return t.flags&256?(t.flags&=-257,r=Os(Error(M(422))),ha(e,t,a,r)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(i=r.fallback,o=t.mode,r=Fl({mode:"visible",children:r.children},o,0,null),i=gr(i,o,a,null),i.flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,t.mode&1&&go(t,e.child,null,a),t.child.memoizedState=Gu(a),t.memoizedState=Ku,i);if(!(t.mode&1))return ha(e,t,a,null);if(o.data==="$!"){if(r=o.nextSibling&&o.nextSibling.dataset,r)var l=r.dgst;return r=l,i=Error(M(419)),r=Os(i,r,void 0),ha(e,t,a,r)}if(l=(a&e.childLanes)!==0,mt||l){if(r=Ge,r!==null){switch(a&-a){case 4:o=2;break;case 16:o=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:o=32;break;case 536870912:o=268435456;break;default:o=0}o=o&(r.suspendedLanes|a)?0:o,o!==0&&o!==i.retryLane&&(i.retryLane=o,vn(e,o),Kt(r,e,o,-1))}return Rd(),r=Os(Error(M(421))),ha(e,t,a,r)}return o.data==="$?"?(t.flags|=128,t.child=e.child,t=K2.bind(null,e),o._reactRetry=t,null):(e=i.treeContext,kt=Hn(o.nextSibling),bt=t,be=!0,Vt=null,e!==null&&(Rt[$t++]=cn,Rt[$t++]=dn,Rt[$t++]=_r,cn=e.id,dn=e.overflow,_r=t),t=bd(t,r.children),t.flags|=4096,t)}function wp(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),zu(e.return,t,n)}function Is(e,t,n,r,o){var i=e.memoizedState;i===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=o)}function rv(e,t,n){var r=t.pendingProps,o=r.revealOrder,i=r.tail;if(it(e,t,r.children,n),r=Ae.current,r&2)r=r&1|2,t.flags|=128;else{if(e!==null&&e.flags&128)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&wp(e,n,t);else if(e.tag===19)wp(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ve(Ae,r),!(t.mode&1))t.memoizedState=null;else switch(o){case"forwards":for(n=t.child,o=null;n!==null;)e=n.alternate,e!==null&&dl(e)===null&&(o=n),n=n.sibling;n=o,n===null?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),Is(t,!1,o,n,i);break;case"backwards":for(n=null,o=t.child,t.child=null;o!==null;){if(e=o.alternate,e!==null&&dl(e)===null){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}Is(t,!0,n,null,i);break;case"together":Is(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Fa(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function gn(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),Er|=t.lanes,!(n&t.childLanes))return null;if(e!==null&&t.child!==e.child)throw Error(M(153));if(t.child!==null){for(e=t.child,n=qn(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=qn(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function L2(e,t,n){switch(t.tag){case 3:tv(t),vo();break;case 5:R0(t);break;case 1:gt(t.type)&&il(t);break;case 4:vd(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,o=t.memoizedProps.value;ve(sl,r._currentValue),r._currentValue=o;break;case 13:if(r=t.memoizedState,r!==null)return r.dehydrated!==null?(ve(Ae,Ae.current&1),t.flags|=128,null):n&t.child.childLanes?nv(e,t,n):(ve(Ae,Ae.current&1),e=gn(e,t,n),e!==null?e.sibling:null);ve(Ae,Ae.current&1);break;case 19:if(r=(n&t.childLanes)!==0,e.flags&128){if(r)return rv(e,t,n);t.flags|=128}if(o=t.memoizedState,o!==null&&(o.rendering=null,o.tail=null,o.lastEffect=null),ve(Ae,Ae.current),r)break;return null;case 22:case 23:return t.lanes=0,J0(e,t,n)}return gn(e,t,n)}var ov,qu,iv,av;ov=function(e,t){for(var n=t.child;n!==null;){if(n.tag===5||n.tag===6)e.appendChild(n.stateNode);else if(n.tag!==4&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}};qu=function(){};iv=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,fr(nn.current);var i=null;switch(n){case"input":o=vu(e,o),r=vu(e,r),i=[];break;case"select":o=Te({},o,{value:void 0}),r=Te({},r,{value:void 0}),i=[];break;case"textarea":o=xu(e,o),r=xu(e,r),i=[];break;default:typeof o.onClick!="function"&&typeof r.onClick=="function"&&(e.onclick=rl)}wu(n,r);var a;n=null;for(c in o)if(!r.hasOwnProperty(c)&&o.hasOwnProperty(c)&&o[c]!=null)if(c==="style"){var l=o[c];for(a in l)l.hasOwnProperty(a)&&(n||(n={}),n[a]="")}else c!=="dangerouslySetInnerHTML"&&c!=="children"&&c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&c!=="autoFocus"&&(vi.hasOwnProperty(c)?i||(i=[]):(i=i||[]).push(c,null));for(c in r){var s=r[c];if(l=o!=null?o[c]:void 0,r.hasOwnProperty(c)&&s!==l&&(s!=null||l!=null))if(c==="style")if(l){for(a in l)!l.hasOwnProperty(a)||s&&s.hasOwnProperty(a)||(n||(n={}),n[a]="");for(a in s)s.hasOwnProperty(a)&&l[a]!==s[a]&&(n||(n={}),n[a]=s[a])}else n||(i||(i=[]),i.push(c,n)),n=s;else c==="dangerouslySetInnerHTML"?(s=s?s.__html:void 0,l=l?l.__html:void 0,s!=null&&l!==s&&(i=i||[]).push(c,s)):c==="children"?typeof s!="string"&&typeof s!="number"||(i=i||[]).push(c,""+s):c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&(vi.hasOwnProperty(c)?(s!=null&&c==="onScroll"&&ge("scroll",e),i||l===s||(i=[])):(i=i||[]).push(c,s))}n&&(i=i||[]).push("style",n);var c=i;(t.updateQueue=c)&&(t.flags|=4)}};av=function(e,t,n,r){n!==r&&(t.flags|=4)};function Ho(e,t){if(!be)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function tt(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var o=e.child;o!==null;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags&14680064,r|=o.flags&14680064,o.return=e,o=o.sibling;else for(o=e.child;o!==null;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function D2(e,t,n){var r=t.pendingProps;switch(ud(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return tt(t),null;case 1:return gt(t.type)&&ol(),tt(t),null;case 3:return r=t.stateNode,yo(),ye(vt),ye(ot),yd(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),(e===null||e.child===null)&&(fa(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Vt!==null&&(nc(Vt),Vt=null))),qu(e,t),tt(t),null;case 5:gd(t);var o=fr(Si.current);if(n=t.type,e!==null&&t.stateNode!=null)iv(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(t.stateNode===null)throw Error(M(166));return tt(t),null}if(e=fr(nn.current),fa(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[Jt]=t,r[Pi]=i,e=(t.mode&1)!==0,n){case"dialog":ge("cancel",r),ge("close",r);break;case"iframe":case"object":case"embed":ge("load",r);break;case"video":case"audio":for(o=0;o<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=a.createElement(n,{is:r.is}):(e=a.createElement(n),n==="select"&&(a=e,r.multiple?a.multiple=!0:r.size&&(a.size=r.size))):e=a.createElementNS(e,n),e[Jt]=t,e[Pi]=r,ov(e,t,!1,!1),t.stateNode=e;e:{switch(a=Eu(n,r),n){case"dialog":ge("cancel",e),ge("close",e),o=r;break;case"iframe":case"object":case"embed":ge("load",e),o=r;break;case"video":case"audio":for(o=0;o_o&&(t.flags|=128,r=!0,Ho(i,!1),t.lanes=4194304)}else{if(!r)if(e=dl(a),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Ho(i,!0),i.tail===null&&i.tailMode==="hidden"&&!a.alternate&&!be)return tt(t),null}else 2*Me()-i.renderingStartTime>_o&&n!==1073741824&&(t.flags|=128,r=!0,Ho(i,!1),t.lanes=4194304);i.isBackwards?(a.sibling=t.child,t.child=a):(n=i.last,n!==null?n.sibling=a:t.child=a,i.last=a)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Me(),t.sibling=null,n=Ae.current,ve(Ae,r?n&1|2:n&1),t):(tt(t),null);case 22:case 23:return Td(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?wt&1073741824&&(tt(t),t.subtreeFlags&6&&(t.flags|=8192)):tt(t),null;case 24:return null;case 25:return null}throw Error(M(156,t.tag))}function N2(e,t){switch(ud(t),t.tag){case 1:return gt(t.type)&&ol(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return yo(),ye(vt),ye(ot),yd(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return gd(t),null;case 13:if(ye(Ae),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(M(340));vo()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ye(Ae),null;case 4:return yo(),null;case 10:return pd(t.type._context),null;case 22:case 23:return Td(),null;case 24:return null;default:return null}}var ma=!1,nt=!1,M2=typeof WeakSet=="function"?WeakSet:Set,H=null;function eo(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Ie(e,t,r)}else n.current=null}function Yu(e,t,n){try{n()}catch(r){Ie(e,t,r)}}var Ep=!1;function j2(e,t){if(Ou=el,e=c0(),ld(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var a=0,l=-1,s=-1,c=0,d=0,u=e,f=null;t:for(;;){for(var h;u!==n||o!==0&&u.nodeType!==3||(l=a+o),u!==i||r!==0&&u.nodeType!==3||(s=a+r),u.nodeType===3&&(a+=u.nodeValue.length),(h=u.firstChild)!==null;)f=u,u=h;for(;;){if(u===e)break t;if(f===n&&++c===o&&(l=a),f===i&&++d===r&&(s=a),(h=u.nextSibling)!==null)break;u=f,f=u.parentNode}u=h}n=l===-1||s===-1?null:{start:l,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(Iu={focusedElem:e,selectionRange:n},el=!1,H=t;H!==null;)if(t=H,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,H=e;else for(;H!==null;){t=H;try{var y=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var g=y.memoizedProps,w=y.memoizedState,m=t.stateNode,v=m.getSnapshotBeforeUpdate(t.elementType===t.type?g:Ft(t.type,g),w);m.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var _=t.stateNode.containerInfo;_.nodeType===1?_.textContent="":_.nodeType===9&&_.documentElement&&_.removeChild(_.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(M(163))}}catch(E){Ie(t,t.return,E)}if(e=t.sibling,e!==null){e.return=t.return,H=e;break}H=t.return}return y=Ep,Ep=!1,y}function fi(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var i=o.destroy;o.destroy=void 0,i!==void 0&&Yu(t,n,i)}o=o.next}while(o!==r)}}function Ml(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Qu(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function lv(e){var t=e.alternate;t!==null&&(e.alternate=null,lv(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Jt],delete t[Pi],delete t[Nu],delete t[_2],delete t[w2])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function sv(e){return e.tag===5||e.tag===3||e.tag===4}function kp(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||sv(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Zu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=rl));else if(r!==4&&(e=e.child,e!==null))for(Zu(e,t,n),e=e.sibling;e!==null;)Zu(e,t,n),e=e.sibling}function Xu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Xu(e,t,n),e=e.sibling;e!==null;)Xu(e,t,n),e=e.sibling}var Ye=null,zt=!1;function Rn(e,t,n){for(n=n.child;n!==null;)uv(e,t,n),n=n.sibling}function uv(e,t,n){if(tn&&typeof tn.onCommitFiberUnmount=="function")try{tn.onCommitFiberUnmount(Tl,n)}catch{}switch(n.tag){case 5:nt||eo(n,t);case 6:var r=Ye,o=zt;Ye=null,Rn(e,t,n),Ye=r,zt=o,Ye!==null&&(zt?(e=Ye,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Ye.removeChild(n.stateNode));break;case 18:Ye!==null&&(zt?(e=Ye,n=n.stateNode,e.nodeType===8?Ps(e.parentNode,n):e.nodeType===1&&Ps(e,n),wi(e)):Ps(Ye,n.stateNode));break;case 4:r=Ye,o=zt,Ye=n.stateNode.containerInfo,zt=!0,Rn(e,t,n),Ye=r,zt=o;break;case 0:case 11:case 14:case 15:if(!nt&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var i=o,a=i.destroy;i=i.tag,a!==void 0&&(i&2||i&4)&&Yu(n,t,a),o=o.next}while(o!==r)}Rn(e,t,n);break;case 1:if(!nt&&(eo(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(l){Ie(n,t,l)}Rn(e,t,n);break;case 21:Rn(e,t,n);break;case 22:n.mode&1?(nt=(r=nt)||n.memoizedState!==null,Rn(e,t,n),nt=r):Rn(e,t,n);break;default:Rn(e,t,n)}}function bp(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new M2),t.forEach(function(r){var o=G2.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function jt(e,t){var n=t.deletions;if(n!==null)for(var r=0;ro&&(o=a),r&=~i}if(r=o,r=Me()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*z2(r/1960))-r,10e?16:e,zn===null)var r=!1;else{if(e=zn,zn=null,vl=0,se&6)throw Error(M(331));var o=se;for(se|=4,H=e.current;H!==null;){var i=H,a=i.child;if(H.flags&16){var l=i.deletions;if(l!==null){for(var s=0;sMe()-Ad?vr(e,0):Pd|=n),yt(e,t)}function gv(e,t){t===0&&(e.mode&1?(t=aa,aa<<=1,!(aa&130023424)&&(aa=4194304)):t=1);var n=lt();e=vn(e,t),e!==null&&(Ui(e,t,n),yt(e,n))}function K2(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),gv(e,n)}function G2(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(M(314))}r!==null&&r.delete(t),gv(e,n)}var yv;yv=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||vt.current)mt=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return mt=!1,L2(e,t,n);mt=!!(e.flags&131072)}else mt=!1,be&&t.flags&1048576&&w0(t,ll,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Fa(e,t),e=t.pendingProps;var o=mo(t,ot.current);so(t,n),o=_d(null,t,r,e,o,n);var i=wd();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,gt(r)?(i=!0,il(t)):i=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,md(t),o.updater=Dl,t.stateNode=o,o._reactInternals=t,Vu(t,r,e,n),t=Wu(null,t,r,!0,i,n)):(t.tag=0,be&&i&&sd(t),it(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Fa(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=Y2(r),e=Ft(r,e),o){case 0:t=Hu(null,t,r,e,n);break e;case 1:t=xp(null,t,r,e,n);break e;case 11:t=gp(null,t,r,e,n);break e;case 14:t=yp(null,t,r,Ft(r.type,e),n);break e}throw Error(M(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Ft(r,o),Hu(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Ft(r,o),xp(e,t,r,o,n);case 3:e:{if(tv(t),e===null)throw Error(M(387));r=t.pendingProps,i=t.memoizedState,o=i.element,C0(e,t),cl(t,r,null,n);var a=t.memoizedState;if(r=a.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){o=xo(Error(M(423)),t),t=_p(e,t,r,n,o);break e}else if(r!==o){o=xo(Error(M(424)),t),t=_p(e,t,r,n,o);break e}else for(kt=Hn(t.stateNode.containerInfo.firstChild),bt=t,be=!0,Vt=null,n=T0(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(vo(),r===o){t=gn(e,t,n);break e}it(e,t,r,n)}t=t.child}return t;case 5:return R0(t),e===null&&Fu(t),r=t.type,o=t.pendingProps,i=e!==null?e.memoizedProps:null,a=o.children,Lu(r,o)?a=null:i!==null&&Lu(r,i)&&(t.flags|=32),ev(e,t),it(e,t,a,n),t.child;case 6:return e===null&&Fu(t),null;case 13:return nv(e,t,n);case 4:return vd(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=go(t,null,r,n):it(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Ft(r,o),gp(e,t,r,o,n);case 7:return it(e,t,t.pendingProps,n),t.child;case 8:return it(e,t,t.pendingProps.children,n),t.child;case 12:return it(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,a=o.value,ve(sl,r._currentValue),r._currentValue=a,i!==null)if(Gt(i.value,a)){if(i.children===o.children&&!vt.current){t=gn(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var l=i.dependencies;if(l!==null){a=i.child;for(var s=l.firstContext;s!==null;){if(s.context===r){if(i.tag===1){s=fn(-1,n&-n),s.tag=2;var c=i.updateQueue;if(c!==null){c=c.shared;var d=c.pending;d===null?s.next=s:(s.next=d.next,d.next=s),c.pending=s}}i.lanes|=n,s=i.alternate,s!==null&&(s.lanes|=n),zu(i.return,n,t),l.lanes|=n;break}s=s.next}}else if(i.tag===10)a=i.type===t.type?null:i.child;else if(i.tag===18){if(a=i.return,a===null)throw Error(M(341));a.lanes|=n,l=a.alternate,l!==null&&(l.lanes|=n),zu(a,n,t),a=i.sibling}else a=i.child;if(a!==null)a.return=i;else for(a=i;a!==null;){if(a===t){a=null;break}if(i=a.sibling,i!==null){i.return=a.return,a=i;break}a=a.return}i=a}it(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,so(t,n),o=Lt(o),r=r(o),t.flags|=1,it(e,t,r,n),t.child;case 14:return r=t.type,o=Ft(r,t.pendingProps),o=Ft(r.type,o),yp(e,t,r,o,n);case 15:return X0(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Ft(r,o),Fa(e,t),t.tag=1,gt(r)?(e=!0,il(t)):e=!1,so(t,n),A0(t,r,o),Vu(t,r,o,n),Wu(null,t,r,!0,e,n);case 19:return rv(e,t,n);case 22:return J0(e,t,n)}throw Error(M(156,t.tag))};function xv(e,t){return Wm(e,t)}function q2(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ot(e,t,n,r){return new q2(e,t,n,r)}function $d(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Y2(e){if(typeof e=="function")return $d(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Qc)return 11;if(e===Zc)return 14}return 2}function qn(e,t){var n=e.alternate;return n===null?(n=Ot(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Va(e,t,n,r,o,i){var a=2;if(r=e,typeof e=="function")$d(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case Wr:return gr(n.children,o,i,t);case Yc:a=8,o|=8;break;case fu:return e=Ot(12,n,t,o|2),e.elementType=fu,e.lanes=i,e;case pu:return e=Ot(13,n,t,o),e.elementType=pu,e.lanes=i,e;case hu:return e=Ot(19,n,t,o),e.elementType=hu,e.lanes=i,e;case Sm:return Fl(n,o,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Pm:a=10;break e;case Am:a=9;break e;case Qc:a=11;break e;case Zc:a=14;break e;case Dn:a=16,r=null;break e}throw Error(M(130,e==null?e:typeof e,""))}return t=Ot(a,n,t,o),t.elementType=e,t.type=r,t.lanes=i,t}function gr(e,t,n,r){return e=Ot(7,e,r,t),e.lanes=n,e}function Fl(e,t,n,r){return e=Ot(22,e,r,t),e.elementType=Sm,e.lanes=n,e.stateNode={isHidden:!1},e}function Ls(e,t,n){return e=Ot(6,e,null,t),e.lanes=n,e}function Ds(e,t,n){return t=Ot(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Q2(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=ms(0),this.expirationTimes=ms(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ms(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Od(e,t,n,r,o,i,a,l,s){return e=new Q2(e,t,n,l,s),t===1?(t=1,i===!0&&(t|=8)):t=0,i=Ot(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},md(i),e}function Z2(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(kv)}catch(e){console.error(e)}}kv(),wm.exports=At;var Ro=wm.exports;const bv=tr(Ro),n_=zc({__proto__:null,default:bv},[Ro]);var Cv,Op=Ro;Op.createRoot,Cv=Op.hydrateRoot;/** * @remix-run/router v1.15.3 * * Copyright (c) Remix Software Inc. @@ -62,7 +62,7 @@ Error generating stack: `+i.message+` * LICENSE.md file in the root directory of this source tree. * * @license MIT - */function Li(){return Li=Object.assign?Object.assign.bind():function(e){for(var t=1;tHl(e,t),[t,e])}function jv(e){p.useContext(ir).static||p.useLayoutEffect(e)}function Ud(){let{isDataRoute:e}=p.useContext(Tr);return e?iw():G_()}function G_(){$o()||ne(!1);let e=p.useContext(Wi),{basename:t,future:n,navigator:r}=p.useContext(ir),{matches:o}=p.useContext(Tr),{pathname:i}=Re(),a=JSON.stringify(Nd(o,n.v7_relativeSplatPath)),l=p.useRef(!1);return jv(()=>{l.current=!0}),p.useCallback(function(c,d){if(d===void 0&&(d={}),!l.current)return;if(typeof c=="number"){r.go(c);return}let u=Md(c,JSON.parse(a),i,d.relative==="path");e==null&&t!=="/"&&(u.pathname=u.pathname==="/"?t:pn([t,u.pathname])),(d.replace?r.replace:r.push)(u,d.state,d)},[t,r,a,i,e])}function Fv(e,t){let{relative:n}=t===void 0?{}:t,{future:r}=p.useContext(ir),{matches:o}=p.useContext(Tr),{pathname:i}=Re(),a=JSON.stringify(Nd(o,r.v7_relativeSplatPath));return p.useMemo(()=>Md(e,JSON.parse(a),i,n==="path"),[e,a,i,n])}function q_(e,t,n,r){$o()||ne(!1);let{navigator:o}=p.useContext(ir),{matches:i}=p.useContext(Tr),a=i[i.length-1],l=a?a.params:{};a&&a.pathname;let s=a?a.pathnameBase:"/";a&&a.route;let c=Re(),d;if(t){var u;let w=typeof t=="string"?En(t):t;s==="/"||(u=w.pathname)!=null&&u.startsWith(s)||ne(!1),d=w}else d=c;let f=d.pathname||"/",h=f;if(s!=="/"){let w=s.replace(/^\//,"").split("/");h="/"+f.replace(/^\//,"").split("/").slice(w.length).join("/")}let y=pr(e,{pathname:h}),g=J_(y&&y.map(w=>Object.assign({},w,{params:Object.assign({},l,w.params),pathname:pn([s,o.encodeLocation?o.encodeLocation(w.pathname).pathname:w.pathname]),pathnameBase:w.pathnameBase==="/"?s:pn([s,o.encodeLocation?o.encodeLocation(w.pathnameBase).pathname:w.pathnameBase])})),i,n,r);return t&&g?p.createElement(Wl.Provider,{value:{location:Li({pathname:"/",search:"",hash:"",state:null,key:"default"},d),navigationType:De.Pop}},g):g}function Y_(){let e=ow(),t=Rv(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,o={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return p.createElement(p.Fragment,null,p.createElement("h2",null,"Unexpected Application Error!"),p.createElement("h3",{style:{fontStyle:"italic"}},t),n?p.createElement("pre",{style:o},n):null,null)}const Q_=p.createElement(Y_,null);class Z_ extends p.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?p.createElement(Tr.Provider,{value:this.props.routeContext},p.createElement(Mv.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function X_(e){let{routeContext:t,match:n,children:r}=e,o=p.useContext(Wi);return o&&o.static&&o.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=n.route.id),p.createElement(Tr.Provider,{value:t},r)}function J_(e,t,n,r){var o;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var i;if((i=n)!=null&&i.errors)e=n.matches;else return null}let a=e,l=(o=n)==null?void 0:o.errors;if(l!=null){let d=a.findIndex(u=>u.route.id&&(l==null?void 0:l[u.route.id]));d>=0||ne(!1),a=a.slice(0,Math.min(a.length,d+1))}let s=!1,c=-1;if(n&&r&&r.v7_partialHydration)for(let d=0;d=0?a=a.slice(0,c+1):a=[a[0]];break}}}return a.reduceRight((d,u,f)=>{let h,y=!1,g=null,w=null;n&&(h=l&&u.route.id?l[u.route.id]:void 0,g=u.route.errorElement||Q_,s&&(c<0&&f===0?(aw("route-fallback",!1),y=!0,w=null):c===f&&(y=!0,w=u.route.hydrateFallbackElement||null)));let m=t.concat(a.slice(0,f+1)),v=()=>{let _;return h?_=g:y?_=w:u.route.Component?_=p.createElement(u.route.Component,null):u.route.element?_=u.route.element:_=d,p.createElement(X_,{match:u,routeContext:{outlet:d,matches:m,isDataRoute:n!=null},children:_})};return n&&(u.route.ErrorBoundary||u.route.errorElement||f===0)?p.createElement(Z_,{location:n.location,revalidation:n.revalidation,component:g,error:h,children:v(),routeContext:{outlet:null,matches:m,isDataRoute:!0}}):v()},null)}var zv=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(zv||{}),Eo=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(Eo||{});function ew(e){let t=p.useContext(Wi);return t||ne(!1),t}function Vd(e){let t=p.useContext(zd);return t||ne(!1),t}function tw(e){let t=p.useContext(Tr);return t||ne(!1),t}function Uv(e){let t=tw(),n=t.matches[t.matches.length-1];return n.route.id||ne(!1),n.route.id}function nw(){return Vd(Eo.UseNavigation).navigation}function rw(){let{matches:e,loaderData:t}=Vd(Eo.UseMatches);return p.useMemo(()=>e.map(n=>Pv(n,t)),[e,t])}function ow(){var e;let t=p.useContext(Mv),n=Vd(Eo.UseRouteError),r=Uv(Eo.UseRouteError);return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function iw(){let{router:e}=ew(zv.UseNavigateStable),t=Uv(Eo.UseNavigateStable),n=p.useRef(!1);return jv(()=>{n.current=!0}),p.useCallback(function(o,i){i===void 0&&(i={}),n.current&&(typeof o=="number"?e.navigate(o):e.navigate(o,Li({fromRouteId:t},i)))},[e,t])}const Gp={};function aw(e,t,n){!t&&!Gp[e]&&(Gp[e]=!0)}function lw(e){let{basename:t="/",children:n=null,location:r,navigationType:o=De.Pop,navigator:i,static:a=!1,future:l}=e;$o()&&ne(!1);let s=t.replace(/^\/*/,"/"),c=p.useMemo(()=>({basename:s,navigator:i,static:a,future:Li({v7_relativeSplatPath:!1},l)}),[s,l,i,a]);typeof r=="string"&&(r=En(r));let{pathname:d="/",search:u="",hash:f="",state:h=null,key:y="default"}=r,g=p.useMemo(()=>{let w=Sr(d,s);return w==null?null:{location:{pathname:w,search:u,hash:f,state:h,key:y},navigationType:o}},[s,d,u,f,h,y,o]);return g==null?null:p.createElement(ir.Provider,{value:c},p.createElement(Wl.Provider,{children:n,value:g}))}new Promise(()=>{});function sw(e){let t={hasErrorBoundary:e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&Object.assign(t,{element:p.createElement(e.Component),Component:void 0}),e.HydrateFallback&&Object.assign(t,{hydrateFallbackElement:p.createElement(e.HydrateFallback),HydrateFallback:void 0}),e.ErrorBoundary&&Object.assign(t,{errorElement:p.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),t}/** + */function Li(){return Li=Object.assign?Object.assign.bind():function(e){for(var t=1;tHl(e,t),[t,e])}function jv(e){p.useContext(ir).static||p.useLayoutEffect(e)}function Ud(){let{isDataRoute:e}=p.useContext(Tr);return e?i3():G_()}function G_(){$o()||ne(!1);let e=p.useContext(Wi),{basename:t,future:n,navigator:r}=p.useContext(ir),{matches:o}=p.useContext(Tr),{pathname:i}=Re(),a=JSON.stringify(Nd(o,n.v7_relativeSplatPath)),l=p.useRef(!1);return jv(()=>{l.current=!0}),p.useCallback(function(c,d){if(d===void 0&&(d={}),!l.current)return;if(typeof c=="number"){r.go(c);return}let u=Md(c,JSON.parse(a),i,d.relative==="path");e==null&&t!=="/"&&(u.pathname=u.pathname==="/"?t:pn([t,u.pathname])),(d.replace?r.replace:r.push)(u,d.state,d)},[t,r,a,i,e])}function Fv(e,t){let{relative:n}=t===void 0?{}:t,{future:r}=p.useContext(ir),{matches:o}=p.useContext(Tr),{pathname:i}=Re(),a=JSON.stringify(Nd(o,r.v7_relativeSplatPath));return p.useMemo(()=>Md(e,JSON.parse(a),i,n==="path"),[e,a,i,n])}function q_(e,t,n,r){$o()||ne(!1);let{navigator:o}=p.useContext(ir),{matches:i}=p.useContext(Tr),a=i[i.length-1],l=a?a.params:{};a&&a.pathname;let s=a?a.pathnameBase:"/";a&&a.route;let c=Re(),d;if(t){var u;let w=typeof t=="string"?En(t):t;s==="/"||(u=w.pathname)!=null&&u.startsWith(s)||ne(!1),d=w}else d=c;let f=d.pathname||"/",h=f;if(s!=="/"){let w=s.replace(/^\//,"").split("/");h="/"+f.replace(/^\//,"").split("/").slice(w.length).join("/")}let y=pr(e,{pathname:h}),g=J_(y&&y.map(w=>Object.assign({},w,{params:Object.assign({},l,w.params),pathname:pn([s,o.encodeLocation?o.encodeLocation(w.pathname).pathname:w.pathname]),pathnameBase:w.pathnameBase==="/"?s:pn([s,o.encodeLocation?o.encodeLocation(w.pathnameBase).pathname:w.pathnameBase])})),i,n,r);return t&&g?p.createElement(Wl.Provider,{value:{location:Li({pathname:"/",search:"",hash:"",state:null,key:"default"},d),navigationType:De.Pop}},g):g}function Y_(){let e=o3(),t=Rv(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,o={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return p.createElement(p.Fragment,null,p.createElement("h2",null,"Unexpected Application Error!"),p.createElement("h3",{style:{fontStyle:"italic"}},t),n?p.createElement("pre",{style:o},n):null,null)}const Q_=p.createElement(Y_,null);class Z_ extends p.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?p.createElement(Tr.Provider,{value:this.props.routeContext},p.createElement(Mv.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function X_(e){let{routeContext:t,match:n,children:r}=e,o=p.useContext(Wi);return o&&o.static&&o.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=n.route.id),p.createElement(Tr.Provider,{value:t},r)}function J_(e,t,n,r){var o;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var i;if((i=n)!=null&&i.errors)e=n.matches;else return null}let a=e,l=(o=n)==null?void 0:o.errors;if(l!=null){let d=a.findIndex(u=>u.route.id&&(l==null?void 0:l[u.route.id]));d>=0||ne(!1),a=a.slice(0,Math.min(a.length,d+1))}let s=!1,c=-1;if(n&&r&&r.v7_partialHydration)for(let d=0;d=0?a=a.slice(0,c+1):a=[a[0]];break}}}return a.reduceRight((d,u,f)=>{let h,y=!1,g=null,w=null;n&&(h=l&&u.route.id?l[u.route.id]:void 0,g=u.route.errorElement||Q_,s&&(c<0&&f===0?(a3("route-fallback",!1),y=!0,w=null):c===f&&(y=!0,w=u.route.hydrateFallbackElement||null)));let m=t.concat(a.slice(0,f+1)),v=()=>{let _;return h?_=g:y?_=w:u.route.Component?_=p.createElement(u.route.Component,null):u.route.element?_=u.route.element:_=d,p.createElement(X_,{match:u,routeContext:{outlet:d,matches:m,isDataRoute:n!=null},children:_})};return n&&(u.route.ErrorBoundary||u.route.errorElement||f===0)?p.createElement(Z_,{location:n.location,revalidation:n.revalidation,component:g,error:h,children:v(),routeContext:{outlet:null,matches:m,isDataRoute:!0}}):v()},null)}var zv=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(zv||{}),Eo=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(Eo||{});function e3(e){let t=p.useContext(Wi);return t||ne(!1),t}function Vd(e){let t=p.useContext(zd);return t||ne(!1),t}function t3(e){let t=p.useContext(Tr);return t||ne(!1),t}function Uv(e){let t=t3(),n=t.matches[t.matches.length-1];return n.route.id||ne(!1),n.route.id}function n3(){return Vd(Eo.UseNavigation).navigation}function r3(){let{matches:e,loaderData:t}=Vd(Eo.UseMatches);return p.useMemo(()=>e.map(n=>Pv(n,t)),[e,t])}function o3(){var e;let t=p.useContext(Mv),n=Vd(Eo.UseRouteError),r=Uv(Eo.UseRouteError);return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function i3(){let{router:e}=e3(zv.UseNavigateStable),t=Uv(Eo.UseNavigateStable),n=p.useRef(!1);return jv(()=>{n.current=!0}),p.useCallback(function(o,i){i===void 0&&(i={}),n.current&&(typeof o=="number"?e.navigate(o):e.navigate(o,Li({fromRouteId:t},i)))},[e,t])}const Gp={};function a3(e,t,n){!t&&!Gp[e]&&(Gp[e]=!0)}function l3(e){let{basename:t="/",children:n=null,location:r,navigationType:o=De.Pop,navigator:i,static:a=!1,future:l}=e;$o()&&ne(!1);let s=t.replace(/^\/*/,"/"),c=p.useMemo(()=>({basename:s,navigator:i,static:a,future:Li({v7_relativeSplatPath:!1},l)}),[s,l,i,a]);typeof r=="string"&&(r=En(r));let{pathname:d="/",search:u="",hash:f="",state:h=null,key:y="default"}=r,g=p.useMemo(()=>{let w=Sr(d,s);return w==null?null:{location:{pathname:w,search:u,hash:f,state:h,key:y},navigationType:o}},[s,d,u,f,h,y,o]);return g==null?null:p.createElement(ir.Provider,{value:c},p.createElement(Wl.Provider,{children:n,value:g}))}new Promise(()=>{});function s3(e){let t={hasErrorBoundary:e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&Object.assign(t,{element:p.createElement(e.Component),Component:void 0}),e.HydrateFallback&&Object.assign(t,{hydrateFallbackElement:p.createElement(e.HydrateFallback),HydrateFallback:void 0}),e.ErrorBoundary&&Object.assign(t,{errorElement:p.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),t}/** * React Router DOM v6.22.3 * * Copyright (c) Remix Software Inc. @@ -71,8 +71,8 @@ Error generating stack: `+i.message+` * LICENSE.md file in the root directory of this source tree. * * @license MIT - */function ko(){return ko=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[o]=e[o]);return n}function cw(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function dw(e,t){return e.button===0&&(!t||t==="_self")&&!cw(e)}const fw=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],pw="6";try{window.__reactRouterVersion=pw}catch{}function hw(e,t){return O_({basename:t==null?void 0:t.basename,future:ko({},t==null?void 0:t.future,{v7_prependBasename:!0}),history:r_({window:t==null?void 0:t.window}),hydrationData:(t==null?void 0:t.hydrationData)||mw(),routes:e,mapRouteProperties:sw,window:t==null?void 0:t.window}).initialize()}function mw(){var e;let t=(e=window)==null?void 0:e.__staticRouterHydrationData;return t&&t.errors&&(t=ko({},t,{errors:vw(t.errors)})),t}function vw(e){if(!e)return null;let t=Object.entries(e),n={};for(let[r,o]of t)if(o&&o.__type==="RouteErrorResponse")n[r]=new jd(o.status,o.statusText,o.data,o.internal===!0);else if(o&&o.__type==="Error"){if(o.__subType){let i=window[o.__subType];if(typeof i=="function")try{let a=new i(o.message);a.stack="",n[r]=a}catch{}}if(n[r]==null){let i=new Error(o.message);i.stack="",n[r]=i}}else n[r]=o;return n}const gw=p.createContext({isTransitioning:!1}),yw=p.createContext(new Map),xw="startTransition",qp=Wc[xw],_w="flushSync",Yp=n_[_w];function ww(e){qp?qp(e):e()}function Qo(e){Yp?Yp(e):e()}class Ew{constructor(){this.status="pending",this.promise=new Promise((t,n)=>{this.resolve=r=>{this.status==="pending"&&(this.status="resolved",t(r))},this.reject=r=>{this.status==="pending"&&(this.status="rejected",n(r))}})}}function kw(e){let{fallbackElement:t,router:n,future:r}=e,[o,i]=p.useState(n.state),[a,l]=p.useState(),[s,c]=p.useState({isTransitioning:!1}),[d,u]=p.useState(),[f,h]=p.useState(),[y,g]=p.useState(),w=p.useRef(new Map),{v7_startTransition:m}=r||{},v=p.useCallback(P=>{m?ww(P):P()},[m]),_=p.useCallback((P,A)=>{let{deletedFetchers:S,unstable_flushSync:O,unstable_viewTransitionOpts:j}=A;S.forEach(F=>w.current.delete(F)),P.fetchers.forEach((F,$)=>{F.data!==void 0&&w.current.set($,F.data)});let N=n.window==null||typeof n.window.document.startViewTransition!="function";if(!j||N){O?Qo(()=>i(P)):v(()=>i(P));return}if(O){Qo(()=>{f&&(d&&d.resolve(),f.skipTransition()),c({isTransitioning:!0,flushSync:!0,currentLocation:j.currentLocation,nextLocation:j.nextLocation})});let F=n.window.document.startViewTransition(()=>{Qo(()=>i(P))});F.finished.finally(()=>{Qo(()=>{u(void 0),h(void 0),l(void 0),c({isTransitioning:!1})})}),Qo(()=>h(F));return}f?(d&&d.resolve(),f.skipTransition(),g({state:P,currentLocation:j.currentLocation,nextLocation:j.nextLocation})):(l(P),c({isTransitioning:!0,flushSync:!1,currentLocation:j.currentLocation,nextLocation:j.nextLocation}))},[n.window,f,d,w,v]);p.useLayoutEffect(()=>n.subscribe(_),[n,_]),p.useEffect(()=>{s.isTransitioning&&!s.flushSync&&u(new Ew)},[s]),p.useEffect(()=>{if(d&&a&&n.window){let P=a,A=d.promise,S=n.window.document.startViewTransition(async()=>{v(()=>i(P)),await A});S.finished.finally(()=>{u(void 0),h(void 0),l(void 0),c({isTransitioning:!1})}),h(S)}},[v,a,d,n.window]),p.useEffect(()=>{d&&a&&o.location.key===a.location.key&&d.resolve()},[d,f,o.location,a]),p.useEffect(()=>{!s.isTransitioning&&y&&(l(y.state),c({isTransitioning:!0,flushSync:!1,currentLocation:y.currentLocation,nextLocation:y.nextLocation}),g(void 0))},[s.isTransitioning,y]),p.useEffect(()=>{},[]);let E=p.useMemo(()=>({createHref:n.createHref,encodeLocation:n.encodeLocation,go:P=>n.navigate(P),push:(P,A,S)=>n.navigate(P,{state:A,preventScrollReset:S==null?void 0:S.preventScrollReset}),replace:(P,A,S)=>n.navigate(P,{replace:!0,state:A,preventScrollReset:S==null?void 0:S.preventScrollReset})}),[n]),C=n.basename||"/",k=p.useMemo(()=>({router:n,navigator:E,static:!1,basename:C}),[n,E,C]);return p.createElement(p.Fragment,null,p.createElement(Wi.Provider,{value:k},p.createElement(zd.Provider,{value:o},p.createElement(yw.Provider,{value:w.current},p.createElement(gw.Provider,{value:s},p.createElement(lw,{basename:C,location:o.location,navigationType:o.historyAction,navigator:E,future:{v7_relativeSplatPath:n.future.v7_relativeSplatPath}},o.initialized||n.future.v7_partialHydration?p.createElement(bw,{routes:n.routes,future:n.future,state:o}):t))))),null)}function bw(e){let{routes:t,future:n,state:r}=e;return q_(t,void 0,r,n)}const Cw=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Pw=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Vv=p.forwardRef(function(t,n){let{onClick:r,relative:o,reloadDocument:i,replace:a,state:l,target:s,to:c,preventScrollReset:d,unstable_viewTransition:u}=t,f=uw(t,fw),{basename:h}=p.useContext(ir),y,g=!1;if(typeof c=="string"&&Pw.test(c)&&(y=c,Cw))try{let _=new URL(window.location.href),E=c.startsWith("//")?new URL(_.protocol+c):new URL(c),C=Sr(E.pathname,h);E.origin===_.origin&&C!=null?c=C+E.search+E.hash:g=!0}catch{}let w=W_(c,{relative:o}),m=Rw(c,{replace:a,state:l,target:s,preventScrollReset:d,relative:o,unstable_viewTransition:u});function v(_){r&&r(_),_.defaultPrevented||m(_)}return p.createElement("a",ko({},f,{href:y||w,onClick:g||i?r:v,ref:n,target:s}))});function Aw(e){let{getKey:t,storageKey:n}=e;return $w({getKey:t,storageKey:n}),null}var lc;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(lc||(lc={}));var sc;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(sc||(sc={}));function Sw(e){let t=p.useContext(Wi);return t||ne(!1),t}function Tw(e){let t=p.useContext(zd);return t||ne(!1),t}function Rw(e,t){let{target:n,replace:r,state:o,preventScrollReset:i,relative:a,unstable_viewTransition:l}=t===void 0?{}:t,s=Ud(),c=Re(),d=Fv(e,{relative:a});return p.useCallback(u=>{if(dw(u,n)){u.preventDefault();let f=r!==void 0?r:br(c)===br(d);s(e,{replace:f,state:o,preventScrollReset:i,relative:a,unstable_viewTransition:l})}},[c,s,d,r,o,n,e,i,a,l])}const Qp="react-router-scroll-positions";let ya={};function $w(e){let{getKey:t,storageKey:n}=e===void 0?{}:e,{router:r}=Sw(lc.UseScrollRestoration),{restoreScrollPosition:o,preventScrollReset:i}=Tw(sc.UseScrollRestoration),{basename:a}=p.useContext(ir),l=Re(),s=rw(),c=nw();p.useEffect(()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"}),[]),Ow(p.useCallback(()=>{if(c.state==="idle"){let d=(t?t(l,s):null)||l.key;ya[d]=window.scrollY}try{sessionStorage.setItem(n||Qp,JSON.stringify(ya))}catch{}window.history.scrollRestoration="auto"},[n,t,c.state,l,s])),typeof document<"u"&&(p.useLayoutEffect(()=>{try{let d=sessionStorage.getItem(n||Qp);d&&(ya=JSON.parse(d))}catch{}},[n]),p.useLayoutEffect(()=>{let d=t&&a!=="/"?(f,h)=>t(ko({},f,{pathname:Sr(f.pathname,a)||f.pathname}),h):t,u=r==null?void 0:r.enableScrollRestoration(ya,()=>window.scrollY,d);return()=>u&&u()},[r,a,t]),p.useLayoutEffect(()=>{if(o!==!1){if(typeof o=="number"){window.scrollTo(0,o);return}if(l.hash){let d=document.getElementById(decodeURIComponent(l.hash.slice(1)));if(d){d.scrollIntoView();return}}i!==!0&&window.scrollTo(0,0)}},[l,o,i]))}function Ow(e,t){let{capture:n}=t||{};p.useEffect(()=>{let r=n!=null?{capture:n}:void 0;return window.addEventListener("pagehide",e,r),()=>{window.removeEventListener("pagehide",e,r)}},[e,n])}function Iw(e){return e instanceof Uint8Array||e!=null&&typeof e=="object"&&e.constructor.name==="Uint8Array"}function Bd(e,...t){if(!Iw(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error(`Uint8Array expected of length ${t}, not of length=${e.length}`)}function Zp(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function Lw(e,t){Bd(e);const n=t.outputLen;if(e.lengthnew DataView(e.buffer,e.byteOffset,e.byteLength),Zt=(e,t)=>e<<32-t|e>>>t;new Uint8Array(new Uint32Array([287454020]).buffer)[0];const Dw=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function _P(e){Bd(e);let t="";for(let n=0;ne().update(Bv(r)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}function Fw(e,t,n,r){if(typeof e.setBigUint64=="function")return e.setBigUint64(t,n,r);const o=BigInt(32),i=BigInt(4294967295),a=Number(n>>o&i),l=Number(n&i),s=r?4:0,c=r?0:4;e.setUint32(t+s,a,r),e.setUint32(t+c,l,r)}const zw=(e,t,n)=>e&t^~e&n,Uw=(e,t,n)=>e&t^e&n^t&n;class Vw extends Mw{constructor(t,n,r,o){super(),this.blockLen=t,this.outputLen=n,this.padOffset=r,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=Fs(this.buffer)}update(t){Zp(this);const{view:n,buffer:r,blockLen:o}=this;t=Bv(t);const i=t.length;for(let a=0;ao-a&&(this.process(r,0),a=0);for(let u=a;ud.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u>>3,g=Zt(h,17)^Zt(h,19)^h>>>10;On[u]=g+On[u-7]+y+On[u-16]|0}let{A:r,B:o,C:i,D:a,E:l,F:s,G:c,H:d}=this;for(let u=0;u<64;u++){const f=Zt(l,6)^Zt(l,11)^Zt(l,25),h=d+f+zw(l,s,c)+Bw[u]+On[u]|0,g=(Zt(r,2)^Zt(r,13)^Zt(r,22))+Uw(r,o,i)|0;d=c,c=s,s=l,l=a+h|0,a=i,i=o,o=r,r=h+g|0}r=r+this.A|0,o=o+this.B|0,i=i+this.C|0,a=a+this.D|0,l=l+this.E|0,s=s+this.F|0,c=c+this.G|0,d=d+this.H|0,this.set(r,o,i,a,l,s,c,d)}roundClean(){On.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const wP=jw(()=>new Hw),Hv={blogDir:"./pages/blog",rootDir:"docs",title:"Sequence",titleTemplate:"%s – Sequence",iconUrl:{dark:"/img/favicon.ico",light:"/img/favicon.ico"},logoUrl:{dark:"/img/sequence-composite-dark.svg",light:"/img/sequence-composite-light.svg"},basePath:"",topNav:[{text:"Solutions",items:[{text:"Wallets",link:"/solutions/wallets/overview",match:"/solutions/wallets/overview",id:257,items:[]},{text:"Marketplace",link:"/solutions/marketplaces/overview",match:"/solutions/marketplaces/overview",id:258,items:[]},{text:"Collectibles",link:"/solutions/collectibles/contracts/01-deploy-an-item-collection",match:"/solutions/collectibles/contracts/01-deploy-an-item-collection",id:259,items:[]},{text:"Payments",link:"/solutions/nft-checkout",match:"/solutions/nft-checkout",id:260,items:[]},{text:"Builder Console",link:"/solutions/builder/overview",match:"/solutions/builder/overview",items:[{text:"Overview",link:"/solutions/builder/overview",match:"/solutions/builder/overview",id:262,items:[]}],id:261}],id:256},{text:"Guides",items:[{text:"Web3 Game with WebGL",link:"/guides/webgl-guide",match:"/guides/webgl-guide",id:264,items:[]},{text:"Web3 Game with Unity",link:"/guides/unity-guide",match:"/guides/unity-guide",id:265,items:[]},{text:"Lootboxes",link:"/guides/lootbox",match:"/guides/lootbox",id:266,items:[]},{text:"Custom Marketplace",link:"/guides/template-marketplace-api",match:"/guides/template-marketplace-api",id:267,items:[]}],id:263},{text:"SDKs",items:[{text:"Unity",link:"/sdk/unity/01-overview",match:"/sdk/unity/01-overview",id:269,items:[]},{text:"Unreal",link:"/sdk/unreal/01-overview",match:"/sdk/unreal/01-overview",id:270,items:[]},{text:"Typescript",link:"/sdk/typescript/03-guides/overview",match:"/sdk/typescript/03-guides/overview",id:271,items:[]},{text:"Sequence Kit",link:"/sdk/sequence-kit/01-overview",match:"/sdk/sequence-kit/01-overview",id:272,items:[]},{text:"Go",link:"/sdk/go/overview",match:"/sdk/go/overview",id:273,items:[]}],id:268},{text:"APIs",items:[{text:"Relayer API",link:"/api/relayer",id:275,items:[]},{text:"Indexer API",link:"/api/indexer/overview",id:276,items:[]},{text:"Metadata API",link:"/api/metadata/overview",id:277,items:[]},{text:"Marketplace API",link:"/api/marketplace",id:278,items:[]},{text:"Node Gateway",link:"/api/node-gateway",id:279,items:[]}],id:274},{text:"Support",items:[{text:"Support",link:"/support",id:281,items:[]},{text:"Changelog",link:"https://0xsequence.canny.io/changelog",id:282,items:[]},{text:"Token Directory",link:"/support/token-directory",id:283,items:[]},{text:"FAQ",link:"https://support.sequence.xyz",id:284,items:[]},{text:"Discord",link:"https://discord.gg/sequence",id:285,items:[]},{text:"We're hiring!",link:"https://horizon.io/careers",id:286,items:[]},{text:"Contact Us",link:"https://support.sequence.xyz",id:287,items:[]}],id:280}],sidebar:{"/solutions":[{text:"Wallets",items:[{text:"Overview",link:"/solutions/wallets/overview"},{text:"In-Game Wallet",collapsed:!0,items:[{text:"Overview",link:"/solutions/wallets/embedded-wallet/01-overview"},{text:"Quickstart",link:"/solutions/wallets/embedded-wallet/02-quickstart"},{text:"Examples",collapsed:!0,items:[{text:"Manage Sessions",link:"/solutions/wallets/embedded-wallet/examples/03-manage-sessions"},{text:"Use Wallets",link:"/solutions/wallets/embedded-wallet/examples/04-use-wallets"},{text:"Validation",link:"/solutions/wallets/embedded-wallet/examples/05-validation"},{text:"Transaction Receipts",link:"/solutions/wallets/embedded-wallet/examples/06-transaction-receipts"}]}]},{text:"Universal Wallet",collapsed:!0,items:[{text:"Overview",link:"/solutions/wallets/universal-wallet/01-overview"},{text:"Quickstart",link:"/solutions/wallets/universal-wallet/02-quickstart"},{text:"Examples",collapsed:!0,items:[{text:"Connect Wallet",link:"/solutions/wallets/universal-wallet/examples/01-connect-wallet"},{text:"Authenticate Users with Message Signature",link:"/solutions/wallets/universal-wallet/examples/02-auth-address"},{text:"Signing & Verifying Messages",link:"/solutions/wallets/universal-wallet/examples/03-sign-message"},{text:"No-wallet confirmation signatures",link:"/solutions/wallets/universal-wallet/examples/04-session-keys"},{text:"Sending Transactions",link:"/solutions/wallets/universal-wallet/examples/05-send-transaction"},{text:"Sending ERC-20 Tokens",link:"/solutions/wallets/universal-wallet/examples/06-send-erc20"},{text:"Sending ERC-721 (NFT) Tokens",link:"/solutions/wallets/universal-wallet/examples/07-send-erc721"},{text:"Sending ERC-1155 (Collectible) Tokens",link:"/solutions/wallets/universal-wallet/examples/08-send-erc1155"},{text:"Sending a Batch of Transactions",link:"/solutions/wallets/universal-wallet/examples/09-send-batch-transactions"},{text:"Building Backends with Sequence",link:"/solutions/wallets/universal-wallet/examples/10-building-backends"}]},{text:"Sequence Kit",link:"/solutions/wallets/universal-wallet/04-sequence-kit"},{text:"Supported Platforms",link:"/solutions/wallets/universal-wallet/05-platforms"},{text:"Fiat On-Ramps",link:"/solutions/wallets/universal-wallet/06-fiat-on-ramps"},{text:"Key Management",link:"/solutions/wallets/universal-wallet/07-key-management"}]}]},{text:"Marketplace",items:[{text:"Overview",link:"/solutions/marketplaces/overview"},{text:"White-label Marketplace",link:"/solutions/marketplaces/white-label-marketplace"},{text:"Build your Custom Marketplace",collapsed:!0,items:[{text:"Overview",link:"/solutions/marketplaces/orderbook/01-overview"},{text:"Quickstart",link:"/solutions/marketplaces/orderbook/02-quickstart"},{text:"Examples",collapsed:!0,items:[{text:"Get Top Orders",link:"/solutions/marketplaces/orderbook/examples/03-get-top-orders"},{text:"Get Orderbook",link:"/solutions/marketplaces/orderbook/examples/04-get-orderbook"},{text:"Get User Activities",link:"/solutions/marketplaces/orderbook/examples/05-get-user-activities"},{text:"Orderbook Transactions",link:"/solutions/marketplaces/orderbook/examples/06-orderbook-transactions"}]}]}]},{text:"Collectibles",items:[{text:"Deployable Contracts",collapsed:!0,items:[{text:"Deploy a Collectible Contract",link:"/solutions/collectibles/contracts/01-deploy-an-item-collection"},{text:"Deploy an In-Game Currency (ERC20)",link:"/solutions/collectibles/contracts/02-deploy-ERC20-currency"}]},{text:"Metadata",collapsed:!0,items:[{text:"Manage Metadata in Builder",link:"/solutions/collectibles/metadata/800-manage-metadata-builder"}]}]},{text:"Payments",items:[{text:"NFT Checkout",link:"/solutions/nft-checkout"},{text:"Onramps",link:"/solutions/payments/onramps/01-fiat-on-ramps"}]},{text:"Builder Console",collapsed:!0,items:[{text:"Overview",link:"/solutions/builder/overview"},{text:"Get Started",link:"/solutions/builder/getting-started"},{text:"Project Management",link:"/solutions/builder/project-management"},{text:"Contracts",link:"/solutions/builder/contracts"},{text:"Gas Tank",link:"/solutions/builder/gas-tank"},{text:"Wallet SDKs",link:"/solutions/builder/wallet-sdks"},{text:"Node Gateway",link:"/solutions/builder/node-gateway"},{text:"Marketplaces",link:"/solutions/builder/marketplaces"},{text:"Indexer",link:"/solutions/builder/indexer"},{text:"Analytics",link:"/solutions/builder/analytics"},{text:"Settings",link:"/solutions/builder/project-settings"}]},{text:"Technical References",items:[{text:"Chain Support",link:"/solutions/technical-references/chain-support"},{text:"Smart Contract Wallets",collapsed:!0,items:[{text:"Why smart contract wallets?",link:"/solutions/technical-references/wallet-contracts/01-why"}]},{text:"Contract Internals",collapsed:!0,items:[{text:"Deployment",link:"/solutions/technical-references/internals/01-deployment"},{text:"Sequence v1",collapsed:!0,items:[{text:"Deploy",link:"/solutions/technical-references/internals/v1/01-deploy"},{text:"Wallet Factory",link:"/solutions/technical-references/internals/v1/03-wallet-factory"},{text:"Wallet Configuration",link:"/solutions/technical-references/internals/v1/04-wallet-configuration"},{text:"Signature Encoding",link:"/solutions/technical-references/internals/v1/08-signature-encoding"},{text:"Wallet Context",link:"/solutions/technical-references/internals/v1/11-wallet-context"},{text:"Contract Audits",link:"/solutions/technical-references/internals/v1/12-contract-audits"}]},{text:"Sequence v2",collapsed:!0,items:[{text:"Deploy",link:"/solutions/technical-references/internals/v2/01-deploy"},{text:"Wallet Configuration",link:"/solutions/technical-references/internals/v2/04-configuration"}]}]}]}],"/guides":[{text:"Build a game with WebGL",collapsed:!0,items:[{text:"Integrate SequenceKit with WaaS",link:"/guides/webgl-guide#integrate-sequencekit-with-waas"},{text:"Deploy a collectibles contract",link:"/guides/webgl-guide#deploy-a-collectibles-contract"},{text:"Deploy a remote minter",link:"/guides/webgl-guide#deploy-a-remote-minter"},{text:"Mint in-game achievement tokens",link:"/guides/webgl-guide#mint-in-game-achievement-tokens"},{text:"Burn in-game achievement tokens",link:"/guides/webgl-guide#burn-in-game-achievement-tokens"},{text:"Integrate an embedded marketplace",link:"/guides/webgl-guide#integrate-an-embedded-marketplace"},{text:"Leverage purchased items in-game",link:"/guides/webgl-guide#leverage-purchased-items-in-game"}]},{text:"Build a mobile Unity game",collapsed:!0,items:[{text:"Integrate SequenceKit with WaaS",link:"/guides/unity-guide#integrate-sequencekit-with-waas"},{text:"Deploy a collectibles contract",link:"/guides/unity-guide#deploy-a-collectibles-contract"},{text:"Deploy a remote minter",link:"/guides/unity-guide#deploy-a-remote-minter"},{text:"Mint in-game achievement tokens",link:"/guides/unity-guide#mint-in-game-achievement-tokens"},{text:"Burn in-game achievement tokens",link:"/guides/unity-guide#burn-in-game-achievement-tokens"},{text:"Integrate an embedded marketplace",link:"/guides/unity-guide#integrate-an-embedded-marketplace"},{text:"Leverage purchased items in-game",link:"/guides/unity-guide#leverage-purchased-items-in-game"}]},{text:"Build a lootbox with AI minting",link:"/guides/lootbox"},{text:"Building a Custom Marketplace",link:"/guides/template-marketplace-api"},{text:"Templates",items:[{text:"In-Game Wallet Demo",link:"/guides/templates/template-embedded-wallet"},{text:"Build a Backend Transaction Manager",link:"/guides/templates/02-building-relaying-server"},{text:"Serverless Minting of Collectibles",link:"/guides/templates/03-mint-collectibles-serverless"}]}],"/sdk":[{text:"Game Engine",items:[{text:"Unreal",collapsed:!0,items:[{text:"Overview",link:"/sdk/unreal/01-overview"},{text:"Installation",link:"/sdk/unreal/02-installation"},{text:"Setup",link:"/sdk/unreal/03-setup"},{text:"Authentication",link:"/sdk/unreal/04-authentication"},{text:"API Integration",link:"/sdk/unreal/05-api-integration"},{text:"Packaging",link:"/sdk/unreal/06-packaging"}]},{text:"Unity",collapsed:!0,items:[{text:"Overview",link:"/sdk/unity/01-overview"},{text:"Installation",link:"/sdk/unity/02-installation"},{text:"Setup",link:"/sdk/unity/03-setup"},{text:"Authentication",link:"/sdk/unity/04-authentication"},{text:"Write to blockchain",link:"/sdk/unity/05-write-to-blockchain"},{text:"Read from Blockchain",link:"/sdk/unity/06-read-from-blockchain"},{text:"Sign Messages",link:"/sdk/unity/07-sign-messages"},{text:"Deploy Contracts",link:"/sdk/unity/08-deploy-contracts"},{text:"Wallet UI",link:"/sdk/unity/09-wallet-ui"},{text:"Advanced",collapsed:!0,items:[{text:"Introduction",link:"/sdk/unity/Advanced/01-introduction"},{text:"Wallets",link:"/sdk/unity/Advanced/02-wallets"},{text:"Clients",link:"/sdk/unity/Advanced/03-clients"},{text:"Transfers",link:"/sdk/unity/Advanced/04-transfers"},{text:"Contracts",link:"/sdk/unity/Advanced/05-contracts"},{text:"Tokens",link:"/sdk/unity/Advanced/06-tokens"}]}]}]},{text:"Web3",items:[{text:"SequenceKit",collapsed:!0,items:[{text:"Overview",link:"/sdk/sequence-kit/01-overview"},{text:"Quickstart",link:"/sdk/sequence-kit/02-getting-started"},{text:"Configuration",link:"/sdk/sequence-kit/03-configuration"},{text:"Checkout",link:"/sdk/sequence-kit/04-checkout"},{text:"Custom Connectors",link:"/sdk/sequence-kit/05-custom-connectors"}]},{text:"TypeScript",collapsed:!0,items:[{text:"Overview",link:"/sdk/typescript/03-guides/overview"},{text:"Connect Wallet",link:"/sdk/typescript/03-guides/01-connect-wallet"},{text:"Authenticate Users with Message Signature",link:"/sdk/typescript/03-guides/02-auth-address"},{text:"Signing & Verifying Messages",link:"/sdk/typescript/03-guides/03-sign-message"},{text:"No-wallet confirmation signatures",link:"/sdk/typescript/03-guides/04-session-keys"},{text:"Sending Transactions",link:"/sdk/typescript/03-guides/05-send-transaction"},{text:"Sending ERC-20 Tokens",link:"/sdk/typescript/03-guides/06-send-erc20"},{text:"Sending ERC-721 (NFT) Tokens",link:"/sdk/typescript/03-guides/07-send-erc721"},{text:"Sending ERC-1155 (Collectible) Tokens",link:"/sdk/typescript/03-guides/08-send-erc1155"},{text:"Sending a Batch of Transactions",link:"/sdk/typescript/03-guides/09-send-batch-transactions"},{text:"Building Backends with Sequence",link:"/sdk/typescript/03-guides/10-building-backends"},{text:"Wallet Connectors",collapsed:!0,items:[{text:"Overview",link:"/sdk/typescript/connectors/01-overview"},{text:"SequenceKit",link:"/sdk/sequence-kit/01-overview"},{text:"Wagmi",link:"/sdk/typescript/connectors/03-wagmi"},{text:"RainbowKit",link:"/sdk/typescript/connectors/04-rainbow-kit"},{text:"Web3 Onboard",link:"/sdk/typescript/connectors/05-web3-onboard"},{text:"Web3 React V6",link:"/sdk/typescript/connectors/06-web3-react-v6"},{text:"Web3Modal",link:"/sdk/typescript/connectors/07-web3modal"},{text:"FAQ",link:"/sdk/typescript/connectors/08-FAQ"}]}]},{text:"Go",collapsed:!0,items:[{text:"Overview",link:"/sdk/go/overview"}]}]},{text:"Common Questions",collapsed:!0,items:[{text:"How do I do signature validation?",link:"/wallet/sig-validation"}]}],"/api":[{text:"Relayer",collapsed:!0,items:[{text:"Overview",link:"/api/relayer"},{text:"Relayer Examples",link:"/api/relayer/examples"}]},{text:"Indexer",collapsed:!0,items:[{text:"Overview",link:"/api/indexer/overview"},{text:"Installation",link:"/api/indexer/installation"},{text:"Fetch Tokens",link:"/api/indexer/fetch-tokens"},{text:"Transaction History",link:"/api/indexer/transaction-history"},{text:"Unique Tokens",link:"/api/indexer/unique-tokens"},{text:"Transaction History Token Contract",link:"/api/indexer/transation-history-token-contract"},{text:"Native Network Balance",link:"/api/indexer/native-network-balance"},{text:"Metadata Tips",link:"/api/indexer/metadata-tips"}]},{text:"Metadata",collapsed:!0,items:[{text:"Overview",link:"/api/metadata/overview"},{text:"Token Metadata",link:"/api/metadata/token-metadata"},{text:"Contract Metadata",link:"/api/metadata/contract-metadata"},{text:"REST API",link:"/api/metadata/rest-api"}]},{text:"Marketplace",collapsed:!0,items:[{text:"Overview",link:"/api/marketplace"},{text:"Schema",link:"/api/marketplace/schema"},{text:"Marketplace API",link:"/api/marketplace/api"},{text:"Marketplace Examples",link:"/api/marketplace/examples"}]},{text:"Node Gateway",collapsed:!0,items:[{text:"Overview",link:"/api/node-gateway"},{text:"Etc",link:"/api/node-gateway/etc"}]}],"/support":{items:[{text:"Support",link:"/support"},{text:"Changelog",link:"https://0xsequence.canny.io/changelog"},{text:"FAQ",link:"https://support.sequence.xyz"},{text:"Token Directory",link:"/support/token-directory"},{text:"Discord",link:"https://discord.gg/sequence"},{text:"We're hiring!",link:"https://horizon.io/careers"},{text:"Contact Us",link:"https://support.sequence.xyz"}]}},theme:{variables:{fontFamily:{default:"Inter"},color:{background:{light:"#f0f0f0",dark:"#111111"}}}},markdown:{code:{themes:{dark:"github-dark-dimmed",light:"github-light"}}},socials:[],vite:{}},Wv=p.createContext(Hv);function Kv(){return typeof window<"u",Hv}function Ww({children:e,config:t}){const[n,r]=p.useState(()=>t||Kv());return p.useEffect(()=>{},[]),p.useEffect(()=>{typeof window<"u"},[n]),x.jsx(Wv.Provider,{value:n,children:e})}function Je(){return p.useContext(Wv)}const Kw="modulepreload",Gw=function(e){return"/"+e},Xp={},b=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){const i=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),l=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));o=Promise.all(n.map(s=>{if(s=Gw(s),s in Xp)return;Xp[s]=!0;const c=s.endsWith(".css"),d=c?'[rel="stylesheet"]':"";if(!!r)for(let h=i.length-1;h>=0;h--){const y=i[h];if(y.href===s&&(!c||y.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${d}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":Kw,c||(f.as="script",f.crossOrigin=""),f.href=s,l&&f.setAttribute("nonce",l),document.head.appendChild(f),c)return new Promise((h,y)=>{f.addEventListener("load",h),f.addEventListener("error",()=>y(new Error(`Unable to preload CSS for ${s}`)))})}))}return o.then(()=>t()).catch(i=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i})},Hd=[{lazy:()=>b(()=>import("./index-eiT-MmI_.js"),__vite__mapDeps([0,1])),path:"/",type:"mdx",filePath:"index.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./support-ylCmghec.js"),[]),path:"/support",type:"mdx",filePath:"support.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./support-ylCmghec.js"),[]),path:"/support.html",type:"mdx",filePath:"support.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./embedded-wallet-C8P-szcQ.js"),__vite__mapDeps([2,1])),path:"/api/embedded-wallet",type:"mdx",filePath:"api/embedded-wallet.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./embedded-wallet-C8P-szcQ.js"),__vite__mapDeps([2,1])),path:"/api/embedded-wallet.html",type:"mdx",filePath:"api/embedded-wallet.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./marketplace-mXm9BjLt.js"),[]),path:"/api/marketplace",type:"mdx",filePath:"api/marketplace.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./marketplace-mXm9BjLt.js"),[]),path:"/api/marketplace.html",type:"mdx",filePath:"api/marketplace.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./metadata-BRJ0_s_X.js"),[]),path:"/api/metadata",type:"mdx",filePath:"api/metadata.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./metadata-BRJ0_s_X.js"),[]),path:"/api/metadata.html",type:"mdx",filePath:"api/metadata.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./node-gateway-DcQr5R2U.js"),[]),path:"/api/node-gateway",type:"mdx",filePath:"api/node-gateway.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./node-gateway-DcQr5R2U.js"),[]),path:"/api/node-gateway.html",type:"mdx",filePath:"api/node-gateway.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./relayer-BXMRPJsc.js"),[]),path:"/api/relayer",type:"mdx",filePath:"api/relayer.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./relayer-BXMRPJsc.js"),[]),path:"/api/relayer.html",type:"mdx",filePath:"api/relayer.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./lootbox-CYTHQ72f.js"),[]),path:"/guides/lootbox",type:"mdx",filePath:"guides/lootbox.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./lootbox-CYTHQ72f.js"),[]),path:"/guides/lootbox.html",type:"mdx",filePath:"guides/lootbox.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./template-marketplace-api-KSdx9fWf.js"),__vite__mapDeps([3,1])),path:"/guides/template-marketplace-api",type:"mdx",filePath:"guides/template-marketplace-api.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./template-marketplace-api-KSdx9fWf.js"),__vite__mapDeps([3,1])),path:"/guides/template-marketplace-api.html",type:"mdx",filePath:"guides/template-marketplace-api.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./unity-guide-CJmC9uRM.js"),[]),path:"/guides/unity-guide",type:"mdx",filePath:"guides/unity-guide.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./unity-guide-CJmC9uRM.js"),[]),path:"/guides/unity-guide.html",type:"mdx",filePath:"guides/unity-guide.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./webgl-guide-DDNEifOK.js"),__vite__mapDeps([4,1])),path:"/guides/webgl-guide",type:"mdx",filePath:"guides/webgl-guide.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./webgl-guide-DDNEifOK.js"),__vite__mapDeps([4,1])),path:"/guides/webgl-guide.html",type:"mdx",filePath:"guides/webgl-guide.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./android-CWO8hRFR.js"),[]),path:"/sdk/android",type:"mdx",filePath:"sdk/android.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./android-CWO8hRFR.js"),[]),path:"/sdk/android.html",type:"mdx",filePath:"sdk/android.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./iOS-CWO8hRFR.js"),[]),path:"/sdk/iOS",type:"mdx",filePath:"sdk/iOS.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./iOS-CWO8hRFR.js"),[]),path:"/sdk/iOS.html",type:"mdx",filePath:"sdk/iOS.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./nodejs-CWO8hRFR.js"),[]),path:"/sdk/nodejs",type:"mdx",filePath:"sdk/nodejs.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./nodejs-CWO8hRFR.js"),[]),path:"/sdk/nodejs.html",type:"mdx",filePath:"sdk/nodejs.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./reactnative-CWO8hRFR.js"),[]),path:"/sdk/reactnative",type:"mdx",filePath:"sdk/reactnative.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./reactnative-CWO8hRFR.js"),[]),path:"/sdk/reactnative.html",type:"mdx",filePath:"sdk/reactnative.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./sequence-kit-CWO8hRFR.js"),[]),path:"/sdk/sequence-kit",type:"mdx",filePath:"sdk/sequence-kit.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./sequence-kit-CWO8hRFR.js"),[]),path:"/sdk/sequence-kit.html",type:"mdx",filePath:"sdk/sequence-kit.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./typescript-CWO8hRFR.js"),[]),path:"/sdk/typescript",type:"mdx",filePath:"sdk/typescript.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./typescript-CWO8hRFR.js"),[]),path:"/sdk/typescript.html",type:"mdx",filePath:"sdk/typescript.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./unity-CWO8hRFR.js"),[]),path:"/sdk/unity",type:"mdx",filePath:"sdk/unity.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./unity-CWO8hRFR.js"),[]),path:"/sdk/unity.html",type:"mdx",filePath:"sdk/unity.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./minter-BQO7Uovb.js"),[]),path:"/solutions/minter",type:"mdx",filePath:"solutions/minter.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./minter-BQO7Uovb.js"),[]),path:"/solutions/minter.html",type:"mdx",filePath:"solutions/minter.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./nft-checkout-DCYb2_-s.js"),[]),path:"/solutions/nft-checkout",type:"mdx",filePath:"solutions/nft-checkout.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./nft-checkout-DCYb2_-s.js"),[]),path:"/solutions/nft-checkout.html",type:"mdx",filePath:"solutions/nft-checkout.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./onramps-uIYZr5qs.js"),[]),path:"/solutions/onramps",type:"mdx",filePath:"solutions/onramps.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./onramps-uIYZr5qs.js"),[]),path:"/solutions/onramps.html",type:"mdx",filePath:"solutions/onramps.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./token-directory-Jq2mFKpk.js"),__vite__mapDeps([5,1])),path:"/support/token-directory",type:"mdx",filePath:"support/token-directory.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./token-directory-Jq2mFKpk.js"),__vite__mapDeps([5,1])),path:"/support/token-directory.html",type:"mdx",filePath:"support/token-directory.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./fetch-tokens-DdYnFJtr.js"),[]),path:"/api/indexer/fetch-tokens",type:"mdx",filePath:"api/indexer/fetch-tokens.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./fetch-tokens-DdYnFJtr.js"),[]),path:"/api/indexer/fetch-tokens.html",type:"mdx",filePath:"api/indexer/fetch-tokens.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./installation-D7kc3DS8.js"),[]),path:"/api/indexer/installation",type:"mdx",filePath:"api/indexer/installation.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./installation-D7kc3DS8.js"),[]),path:"/api/indexer/installation.html",type:"mdx",filePath:"api/indexer/installation.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./metadata-tips-D8QvEPZX.js"),[]),path:"/api/indexer/metadata-tips",type:"mdx",filePath:"api/indexer/metadata-tips.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./metadata-tips-D8QvEPZX.js"),[]),path:"/api/indexer/metadata-tips.html",type:"mdx",filePath:"api/indexer/metadata-tips.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./native-network-balance-BIxm1G19.js"),[]),path:"/api/indexer/native-network-balance",type:"mdx",filePath:"api/indexer/native-network-balance.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./native-network-balance-BIxm1G19.js"),[]),path:"/api/indexer/native-network-balance.html",type:"mdx",filePath:"api/indexer/native-network-balance.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./overview-BBtttKMC.js"),[]),path:"/api/indexer/overview",type:"mdx",filePath:"api/indexer/overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./overview-BBtttKMC.js"),[]),path:"/api/indexer/overview.html",type:"mdx",filePath:"api/indexer/overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./transaction-history-j1vjXhwB.js"),[]),path:"/api/indexer/transaction-history",type:"mdx",filePath:"api/indexer/transaction-history.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./transaction-history-j1vjXhwB.js"),[]),path:"/api/indexer/transaction-history.html",type:"mdx",filePath:"api/indexer/transaction-history.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./transation-history-token-contract-its4BBrH.js"),[]),path:"/api/indexer/transation-history-token-contract",type:"mdx",filePath:"api/indexer/transation-history-token-contract.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./transation-history-token-contract-its4BBrH.js"),[]),path:"/api/indexer/transation-history-token-contract.html",type:"mdx",filePath:"api/indexer/transation-history-token-contract.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./unique-tokens-DyeElKFa.js"),[]),path:"/api/indexer/unique-tokens",type:"mdx",filePath:"api/indexer/unique-tokens.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./unique-tokens-DyeElKFa.js"),[]),path:"/api/indexer/unique-tokens.html",type:"mdx",filePath:"api/indexer/unique-tokens.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./contract-metadata-DoBtUdQP.js"),[]),path:"/api/metadata/contract-metadata",type:"mdx",filePath:"api/metadata/contract-metadata.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./contract-metadata-DoBtUdQP.js"),[]),path:"/api/metadata/contract-metadata.html",type:"mdx",filePath:"api/metadata/contract-metadata.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./overview-B0dToUxf.js"),[]),path:"/api/metadata/overview",type:"mdx",filePath:"api/metadata/overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./overview-B0dToUxf.js"),[]),path:"/api/metadata/overview.html",type:"mdx",filePath:"api/metadata/overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./rest-api-DIGry_pO.js"),[]),path:"/api/metadata/rest-api",type:"mdx",filePath:"api/metadata/rest-api.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./rest-api-DIGry_pO.js"),[]),path:"/api/metadata/rest-api.html",type:"mdx",filePath:"api/metadata/rest-api.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./token-metadata-DWYDLsDV.js"),[]),path:"/api/metadata/token-metadata",type:"mdx",filePath:"api/metadata/token-metadata.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./token-metadata-DWYDLsDV.js"),[]),path:"/api/metadata/token-metadata.html",type:"mdx",filePath:"api/metadata/token-metadata.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-building-relaying-server-BYO9i9QM.js"),[]),path:"/guides/templates/02-building-relaying-server",type:"mdx",filePath:"guides/templates/02-building-relaying-server.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-building-relaying-server-BYO9i9QM.js"),[]),path:"/guides/templates/02-building-relaying-server.html",type:"mdx",filePath:"guides/templates/02-building-relaying-server.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-mint-collectibles-serverless-BJtBuUYk.js"),[]),path:"/guides/templates/03-mint-collectibles-serverless",type:"mdx",filePath:"guides/templates/03-mint-collectibles-serverless.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-mint-collectibles-serverless-BJtBuUYk.js"),[]),path:"/guides/templates/03-mint-collectibles-serverless.html",type:"mdx",filePath:"guides/templates/03-mint-collectibles-serverless.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./template-embedded-wallet-U-onn5aG.js"),[]),path:"/guides/templates/template-embedded-wallet",type:"mdx",filePath:"guides/templates/template-embedded-wallet.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./template-embedded-wallet-U-onn5aG.js"),[]),path:"/guides/templates/template-embedded-wallet.html",type:"mdx",filePath:"guides/templates/template-embedded-wallet.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./overview-BXJAh5pD.js"),[]),path:"/sdk/go/overview",type:"mdx",filePath:"sdk/go/overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./overview-BXJAh5pD.js"),[]),path:"/sdk/go/overview.html",type:"mdx",filePath:"sdk/go/overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-overview-52_meTu3.js"),[]),path:"/sdk/sequence-kit/01-overview",type:"mdx",filePath:"sdk/sequence-kit/01-overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-overview-52_meTu3.js"),[]),path:"/sdk/sequence-kit/01-overview.html",type:"mdx",filePath:"sdk/sequence-kit/01-overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-getting-started-CGtMGBD4.js"),[]),path:"/sdk/sequence-kit/02-getting-started",type:"mdx",filePath:"sdk/sequence-kit/02-getting-started.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-getting-started-CGtMGBD4.js"),[]),path:"/sdk/sequence-kit/02-getting-started.html",type:"mdx",filePath:"sdk/sequence-kit/02-getting-started.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-configuration--HWmf-Mm.js"),[]),path:"/sdk/sequence-kit/03-configuration",type:"mdx",filePath:"sdk/sequence-kit/03-configuration.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-configuration--HWmf-Mm.js"),[]),path:"/sdk/sequence-kit/03-configuration.html",type:"mdx",filePath:"sdk/sequence-kit/03-configuration.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-checkout-BVPq6FfX.js"),[]),path:"/sdk/sequence-kit/04-checkout",type:"mdx",filePath:"sdk/sequence-kit/04-checkout.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-checkout-BVPq6FfX.js"),[]),path:"/sdk/sequence-kit/04-checkout.html",type:"mdx",filePath:"sdk/sequence-kit/04-checkout.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-custom-connectors-Brj3CoYB.js"),[]),path:"/sdk/sequence-kit/05-custom-connectors",type:"mdx",filePath:"sdk/sequence-kit/05-custom-connectors.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-custom-connectors-Brj3CoYB.js"),[]),path:"/sdk/sequence-kit/05-custom-connectors.html",type:"mdx",filePath:"sdk/sequence-kit/05-custom-connectors.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-overview-DNWqy07K.js"),[]),path:"/sdk/unity/01-overview",type:"mdx",filePath:"sdk/unity/01-overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-overview-DNWqy07K.js"),[]),path:"/sdk/unity/01-overview.html",type:"mdx",filePath:"sdk/unity/01-overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-installation-D5fb_9zG.js"),[]),path:"/sdk/unity/02-installation",type:"mdx",filePath:"sdk/unity/02-installation.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-installation-D5fb_9zG.js"),[]),path:"/sdk/unity/02-installation.html",type:"mdx",filePath:"sdk/unity/02-installation.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-setup-C0dwh71D.js"),[]),path:"/sdk/unity/03-setup",type:"mdx",filePath:"sdk/unity/03-setup.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-setup-C0dwh71D.js"),[]),path:"/sdk/unity/03-setup.html",type:"mdx",filePath:"sdk/unity/03-setup.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-authentication-0345J8l8.js"),[]),path:"/sdk/unity/04-authentication",type:"mdx",filePath:"sdk/unity/04-authentication.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-authentication-0345J8l8.js"),[]),path:"/sdk/unity/04-authentication.html",type:"mdx",filePath:"sdk/unity/04-authentication.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-write-to-blockchain-BhNClGRn.js"),[]),path:"/sdk/unity/05-write-to-blockchain",type:"mdx",filePath:"sdk/unity/05-write-to-blockchain.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-write-to-blockchain-BhNClGRn.js"),[]),path:"/sdk/unity/05-write-to-blockchain.html",type:"mdx",filePath:"sdk/unity/05-write-to-blockchain.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-read-from-blockchain-B3uVBIhc.js"),[]),path:"/sdk/unity/06-read-from-blockchain",type:"mdx",filePath:"sdk/unity/06-read-from-blockchain.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-read-from-blockchain-B3uVBIhc.js"),[]),path:"/sdk/unity/06-read-from-blockchain.html",type:"mdx",filePath:"sdk/unity/06-read-from-blockchain.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./07-sign-messages-CJrdbWnF.js"),[]),path:"/sdk/unity/07-sign-messages",type:"mdx",filePath:"sdk/unity/07-sign-messages.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./07-sign-messages-CJrdbWnF.js"),[]),path:"/sdk/unity/07-sign-messages.html",type:"mdx",filePath:"sdk/unity/07-sign-messages.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./08-deploy-contracts-COfdfYKV.js"),[]),path:"/sdk/unity/08-deploy-contracts",type:"mdx",filePath:"sdk/unity/08-deploy-contracts.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./08-deploy-contracts-COfdfYKV.js"),[]),path:"/sdk/unity/08-deploy-contracts.html",type:"mdx",filePath:"sdk/unity/08-deploy-contracts.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./09-wallet-ui-IOp_A6vv.js"),[]),path:"/sdk/unity/09-wallet-ui",type:"mdx",filePath:"sdk/unity/09-wallet-ui.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./09-wallet-ui-IOp_A6vv.js"),[]),path:"/sdk/unity/09-wallet-ui.html",type:"mdx",filePath:"sdk/unity/09-wallet-ui.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-overview-Bzg7GJ6C.js"),[]),path:"/sdk/unreal/01-overview",type:"mdx",filePath:"sdk/unreal/01-overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-overview-Bzg7GJ6C.js"),[]),path:"/sdk/unreal/01-overview.html",type:"mdx",filePath:"sdk/unreal/01-overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-installation-fEYPhuch.js"),[]),path:"/sdk/unreal/02-installation",type:"mdx",filePath:"sdk/unreal/02-installation.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-installation-fEYPhuch.js"),[]),path:"/sdk/unreal/02-installation.html",type:"mdx",filePath:"sdk/unreal/02-installation.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-setup-BqxPVrTQ.js"),[]),path:"/sdk/unreal/03-setup",type:"mdx",filePath:"sdk/unreal/03-setup.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-setup-BqxPVrTQ.js"),[]),path:"/sdk/unreal/03-setup.html",type:"mdx",filePath:"sdk/unreal/03-setup.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-authentication-C_pTtnTW.js"),[]),path:"/sdk/unreal/04-authentication",type:"mdx",filePath:"sdk/unreal/04-authentication.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-authentication-C_pTtnTW.js"),[]),path:"/sdk/unreal/04-authentication.html",type:"mdx",filePath:"sdk/unreal/04-authentication.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-api-integration-BAkxldxc.js"),[]),path:"/sdk/unreal/05-api-integration",type:"mdx",filePath:"sdk/unreal/05-api-integration.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-api-integration-BAkxldxc.js"),[]),path:"/sdk/unreal/05-api-integration.html",type:"mdx",filePath:"sdk/unreal/05-api-integration.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-packaging-CeTraCJv.js"),[]),path:"/sdk/unreal/06-packaging",type:"mdx",filePath:"sdk/unreal/06-packaging.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-packaging-CeTraCJv.js"),[]),path:"/sdk/unreal/06-packaging.html",type:"mdx",filePath:"sdk/unreal/06-packaging.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./analytics-DX16d0wm.js"),[]),path:"/solutions/builder/analytics",type:"mdx",filePath:"solutions/builder/analytics.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./analytics-DX16d0wm.js"),[]),path:"/solutions/builder/analytics.html",type:"mdx",filePath:"solutions/builder/analytics.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./contracts-Cq03dBTm.js"),__vite__mapDeps([6,7])),path:"/solutions/builder/contracts",type:"mdx",filePath:"solutions/builder/contracts.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./contracts-Cq03dBTm.js"),__vite__mapDeps([6,7])),path:"/solutions/builder/contracts.html",type:"mdx",filePath:"solutions/builder/contracts.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./gas-tank-1dDav1bf.js"),__vite__mapDeps([8,7])),path:"/solutions/builder/gas-tank",type:"mdx",filePath:"solutions/builder/gas-tank.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./gas-tank-1dDav1bf.js"),__vite__mapDeps([8,7])),path:"/solutions/builder/gas-tank.html",type:"mdx",filePath:"solutions/builder/gas-tank.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./getting-started-MmoMcmqN.js"),__vite__mapDeps([9,10])),path:"/solutions/builder/getting-started",type:"mdx",filePath:"solutions/builder/getting-started.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./getting-started-MmoMcmqN.js"),__vite__mapDeps([9,10])),path:"/solutions/builder/getting-started.html",type:"mdx",filePath:"solutions/builder/getting-started.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./indexer-DbL1OAlD.js"),__vite__mapDeps([11,7])),path:"/solutions/builder/indexer",type:"mdx",filePath:"solutions/builder/indexer.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./indexer-DbL1OAlD.js"),__vite__mapDeps([11,7])),path:"/solutions/builder/indexer.html",type:"mdx",filePath:"solutions/builder/indexer.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./marketplaces-CfqPZAL8.js"),__vite__mapDeps([12,7])),path:"/solutions/builder/marketplaces",type:"mdx",filePath:"solutions/builder/marketplaces.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./marketplaces-CfqPZAL8.js"),__vite__mapDeps([12,7])),path:"/solutions/builder/marketplaces.html",type:"mdx",filePath:"solutions/builder/marketplaces.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./node-gateway-DAIQ9evn.js"),__vite__mapDeps([13,7])),path:"/solutions/builder/node-gateway",type:"mdx",filePath:"solutions/builder/node-gateway.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./node-gateway-DAIQ9evn.js"),__vite__mapDeps([13,7])),path:"/solutions/builder/node-gateway.html",type:"mdx",filePath:"solutions/builder/node-gateway.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./overview-6OEMZgDS.js"),__vite__mapDeps([14,10])),path:"/solutions/builder/overview",type:"mdx",filePath:"solutions/builder/overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./overview-6OEMZgDS.js"),__vite__mapDeps([14,10])),path:"/solutions/builder/overview.html",type:"mdx",filePath:"solutions/builder/overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./project-management-CmuszwoH.js"),__vite__mapDeps([15,7])),path:"/solutions/builder/project-management",type:"mdx",filePath:"solutions/builder/project-management.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./project-management-CmuszwoH.js"),__vite__mapDeps([15,7])),path:"/solutions/builder/project-management.html",type:"mdx",filePath:"solutions/builder/project-management.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./project-settings-D3XgthWQ.js"),__vite__mapDeps([16,7])),path:"/solutions/builder/project-settings",type:"mdx",filePath:"solutions/builder/project-settings.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./project-settings-D3XgthWQ.js"),__vite__mapDeps([16,7])),path:"/solutions/builder/project-settings.html",type:"mdx",filePath:"solutions/builder/project-settings.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./wallet-sdks-X-nd6U1N.js"),__vite__mapDeps([17,7])),path:"/solutions/builder/wallet-sdks",type:"mdx",filePath:"solutions/builder/wallet-sdks.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./wallet-sdks-X-nd6U1N.js"),__vite__mapDeps([17,7])),path:"/solutions/builder/wallet-sdks.html",type:"mdx",filePath:"solutions/builder/wallet-sdks.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./overview-Cb_kOiEC.js"),[]),path:"/solutions/marketplaces/overview",type:"mdx",filePath:"solutions/marketplaces/overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./overview-Cb_kOiEC.js"),[]),path:"/solutions/marketplaces/overview.html",type:"mdx",filePath:"solutions/marketplaces/overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./white-label-marketplace-jOtVsaEx.js"),__vite__mapDeps([18,7])),path:"/solutions/marketplaces/white-label-marketplace",type:"mdx",filePath:"solutions/marketplaces/white-label-marketplace.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./white-label-marketplace-jOtVsaEx.js"),__vite__mapDeps([18,7])),path:"/solutions/marketplaces/white-label-marketplace.html",type:"mdx",filePath:"solutions/marketplaces/white-label-marketplace.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./5189-4337-eFMx7GIk.js"),[]),path:"/solutions/technical-references/5189-4337",type:"mdx",filePath:"solutions/technical-references/5189-4337.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./5189-4337-eFMx7GIk.js"),[]),path:"/solutions/technical-references/5189-4337.html",type:"mdx",filePath:"solutions/technical-references/5189-4337.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./chain-support-CVTb5aJk.js"),[]),path:"/solutions/technical-references/chain-support",type:"mdx",filePath:"solutions/technical-references/chain-support.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./chain-support-CVTb5aJk.js"),[]),path:"/solutions/technical-references/chain-support.html",type:"mdx",filePath:"solutions/technical-references/chain-support.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./overview-240yDIuv.js"),[]),path:"/solutions/wallets/overview",type:"mdx",filePath:"solutions/wallets/overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./overview-240yDIuv.js"),[]),path:"/solutions/wallets/overview.html",type:"mdx",filePath:"solutions/wallets/overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-connect-wallet-m8lVSacv.js"),[]),path:"/sdk/typescript/03-guides/01-connect-wallet",type:"mdx",filePath:"sdk/typescript/03-guides/01-connect-wallet.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-connect-wallet-m8lVSacv.js"),[]),path:"/sdk/typescript/03-guides/01-connect-wallet.html",type:"mdx",filePath:"sdk/typescript/03-guides/01-connect-wallet.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-auth-address-BJKV5nL6.js"),[]),path:"/sdk/typescript/03-guides/02-auth-address",type:"mdx",filePath:"sdk/typescript/03-guides/02-auth-address.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-auth-address-BJKV5nL6.js"),[]),path:"/sdk/typescript/03-guides/02-auth-address.html",type:"mdx",filePath:"sdk/typescript/03-guides/02-auth-address.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-sign-message-CbKbpn7U.js"),[]),path:"/sdk/typescript/03-guides/03-sign-message",type:"mdx",filePath:"sdk/typescript/03-guides/03-sign-message.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-sign-message-CbKbpn7U.js"),[]),path:"/sdk/typescript/03-guides/03-sign-message.html",type:"mdx",filePath:"sdk/typescript/03-guides/03-sign-message.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-session-keys-DffAoXbb.js"),[]),path:"/sdk/typescript/03-guides/04-session-keys",type:"mdx",filePath:"sdk/typescript/03-guides/04-session-keys.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-session-keys-DffAoXbb.js"),[]),path:"/sdk/typescript/03-guides/04-session-keys.html",type:"mdx",filePath:"sdk/typescript/03-guides/04-session-keys.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-send-transaction-CYUsi7f0.js"),[]),path:"/sdk/typescript/03-guides/05-send-transaction",type:"mdx",filePath:"sdk/typescript/03-guides/05-send-transaction.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-send-transaction-CYUsi7f0.js"),[]),path:"/sdk/typescript/03-guides/05-send-transaction.html",type:"mdx",filePath:"sdk/typescript/03-guides/05-send-transaction.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-send-erc20-Dlnoxfm2.js"),[]),path:"/sdk/typescript/03-guides/06-send-erc20",type:"mdx",filePath:"sdk/typescript/03-guides/06-send-erc20.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-send-erc20-Dlnoxfm2.js"),[]),path:"/sdk/typescript/03-guides/06-send-erc20.html",type:"mdx",filePath:"sdk/typescript/03-guides/06-send-erc20.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./07-send-erc721-CuoiTcG6.js"),[]),path:"/sdk/typescript/03-guides/07-send-erc721",type:"mdx",filePath:"sdk/typescript/03-guides/07-send-erc721.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./07-send-erc721-CuoiTcG6.js"),[]),path:"/sdk/typescript/03-guides/07-send-erc721.html",type:"mdx",filePath:"sdk/typescript/03-guides/07-send-erc721.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./08-send-erc1155-CZ-semBW.js"),[]),path:"/sdk/typescript/03-guides/08-send-erc1155",type:"mdx",filePath:"sdk/typescript/03-guides/08-send-erc1155.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./08-send-erc1155-CZ-semBW.js"),[]),path:"/sdk/typescript/03-guides/08-send-erc1155.html",type:"mdx",filePath:"sdk/typescript/03-guides/08-send-erc1155.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./09-send-batch-transactions-DK07H4Kh.js"),[]),path:"/sdk/typescript/03-guides/09-send-batch-transactions",type:"mdx",filePath:"sdk/typescript/03-guides/09-send-batch-transactions.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./09-send-batch-transactions-DK07H4Kh.js"),[]),path:"/sdk/typescript/03-guides/09-send-batch-transactions.html",type:"mdx",filePath:"sdk/typescript/03-guides/09-send-batch-transactions.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./10-building-backends-B5UE4lHW.js"),[]),path:"/sdk/typescript/03-guides/10-building-backends",type:"mdx",filePath:"sdk/typescript/03-guides/10-building-backends.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./10-building-backends-B5UE4lHW.js"),[]),path:"/sdk/typescript/03-guides/10-building-backends.html",type:"mdx",filePath:"sdk/typescript/03-guides/10-building-backends.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./overview-BNDqce-N.js"),[]),path:"/sdk/typescript/03-guides/overview",type:"mdx",filePath:"sdk/typescript/03-guides/overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./overview-BNDqce-N.js"),[]),path:"/sdk/typescript/03-guides/overview.html",type:"mdx",filePath:"sdk/typescript/03-guides/overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-overview-D8Tn9zZW.js"),[]),path:"/sdk/typescript/connectors/01-overview",type:"mdx",filePath:"sdk/typescript/connectors/01-overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-overview-D8Tn9zZW.js"),[]),path:"/sdk/typescript/connectors/01-overview.html",type:"mdx",filePath:"sdk/typescript/connectors/01-overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-sequence-kit-DK2NtjwN.js"),[]),path:"/sdk/typescript/connectors/02-sequence-kit",type:"mdx",filePath:"sdk/typescript/connectors/02-sequence-kit.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-sequence-kit-DK2NtjwN.js"),[]),path:"/sdk/typescript/connectors/02-sequence-kit.html",type:"mdx",filePath:"sdk/typescript/connectors/02-sequence-kit.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-wagmi-CpdgCO8V.js"),[]),path:"/sdk/typescript/connectors/03-wagmi",type:"mdx",filePath:"sdk/typescript/connectors/03-wagmi.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-wagmi-CpdgCO8V.js"),[]),path:"/sdk/typescript/connectors/03-wagmi.html",type:"mdx",filePath:"sdk/typescript/connectors/03-wagmi.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-rainbow-kit-DA-KWee4.js"),[]),path:"/sdk/typescript/connectors/04-rainbow-kit",type:"mdx",filePath:"sdk/typescript/connectors/04-rainbow-kit.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-rainbow-kit-DA-KWee4.js"),[]),path:"/sdk/typescript/connectors/04-rainbow-kit.html",type:"mdx",filePath:"sdk/typescript/connectors/04-rainbow-kit.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-web3-onboard-C59AlOaH.js"),[]),path:"/sdk/typescript/connectors/05-web3-onboard",type:"mdx",filePath:"sdk/typescript/connectors/05-web3-onboard.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-web3-onboard-C59AlOaH.js"),[]),path:"/sdk/typescript/connectors/05-web3-onboard.html",type:"mdx",filePath:"sdk/typescript/connectors/05-web3-onboard.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-web3-react-v6-DPgVqEZy.js"),[]),path:"/sdk/typescript/connectors/06-web3-react-v6",type:"mdx",filePath:"sdk/typescript/connectors/06-web3-react-v6.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-web3-react-v6-DPgVqEZy.js"),[]),path:"/sdk/typescript/connectors/06-web3-react-v6.html",type:"mdx",filePath:"sdk/typescript/connectors/06-web3-react-v6.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./07-web3modal-CJWNDuPy.js"),[]),path:"/sdk/typescript/connectors/07-web3modal",type:"mdx",filePath:"sdk/typescript/connectors/07-web3modal.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./07-web3modal-CJWNDuPy.js"),[]),path:"/sdk/typescript/connectors/07-web3modal.html",type:"mdx",filePath:"sdk/typescript/connectors/07-web3modal.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./08-FAQ-BnZeRgpC.js"),[]),path:"/sdk/typescript/connectors/08-FAQ",type:"mdx",filePath:"sdk/typescript/connectors/08-FAQ.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./08-FAQ-BnZeRgpC.js"),[]),path:"/sdk/typescript/connectors/08-FAQ.html",type:"mdx",filePath:"sdk/typescript/connectors/08-FAQ.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-introduction-GkyqY8bl.js"),[]),path:"/sdk/unity/Advanced/01-introduction",type:"mdx",filePath:"sdk/unity/Advanced/01-introduction.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-introduction-GkyqY8bl.js"),[]),path:"/sdk/unity/Advanced/01-introduction.html",type:"mdx",filePath:"sdk/unity/Advanced/01-introduction.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-wallets-CyLSnOCH.js"),[]),path:"/sdk/unity/Advanced/02-wallets",type:"mdx",filePath:"sdk/unity/Advanced/02-wallets.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-wallets-CyLSnOCH.js"),[]),path:"/sdk/unity/Advanced/02-wallets.html",type:"mdx",filePath:"sdk/unity/Advanced/02-wallets.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-clients-CVLGz0EF.js"),[]),path:"/sdk/unity/Advanced/03-clients",type:"mdx",filePath:"sdk/unity/Advanced/03-clients.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-clients-CVLGz0EF.js"),[]),path:"/sdk/unity/Advanced/03-clients.html",type:"mdx",filePath:"sdk/unity/Advanced/03-clients.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-transfers-fldLL6k8.js"),[]),path:"/sdk/unity/Advanced/04-transfers",type:"mdx",filePath:"sdk/unity/Advanced/04-transfers.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-transfers-fldLL6k8.js"),[]),path:"/sdk/unity/Advanced/04-transfers.html",type:"mdx",filePath:"sdk/unity/Advanced/04-transfers.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-contracts-FJ80mg17.js"),[]),path:"/sdk/unity/Advanced/05-contracts",type:"mdx",filePath:"sdk/unity/Advanced/05-contracts.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-contracts-FJ80mg17.js"),[]),path:"/sdk/unity/Advanced/05-contracts.html",type:"mdx",filePath:"sdk/unity/Advanced/05-contracts.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-tokens-BvNhWInG.js"),[]),path:"/sdk/unity/Advanced/06-tokens",type:"mdx",filePath:"sdk/unity/Advanced/06-tokens.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-tokens-BvNhWInG.js"),[]),path:"/sdk/unity/Advanced/06-tokens.html",type:"mdx",filePath:"sdk/unity/Advanced/06-tokens.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-deploy-an-item-collection-DMRfZ8XO.js"),__vite__mapDeps([19,1])),path:"/solutions/collectibles/contracts/01-deploy-an-item-collection",type:"mdx",filePath:"solutions/collectibles/contracts/01-deploy-an-item-collection.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-deploy-an-item-collection-DMRfZ8XO.js"),__vite__mapDeps([19,1])),path:"/solutions/collectibles/contracts/01-deploy-an-item-collection.html",type:"mdx",filePath:"solutions/collectibles/contracts/01-deploy-an-item-collection.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-deploy-ERC20-currency-D8ac1LPl.js"),__vite__mapDeps([20,1])),path:"/solutions/collectibles/contracts/02-deploy-ERC20-currency",type:"mdx",filePath:"solutions/collectibles/contracts/02-deploy-ERC20-currency.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-deploy-ERC20-currency-D8ac1LPl.js"),__vite__mapDeps([20,1])),path:"/solutions/collectibles/contracts/02-deploy-ERC20-currency.html",type:"mdx",filePath:"solutions/collectibles/contracts/02-deploy-ERC20-currency.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./800-manage-metadata-builder-BdRNcAvW.js"),[]),path:"/solutions/collectibles/metadata/800-manage-metadata-builder",type:"mdx",filePath:"solutions/collectibles/metadata/800-manage-metadata-builder.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./800-manage-metadata-builder-BdRNcAvW.js"),[]),path:"/solutions/collectibles/metadata/800-manage-metadata-builder.html",type:"mdx",filePath:"solutions/collectibles/metadata/800-manage-metadata-builder.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-overview-DuQI0pZU.js"),__vite__mapDeps([21,1,10])),path:"/solutions/marketplaces/orderbook/01-overview",type:"mdx",filePath:"solutions/marketplaces/orderbook/01-overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-overview-DuQI0pZU.js"),__vite__mapDeps([21,1,10])),path:"/solutions/marketplaces/orderbook/01-overview.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/01-overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-quickstart-CPH7FQRk.js"),[]),path:"/solutions/marketplaces/orderbook/02-quickstart",type:"mdx",filePath:"solutions/marketplaces/orderbook/02-quickstart.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-quickstart-CPH7FQRk.js"),[]),path:"/solutions/marketplaces/orderbook/02-quickstart.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/02-quickstart.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-fiat-on-ramps-CGLqrgR6.js"),[]),path:"/solutions/payments/onramps/01-fiat-on-ramps",type:"mdx",filePath:"solutions/payments/onramps/01-fiat-on-ramps.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-fiat-on-ramps-CGLqrgR6.js"),[]),path:"/solutions/payments/onramps/01-fiat-on-ramps.html",type:"mdx",filePath:"solutions/payments/onramps/01-fiat-on-ramps.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-deployment-HSTak7lQ.js"),__vite__mapDeps([22,1])),path:"/solutions/technical-references/internals/01-deployment",type:"mdx",filePath:"solutions/technical-references/internals/01-deployment.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-deployment-HSTak7lQ.js"),__vite__mapDeps([22,1])),path:"/solutions/technical-references/internals/01-deployment.html",type:"mdx",filePath:"solutions/technical-references/internals/01-deployment.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-why-CAG2t7n0.js"),[]),path:"/solutions/technical-references/wallet-contracts/01-why",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/01-why.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-why-CAG2t7n0.js"),[]),path:"/solutions/technical-references/wallet-contracts/01-why.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/01-why.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-overview-eenILnvj.js"),[]),path:"/solutions/wallets/embedded-wallet/01-overview",type:"mdx",filePath:"solutions/wallets/embedded-wallet/01-overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-overview-eenILnvj.js"),[]),path:"/solutions/wallets/embedded-wallet/01-overview.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/01-overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-quickstart-Dw_dstON.js"),[]),path:"/solutions/wallets/embedded-wallet/02-quickstart",type:"mdx",filePath:"solutions/wallets/embedded-wallet/02-quickstart.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-quickstart-Dw_dstON.js"),[]),path:"/solutions/wallets/embedded-wallet/02-quickstart.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/02-quickstart.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./07-Architecture-CFB_rX-9.js"),[]),path:"/solutions/wallets/embedded-wallet/07-Architecture",type:"mdx",filePath:"solutions/wallets/embedded-wallet/07-Architecture.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./07-Architecture-CFB_rX-9.js"),[]),path:"/solutions/wallets/embedded-wallet/07-Architecture.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/07-Architecture.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-overview-BBZV3ovq.js"),[]),path:"/solutions/wallets/universal-wallet/01-overview",type:"mdx",filePath:"solutions/wallets/universal-wallet/01-overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-overview-BBZV3ovq.js"),[]),path:"/solutions/wallets/universal-wallet/01-overview.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/01-overview.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-quickstart-D4ediW1_.js"),[]),path:"/solutions/wallets/universal-wallet/02-quickstart",type:"mdx",filePath:"solutions/wallets/universal-wallet/02-quickstart.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-quickstart-D4ediW1_.js"),[]),path:"/solutions/wallets/universal-wallet/02-quickstart.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/02-quickstart.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-sequence-kit-BRgz76hA.js"),[]),path:"/solutions/wallets/universal-wallet/04-sequence-kit",type:"mdx",filePath:"solutions/wallets/universal-wallet/04-sequence-kit.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-sequence-kit-BRgz76hA.js"),[]),path:"/solutions/wallets/universal-wallet/04-sequence-kit.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/04-sequence-kit.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-platforms-Qn5r-I38.js"),[]),path:"/solutions/wallets/universal-wallet/05-platforms",type:"mdx",filePath:"solutions/wallets/universal-wallet/05-platforms.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-platforms-Qn5r-I38.js"),[]),path:"/solutions/wallets/universal-wallet/05-platforms.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/05-platforms.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-fiat-on-ramps-T0-3NKJP.js"),[]),path:"/solutions/wallets/universal-wallet/06-fiat-on-ramps",type:"mdx",filePath:"solutions/wallets/universal-wallet/06-fiat-on-ramps.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-fiat-on-ramps-T0-3NKJP.js"),[]),path:"/solutions/wallets/universal-wallet/06-fiat-on-ramps.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/06-fiat-on-ramps.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./07-key-management-JqgkrJAs.js"),[]),path:"/solutions/wallets/universal-wallet/07-key-management",type:"mdx",filePath:"solutions/wallets/universal-wallet/07-key-management.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./07-key-management-JqgkrJAs.js"),[]),path:"/solutions/wallets/universal-wallet/07-key-management.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/07-key-management.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-get-top-orders-DESIlbG0.js"),__vite__mapDeps([23,1])),path:"/solutions/marketplaces/orderbook/examples/03-get-top-orders",type:"mdx",filePath:"solutions/marketplaces/orderbook/examples/03-get-top-orders.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-get-top-orders-DESIlbG0.js"),__vite__mapDeps([23,1])),path:"/solutions/marketplaces/orderbook/examples/03-get-top-orders.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/examples/03-get-top-orders.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-get-orderbook-CcHbZi_W.js"),__vite__mapDeps([24,1])),path:"/solutions/marketplaces/orderbook/examples/04-get-orderbook",type:"mdx",filePath:"solutions/marketplaces/orderbook/examples/04-get-orderbook.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-get-orderbook-CcHbZi_W.js"),__vite__mapDeps([24,1])),path:"/solutions/marketplaces/orderbook/examples/04-get-orderbook.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/examples/04-get-orderbook.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-get-user-activities-FpRCBXoE.js"),[]),path:"/solutions/marketplaces/orderbook/examples/05-get-user-activities",type:"mdx",filePath:"solutions/marketplaces/orderbook/examples/05-get-user-activities.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-get-user-activities-FpRCBXoE.js"),[]),path:"/solutions/marketplaces/orderbook/examples/05-get-user-activities.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/examples/05-get-user-activities.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-orderbook-transactions-DgOnZQxx.js"),__vite__mapDeps([25,1])),path:"/solutions/marketplaces/orderbook/examples/06-orderbook-transactions",type:"mdx",filePath:"solutions/marketplaces/orderbook/examples/06-orderbook-transactions.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-orderbook-transactions-DgOnZQxx.js"),__vite__mapDeps([25,1])),path:"/solutions/marketplaces/orderbook/examples/06-orderbook-transactions.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/examples/06-orderbook-transactions.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-deploy-D1dR_q22.js"),__vite__mapDeps([26,1])),path:"/solutions/technical-references/internals/v1/01-deploy",type:"mdx",filePath:"solutions/technical-references/internals/v1/01-deploy.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-deploy-D1dR_q22.js"),__vite__mapDeps([26,1])),path:"/solutions/technical-references/internals/v1/01-deploy.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/01-deploy.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-wallet-factory-TFAMxFf_.js"),__vite__mapDeps([27,1])),path:"/solutions/technical-references/internals/v1/03-wallet-factory",type:"mdx",filePath:"solutions/technical-references/internals/v1/03-wallet-factory.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-wallet-factory-TFAMxFf_.js"),__vite__mapDeps([27,1])),path:"/solutions/technical-references/internals/v1/03-wallet-factory.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/03-wallet-factory.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-wallet-configuration-Ezwe96dL.js"),[]),path:"/solutions/technical-references/internals/v1/04-wallet-configuration",type:"mdx",filePath:"solutions/technical-references/internals/v1/04-wallet-configuration.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-wallet-configuration-Ezwe96dL.js"),[]),path:"/solutions/technical-references/internals/v1/04-wallet-configuration.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/04-wallet-configuration.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-modules-and-updates-B745dCXv.js"),[]),path:"/solutions/technical-references/internals/v1/05-modules-and-updates",type:"mdx",filePath:"solutions/technical-references/internals/v1/05-modules-and-updates.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-modules-and-updates-B745dCXv.js"),[]),path:"/solutions/technical-references/internals/v1/05-modules-and-updates.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/05-modules-and-updates.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-main-module-upgradeable-Cv58TY4K.js"),[]),path:"/solutions/technical-references/internals/v1/06-main-module-upgradeable",type:"mdx",filePath:"solutions/technical-references/internals/v1/06-main-module-upgradeable.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-main-module-upgradeable-Cv58TY4K.js"),[]),path:"/solutions/technical-references/internals/v1/06-main-module-upgradeable.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/06-main-module-upgradeable.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./08-signature-encoding-CuAO-4z4.js"),[]),path:"/solutions/technical-references/internals/v1/08-signature-encoding",type:"mdx",filePath:"solutions/technical-references/internals/v1/08-signature-encoding.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./08-signature-encoding-CuAO-4z4.js"),[]),path:"/solutions/technical-references/internals/v1/08-signature-encoding.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/08-signature-encoding.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./09-nested-transaction-batching-Cai87NjL.js"),[]),path:"/solutions/technical-references/internals/v1/09-nested-transaction-batching",type:"mdx",filePath:"solutions/technical-references/internals/v1/09-nested-transaction-batching.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./09-nested-transaction-batching-Cai87NjL.js"),[]),path:"/solutions/technical-references/internals/v1/09-nested-transaction-batching.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/09-nested-transaction-batching.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./10-guest-module-Cau816gI.js"),[]),path:"/solutions/technical-references/internals/v1/10-guest-module",type:"mdx",filePath:"solutions/technical-references/internals/v1/10-guest-module.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./10-guest-module-Cau816gI.js"),[]),path:"/solutions/technical-references/internals/v1/10-guest-module.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/10-guest-module.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./11-wallet-context-munICQdC.js"),[]),path:"/solutions/technical-references/internals/v1/11-wallet-context",type:"mdx",filePath:"solutions/technical-references/internals/v1/11-wallet-context.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./11-wallet-context-munICQdC.js"),[]),path:"/solutions/technical-references/internals/v1/11-wallet-context.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/11-wallet-context.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./12-contract-audits-CIZsucst.js"),[]),path:"/solutions/technical-references/internals/v1/12-contract-audits",type:"mdx",filePath:"solutions/technical-references/internals/v1/12-contract-audits.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./12-contract-audits-CIZsucst.js"),[]),path:"/solutions/technical-references/internals/v1/12-contract-audits.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/12-contract-audits.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-deploy-Fo7CmIWR.js"),__vite__mapDeps([28,1])),path:"/solutions/technical-references/internals/v2/01-deploy",type:"mdx",filePath:"solutions/technical-references/internals/v2/01-deploy.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-deploy-Fo7CmIWR.js"),__vite__mapDeps([28,1])),path:"/solutions/technical-references/internals/v2/01-deploy.html",type:"mdx",filePath:"solutions/technical-references/internals/v2/01-deploy.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-configuration-DDJEt13u.js"),[]),path:"/solutions/technical-references/internals/v2/04-configuration",type:"mdx",filePath:"solutions/technical-references/internals/v2/04-configuration.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-configuration-DDJEt13u.js"),[]),path:"/solutions/technical-references/internals/v2/04-configuration.html",type:"mdx",filePath:"solutions/technical-references/internals/v2/04-configuration.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-manage-sessions-pkLElreW.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/03-manage-sessions",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/03-manage-sessions.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-manage-sessions-pkLElreW.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/03-manage-sessions.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/03-manage-sessions.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-use-wallets-IfyNDXW5.js"),__vite__mapDeps([29,1])),path:"/solutions/wallets/embedded-wallet/examples/04-use-wallets",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/04-use-wallets.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-use-wallets-IfyNDXW5.js"),__vite__mapDeps([29,1])),path:"/solutions/wallets/embedded-wallet/examples/04-use-wallets.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/04-use-wallets.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-validation-BMAIT7lp.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/05-validation",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/05-validation.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-validation-BMAIT7lp.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/05-validation.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/05-validation.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-transaction-receipts-Bur2MgK_.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/06-transaction-receipts",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/06-transaction-receipts.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-transaction-receipts-Bur2MgK_.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/06-transaction-receipts.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/06-transaction-receipts.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-connect-wallet-BMqUSRDo.js"),__vite__mapDeps([30,1])),path:"/solutions/wallets/universal-wallet/examples/01-connect-wallet",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/01-connect-wallet.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./01-connect-wallet-BMqUSRDo.js"),__vite__mapDeps([30,1])),path:"/solutions/wallets/universal-wallet/examples/01-connect-wallet.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/01-connect-wallet.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-auth-address-BZh1230X.js"),[]),path:"/solutions/wallets/universal-wallet/examples/02-auth-address",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/02-auth-address.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./02-auth-address-BZh1230X.js"),[]),path:"/solutions/wallets/universal-wallet/examples/02-auth-address.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/02-auth-address.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-sign-message-lAsd9YJN.js"),__vite__mapDeps([31,1])),path:"/solutions/wallets/universal-wallet/examples/03-sign-message",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/03-sign-message.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./03-sign-message-lAsd9YJN.js"),__vite__mapDeps([31,1])),path:"/solutions/wallets/universal-wallet/examples/03-sign-message.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/03-sign-message.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-session-keys-mzqz-yOg.js"),[]),path:"/solutions/wallets/universal-wallet/examples/04-session-keys",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/04-session-keys.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./04-session-keys-mzqz-yOg.js"),[]),path:"/solutions/wallets/universal-wallet/examples/04-session-keys.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/04-session-keys.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-send-transaction-DMhvmYLj.js"),[]),path:"/solutions/wallets/universal-wallet/examples/05-send-transaction",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/05-send-transaction.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./05-send-transaction-DMhvmYLj.js"),[]),path:"/solutions/wallets/universal-wallet/examples/05-send-transaction.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/05-send-transaction.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-send-erc20-BswrOfdh.js"),[]),path:"/solutions/wallets/universal-wallet/examples/06-send-erc20",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/06-send-erc20.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./06-send-erc20-BswrOfdh.js"),[]),path:"/solutions/wallets/universal-wallet/examples/06-send-erc20.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/06-send-erc20.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./07-send-erc721-CsBCYkAg.js"),[]),path:"/solutions/wallets/universal-wallet/examples/07-send-erc721",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/07-send-erc721.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./07-send-erc721-CsBCYkAg.js"),[]),path:"/solutions/wallets/universal-wallet/examples/07-send-erc721.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/07-send-erc721.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./08-send-erc1155-BvjJ3TJQ.js"),[]),path:"/solutions/wallets/universal-wallet/examples/08-send-erc1155",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/08-send-erc1155.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./08-send-erc1155-BvjJ3TJQ.js"),[]),path:"/solutions/wallets/universal-wallet/examples/08-send-erc1155.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/08-send-erc1155.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./09-send-batch-transactions-DABe3vy4.js"),[]),path:"/solutions/wallets/universal-wallet/examples/09-send-batch-transactions",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/09-send-batch-transactions.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./09-send-batch-transactions-DABe3vy4.js"),[]),path:"/solutions/wallets/universal-wallet/examples/09-send-batch-transactions.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/09-send-batch-transactions.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./10-building-backends-qcbLp100.js"),[]),path:"/solutions/wallets/universal-wallet/examples/10-building-backends",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/10-building-backends.mdx",lastUpdatedAt:1712822949e3},{lazy:()=>b(()=>import("./10-building-backends-qcbLp100.js"),[]),path:"/solutions/wallets/universal-wallet/examples/10-building-backends.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/10-building-backends.mdx",lastUpdatedAt:1712822949e3}];var zs={horizontalPadding:"var(--vocs-content_horizontalPadding)",verticalPadding:"var(--vocs-content_verticalPadding)",width:"var(--vocs-content_width)"},qw={default:"system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif",mono:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace'},Yw={default:"var(--vocs-fontFamily_default)",mono:"var(--vocs-fontFamily_mono)"},Jp={white:"var(--vocs-color_white)",black:"var(--vocs-color_black)",background:"var(--vocs-color_background)",background2:"var(--vocs-color_background2)",background3:"var(--vocs-color_background3)",background4:"var(--vocs-color_background4)",background5:"var(--vocs-color_background5)",backgroundAccent:"var(--vocs-color_backgroundAccent)",backgroundAccentHover:"var(--vocs-color_backgroundAccentHover)",backgroundAccentText:"var(--vocs-color_backgroundAccentText)",backgroundBlueTint:"var(--vocs-color_backgroundBlueTint)",backgroundDark:"var(--vocs-color_backgroundDark)",backgroundGreenTint:"var(--vocs-color_backgroundGreenTint)",backgroundGreenTint2:"var(--vocs-color_backgroundGreenTint2)",backgroundIrisTint:"var(--vocs-color_backgroundIrisTint)",backgroundRedTint:"var(--vocs-color_backgroundRedTint)",backgroundRedTint2:"var(--vocs-color_backgroundRedTint2)",backgroundYellowTint:"var(--vocs-color_backgroundYellowTint)",border:"var(--vocs-color_border)",border2:"var(--vocs-color_border2)",borderAccent:"var(--vocs-color_borderAccent)",borderBlue:"var(--vocs-color_borderBlue)",borderGreen:"var(--vocs-color_borderGreen)",borderIris:"var(--vocs-color_borderIris)",borderRed:"var(--vocs-color_borderRed)",borderYellow:"var(--vocs-color_borderYellow)",heading:"var(--vocs-color_heading)",inverted:"var(--vocs-color_inverted)",shadow:"var(--vocs-color_shadow)",shadow2:"var(--vocs-color_shadow2)",text:"var(--vocs-color_text)",text2:"var(--vocs-color_text2)",text3:"var(--vocs-color_text3)",text4:"var(--vocs-color_text4)",textAccent:"var(--vocs-color_textAccent)",textAccentHover:"var(--vocs-color_textAccentHover)",textBlue:"var(--vocs-color_textBlue)",textBlueHover:"var(--vocs-color_textBlueHover)",textGreen:"var(--vocs-color_textGreen)",textGreenHover:"var(--vocs-color_textGreenHover)",textIris:"var(--vocs-color_textIris)",textIrisHover:"var(--vocs-color_textIrisHover)",textRed:"var(--vocs-color_textRed)",textRedHover:"var(--vocs-color_textRedHover)",textYellow:"var(--vocs-color_textYellow)",textYellowHover:"var(--vocs-color_textYellowHover)",title:"var(--vocs-color_title)"},Us={0:"var(--vocs-space_0)",1:"var(--vocs-space_1)",2:"var(--vocs-space_2)",3:"var(--vocs-space_3)",4:"var(--vocs-space_4)",6:"var(--vocs-space_6)",8:"var(--vocs-space_8)",12:"var(--vocs-space_12)",14:"var(--vocs-space_14)",16:"var(--vocs-space_16)",18:"var(--vocs-space_18)",20:"var(--vocs-space_20)",22:"var(--vocs-space_22)",24:"var(--vocs-space_24)",28:"var(--vocs-space_28)",32:"var(--vocs-space_32)",36:"var(--vocs-space_36)",40:"var(--vocs-space_40)",44:"var(--vocs-space_44)",48:"var(--vocs-space_48)",56:"var(--vocs-space_56)",64:"var(--vocs-space_64)",72:"var(--vocs-space_72)",80:"var(--vocs-space_80)"};function Gv(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t ")," does not exist in object"));n=n[r]}return n}function qv(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],r={};for(var o in e){var i=e[o],a=[...n,o];typeof i=="string"||typeof i=="number"||i==null?r[o]=t(i,a):typeof i=="object"&&!Array.isArray(i)?r[o]=qv(i,t,a):console.warn('Skipping invalid key "'.concat(a.join("."),'". Should be a string, number, null or object. Received: "').concat(Array.isArray(i)?"Array":typeof i,'"'))}return r}function qt(e,t){var n={};if(typeof t=="object"){var r=e;qv(t,(l,s)=>{if(l!=null){var c=Qw(r,s);n[eh(c)]=String(l)}})}else{var o=e;for(var i in o){var a=o[i];a!=null&&(n[eh(i)]=a)}}return Object.defineProperty(n,"toString",{value:function(){return Object.keys(this).map(s=>"".concat(s,":").concat(this[s])).join(";")},writable:!1}),n}var Zw="var(--vocs_ExternalLink_iconUrl)",Xw="vocs_ExternalLink";const Jw=p.forwardRef(({className:e,children:t,hideExternalIcon:n,href:r,...o},i)=>{const{basePath:a}=Je(),l=a;return x.jsx("a",{ref:i,className:D(e,n||typeof t!="string"?void 0:Xw),href:r,target:"_blank",rel:"noopener noreferrer",style:qt({[Zw]:`url(${l}/.vocs/icons/arrow-diagonal.svg)`}),...o,children:t})});var th="vocs_Link_accent_underlined",nh="vocs_Link",rh="vocs_Link_styleless",uc=new Map,xa=new WeakMap,oh=0,e3=void 0;function t3(e){return e?(xa.has(e)||(oh+=1,xa.set(e,oh.toString())),xa.get(e)):"0"}function n3(e){return Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${t}_${t==="root"?t3(e.root):e[t]}`).toString()}function r3(e){const t=n3(e);let n=uc.get(t);if(!n){const r=new Map;let o;const i=new IntersectionObserver(a=>{a.forEach(l=>{var s;const c=l.isIntersecting&&o.some(d=>l.intersectionRatio>=d);e.trackVisibility&&typeof l.isVisible>"u"&&(l.isVisible=c),(s=r.get(l.target))==null||s.forEach(d=>{d(c,l)})})},e);o=i.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:i,elements:r},uc.set(t,n)}return n}function o3(e,t,n={},r=e3){if(typeof window.IntersectionObserver>"u"&&r!==void 0){const s=e.getBoundingClientRect();return t(r,{isIntersecting:r,target:e,intersectionRatio:typeof n.threshold=="number"?n.threshold:0,time:0,boundingClientRect:s,intersectionRect:s,rootBounds:s}),()=>{}}const{id:o,observer:i,elements:a}=r3(n),l=a.get(e)||[];return a.has(e)||a.set(e,l),l.push(t),i.observe(e),function(){l.splice(l.indexOf(t),1),l.length===0&&(a.delete(e),i.unobserve(e)),a.size===0&&(i.disconnect(),uc.delete(o))}}function Yv({threshold:e,delay:t,trackVisibility:n,rootMargin:r,root:o,triggerOnce:i,skip:a,initialInView:l,fallbackInView:s,onChange:c}={}){var d;const[u,f]=p.useState(null),h=p.useRef(),[y,g]=p.useState({inView:!!l,entry:void 0});h.current=c,p.useEffect(()=>{if(a||!u)return;let _;return _=o3(u,(E,C)=>{g({inView:E,entry:C}),h.current&&h.current(E,C),C.isIntersecting&&i&&_&&(_(),_=void 0)},{root:o,rootMargin:r,threshold:e,trackVisibility:n,delay:t},s),()=>{_&&_()}},[Array.isArray(e)?e.toString():e,u,o,r,i,a,n,s,t]);const w=(d=y.entry)==null?void 0:d.target,m=p.useRef();!u&&w&&!i&&!a&&m.current!==w&&(m.current=w,g({inView:!!l,entry:void 0}));const v=[f,y.inView,y.entry];return v.ref=v[0],v.inView=v[1],v.entry=v[2],v}function i3(...e){return t=>{a3(t,...e)}}function a3(e,...t){t.forEach(n=>{typeof n=="function"?n(e):n!=null&&(n.current=e)})}const Zn=p.forwardRef((e,t)=>{const n=()=>{var i;return(i=Hd.find(a=>a.path===e.to))==null?void 0:i.lazy()},{ref:r,inView:o}=Yv();return p.useEffect(()=>{o&&n()},[o,n]),x.jsx(Vv,{ref:i3(t,r),...e})}),rn=p.forwardRef((e,t)=>{const{href:n,variant:r="accent underlined"}=e,{pathname:o}=Re();if(n!=null&&n.match(/^(www|https?)/))return x.jsx(Jw,{...e,ref:t,className:D(e.className,nh,r==="accent underlined"&&th,r==="styleless"&&rh),hideExternalIcon:e.hideExternalIcon});const[i,a]=(n||"").split("#"),l=`${i||o}${a?`#${a}`:""}`;return x.jsx(Zn,{...e,ref:t,className:D(e.className,nh,r==="accent underlined"&&th,r==="styleless"&&rh),to:l})});var l3="vocs_NotFound_divider",s3="vocs_NotFound",u3="vocs_H1",Qv="vocs_Heading",Zv="vocs_Heading_slugTarget";function Oo({level:e,...t}){const n=`h${e}`;return x.jsxs(n,{...t,id:void 0,className:D(t.className,Qv),children:[x.jsx("div",{id:t.id,className:Zv}),t.children]})}function Xv(e){return x.jsx(Oo,{...e,className:D(e.className,u3),level:1})}var c3="vocs_Paragraph";function Jv(e){return x.jsx("p",{...e,className:D(e.className,c3)})}function d3(){return x.jsxs("div",{className:s3,children:[x.jsx(Xv,{children:"Page Not Found"}),x.jsx("div",{style:{height:Us[24]}}),x.jsx("hr",{className:l3}),x.jsx("div",{style:{height:Us[24]}}),x.jsx(Jv,{children:"The page you were looking for could not be found."}),x.jsx("div",{style:{height:Us[8]}}),x.jsx(rn,{href:"/",children:"Go to Home Page"})]})}var f3="var(--vocs_Banner_bannerBackgroundColor)",p3="var(--vocs_Banner_bannerHeight)",h3="var(--vocs_Banner_bannerTextColor)",m3="vocs_Banner_closeButton",v3="vocs_Banner_content",g3="vocs_Banner_inner",y3="vocs_Banner";const x3=Object.getPrototypeOf(_3).constructor;async function _3(e,t){return new x3(String(e))(t)}function w3(e,t){return new Function(String(e))(t)}function Rr(e,t){if(e==null)return{};var n={},r=Object.keys(e),o,i;for(i=0;i=0)&&(n[o]=e[o]);return n}var E3=["color"],k3=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,E3);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M6.85355 3.14645C7.04882 3.34171 7.04882 3.65829 6.85355 3.85355L3.70711 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H3.70711L6.85355 11.1464C7.04882 11.3417 7.04882 11.6583 6.85355 11.8536C6.65829 12.0488 6.34171 12.0488 6.14645 11.8536L2.14645 7.85355C1.95118 7.65829 1.95118 7.34171 2.14645 7.14645L6.14645 3.14645C6.34171 2.95118 6.65829 2.95118 6.85355 3.14645Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),b3=["color"],C3=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,b3);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M6.1584 3.13508C6.35985 2.94621 6.67627 2.95642 6.86514 3.15788L10.6151 7.15788C10.7954 7.3502 10.7954 7.64949 10.6151 7.84182L6.86514 11.8418C6.67627 12.0433 6.35985 12.0535 6.1584 11.8646C5.95694 11.6757 5.94673 11.3593 6.1356 11.1579L9.565 7.49985L6.1356 3.84182C5.94673 3.64036 5.95694 3.32394 6.1584 3.13508Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),P3=["color"],A3=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,P3);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M12.8536 2.85355C13.0488 2.65829 13.0488 2.34171 12.8536 2.14645C12.6583 1.95118 12.3417 1.95118 12.1464 2.14645L7.5 6.79289L2.85355 2.14645C2.65829 1.95118 2.34171 1.95118 2.14645 2.14645C1.95118 2.34171 1.95118 2.65829 2.14645 2.85355L6.79289 7.5L2.14645 12.1464C1.95118 12.3417 1.95118 12.6583 2.14645 12.8536C2.34171 13.0488 2.65829 13.0488 2.85355 12.8536L7.5 8.20711L12.1464 12.8536C12.3417 13.0488 12.6583 13.0488 12.8536 12.8536C13.0488 12.6583 13.0488 12.3417 12.8536 12.1464L8.20711 7.5L12.8536 2.85355Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),S3=["color"],T3=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,S3);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M3.5 2C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V6H8.5C8.22386 6 8 5.77614 8 5.5V2H3.5ZM9 2.70711L11.2929 5H9V2.70711ZM2 2.5C2 1.67157 2.67157 1 3.5 1H8.5C8.63261 1 8.75979 1.05268 8.85355 1.14645L12.8536 5.14645C12.9473 5.24021 13 5.36739 13 5.5V12.5C13 13.3284 12.3284 14 11.5 14H3.5C2.67157 14 2 13.3284 2 12.5V2.5Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),R3=["color"],$3=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,R3);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M1.5 5.25C1.91421 5.25 2.25 4.91421 2.25 4.5C2.25 4.08579 1.91421 3.75 1.5 3.75C1.08579 3.75 0.75 4.08579 0.75 4.5C0.75 4.91421 1.08579 5.25 1.5 5.25ZM4 4.5C4 4.22386 4.22386 4 4.5 4H13.5C13.7761 4 14 4.22386 14 4.5C14 4.77614 13.7761 5 13.5 5H4.5C4.22386 5 4 4.77614 4 4.5ZM4.5 7C4.22386 7 4 7.22386 4 7.5C4 7.77614 4.22386 8 4.5 8H13.5C13.7761 8 14 7.77614 14 7.5C14 7.22386 13.7761 7 13.5 7H4.5ZM4.5 10C4.22386 10 4 10.2239 4 10.5C4 10.7761 4.22386 11 4.5 11H13.5C13.7761 11 14 10.7761 14 10.5C14 10.2239 13.7761 10 13.5 10H4.5ZM2.25 7.5C2.25 7.91421 1.91421 8.25 1.5 8.25C1.08579 8.25 0.75 7.91421 0.75 7.5C0.75 7.08579 1.08579 6.75 1.5 6.75C1.91421 6.75 2.25 7.08579 2.25 7.5ZM1.5 11.25C1.91421 11.25 2.25 10.9142 2.25 10.5C2.25 10.0858 1.91421 9.75 1.5 9.75C1.08579 9.75 0.75 10.0858 0.75 10.5C0.75 10.9142 1.08579 11.25 1.5 11.25Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),O3=["color"],Wd=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,O3);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),I3=["color"],L3=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,I3);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M12.1464 1.14645C12.3417 0.951184 12.6583 0.951184 12.8535 1.14645L14.8535 3.14645C15.0488 3.34171 15.0488 3.65829 14.8535 3.85355L10.9109 7.79618C10.8349 7.87218 10.7471 7.93543 10.651 7.9835L6.72359 9.94721C6.53109 10.0435 6.29861 10.0057 6.14643 9.85355C5.99425 9.70137 5.95652 9.46889 6.05277 9.27639L8.01648 5.34897C8.06455 5.25283 8.1278 5.16507 8.2038 5.08907L12.1464 1.14645ZM12.5 2.20711L8.91091 5.79618L7.87266 7.87267L8.12731 8.12732L10.2038 7.08907L13.7929 3.5L12.5 2.20711ZM9.99998 2L8.99998 3H4.9C4.47171 3 4.18056 3.00039 3.95552 3.01877C3.73631 3.03668 3.62421 3.06915 3.54601 3.10899C3.35785 3.20487 3.20487 3.35785 3.10899 3.54601C3.06915 3.62421 3.03669 3.73631 3.01878 3.95552C3.00039 4.18056 3 4.47171 3 4.9V11.1C3 11.5283 3.00039 11.8194 3.01878 12.0445C3.03669 12.2637 3.06915 12.3758 3.10899 12.454C3.20487 12.6422 3.35785 12.7951 3.54601 12.891C3.62421 12.9309 3.73631 12.9633 3.95552 12.9812C4.18056 12.9996 4.47171 13 4.9 13H11.1C11.5283 13 11.8194 12.9996 12.0445 12.9812C12.2637 12.9633 12.3758 12.9309 12.454 12.891C12.6422 12.7951 12.7951 12.6422 12.891 12.454C12.9309 12.3758 12.9633 12.2637 12.9812 12.0445C12.9996 11.8194 13 11.5283 13 11.1V6.99998L14 5.99998V11.1V11.1207C14 11.5231 14 11.8553 13.9779 12.1259C13.9549 12.407 13.9057 12.6653 13.782 12.908C13.5903 13.2843 13.2843 13.5903 12.908 13.782C12.6653 13.9057 12.407 13.9549 12.1259 13.9779C11.8553 14 11.5231 14 11.1207 14H11.1H4.9H4.87934C4.47686 14 4.14468 14 3.87409 13.9779C3.59304 13.9549 3.33469 13.9057 3.09202 13.782C2.7157 13.5903 2.40973 13.2843 2.21799 12.908C2.09434 12.6653 2.04506 12.407 2.0221 12.1259C1.99999 11.8553 1.99999 11.5231 2 11.1207V11.1206V11.1V4.9V4.87935V4.87932V4.87931C1.99999 4.47685 1.99999 4.14468 2.0221 3.87409C2.04506 3.59304 2.09434 3.33469 2.21799 3.09202C2.40973 2.71569 2.7157 2.40973 3.09202 2.21799C3.33469 2.09434 3.59304 2.04506 3.87409 2.0221C4.14468 1.99999 4.47685 1.99999 4.87932 2H4.87935H4.9H9.99998Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))});function xl(e,t){if(typeof e!="object"||e===null)return e;if(Array.isArray(e))return e.map((r,o)=>xl(r,o));const n=e.props.children?{...e.props,children:xl(e.props.children)}:e.props;return Z.createElement(e.type,{...n,key:t})}function D3({hide:e}){const{banner:t}=Je(),n=p.useMemo(()=>{const r=(t==null?void 0:t.content)??"";if(!r)return null;if(typeof r!="string")return()=>xl(r);const{default:o}=w3(r,{...Xy,Fragment:p.Fragment});return o},[t]);return n?x.jsx("div",{className:D(y3),style:qt({[f3]:t==null?void 0:t.backgroundColor,[h3]:t==null?void 0:t.textColor}),children:x.jsxs("div",{className:D(g3),children:[x.jsx("div",{className:D(v3),children:x.jsx(n,{})}),(t==null?void 0:t.dismissable)!=="false"&&x.jsx("button",{className:D(m3),onClick:e,type:"button",children:x.jsx(A3,{width:14,height:14})})]})}):null}var N3="vocs_Content";function e1({children:e,className:t}){return x.jsx("article",{className:D(t,N3),children:e})}function t1({items:e,pathname:t}){const n=t.replace(/\.html$/,""),r=[];for(const o of e)(o.link&&n.startsWith(o.match||o.link)||o.items&&t1({items:o.items,pathname:t}).length>0)&&r.push(o.id);return r}function Ki({items:e,pathname:t}){return p.useMemo(()=>t1({items:e,pathname:t}),[e,t])}function $r(){const e=p.useContext(n1);if(!e)throw new Error("`usePageData` must be used within `PageDataContext.Provider`.");return e}const n1=p.createContext(void 0);function Kl(){const{pathname:e}=Re(),t=Je(),{sidebar:n}=t;if(!n)return{items:[]};if(Array.isArray(n))return{items:n};const r=p.useMemo(()=>{const o=Object.keys(n).filter(i=>e.startsWith(i));return o[o.length-1]},[n,e]);return r?Array.isArray(n[r])?{key:r,items:n[r]}:{...n[r],key:r}:{items:[]}}function Or(){const e=Kl(),{frontmatter:t}=$r(),{layout:n,showLogo:r,showOutline:o,showSidebar:i,showTopNav:a}=t||{},l=n??"docs";return{layout:l,get showLogo(){return typeof r<"u"?r:!0},get showOutline(){return typeof o<"u"?o:l==="docs"},get showSidebar(){return e.items.length===0?!1:typeof i<"u"?i:!(l==="minimal"||l==="landing")},get showTopNav(){return typeof a<"u"?a:!0}}}function M3(){const[e,t]=p.useState(()=>{if(!(typeof window>"u")){if(localStorage.getItem("vocs.theme")){const n=localStorage.getItem("vocs.theme");if(n)return n}return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}});return p.useEffect(()=>{e&&localStorage.setItem("vocs.theme",e),e==="dark"?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")},[e]),{theme:e,toggle(){t(n=>n==="light"?"dark":"light")}}}var j3="vocs_utils_visibleDark",F3="vocs_utils_visibleLight",r1="vocs_utils_visuallyHidden";function q(){return q=Object.assign?Object.assign.bind():function(e){for(var t=1;te.forEach(n=>z3(n,t))}function Ue(...e){return p.useCallback(o1(...e),e)}function kn(e,t=[]){let n=[];function r(i,a){const l=p.createContext(a),s=n.length;n=[...n,a];function c(u){const{scope:f,children:h,...y}=u,g=(f==null?void 0:f[e][s])||l,w=p.useMemo(()=>y,Object.values(y));return p.createElement(g.Provider,{value:w},h)}function d(u,f){const h=(f==null?void 0:f[e][s])||l,y=p.useContext(h);if(y)return y;if(a!==void 0)return a;throw new Error(`\`${u}\` must be used within \`${i}\``)}return c.displayName=i+"Provider",[c,d]}const o=()=>{const i=n.map(a=>p.createContext(a));return function(l){const s=(l==null?void 0:l[e])||i;return p.useMemo(()=>({[`__scope${e}`]:{...l,[e]:s}}),[l,s])}};return o.scopeName=e,[r,U3(o,...t)]}function U3(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(i){const a=r.reduce((l,{useScope:s,scopeName:c})=>{const u=s(i)[`__scope${c}`];return{...l,...u}},{});return p.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return n.scopeName=t.scopeName,n}const yn=globalThis!=null&&globalThis.document?p.useLayoutEffect:()=>{},V3=Wc.useId||(()=>{});let B3=0;function on(e){const[t,n]=p.useState(V3());return yn(()=>{e||n(r=>r??String(B3++))},[e]),e||(t?`radix-${t}`:"")}function at(e){const t=p.useRef(e);return p.useEffect(()=>{t.current=e}),p.useMemo(()=>(...n)=>{var r;return(r=t.current)===null||r===void 0?void 0:r.call(t,...n)},[])}function ar({prop:e,defaultProp:t,onChange:n=()=>{}}){const[r,o]=H3({defaultProp:t,onChange:n}),i=e!==void 0,a=i?e:r,l=at(n),s=p.useCallback(c=>{if(i){const u=typeof c=="function"?c(e):c;u!==e&&l(u)}else o(c)},[i,e,o,l]);return[a,s]}function H3({defaultProp:e,onChange:t}){const n=p.useState(e),[r]=n,o=p.useRef(r),i=at(t);return p.useEffect(()=>{o.current!==r&&(i(r),o.current=r)},[r,o,i]),n}const bo=p.forwardRef((e,t)=>{const{children:n,...r}=e,o=p.Children.toArray(n),i=o.find(K3);if(i){const a=i.props.children,l=o.map(s=>s===i?p.Children.count(a)>1?p.Children.only(null):p.isValidElement(a)?a.props.children:null:s);return p.createElement(cc,q({},r,{ref:t}),p.isValidElement(a)?p.cloneElement(a,void 0,l):null)}return p.createElement(cc,q({},r,{ref:t}),n)});bo.displayName="Slot";const cc=p.forwardRef((e,t)=>{const{children:n,...r}=e;return p.isValidElement(n)?p.cloneElement(n,{...G3(r,n.props),ref:t?o1(t,n.ref):n.ref}):p.Children.count(n)>1?p.Children.only(null):null});cc.displayName="SlotClone";const W3=({children:e})=>p.createElement(p.Fragment,null,e);function K3(e){return p.isValidElement(e)&&e.type===W3}function G3(e,t){const n={...t};for(const r in t){const o=e[r],i=t[r];/^on[A-Z]/.test(r)?o&&i?n[r]=(...l)=>{i(...l),o(...l)}:o&&(n[r]=o):r==="style"?n[r]={...o,...i}:r==="className"&&(n[r]=[o,i].filter(Boolean).join(" "))}return{...e,...n}}const q3=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],fe=q3.reduce((e,t)=>{const n=p.forwardRef((r,o)=>{const{asChild:i,...a}=r,l=i?bo:t;return p.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),p.createElement(l,q({},a,{ref:o}))});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function dc(e,t){e&&Ro.flushSync(()=>e.dispatchEvent(t))}function Y3(e,t=globalThis==null?void 0:globalThis.document){const n=at(e);p.useEffect(()=>{const r=o=>{o.key==="Escape"&&n(o)};return t.addEventListener("keydown",r),()=>t.removeEventListener("keydown",r)},[n,t])}const fc="dismissableLayer.update",Q3="dismissableLayer.pointerDownOutside",Z3="dismissableLayer.focusOutside";let ih;const X3=p.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Kd=p.forwardRef((e,t)=>{var n;const{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:o,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:l,onDismiss:s,...c}=e,d=p.useContext(X3),[u,f]=p.useState(null),h=(n=u==null?void 0:u.ownerDocument)!==null&&n!==void 0?n:globalThis==null?void 0:globalThis.document,[,y]=p.useState({}),g=Ue(t,A=>f(A)),w=Array.from(d.layers),[m]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),v=w.indexOf(m),_=u?w.indexOf(u):-1,E=d.layersWithOutsidePointerEventsDisabled.size>0,C=_>=v,k=J3(A=>{const S=A.target,O=[...d.branches].some(j=>j.contains(S));!C||O||(i==null||i(A),l==null||l(A),A.defaultPrevented||s==null||s())},h),P=e4(A=>{const S=A.target;[...d.branches].some(j=>j.contains(S))||(a==null||a(A),l==null||l(A),A.defaultPrevented||s==null||s())},h);return Y3(A=>{_===d.layers.size-1&&(o==null||o(A),!A.defaultPrevented&&s&&(A.preventDefault(),s()))},h),p.useEffect(()=>{if(u)return r&&(d.layersWithOutsidePointerEventsDisabled.size===0&&(ih=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),d.layersWithOutsidePointerEventsDisabled.add(u)),d.layers.add(u),ah(),()=>{r&&d.layersWithOutsidePointerEventsDisabled.size===1&&(h.body.style.pointerEvents=ih)}},[u,h,r,d]),p.useEffect(()=>()=>{u&&(d.layers.delete(u),d.layersWithOutsidePointerEventsDisabled.delete(u),ah())},[u,d]),p.useEffect(()=>{const A=()=>y({});return document.addEventListener(fc,A),()=>document.removeEventListener(fc,A)},[]),p.createElement(fe.div,q({},c,{ref:g,style:{pointerEvents:E?C?"auto":"none":void 0,...e.style},onFocusCapture:le(e.onFocusCapture,P.onFocusCapture),onBlurCapture:le(e.onBlurCapture,P.onBlurCapture),onPointerDownCapture:le(e.onPointerDownCapture,k.onPointerDownCapture)}))});function J3(e,t=globalThis==null?void 0:globalThis.document){const n=at(e),r=p.useRef(!1),o=p.useRef(()=>{});return p.useEffect(()=>{const i=l=>{if(l.target&&!r.current){let c=function(){i1(Q3,n,s,{discrete:!0})};const s={originalEvent:l};l.pointerType==="touch"?(t.removeEventListener("click",o.current),o.current=c,t.addEventListener("click",o.current,{once:!0})):c()}else t.removeEventListener("click",o.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener("pointerdown",i)},0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",i),t.removeEventListener("click",o.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function e4(e,t=globalThis==null?void 0:globalThis.document){const n=at(e),r=p.useRef(!1);return p.useEffect(()=>{const o=i=>{i.target&&!r.current&&i1(Z3,n,{originalEvent:i},{discrete:!1})};return t.addEventListener("focusin",o),()=>t.removeEventListener("focusin",o)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function ah(){const e=new CustomEvent(fc);document.dispatchEvent(e)}function i1(e,t,n,{discrete:r}){const o=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&o.addEventListener(e,t,{once:!0}),r?dc(o,i):o.dispatchEvent(i)}const Vs="focusScope.autoFocusOnMount",Bs="focusScope.autoFocusOnUnmount",lh={bubbles:!1,cancelable:!0},a1=p.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:o,onUnmountAutoFocus:i,...a}=e,[l,s]=p.useState(null),c=at(o),d=at(i),u=p.useRef(null),f=Ue(t,g=>s(g)),h=p.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;p.useEffect(()=>{if(r){let g=function(_){if(h.paused||!l)return;const E=_.target;l.contains(E)?u.current=E:Ln(u.current,{select:!0})},w=function(_){if(h.paused||!l)return;const E=_.relatedTarget;E!==null&&(l.contains(E)||Ln(u.current,{select:!0}))},m=function(_){if(document.activeElement===document.body)for(const C of _)C.removedNodes.length>0&&Ln(l)};document.addEventListener("focusin",g),document.addEventListener("focusout",w);const v=new MutationObserver(m);return l&&v.observe(l,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",g),document.removeEventListener("focusout",w),v.disconnect()}}},[r,l,h.paused]),p.useEffect(()=>{if(l){uh.add(h);const g=document.activeElement;if(!l.contains(g)){const m=new CustomEvent(Vs,lh);l.addEventListener(Vs,c),l.dispatchEvent(m),m.defaultPrevented||(t4(a4(l1(l)),{select:!0}),document.activeElement===g&&Ln(l))}return()=>{l.removeEventListener(Vs,c),setTimeout(()=>{const m=new CustomEvent(Bs,lh);l.addEventListener(Bs,d),l.dispatchEvent(m),m.defaultPrevented||Ln(g??document.body,{select:!0}),l.removeEventListener(Bs,d),uh.remove(h)},0)}}},[l,c,d,h]);const y=p.useCallback(g=>{if(!n&&!r||h.paused)return;const w=g.key==="Tab"&&!g.altKey&&!g.ctrlKey&&!g.metaKey,m=document.activeElement;if(w&&m){const v=g.currentTarget,[_,E]=n4(v);_&&E?!g.shiftKey&&m===E?(g.preventDefault(),n&&Ln(_,{select:!0})):g.shiftKey&&m===_&&(g.preventDefault(),n&&Ln(E,{select:!0})):m===v&&g.preventDefault()}},[n,r,h.paused]);return p.createElement(fe.div,q({tabIndex:-1},a,{ref:f,onKeyDown:y}))});function t4(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(Ln(r,{select:t}),document.activeElement!==n)return}function n4(e){const t=l1(e),n=sh(t,e),r=sh(t.reverse(),e);return[n,r]}function l1(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const o=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||o?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function sh(e,t){for(const n of e)if(!r4(n,{upTo:t}))return n}function r4(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function o4(e){return e instanceof HTMLInputElement&&"select"in e}function Ln(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&o4(e)&&t&&e.select()}}const uh=i4();function i4(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=ch(e,t),e.unshift(t)},remove(t){var n;e=ch(e,t),(n=e[0])===null||n===void 0||n.resume()}}}function ch(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function a4(e){return e.filter(t=>t.tagName!=="A")}const s1=p.forwardRef((e,t)=>{var n;const{container:r=globalThis==null||(n=globalThis.document)===null||n===void 0?void 0:n.body,...o}=e;return r?bv.createPortal(p.createElement(fe.div,q({},o,{ref:t})),r):null});function l4(e,t){return p.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const bn=e=>{const{present:t,children:n}=e,r=s4(t),o=typeof n=="function"?n({present:r.isPresent}):p.Children.only(n),i=Ue(r.ref,o.ref);return typeof n=="function"||r.isPresent?p.cloneElement(o,{ref:i}):null};bn.displayName="Presence";function s4(e){const[t,n]=p.useState(),r=p.useRef({}),o=p.useRef(e),i=p.useRef("none"),a=e?"mounted":"unmounted",[l,s]=l4(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return p.useEffect(()=>{const c=_a(r.current);i.current=l==="mounted"?c:"none"},[l]),yn(()=>{const c=r.current,d=o.current;if(d!==e){const f=i.current,h=_a(c);e?s("MOUNT"):h==="none"||(c==null?void 0:c.display)==="none"?s("UNMOUNT"):s(d&&f!==h?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,s]),yn(()=>{if(t){const c=u=>{const h=_a(r.current).includes(u.animationName);u.target===t&&h&&Ro.flushSync(()=>s("ANIMATION_END"))},d=u=>{u.target===t&&(i.current=_a(r.current))};return t.addEventListener("animationstart",d),t.addEventListener("animationcancel",c),t.addEventListener("animationend",c),()=>{t.removeEventListener("animationstart",d),t.removeEventListener("animationcancel",c),t.removeEventListener("animationend",c)}}else s("ANIMATION_END")},[t,s]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:p.useCallback(c=>{c&&(r.current=getComputedStyle(c)),n(c)},[])}}function _a(e){return(e==null?void 0:e.animationName)||"none"}let Hs=0;function u1(){p.useEffect(()=>{var e,t;const n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",(e=n[0])!==null&&e!==void 0?e:dh()),document.body.insertAdjacentElement("beforeend",(t=n[1])!==null&&t!==void 0?t:dh()),Hs++,()=>{Hs===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(r=>r.remove()),Hs--}},[])}function dh(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}var en=function(){return en=Object.assign||function(t){for(var n,r=1,o=arguments.length;r"u")return C4;var t=P4(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},S4=p1(),co="data-scroll-locked",T4=function(e,t,n,r){var o=e.left,i=e.top,a=e.right,l=e.gap;return n===void 0&&(n="margin"),` - .`.concat(c4,` { + */function ko(){return ko=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[o]=e[o]);return n}function c3(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function d3(e,t){return e.button===0&&(!t||t==="_self")&&!c3(e)}const f3=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],p3="6";try{window.__reactRouterVersion=p3}catch{}function h3(e,t){return O_({basename:t==null?void 0:t.basename,future:ko({},t==null?void 0:t.future,{v7_prependBasename:!0}),history:r_({window:t==null?void 0:t.window}),hydrationData:(t==null?void 0:t.hydrationData)||m3(),routes:e,mapRouteProperties:s3,window:t==null?void 0:t.window}).initialize()}function m3(){var e;let t=(e=window)==null?void 0:e.__staticRouterHydrationData;return t&&t.errors&&(t=ko({},t,{errors:v3(t.errors)})),t}function v3(e){if(!e)return null;let t=Object.entries(e),n={};for(let[r,o]of t)if(o&&o.__type==="RouteErrorResponse")n[r]=new jd(o.status,o.statusText,o.data,o.internal===!0);else if(o&&o.__type==="Error"){if(o.__subType){let i=window[o.__subType];if(typeof i=="function")try{let a=new i(o.message);a.stack="",n[r]=a}catch{}}if(n[r]==null){let i=new Error(o.message);i.stack="",n[r]=i}}else n[r]=o;return n}const g3=p.createContext({isTransitioning:!1}),y3=p.createContext(new Map),x3="startTransition",qp=Wc[x3],_3="flushSync",Yp=n_[_3];function w3(e){qp?qp(e):e()}function Qo(e){Yp?Yp(e):e()}class E3{constructor(){this.status="pending",this.promise=new Promise((t,n)=>{this.resolve=r=>{this.status==="pending"&&(this.status="resolved",t(r))},this.reject=r=>{this.status==="pending"&&(this.status="rejected",n(r))}})}}function k3(e){let{fallbackElement:t,router:n,future:r}=e,[o,i]=p.useState(n.state),[a,l]=p.useState(),[s,c]=p.useState({isTransitioning:!1}),[d,u]=p.useState(),[f,h]=p.useState(),[y,g]=p.useState(),w=p.useRef(new Map),{v7_startTransition:m}=r||{},v=p.useCallback(P=>{m?w3(P):P()},[m]),_=p.useCallback((P,A)=>{let{deletedFetchers:S,unstable_flushSync:O,unstable_viewTransitionOpts:j}=A;S.forEach(F=>w.current.delete(F)),P.fetchers.forEach((F,$)=>{F.data!==void 0&&w.current.set($,F.data)});let N=n.window==null||typeof n.window.document.startViewTransition!="function";if(!j||N){O?Qo(()=>i(P)):v(()=>i(P));return}if(O){Qo(()=>{f&&(d&&d.resolve(),f.skipTransition()),c({isTransitioning:!0,flushSync:!0,currentLocation:j.currentLocation,nextLocation:j.nextLocation})});let F=n.window.document.startViewTransition(()=>{Qo(()=>i(P))});F.finished.finally(()=>{Qo(()=>{u(void 0),h(void 0),l(void 0),c({isTransitioning:!1})})}),Qo(()=>h(F));return}f?(d&&d.resolve(),f.skipTransition(),g({state:P,currentLocation:j.currentLocation,nextLocation:j.nextLocation})):(l(P),c({isTransitioning:!0,flushSync:!1,currentLocation:j.currentLocation,nextLocation:j.nextLocation}))},[n.window,f,d,w,v]);p.useLayoutEffect(()=>n.subscribe(_),[n,_]),p.useEffect(()=>{s.isTransitioning&&!s.flushSync&&u(new E3)},[s]),p.useEffect(()=>{if(d&&a&&n.window){let P=a,A=d.promise,S=n.window.document.startViewTransition(async()=>{v(()=>i(P)),await A});S.finished.finally(()=>{u(void 0),h(void 0),l(void 0),c({isTransitioning:!1})}),h(S)}},[v,a,d,n.window]),p.useEffect(()=>{d&&a&&o.location.key===a.location.key&&d.resolve()},[d,f,o.location,a]),p.useEffect(()=>{!s.isTransitioning&&y&&(l(y.state),c({isTransitioning:!0,flushSync:!1,currentLocation:y.currentLocation,nextLocation:y.nextLocation}),g(void 0))},[s.isTransitioning,y]),p.useEffect(()=>{},[]);let E=p.useMemo(()=>({createHref:n.createHref,encodeLocation:n.encodeLocation,go:P=>n.navigate(P),push:(P,A,S)=>n.navigate(P,{state:A,preventScrollReset:S==null?void 0:S.preventScrollReset}),replace:(P,A,S)=>n.navigate(P,{replace:!0,state:A,preventScrollReset:S==null?void 0:S.preventScrollReset})}),[n]),C=n.basename||"/",k=p.useMemo(()=>({router:n,navigator:E,static:!1,basename:C}),[n,E,C]);return p.createElement(p.Fragment,null,p.createElement(Wi.Provider,{value:k},p.createElement(zd.Provider,{value:o},p.createElement(y3.Provider,{value:w.current},p.createElement(g3.Provider,{value:s},p.createElement(l3,{basename:C,location:o.location,navigationType:o.historyAction,navigator:E,future:{v7_relativeSplatPath:n.future.v7_relativeSplatPath}},o.initialized||n.future.v7_partialHydration?p.createElement(b3,{routes:n.routes,future:n.future,state:o}):t))))),null)}function b3(e){let{routes:t,future:n,state:r}=e;return q_(t,void 0,r,n)}const C3=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",P3=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Vv=p.forwardRef(function(t,n){let{onClick:r,relative:o,reloadDocument:i,replace:a,state:l,target:s,to:c,preventScrollReset:d,unstable_viewTransition:u}=t,f=u3(t,f3),{basename:h}=p.useContext(ir),y,g=!1;if(typeof c=="string"&&P3.test(c)&&(y=c,C3))try{let _=new URL(window.location.href),E=c.startsWith("//")?new URL(_.protocol+c):new URL(c),C=Sr(E.pathname,h);E.origin===_.origin&&C!=null?c=C+E.search+E.hash:g=!0}catch{}let w=W_(c,{relative:o}),m=R3(c,{replace:a,state:l,target:s,preventScrollReset:d,relative:o,unstable_viewTransition:u});function v(_){r&&r(_),_.defaultPrevented||m(_)}return p.createElement("a",ko({},f,{href:y||w,onClick:g||i?r:v,ref:n,target:s}))});function A3(e){let{getKey:t,storageKey:n}=e;return $3({getKey:t,storageKey:n}),null}var lc;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(lc||(lc={}));var sc;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(sc||(sc={}));function S3(e){let t=p.useContext(Wi);return t||ne(!1),t}function T3(e){let t=p.useContext(zd);return t||ne(!1),t}function R3(e,t){let{target:n,replace:r,state:o,preventScrollReset:i,relative:a,unstable_viewTransition:l}=t===void 0?{}:t,s=Ud(),c=Re(),d=Fv(e,{relative:a});return p.useCallback(u=>{if(d3(u,n)){u.preventDefault();let f=r!==void 0?r:br(c)===br(d);s(e,{replace:f,state:o,preventScrollReset:i,relative:a,unstable_viewTransition:l})}},[c,s,d,r,o,n,e,i,a,l])}const Qp="react-router-scroll-positions";let ya={};function $3(e){let{getKey:t,storageKey:n}=e===void 0?{}:e,{router:r}=S3(lc.UseScrollRestoration),{restoreScrollPosition:o,preventScrollReset:i}=T3(sc.UseScrollRestoration),{basename:a}=p.useContext(ir),l=Re(),s=r3(),c=n3();p.useEffect(()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"}),[]),O3(p.useCallback(()=>{if(c.state==="idle"){let d=(t?t(l,s):null)||l.key;ya[d]=window.scrollY}try{sessionStorage.setItem(n||Qp,JSON.stringify(ya))}catch{}window.history.scrollRestoration="auto"},[n,t,c.state,l,s])),typeof document<"u"&&(p.useLayoutEffect(()=>{try{let d=sessionStorage.getItem(n||Qp);d&&(ya=JSON.parse(d))}catch{}},[n]),p.useLayoutEffect(()=>{let d=t&&a!=="/"?(f,h)=>t(ko({},f,{pathname:Sr(f.pathname,a)||f.pathname}),h):t,u=r==null?void 0:r.enableScrollRestoration(ya,()=>window.scrollY,d);return()=>u&&u()},[r,a,t]),p.useLayoutEffect(()=>{if(o!==!1){if(typeof o=="number"){window.scrollTo(0,o);return}if(l.hash){let d=document.getElementById(decodeURIComponent(l.hash.slice(1)));if(d){d.scrollIntoView();return}}i!==!0&&window.scrollTo(0,0)}},[l,o,i]))}function O3(e,t){let{capture:n}=t||{};p.useEffect(()=>{let r=n!=null?{capture:n}:void 0;return window.addEventListener("pagehide",e,r),()=>{window.removeEventListener("pagehide",e,r)}},[e,n])}function I3(e){return e instanceof Uint8Array||e!=null&&typeof e=="object"&&e.constructor.name==="Uint8Array"}function Bd(e,...t){if(!I3(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error(`Uint8Array expected of length ${t}, not of length=${e.length}`)}function Zp(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function L3(e,t){Bd(e);const n=t.outputLen;if(e.lengthnew DataView(e.buffer,e.byteOffset,e.byteLength),Zt=(e,t)=>e<<32-t|e>>>t;new Uint8Array(new Uint32Array([287454020]).buffer)[0];const D3=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function _P(e){Bd(e);let t="";for(let n=0;ne().update(Bv(r)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}function F3(e,t,n,r){if(typeof e.setBigUint64=="function")return e.setBigUint64(t,n,r);const o=BigInt(32),i=BigInt(4294967295),a=Number(n>>o&i),l=Number(n&i),s=r?4:0,c=r?0:4;e.setUint32(t+s,a,r),e.setUint32(t+c,l,r)}const z3=(e,t,n)=>e&t^~e&n,U3=(e,t,n)=>e&t^e&n^t&n;class V3 extends M3{constructor(t,n,r,o){super(),this.blockLen=t,this.outputLen=n,this.padOffset=r,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=Fs(this.buffer)}update(t){Zp(this);const{view:n,buffer:r,blockLen:o}=this;t=Bv(t);const i=t.length;for(let a=0;ao-a&&(this.process(r,0),a=0);for(let u=a;ud.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u>>3,g=Zt(h,17)^Zt(h,19)^h>>>10;On[u]=g+On[u-7]+y+On[u-16]|0}let{A:r,B:o,C:i,D:a,E:l,F:s,G:c,H:d}=this;for(let u=0;u<64;u++){const f=Zt(l,6)^Zt(l,11)^Zt(l,25),h=d+f+z3(l,s,c)+B3[u]+On[u]|0,g=(Zt(r,2)^Zt(r,13)^Zt(r,22))+U3(r,o,i)|0;d=c,c=s,s=l,l=a+h|0,a=i,i=o,o=r,r=h+g|0}r=r+this.A|0,o=o+this.B|0,i=i+this.C|0,a=a+this.D|0,l=l+this.E|0,s=s+this.F|0,c=c+this.G|0,d=d+this.H|0,this.set(r,o,i,a,l,s,c,d)}roundClean(){On.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const wP=j3(()=>new H3),Hv={blogDir:"./pages/blog",rootDir:"docs",title:"Sequence",titleTemplate:"%s – Sequence",iconUrl:{dark:"/img/favicon.ico",light:"/img/favicon.ico"},logoUrl:{dark:"/img/sequence-composite-dark.svg",light:"/img/sequence-composite-light.svg"},basePath:"",topNav:[{text:"Solutions",items:[{text:"Wallets",link:"/solutions/wallets/overview",match:"/solutions/wallets/overview",id:257,items:[]},{text:"Marketplace",link:"/solutions/marketplaces/overview",match:"/solutions/marketplaces/overview",id:258,items:[]},{text:"Collectibles",link:"/solutions/collectibles/contracts/01-deploy-an-item-collection",match:"/solutions/collectibles/contracts/01-deploy-an-item-collection",id:259,items:[]},{text:"Payments",link:"/solutions/nft-checkout",match:"/solutions/nft-checkout",id:260,items:[]},{text:"Builder Console",link:"/solutions/builder/overview",match:"/solutions/builder/overview",items:[{text:"Overview",link:"/solutions/builder/overview",match:"/solutions/builder/overview",id:262,items:[]}],id:261}],id:256},{text:"Guides",items:[{text:"Web3 Game with WebGL",link:"/guides/webgl-guide",match:"/guides/webgl-guide",id:264,items:[]},{text:"Web3 Game with Unity",link:"/guides/unity-guide",match:"/guides/unity-guide",id:265,items:[]},{text:"Lootboxes",link:"/guides/lootbox",match:"/guides/lootbox",id:266,items:[]},{text:"Custom Marketplace",link:"/guides/template-marketplace-api",match:"/guides/template-marketplace-api",id:267,items:[]}],id:263},{text:"SDKs",items:[{text:"Unity",link:"/sdk/unity/01-overview",match:"/sdk/unity/01-overview",id:269,items:[]},{text:"Unreal",link:"/sdk/unreal/01-overview",match:"/sdk/unreal/01-overview",id:270,items:[]},{text:"Typescript",link:"/sdk/typescript/03-guides/overview",match:"/sdk/typescript/03-guides/overview",id:271,items:[]},{text:"Sequence Kit",link:"/sdk/sequence-kit/01-overview",match:"/sdk/sequence-kit/01-overview",id:272,items:[]},{text:"Go",link:"/sdk/go/overview",match:"/sdk/go/overview",id:273,items:[]}],id:268},{text:"APIs",items:[{text:"Relayer API",link:"/api/relayer",id:275,items:[]},{text:"Indexer API",link:"/api/indexer/overview",id:276,items:[]},{text:"Metadata API",link:"/api/metadata/overview",id:277,items:[]},{text:"Marketplace API",link:"/api/marketplace",id:278,items:[]},{text:"Node Gateway",link:"/api/node-gateway",id:279,items:[]}],id:274},{text:"Support",items:[{text:"Support",link:"/support",id:281,items:[]},{text:"Changelog",link:"https://0xsequence.canny.io/changelog",id:282,items:[]},{text:"Token Directory",link:"/support/token-directory",id:283,items:[]},{text:"FAQ",link:"https://support.sequence.xyz",id:284,items:[]},{text:"Discord",link:"https://discord.gg/sequence",id:285,items:[]},{text:"We're hiring!",link:"https://horizon.io/careers",id:286,items:[]},{text:"Contact Us",link:"https://support.sequence.xyz",id:287,items:[]}],id:280}],sidebar:{"/solutions":[{text:"Wallets",items:[{text:"Overview",link:"/solutions/wallets/overview"},{text:"In-Game Wallet",collapsed:!0,items:[{text:"Overview",link:"/solutions/wallets/embedded-wallet/01-overview"},{text:"Quickstart",link:"/solutions/wallets/embedded-wallet/02-quickstart"},{text:"Examples",collapsed:!0,items:[{text:"Manage Sessions",link:"/solutions/wallets/embedded-wallet/examples/03-manage-sessions"},{text:"Use Wallets",link:"/solutions/wallets/embedded-wallet/examples/04-use-wallets"},{text:"Validation",link:"/solutions/wallets/embedded-wallet/examples/05-validation"},{text:"Transaction Receipts",link:"/solutions/wallets/embedded-wallet/examples/06-transaction-receipts"}]}]},{text:"Universal Wallet",collapsed:!0,items:[{text:"Overview",link:"/solutions/wallets/universal-wallet/01-overview"},{text:"Quickstart",link:"/solutions/wallets/universal-wallet/02-quickstart"},{text:"Examples",collapsed:!0,items:[{text:"Connect Wallet",link:"/solutions/wallets/universal-wallet/examples/01-connect-wallet"},{text:"Authenticate Users with Message Signature",link:"/solutions/wallets/universal-wallet/examples/02-auth-address"},{text:"Signing & Verifying Messages",link:"/solutions/wallets/universal-wallet/examples/03-sign-message"},{text:"No-wallet confirmation signatures",link:"/solutions/wallets/universal-wallet/examples/04-session-keys"},{text:"Sending Transactions",link:"/solutions/wallets/universal-wallet/examples/05-send-transaction"},{text:"Sending ERC-20 Tokens",link:"/solutions/wallets/universal-wallet/examples/06-send-erc20"},{text:"Sending ERC-721 (NFT) Tokens",link:"/solutions/wallets/universal-wallet/examples/07-send-erc721"},{text:"Sending ERC-1155 (Collectible) Tokens",link:"/solutions/wallets/universal-wallet/examples/08-send-erc1155"},{text:"Sending a Batch of Transactions",link:"/solutions/wallets/universal-wallet/examples/09-send-batch-transactions"},{text:"Building Backends with Sequence",link:"/solutions/wallets/universal-wallet/examples/10-building-backends"}]},{text:"Sequence Kit",link:"/solutions/wallets/universal-wallet/04-sequence-kit"},{text:"Supported Platforms",link:"/solutions/wallets/universal-wallet/05-platforms"},{text:"Fiat On-Ramps",link:"/solutions/wallets/universal-wallet/06-fiat-on-ramps"},{text:"Key Management",link:"/solutions/wallets/universal-wallet/07-key-management"}]}]},{text:"Marketplace",items:[{text:"Overview",link:"/solutions/marketplaces/overview"},{text:"White-label Marketplace",link:"/solutions/marketplaces/white-label-marketplace"},{text:"Build your Custom Marketplace",collapsed:!0,items:[{text:"Overview",link:"/solutions/marketplaces/orderbook/01-overview"},{text:"Quickstart",link:"/solutions/marketplaces/orderbook/02-quickstart"},{text:"Examples",collapsed:!0,items:[{text:"Get Top Orders",link:"/solutions/marketplaces/orderbook/examples/03-get-top-orders"},{text:"Get Orderbook",link:"/solutions/marketplaces/orderbook/examples/04-get-orderbook"},{text:"Get User Activities",link:"/solutions/marketplaces/orderbook/examples/05-get-user-activities"},{text:"Orderbook Transactions",link:"/solutions/marketplaces/orderbook/examples/06-orderbook-transactions"}]}]}]},{text:"Collectibles",items:[{text:"Deployable Contracts",collapsed:!0,items:[{text:"Deploy a Collectible Contract",link:"/solutions/collectibles/contracts/01-deploy-an-item-collection"},{text:"Deploy an In-Game Currency (ERC20)",link:"/solutions/collectibles/contracts/02-deploy-ERC20-currency"}]},{text:"Metadata",collapsed:!0,items:[{text:"Manage Metadata in Builder",link:"/solutions/collectibles/metadata/800-manage-metadata-builder"}]}]},{text:"Payments",items:[{text:"NFT Checkout",link:"/solutions/nft-checkout"},{text:"Onramps",link:"/solutions/payments/onramps/01-fiat-on-ramps"}]},{text:"Builder Console",collapsed:!0,items:[{text:"Overview",link:"/solutions/builder/overview"},{text:"Get Started",link:"/solutions/builder/getting-started"},{text:"Project Management",link:"/solutions/builder/project-management"},{text:"Contracts",link:"/solutions/builder/contracts"},{text:"Gas Tank",link:"/solutions/builder/gas-tank"},{text:"Wallet SDKs",link:"/solutions/builder/wallet-sdks"},{text:"Node Gateway",link:"/solutions/builder/node-gateway"},{text:"Marketplaces",link:"/solutions/builder/marketplaces"},{text:"Indexer",link:"/solutions/builder/indexer"},{text:"Analytics",link:"/solutions/builder/analytics"},{text:"Settings",link:"/solutions/builder/project-settings"}]},{text:"Technical References",items:[{text:"Chain Support",link:"/solutions/technical-references/chain-support"},{text:"Smart Contract Wallets",collapsed:!0,items:[{text:"Why smart contract wallets?",link:"/solutions/technical-references/wallet-contracts/01-why"}]},{text:"Contract Internals",collapsed:!0,items:[{text:"Deployment",link:"/solutions/technical-references/internals/01-deployment"},{text:"Sequence v1",collapsed:!0,items:[{text:"Deploy",link:"/solutions/technical-references/internals/v1/01-deploy"},{text:"Wallet Factory",link:"/solutions/technical-references/internals/v1/03-wallet-factory"},{text:"Wallet Configuration",link:"/solutions/technical-references/internals/v1/04-wallet-configuration"},{text:"Signature Encoding",link:"/solutions/technical-references/internals/v1/08-signature-encoding"},{text:"Wallet Context",link:"/solutions/technical-references/internals/v1/11-wallet-context"},{text:"Contract Audits",link:"/solutions/technical-references/internals/v1/12-contract-audits"}]},{text:"Sequence v2",collapsed:!0,items:[{text:"Deploy",link:"/solutions/technical-references/internals/v2/01-deploy"},{text:"Wallet Configuration",link:"/solutions/technical-references/internals/v2/04-configuration"}]}]}]}],"/guides":[{text:"Build a game with WebGL",collapsed:!0,items:[{text:"Integrate SequenceKit with WaaS",link:"/guides/webgl-guide#integrate-sequencekit-with-waas"},{text:"Deploy a collectibles contract",link:"/guides/webgl-guide#deploy-a-collectibles-contract"},{text:"Deploy a remote minter",link:"/guides/webgl-guide#deploy-a-remote-minter"},{text:"Mint in-game achievement tokens",link:"/guides/webgl-guide#mint-in-game-achievement-tokens"},{text:"Burn in-game achievement tokens",link:"/guides/webgl-guide#burn-in-game-achievement-tokens"},{text:"Integrate an embedded marketplace",link:"/guides/webgl-guide#integrate-an-embedded-marketplace"},{text:"Leverage purchased items in-game",link:"/guides/webgl-guide#leverage-purchased-items-in-game"}]},{text:"Build a mobile Unity game",collapsed:!0,items:[{text:"Integrate SequenceKit with WaaS",link:"/guides/unity-guide#integrate-sequencekit-with-waas"},{text:"Deploy a collectibles contract",link:"/guides/unity-guide#deploy-a-collectibles-contract"},{text:"Deploy a remote minter",link:"/guides/unity-guide#deploy-a-remote-minter"},{text:"Mint in-game achievement tokens",link:"/guides/unity-guide#mint-in-game-achievement-tokens"},{text:"Burn in-game achievement tokens",link:"/guides/unity-guide#burn-in-game-achievement-tokens"},{text:"Integrate an embedded marketplace",link:"/guides/unity-guide#integrate-an-embedded-marketplace"},{text:"Leverage purchased items in-game",link:"/guides/unity-guide#leverage-purchased-items-in-game"}]},{text:"Build a lootbox with AI minting",link:"/guides/lootbox"},{text:"Building a Custom Marketplace",link:"/guides/template-marketplace-api"},{text:"Templates",items:[{text:"In-Game Wallet Demo",link:"/guides/templates/template-embedded-wallet"},{text:"Build a Backend Transaction Manager",link:"/guides/templates/02-building-relaying-server"},{text:"Serverless Minting of Collectibles",link:"/guides/templates/03-mint-collectibles-serverless"}]}],"/sdk":[{text:"Game Engine",items:[{text:"Unreal",collapsed:!0,items:[{text:"Overview",link:"/sdk/unreal/01-overview"},{text:"Installation",link:"/sdk/unreal/02-installation"},{text:"Setup",link:"/sdk/unreal/03-setup"},{text:"Authentication",link:"/sdk/unreal/04-authentication"},{text:"API Integration",link:"/sdk/unreal/05-api-integration"},{text:"Packaging",link:"/sdk/unreal/06-packaging"}]},{text:"Unity",collapsed:!0,items:[{text:"Overview",link:"/sdk/unity/01-overview"},{text:"Installation",link:"/sdk/unity/02-installation"},{text:"Setup",link:"/sdk/unity/03-setup"},{text:"Authentication",link:"/sdk/unity/04-authentication"},{text:"Write to blockchain",link:"/sdk/unity/05-write-to-blockchain"},{text:"Read from Blockchain",link:"/sdk/unity/06-read-from-blockchain"},{text:"Sign Messages",link:"/sdk/unity/07-sign-messages"},{text:"Deploy Contracts",link:"/sdk/unity/08-deploy-contracts"},{text:"Wallet UI",link:"/sdk/unity/09-wallet-ui"},{text:"Advanced",collapsed:!0,items:[{text:"Introduction",link:"/sdk/unity/Advanced/01-introduction"},{text:"Wallets",link:"/sdk/unity/Advanced/02-wallets"},{text:"Clients",link:"/sdk/unity/Advanced/03-clients"},{text:"Transfers",link:"/sdk/unity/Advanced/04-transfers"},{text:"Contracts",link:"/sdk/unity/Advanced/05-contracts"},{text:"Tokens",link:"/sdk/unity/Advanced/06-tokens"}]}]}]},{text:"Web3",items:[{text:"SequenceKit",collapsed:!0,items:[{text:"Overview",link:"/sdk/sequence-kit/01-overview"},{text:"Quickstart",link:"/sdk/sequence-kit/02-getting-started"},{text:"Configuration",link:"/sdk/sequence-kit/03-configuration"},{text:"Checkout",link:"/sdk/sequence-kit/04-checkout"},{text:"Custom Connectors",link:"/sdk/sequence-kit/05-custom-connectors"}]},{text:"TypeScript",collapsed:!0,items:[{text:"Overview",link:"/sdk/typescript/03-guides/overview"},{text:"Connect Wallet",link:"/sdk/typescript/03-guides/01-connect-wallet"},{text:"Authenticate Users with Message Signature",link:"/sdk/typescript/03-guides/02-auth-address"},{text:"Signing & Verifying Messages",link:"/sdk/typescript/03-guides/03-sign-message"},{text:"No-wallet confirmation signatures",link:"/sdk/typescript/03-guides/04-session-keys"},{text:"Sending Transactions",link:"/sdk/typescript/03-guides/05-send-transaction"},{text:"Sending ERC-20 Tokens",link:"/sdk/typescript/03-guides/06-send-erc20"},{text:"Sending ERC-721 (NFT) Tokens",link:"/sdk/typescript/03-guides/07-send-erc721"},{text:"Sending ERC-1155 (Collectible) Tokens",link:"/sdk/typescript/03-guides/08-send-erc1155"},{text:"Sending a Batch of Transactions",link:"/sdk/typescript/03-guides/09-send-batch-transactions"},{text:"Building Backends with Sequence",link:"/sdk/typescript/03-guides/10-building-backends"},{text:"Wallet Connectors",collapsed:!0,items:[{text:"Overview",link:"/sdk/typescript/connectors/01-overview"},{text:"SequenceKit",link:"/sdk/sequence-kit/01-overview"},{text:"Wagmi",link:"/sdk/typescript/connectors/03-wagmi"},{text:"RainbowKit",link:"/sdk/typescript/connectors/04-rainbow-kit"},{text:"Web3 Onboard",link:"/sdk/typescript/connectors/05-web3-onboard"},{text:"Web3 React V6",link:"/sdk/typescript/connectors/06-web3-react-v6"},{text:"Web3Modal",link:"/sdk/typescript/connectors/07-web3modal"},{text:"FAQ",link:"/sdk/typescript/connectors/08-FAQ"}]}]},{text:"Go",collapsed:!0,items:[{text:"Overview",link:"/sdk/go/overview"}]}]},{text:"Common Questions",collapsed:!0,items:[{text:"How do I do signature validation?",link:"/wallet/sig-validation"}]}],"/api":[{text:"Relayer",collapsed:!0,items:[{text:"Overview",link:"/api/relayer"},{text:"Relayer Examples",link:"/api/relayer/examples"}]},{text:"Indexer",collapsed:!0,items:[{text:"Overview",link:"/api/indexer/overview"},{text:"Installation",link:"/api/indexer/installation"},{text:"Fetch Tokens",link:"/api/indexer/fetch-tokens"},{text:"Transaction History",link:"/api/indexer/transaction-history"},{text:"Unique Tokens",link:"/api/indexer/unique-tokens"},{text:"Transaction History Token Contract",link:"/api/indexer/transation-history-token-contract"},{text:"Native Network Balance",link:"/api/indexer/native-network-balance"},{text:"Metadata Tips",link:"/api/indexer/metadata-tips"}]},{text:"Metadata",collapsed:!0,items:[{text:"Overview",link:"/api/metadata/overview"},{text:"Token Metadata",link:"/api/metadata/token-metadata"},{text:"Contract Metadata",link:"/api/metadata/contract-metadata"},{text:"REST API",link:"/api/metadata/rest-api"}]},{text:"Marketplace",collapsed:!0,items:[{text:"Overview",link:"/api/marketplace"},{text:"Schema",link:"/api/marketplace/schema"},{text:"Marketplace API",link:"/api/marketplace/api"},{text:"Marketplace Examples",link:"/api/marketplace/examples"}]},{text:"Node Gateway",collapsed:!0,items:[{text:"Overview",link:"/api/node-gateway"},{text:"Etc",link:"/api/node-gateway/etc"}]}],"/support":{items:[{text:"Support",link:"/support"},{text:"Changelog",link:"https://0xsequence.canny.io/changelog"},{text:"FAQ",link:"https://support.sequence.xyz"},{text:"Token Directory",link:"/support/token-directory"},{text:"Discord",link:"https://discord.gg/sequence"},{text:"We're hiring!",link:"https://horizon.io/careers"},{text:"Contact Us",link:"https://support.sequence.xyz"}]}},theme:{variables:{fontFamily:{default:"Inter"},color:{background:{light:"#f0f0f0",dark:"#111111"}}}},markdown:{code:{themes:{dark:"github-dark-dimmed",light:"github-light"}}},socials:[],vite:{}},Wv=p.createContext(Hv);function Kv(){return typeof window<"u",Hv}function W3({children:e,config:t}){const[n,r]=p.useState(()=>t||Kv());return p.useEffect(()=>{},[]),p.useEffect(()=>{typeof window<"u"},[n]),x.jsx(Wv.Provider,{value:n,children:e})}function Je(){return p.useContext(Wv)}const K3="modulepreload",G3=function(e){return"/"+e},Xp={},b=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){const i=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),l=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));o=Promise.all(n.map(s=>{if(s=G3(s),s in Xp)return;Xp[s]=!0;const c=s.endsWith(".css"),d=c?'[rel="stylesheet"]':"";if(!!r)for(let h=i.length-1;h>=0;h--){const y=i[h];if(y.href===s&&(!c||y.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${d}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":K3,c||(f.as="script",f.crossOrigin=""),f.href=s,l&&f.setAttribute("nonce",l),document.head.appendChild(f),c)return new Promise((h,y)=>{f.addEventListener("load",h),f.addEventListener("error",()=>y(new Error(`Unable to preload CSS for ${s}`)))})}))}return o.then(()=>t()).catch(i=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i})},Hd=[{lazy:()=>b(()=>import("./index-MK2InkVl.js"),__vite__mapDeps([0,1])),path:"/",type:"mdx",filePath:"index.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./support-C1Qa5OK-.js"),[]),path:"/support",type:"mdx",filePath:"support.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./support-C1Qa5OK-.js"),[]),path:"/support.html",type:"mdx",filePath:"support.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./embedded-wallet-C5b57Xms.js"),__vite__mapDeps([2,1])),path:"/api/embedded-wallet",type:"mdx",filePath:"api/embedded-wallet.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./embedded-wallet-C5b57Xms.js"),__vite__mapDeps([2,1])),path:"/api/embedded-wallet.html",type:"mdx",filePath:"api/embedded-wallet.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./marketplace-D99u8IyF.js"),[]),path:"/api/marketplace",type:"mdx",filePath:"api/marketplace.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./marketplace-D99u8IyF.js"),[]),path:"/api/marketplace.html",type:"mdx",filePath:"api/marketplace.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./metadata-B66XtzTL.js"),[]),path:"/api/metadata",type:"mdx",filePath:"api/metadata.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./metadata-B66XtzTL.js"),[]),path:"/api/metadata.html",type:"mdx",filePath:"api/metadata.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./node-gateway-D1t8nelF.js"),[]),path:"/api/node-gateway",type:"mdx",filePath:"api/node-gateway.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./node-gateway-D1t8nelF.js"),[]),path:"/api/node-gateway.html",type:"mdx",filePath:"api/node-gateway.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./relayer-BcjX06kX.js"),[]),path:"/api/relayer",type:"mdx",filePath:"api/relayer.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./relayer-BcjX06kX.js"),[]),path:"/api/relayer.html",type:"mdx",filePath:"api/relayer.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./lootbox-BOyUVmVp.js"),[]),path:"/guides/lootbox",type:"mdx",filePath:"guides/lootbox.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./lootbox-BOyUVmVp.js"),[]),path:"/guides/lootbox.html",type:"mdx",filePath:"guides/lootbox.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./template-marketplace-api-DqwwDq0f.js"),__vite__mapDeps([3,1])),path:"/guides/template-marketplace-api",type:"mdx",filePath:"guides/template-marketplace-api.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./template-marketplace-api-DqwwDq0f.js"),__vite__mapDeps([3,1])),path:"/guides/template-marketplace-api.html",type:"mdx",filePath:"guides/template-marketplace-api.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./unity-guide-DrJIG9ZX.js"),[]),path:"/guides/unity-guide",type:"mdx",filePath:"guides/unity-guide.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./unity-guide-DrJIG9ZX.js"),[]),path:"/guides/unity-guide.html",type:"mdx",filePath:"guides/unity-guide.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./webgl-guide-BHUb9UMj.js"),__vite__mapDeps([4,1])),path:"/guides/webgl-guide",type:"mdx",filePath:"guides/webgl-guide.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./webgl-guide-BHUb9UMj.js"),__vite__mapDeps([4,1])),path:"/guides/webgl-guide.html",type:"mdx",filePath:"guides/webgl-guide.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./android-DcRYKII9.js"),[]),path:"/sdk/android",type:"mdx",filePath:"sdk/android.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./android-DcRYKII9.js"),[]),path:"/sdk/android.html",type:"mdx",filePath:"sdk/android.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./iOS-DcRYKII9.js"),[]),path:"/sdk/iOS",type:"mdx",filePath:"sdk/iOS.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./iOS-DcRYKII9.js"),[]),path:"/sdk/iOS.html",type:"mdx",filePath:"sdk/iOS.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./nodejs-DcRYKII9.js"),[]),path:"/sdk/nodejs",type:"mdx",filePath:"sdk/nodejs.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./nodejs-DcRYKII9.js"),[]),path:"/sdk/nodejs.html",type:"mdx",filePath:"sdk/nodejs.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./reactnative-DcRYKII9.js"),[]),path:"/sdk/reactnative",type:"mdx",filePath:"sdk/reactnative.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./reactnative-DcRYKII9.js"),[]),path:"/sdk/reactnative.html",type:"mdx",filePath:"sdk/reactnative.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./sequence-kit-DcRYKII9.js"),[]),path:"/sdk/sequence-kit",type:"mdx",filePath:"sdk/sequence-kit.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./sequence-kit-DcRYKII9.js"),[]),path:"/sdk/sequence-kit.html",type:"mdx",filePath:"sdk/sequence-kit.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./typescript-DcRYKII9.js"),[]),path:"/sdk/typescript",type:"mdx",filePath:"sdk/typescript.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./typescript-DcRYKII9.js"),[]),path:"/sdk/typescript.html",type:"mdx",filePath:"sdk/typescript.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./unity-DcRYKII9.js"),[]),path:"/sdk/unity",type:"mdx",filePath:"sdk/unity.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./unity-DcRYKII9.js"),[]),path:"/sdk/unity.html",type:"mdx",filePath:"sdk/unity.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./minter-Ce25MOEC.js"),[]),path:"/solutions/minter",type:"mdx",filePath:"solutions/minter.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./minter-Ce25MOEC.js"),[]),path:"/solutions/minter.html",type:"mdx",filePath:"solutions/minter.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./nft-checkout-CGwBdliS.js"),[]),path:"/solutions/nft-checkout",type:"mdx",filePath:"solutions/nft-checkout.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./nft-checkout-CGwBdliS.js"),[]),path:"/solutions/nft-checkout.html",type:"mdx",filePath:"solutions/nft-checkout.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./onramps-DQuxS_Bb.js"),[]),path:"/solutions/onramps",type:"mdx",filePath:"solutions/onramps.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./onramps-DQuxS_Bb.js"),[]),path:"/solutions/onramps.html",type:"mdx",filePath:"solutions/onramps.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./token-directory-5btJcM6h.js"),__vite__mapDeps([5,1])),path:"/support/token-directory",type:"mdx",filePath:"support/token-directory.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./token-directory-5btJcM6h.js"),__vite__mapDeps([5,1])),path:"/support/token-directory.html",type:"mdx",filePath:"support/token-directory.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./fetch-tokens-BUhULbfD.js"),[]),path:"/api/indexer/fetch-tokens",type:"mdx",filePath:"api/indexer/fetch-tokens.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./fetch-tokens-BUhULbfD.js"),[]),path:"/api/indexer/fetch-tokens.html",type:"mdx",filePath:"api/indexer/fetch-tokens.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./installation-U0MvJyz8.js"),[]),path:"/api/indexer/installation",type:"mdx",filePath:"api/indexer/installation.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./installation-U0MvJyz8.js"),[]),path:"/api/indexer/installation.html",type:"mdx",filePath:"api/indexer/installation.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./metadata-tips-cnDPTWKR.js"),[]),path:"/api/indexer/metadata-tips",type:"mdx",filePath:"api/indexer/metadata-tips.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./metadata-tips-cnDPTWKR.js"),[]),path:"/api/indexer/metadata-tips.html",type:"mdx",filePath:"api/indexer/metadata-tips.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./native-network-balance-DTwXGWh7.js"),[]),path:"/api/indexer/native-network-balance",type:"mdx",filePath:"api/indexer/native-network-balance.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./native-network-balance-DTwXGWh7.js"),[]),path:"/api/indexer/native-network-balance.html",type:"mdx",filePath:"api/indexer/native-network-balance.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./overview-B6zGNzmR.js"),[]),path:"/api/indexer/overview",type:"mdx",filePath:"api/indexer/overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./overview-B6zGNzmR.js"),[]),path:"/api/indexer/overview.html",type:"mdx",filePath:"api/indexer/overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./transaction-history-CuoadMzY.js"),[]),path:"/api/indexer/transaction-history",type:"mdx",filePath:"api/indexer/transaction-history.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./transaction-history-CuoadMzY.js"),[]),path:"/api/indexer/transaction-history.html",type:"mdx",filePath:"api/indexer/transaction-history.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./transation-history-token-contract-CfX-hIX4.js"),[]),path:"/api/indexer/transation-history-token-contract",type:"mdx",filePath:"api/indexer/transation-history-token-contract.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./transation-history-token-contract-CfX-hIX4.js"),[]),path:"/api/indexer/transation-history-token-contract.html",type:"mdx",filePath:"api/indexer/transation-history-token-contract.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./unique-tokens-C4kj4IQq.js"),[]),path:"/api/indexer/unique-tokens",type:"mdx",filePath:"api/indexer/unique-tokens.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./unique-tokens-C4kj4IQq.js"),[]),path:"/api/indexer/unique-tokens.html",type:"mdx",filePath:"api/indexer/unique-tokens.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./contract-metadata-Cn9ZCQ29.js"),[]),path:"/api/metadata/contract-metadata",type:"mdx",filePath:"api/metadata/contract-metadata.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./contract-metadata-Cn9ZCQ29.js"),[]),path:"/api/metadata/contract-metadata.html",type:"mdx",filePath:"api/metadata/contract-metadata.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./overview-BdEKAPLG.js"),[]),path:"/api/metadata/overview",type:"mdx",filePath:"api/metadata/overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./overview-BdEKAPLG.js"),[]),path:"/api/metadata/overview.html",type:"mdx",filePath:"api/metadata/overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./rest-api-OArSoJbV.js"),[]),path:"/api/metadata/rest-api",type:"mdx",filePath:"api/metadata/rest-api.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./rest-api-OArSoJbV.js"),[]),path:"/api/metadata/rest-api.html",type:"mdx",filePath:"api/metadata/rest-api.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./token-metadata-B96SuUsj.js"),[]),path:"/api/metadata/token-metadata",type:"mdx",filePath:"api/metadata/token-metadata.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./token-metadata-B96SuUsj.js"),[]),path:"/api/metadata/token-metadata.html",type:"mdx",filePath:"api/metadata/token-metadata.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-building-relaying-server-CuDszrRI.js"),[]),path:"/guides/templates/02-building-relaying-server",type:"mdx",filePath:"guides/templates/02-building-relaying-server.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-building-relaying-server-CuDszrRI.js"),[]),path:"/guides/templates/02-building-relaying-server.html",type:"mdx",filePath:"guides/templates/02-building-relaying-server.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-mint-collectibles-serverless-CpfiFoVo.js"),[]),path:"/guides/templates/03-mint-collectibles-serverless",type:"mdx",filePath:"guides/templates/03-mint-collectibles-serverless.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-mint-collectibles-serverless-CpfiFoVo.js"),[]),path:"/guides/templates/03-mint-collectibles-serverless.html",type:"mdx",filePath:"guides/templates/03-mint-collectibles-serverless.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./template-embedded-wallet-C41b3z5B.js"),[]),path:"/guides/templates/template-embedded-wallet",type:"mdx",filePath:"guides/templates/template-embedded-wallet.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./template-embedded-wallet-C41b3z5B.js"),[]),path:"/guides/templates/template-embedded-wallet.html",type:"mdx",filePath:"guides/templates/template-embedded-wallet.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./overview--P1lrrxy.js"),[]),path:"/sdk/go/overview",type:"mdx",filePath:"sdk/go/overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./overview--P1lrrxy.js"),[]),path:"/sdk/go/overview.html",type:"mdx",filePath:"sdk/go/overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-overview-14IeRkgc.js"),[]),path:"/sdk/sequence-kit/01-overview",type:"mdx",filePath:"sdk/sequence-kit/01-overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-overview-14IeRkgc.js"),[]),path:"/sdk/sequence-kit/01-overview.html",type:"mdx",filePath:"sdk/sequence-kit/01-overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-getting-started-CjU9QgdR.js"),[]),path:"/sdk/sequence-kit/02-getting-started",type:"mdx",filePath:"sdk/sequence-kit/02-getting-started.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-getting-started-CjU9QgdR.js"),[]),path:"/sdk/sequence-kit/02-getting-started.html",type:"mdx",filePath:"sdk/sequence-kit/02-getting-started.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-configuration-D1joKIQx.js"),[]),path:"/sdk/sequence-kit/03-configuration",type:"mdx",filePath:"sdk/sequence-kit/03-configuration.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-configuration-D1joKIQx.js"),[]),path:"/sdk/sequence-kit/03-configuration.html",type:"mdx",filePath:"sdk/sequence-kit/03-configuration.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-checkout-VW3jQ2DG.js"),[]),path:"/sdk/sequence-kit/04-checkout",type:"mdx",filePath:"sdk/sequence-kit/04-checkout.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-checkout-VW3jQ2DG.js"),[]),path:"/sdk/sequence-kit/04-checkout.html",type:"mdx",filePath:"sdk/sequence-kit/04-checkout.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-custom-connectors-WWzLXGT6.js"),[]),path:"/sdk/sequence-kit/05-custom-connectors",type:"mdx",filePath:"sdk/sequence-kit/05-custom-connectors.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-custom-connectors-WWzLXGT6.js"),[]),path:"/sdk/sequence-kit/05-custom-connectors.html",type:"mdx",filePath:"sdk/sequence-kit/05-custom-connectors.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-overview-Dynuydhs.js"),[]),path:"/sdk/unity/01-overview",type:"mdx",filePath:"sdk/unity/01-overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-overview-Dynuydhs.js"),[]),path:"/sdk/unity/01-overview.html",type:"mdx",filePath:"sdk/unity/01-overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-installation-BPirNZOA.js"),[]),path:"/sdk/unity/02-installation",type:"mdx",filePath:"sdk/unity/02-installation.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-installation-BPirNZOA.js"),[]),path:"/sdk/unity/02-installation.html",type:"mdx",filePath:"sdk/unity/02-installation.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-setup-CHg84Z-0.js"),[]),path:"/sdk/unity/03-setup",type:"mdx",filePath:"sdk/unity/03-setup.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-setup-CHg84Z-0.js"),[]),path:"/sdk/unity/03-setup.html",type:"mdx",filePath:"sdk/unity/03-setup.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-authentication-Jevds3CY.js"),[]),path:"/sdk/unity/04-authentication",type:"mdx",filePath:"sdk/unity/04-authentication.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-authentication-Jevds3CY.js"),[]),path:"/sdk/unity/04-authentication.html",type:"mdx",filePath:"sdk/unity/04-authentication.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-write-to-blockchain-CbixjMAO.js"),[]),path:"/sdk/unity/05-write-to-blockchain",type:"mdx",filePath:"sdk/unity/05-write-to-blockchain.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-write-to-blockchain-CbixjMAO.js"),[]),path:"/sdk/unity/05-write-to-blockchain.html",type:"mdx",filePath:"sdk/unity/05-write-to-blockchain.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-read-from-blockchain-S3XaeQAP.js"),[]),path:"/sdk/unity/06-read-from-blockchain",type:"mdx",filePath:"sdk/unity/06-read-from-blockchain.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-read-from-blockchain-S3XaeQAP.js"),[]),path:"/sdk/unity/06-read-from-blockchain.html",type:"mdx",filePath:"sdk/unity/06-read-from-blockchain.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./07-sign-messages-DrXhCl-Q.js"),[]),path:"/sdk/unity/07-sign-messages",type:"mdx",filePath:"sdk/unity/07-sign-messages.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./07-sign-messages-DrXhCl-Q.js"),[]),path:"/sdk/unity/07-sign-messages.html",type:"mdx",filePath:"sdk/unity/07-sign-messages.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./08-deploy-contracts-BI-L_Iwr.js"),[]),path:"/sdk/unity/08-deploy-contracts",type:"mdx",filePath:"sdk/unity/08-deploy-contracts.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./08-deploy-contracts-BI-L_Iwr.js"),[]),path:"/sdk/unity/08-deploy-contracts.html",type:"mdx",filePath:"sdk/unity/08-deploy-contracts.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./09-wallet-ui-DQWmGe8q.js"),[]),path:"/sdk/unity/09-wallet-ui",type:"mdx",filePath:"sdk/unity/09-wallet-ui.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./09-wallet-ui-DQWmGe8q.js"),[]),path:"/sdk/unity/09-wallet-ui.html",type:"mdx",filePath:"sdk/unity/09-wallet-ui.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-overview-C--NnwUF.js"),[]),path:"/sdk/unreal/01-overview",type:"mdx",filePath:"sdk/unreal/01-overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-overview-C--NnwUF.js"),[]),path:"/sdk/unreal/01-overview.html",type:"mdx",filePath:"sdk/unreal/01-overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-installation-D_1-cGrW.js"),[]),path:"/sdk/unreal/02-installation",type:"mdx",filePath:"sdk/unreal/02-installation.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-installation-D_1-cGrW.js"),[]),path:"/sdk/unreal/02-installation.html",type:"mdx",filePath:"sdk/unreal/02-installation.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-setup-LfdLm5v0.js"),[]),path:"/sdk/unreal/03-setup",type:"mdx",filePath:"sdk/unreal/03-setup.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-setup-LfdLm5v0.js"),[]),path:"/sdk/unreal/03-setup.html",type:"mdx",filePath:"sdk/unreal/03-setup.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-authentication-8J7N8os-.js"),[]),path:"/sdk/unreal/04-authentication",type:"mdx",filePath:"sdk/unreal/04-authentication.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-authentication-8J7N8os-.js"),[]),path:"/sdk/unreal/04-authentication.html",type:"mdx",filePath:"sdk/unreal/04-authentication.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-api-integration-BHJnIyv7.js"),[]),path:"/sdk/unreal/05-api-integration",type:"mdx",filePath:"sdk/unreal/05-api-integration.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-api-integration-BHJnIyv7.js"),[]),path:"/sdk/unreal/05-api-integration.html",type:"mdx",filePath:"sdk/unreal/05-api-integration.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-packaging-DCgamZU5.js"),[]),path:"/sdk/unreal/06-packaging",type:"mdx",filePath:"sdk/unreal/06-packaging.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-packaging-DCgamZU5.js"),[]),path:"/sdk/unreal/06-packaging.html",type:"mdx",filePath:"sdk/unreal/06-packaging.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./analytics-ByaRhbRP.js"),[]),path:"/solutions/builder/analytics",type:"mdx",filePath:"solutions/builder/analytics.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./analytics-ByaRhbRP.js"),[]),path:"/solutions/builder/analytics.html",type:"mdx",filePath:"solutions/builder/analytics.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./contracts-BBI-SsfV.js"),__vite__mapDeps([6,7])),path:"/solutions/builder/contracts",type:"mdx",filePath:"solutions/builder/contracts.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./contracts-BBI-SsfV.js"),__vite__mapDeps([6,7])),path:"/solutions/builder/contracts.html",type:"mdx",filePath:"solutions/builder/contracts.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./gas-tank-DiwJApz7.js"),__vite__mapDeps([8,7])),path:"/solutions/builder/gas-tank",type:"mdx",filePath:"solutions/builder/gas-tank.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./gas-tank-DiwJApz7.js"),__vite__mapDeps([8,7])),path:"/solutions/builder/gas-tank.html",type:"mdx",filePath:"solutions/builder/gas-tank.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./getting-started-BHBhNsDI.js"),__vite__mapDeps([9,10])),path:"/solutions/builder/getting-started",type:"mdx",filePath:"solutions/builder/getting-started.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./getting-started-BHBhNsDI.js"),__vite__mapDeps([9,10])),path:"/solutions/builder/getting-started.html",type:"mdx",filePath:"solutions/builder/getting-started.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./indexer-o1f299nU.js"),__vite__mapDeps([11,7])),path:"/solutions/builder/indexer",type:"mdx",filePath:"solutions/builder/indexer.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./indexer-o1f299nU.js"),__vite__mapDeps([11,7])),path:"/solutions/builder/indexer.html",type:"mdx",filePath:"solutions/builder/indexer.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./marketplaces-DnTDXOuk.js"),__vite__mapDeps([12,7])),path:"/solutions/builder/marketplaces",type:"mdx",filePath:"solutions/builder/marketplaces.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./marketplaces-DnTDXOuk.js"),__vite__mapDeps([12,7])),path:"/solutions/builder/marketplaces.html",type:"mdx",filePath:"solutions/builder/marketplaces.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./node-gateway-9-nhMRrS.js"),__vite__mapDeps([13,7])),path:"/solutions/builder/node-gateway",type:"mdx",filePath:"solutions/builder/node-gateway.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./node-gateway-9-nhMRrS.js"),__vite__mapDeps([13,7])),path:"/solutions/builder/node-gateway.html",type:"mdx",filePath:"solutions/builder/node-gateway.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./overview-BeMF62oO.js"),__vite__mapDeps([14,10])),path:"/solutions/builder/overview",type:"mdx",filePath:"solutions/builder/overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./overview-BeMF62oO.js"),__vite__mapDeps([14,10])),path:"/solutions/builder/overview.html",type:"mdx",filePath:"solutions/builder/overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./project-management-BucGlQ55.js"),__vite__mapDeps([15,7])),path:"/solutions/builder/project-management",type:"mdx",filePath:"solutions/builder/project-management.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./project-management-BucGlQ55.js"),__vite__mapDeps([15,7])),path:"/solutions/builder/project-management.html",type:"mdx",filePath:"solutions/builder/project-management.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./project-settings-euqN4X2M.js"),__vite__mapDeps([16,7])),path:"/solutions/builder/project-settings",type:"mdx",filePath:"solutions/builder/project-settings.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./project-settings-euqN4X2M.js"),__vite__mapDeps([16,7])),path:"/solutions/builder/project-settings.html",type:"mdx",filePath:"solutions/builder/project-settings.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./wallet-sdks-Bh4_Xwxg.js"),__vite__mapDeps([17,7])),path:"/solutions/builder/wallet-sdks",type:"mdx",filePath:"solutions/builder/wallet-sdks.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./wallet-sdks-Bh4_Xwxg.js"),__vite__mapDeps([17,7])),path:"/solutions/builder/wallet-sdks.html",type:"mdx",filePath:"solutions/builder/wallet-sdks.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./overview-BHgLst3H.js"),[]),path:"/solutions/marketplaces/overview",type:"mdx",filePath:"solutions/marketplaces/overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./overview-BHgLst3H.js"),[]),path:"/solutions/marketplaces/overview.html",type:"mdx",filePath:"solutions/marketplaces/overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./white-label-marketplace-yYRKW9O-.js"),__vite__mapDeps([18,7])),path:"/solutions/marketplaces/white-label-marketplace",type:"mdx",filePath:"solutions/marketplaces/white-label-marketplace.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./white-label-marketplace-yYRKW9O-.js"),__vite__mapDeps([18,7])),path:"/solutions/marketplaces/white-label-marketplace.html",type:"mdx",filePath:"solutions/marketplaces/white-label-marketplace.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./5189-4337-C0tAKxP9.js"),[]),path:"/solutions/technical-references/5189-4337",type:"mdx",filePath:"solutions/technical-references/5189-4337.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./5189-4337-C0tAKxP9.js"),[]),path:"/solutions/technical-references/5189-4337.html",type:"mdx",filePath:"solutions/technical-references/5189-4337.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./chain-support-B29jrp7j.js"),[]),path:"/solutions/technical-references/chain-support",type:"mdx",filePath:"solutions/technical-references/chain-support.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./chain-support-B29jrp7j.js"),[]),path:"/solutions/technical-references/chain-support.html",type:"mdx",filePath:"solutions/technical-references/chain-support.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./overview-tw0mg5Mp.js"),[]),path:"/solutions/wallets/overview",type:"mdx",filePath:"solutions/wallets/overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./overview-tw0mg5Mp.js"),[]),path:"/solutions/wallets/overview.html",type:"mdx",filePath:"solutions/wallets/overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-connect-wallet-CfLEEO7U.js"),[]),path:"/sdk/typescript/03-guides/01-connect-wallet",type:"mdx",filePath:"sdk/typescript/03-guides/01-connect-wallet.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-connect-wallet-CfLEEO7U.js"),[]),path:"/sdk/typescript/03-guides/01-connect-wallet.html",type:"mdx",filePath:"sdk/typescript/03-guides/01-connect-wallet.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-auth-address-BnIOwp7v.js"),[]),path:"/sdk/typescript/03-guides/02-auth-address",type:"mdx",filePath:"sdk/typescript/03-guides/02-auth-address.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-auth-address-BnIOwp7v.js"),[]),path:"/sdk/typescript/03-guides/02-auth-address.html",type:"mdx",filePath:"sdk/typescript/03-guides/02-auth-address.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-sign-message-Cen7X5iw.js"),[]),path:"/sdk/typescript/03-guides/03-sign-message",type:"mdx",filePath:"sdk/typescript/03-guides/03-sign-message.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-sign-message-Cen7X5iw.js"),[]),path:"/sdk/typescript/03-guides/03-sign-message.html",type:"mdx",filePath:"sdk/typescript/03-guides/03-sign-message.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-session-keys-CMKstS7R.js"),[]),path:"/sdk/typescript/03-guides/04-session-keys",type:"mdx",filePath:"sdk/typescript/03-guides/04-session-keys.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-session-keys-CMKstS7R.js"),[]),path:"/sdk/typescript/03-guides/04-session-keys.html",type:"mdx",filePath:"sdk/typescript/03-guides/04-session-keys.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-send-transaction-CPTudBdL.js"),[]),path:"/sdk/typescript/03-guides/05-send-transaction",type:"mdx",filePath:"sdk/typescript/03-guides/05-send-transaction.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-send-transaction-CPTudBdL.js"),[]),path:"/sdk/typescript/03-guides/05-send-transaction.html",type:"mdx",filePath:"sdk/typescript/03-guides/05-send-transaction.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-send-erc20-DK7j3wYS.js"),[]),path:"/sdk/typescript/03-guides/06-send-erc20",type:"mdx",filePath:"sdk/typescript/03-guides/06-send-erc20.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-send-erc20-DK7j3wYS.js"),[]),path:"/sdk/typescript/03-guides/06-send-erc20.html",type:"mdx",filePath:"sdk/typescript/03-guides/06-send-erc20.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./07-send-erc721-CLlkpkZ7.js"),[]),path:"/sdk/typescript/03-guides/07-send-erc721",type:"mdx",filePath:"sdk/typescript/03-guides/07-send-erc721.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./07-send-erc721-CLlkpkZ7.js"),[]),path:"/sdk/typescript/03-guides/07-send-erc721.html",type:"mdx",filePath:"sdk/typescript/03-guides/07-send-erc721.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./08-send-erc1155-BS-Icmoz.js"),[]),path:"/sdk/typescript/03-guides/08-send-erc1155",type:"mdx",filePath:"sdk/typescript/03-guides/08-send-erc1155.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./08-send-erc1155-BS-Icmoz.js"),[]),path:"/sdk/typescript/03-guides/08-send-erc1155.html",type:"mdx",filePath:"sdk/typescript/03-guides/08-send-erc1155.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./09-send-batch-transactions-DGwawNlD.js"),[]),path:"/sdk/typescript/03-guides/09-send-batch-transactions",type:"mdx",filePath:"sdk/typescript/03-guides/09-send-batch-transactions.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./09-send-batch-transactions-DGwawNlD.js"),[]),path:"/sdk/typescript/03-guides/09-send-batch-transactions.html",type:"mdx",filePath:"sdk/typescript/03-guides/09-send-batch-transactions.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./10-building-backends-BAI9VV8A.js"),[]),path:"/sdk/typescript/03-guides/10-building-backends",type:"mdx",filePath:"sdk/typescript/03-guides/10-building-backends.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./10-building-backends-BAI9VV8A.js"),[]),path:"/sdk/typescript/03-guides/10-building-backends.html",type:"mdx",filePath:"sdk/typescript/03-guides/10-building-backends.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./overview-BdOgABVn.js"),[]),path:"/sdk/typescript/03-guides/overview",type:"mdx",filePath:"sdk/typescript/03-guides/overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./overview-BdOgABVn.js"),[]),path:"/sdk/typescript/03-guides/overview.html",type:"mdx",filePath:"sdk/typescript/03-guides/overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-overview-RSvgNLyz.js"),[]),path:"/sdk/typescript/connectors/01-overview",type:"mdx",filePath:"sdk/typescript/connectors/01-overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-overview-RSvgNLyz.js"),[]),path:"/sdk/typescript/connectors/01-overview.html",type:"mdx",filePath:"sdk/typescript/connectors/01-overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-sequence-kit-R_H4ChxU.js"),[]),path:"/sdk/typescript/connectors/02-sequence-kit",type:"mdx",filePath:"sdk/typescript/connectors/02-sequence-kit.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-sequence-kit-R_H4ChxU.js"),[]),path:"/sdk/typescript/connectors/02-sequence-kit.html",type:"mdx",filePath:"sdk/typescript/connectors/02-sequence-kit.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-wagmi-CBCxbzm8.js"),[]),path:"/sdk/typescript/connectors/03-wagmi",type:"mdx",filePath:"sdk/typescript/connectors/03-wagmi.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-wagmi-CBCxbzm8.js"),[]),path:"/sdk/typescript/connectors/03-wagmi.html",type:"mdx",filePath:"sdk/typescript/connectors/03-wagmi.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-rainbow-kit-Dg34mmXH.js"),[]),path:"/sdk/typescript/connectors/04-rainbow-kit",type:"mdx",filePath:"sdk/typescript/connectors/04-rainbow-kit.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-rainbow-kit-Dg34mmXH.js"),[]),path:"/sdk/typescript/connectors/04-rainbow-kit.html",type:"mdx",filePath:"sdk/typescript/connectors/04-rainbow-kit.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-web3-onboard-NhfD69Ky.js"),[]),path:"/sdk/typescript/connectors/05-web3-onboard",type:"mdx",filePath:"sdk/typescript/connectors/05-web3-onboard.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-web3-onboard-NhfD69Ky.js"),[]),path:"/sdk/typescript/connectors/05-web3-onboard.html",type:"mdx",filePath:"sdk/typescript/connectors/05-web3-onboard.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-web3-react-v6-DsVPcEC0.js"),[]),path:"/sdk/typescript/connectors/06-web3-react-v6",type:"mdx",filePath:"sdk/typescript/connectors/06-web3-react-v6.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-web3-react-v6-DsVPcEC0.js"),[]),path:"/sdk/typescript/connectors/06-web3-react-v6.html",type:"mdx",filePath:"sdk/typescript/connectors/06-web3-react-v6.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./07-web3modal-UaDM0Ykz.js"),[]),path:"/sdk/typescript/connectors/07-web3modal",type:"mdx",filePath:"sdk/typescript/connectors/07-web3modal.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./07-web3modal-UaDM0Ykz.js"),[]),path:"/sdk/typescript/connectors/07-web3modal.html",type:"mdx",filePath:"sdk/typescript/connectors/07-web3modal.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./08-FAQ-CuGN-2pd.js"),[]),path:"/sdk/typescript/connectors/08-FAQ",type:"mdx",filePath:"sdk/typescript/connectors/08-FAQ.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./08-FAQ-CuGN-2pd.js"),[]),path:"/sdk/typescript/connectors/08-FAQ.html",type:"mdx",filePath:"sdk/typescript/connectors/08-FAQ.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-introduction-CoIM1X_k.js"),[]),path:"/sdk/unity/Advanced/01-introduction",type:"mdx",filePath:"sdk/unity/Advanced/01-introduction.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-introduction-CoIM1X_k.js"),[]),path:"/sdk/unity/Advanced/01-introduction.html",type:"mdx",filePath:"sdk/unity/Advanced/01-introduction.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-wallets-DULr0dXt.js"),[]),path:"/sdk/unity/Advanced/02-wallets",type:"mdx",filePath:"sdk/unity/Advanced/02-wallets.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-wallets-DULr0dXt.js"),[]),path:"/sdk/unity/Advanced/02-wallets.html",type:"mdx",filePath:"sdk/unity/Advanced/02-wallets.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-clients-BNM_xCZa.js"),[]),path:"/sdk/unity/Advanced/03-clients",type:"mdx",filePath:"sdk/unity/Advanced/03-clients.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-clients-BNM_xCZa.js"),[]),path:"/sdk/unity/Advanced/03-clients.html",type:"mdx",filePath:"sdk/unity/Advanced/03-clients.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-transfers-BqvVNfJP.js"),[]),path:"/sdk/unity/Advanced/04-transfers",type:"mdx",filePath:"sdk/unity/Advanced/04-transfers.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-transfers-BqvVNfJP.js"),[]),path:"/sdk/unity/Advanced/04-transfers.html",type:"mdx",filePath:"sdk/unity/Advanced/04-transfers.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-contracts-DjQ4iIgh.js"),[]),path:"/sdk/unity/Advanced/05-contracts",type:"mdx",filePath:"sdk/unity/Advanced/05-contracts.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-contracts-DjQ4iIgh.js"),[]),path:"/sdk/unity/Advanced/05-contracts.html",type:"mdx",filePath:"sdk/unity/Advanced/05-contracts.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-tokens-DgF_JSY-.js"),[]),path:"/sdk/unity/Advanced/06-tokens",type:"mdx",filePath:"sdk/unity/Advanced/06-tokens.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-tokens-DgF_JSY-.js"),[]),path:"/sdk/unity/Advanced/06-tokens.html",type:"mdx",filePath:"sdk/unity/Advanced/06-tokens.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-deploy-an-item-collection-DmHaXqli.js"),__vite__mapDeps([19,1])),path:"/solutions/collectibles/contracts/01-deploy-an-item-collection",type:"mdx",filePath:"solutions/collectibles/contracts/01-deploy-an-item-collection.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-deploy-an-item-collection-DmHaXqli.js"),__vite__mapDeps([19,1])),path:"/solutions/collectibles/contracts/01-deploy-an-item-collection.html",type:"mdx",filePath:"solutions/collectibles/contracts/01-deploy-an-item-collection.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-deploy-ERC20-currency-B-IsDW0E.js"),__vite__mapDeps([20,1])),path:"/solutions/collectibles/contracts/02-deploy-ERC20-currency",type:"mdx",filePath:"solutions/collectibles/contracts/02-deploy-ERC20-currency.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-deploy-ERC20-currency-B-IsDW0E.js"),__vite__mapDeps([20,1])),path:"/solutions/collectibles/contracts/02-deploy-ERC20-currency.html",type:"mdx",filePath:"solutions/collectibles/contracts/02-deploy-ERC20-currency.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./800-manage-metadata-builder-D4heEJGP.js"),[]),path:"/solutions/collectibles/metadata/800-manage-metadata-builder",type:"mdx",filePath:"solutions/collectibles/metadata/800-manage-metadata-builder.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./800-manage-metadata-builder-D4heEJGP.js"),[]),path:"/solutions/collectibles/metadata/800-manage-metadata-builder.html",type:"mdx",filePath:"solutions/collectibles/metadata/800-manage-metadata-builder.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-overview-D4iMjiil.js"),__vite__mapDeps([21,1,10])),path:"/solutions/marketplaces/orderbook/01-overview",type:"mdx",filePath:"solutions/marketplaces/orderbook/01-overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-overview-D4iMjiil.js"),__vite__mapDeps([21,1,10])),path:"/solutions/marketplaces/orderbook/01-overview.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/01-overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-quickstart-BpRhgBt9.js"),[]),path:"/solutions/marketplaces/orderbook/02-quickstart",type:"mdx",filePath:"solutions/marketplaces/orderbook/02-quickstart.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-quickstart-BpRhgBt9.js"),[]),path:"/solutions/marketplaces/orderbook/02-quickstart.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/02-quickstart.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-fiat-on-ramps-Cd245V9w.js"),[]),path:"/solutions/payments/onramps/01-fiat-on-ramps",type:"mdx",filePath:"solutions/payments/onramps/01-fiat-on-ramps.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-fiat-on-ramps-Cd245V9w.js"),[]),path:"/solutions/payments/onramps/01-fiat-on-ramps.html",type:"mdx",filePath:"solutions/payments/onramps/01-fiat-on-ramps.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-deployment-By40m2sO.js"),__vite__mapDeps([22,1])),path:"/solutions/technical-references/internals/01-deployment",type:"mdx",filePath:"solutions/technical-references/internals/01-deployment.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-deployment-By40m2sO.js"),__vite__mapDeps([22,1])),path:"/solutions/technical-references/internals/01-deployment.html",type:"mdx",filePath:"solutions/technical-references/internals/01-deployment.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-why-DAXaMsU-.js"),[]),path:"/solutions/technical-references/wallet-contracts/01-why",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/01-why.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-why-DAXaMsU-.js"),[]),path:"/solutions/technical-references/wallet-contracts/01-why.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/01-why.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-overview-CkEtw05F.js"),[]),path:"/solutions/wallets/embedded-wallet/01-overview",type:"mdx",filePath:"solutions/wallets/embedded-wallet/01-overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-overview-CkEtw05F.js"),[]),path:"/solutions/wallets/embedded-wallet/01-overview.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/01-overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-quickstart--nv7V4Yc.js"),[]),path:"/solutions/wallets/embedded-wallet/02-quickstart",type:"mdx",filePath:"solutions/wallets/embedded-wallet/02-quickstart.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-quickstart--nv7V4Yc.js"),[]),path:"/solutions/wallets/embedded-wallet/02-quickstart.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/02-quickstart.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./07-Architecture-BcBe-PC2.js"),[]),path:"/solutions/wallets/embedded-wallet/07-Architecture",type:"mdx",filePath:"solutions/wallets/embedded-wallet/07-Architecture.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./07-Architecture-BcBe-PC2.js"),[]),path:"/solutions/wallets/embedded-wallet/07-Architecture.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/07-Architecture.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-overview-CIC96WUX.js"),[]),path:"/solutions/wallets/universal-wallet/01-overview",type:"mdx",filePath:"solutions/wallets/universal-wallet/01-overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-overview-CIC96WUX.js"),[]),path:"/solutions/wallets/universal-wallet/01-overview.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/01-overview.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-quickstart-DQkU9QH6.js"),[]),path:"/solutions/wallets/universal-wallet/02-quickstart",type:"mdx",filePath:"solutions/wallets/universal-wallet/02-quickstart.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-quickstart-DQkU9QH6.js"),[]),path:"/solutions/wallets/universal-wallet/02-quickstart.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/02-quickstart.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-sequence-kit-BaLVgDtU.js"),[]),path:"/solutions/wallets/universal-wallet/04-sequence-kit",type:"mdx",filePath:"solutions/wallets/universal-wallet/04-sequence-kit.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-sequence-kit-BaLVgDtU.js"),[]),path:"/solutions/wallets/universal-wallet/04-sequence-kit.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/04-sequence-kit.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-platforms-BG2ngyqG.js"),[]),path:"/solutions/wallets/universal-wallet/05-platforms",type:"mdx",filePath:"solutions/wallets/universal-wallet/05-platforms.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-platforms-BG2ngyqG.js"),[]),path:"/solutions/wallets/universal-wallet/05-platforms.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/05-platforms.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-fiat-on-ramps-BnTibKTi.js"),[]),path:"/solutions/wallets/universal-wallet/06-fiat-on-ramps",type:"mdx",filePath:"solutions/wallets/universal-wallet/06-fiat-on-ramps.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-fiat-on-ramps-BnTibKTi.js"),[]),path:"/solutions/wallets/universal-wallet/06-fiat-on-ramps.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/06-fiat-on-ramps.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./07-key-management-31l3CdaD.js"),[]),path:"/solutions/wallets/universal-wallet/07-key-management",type:"mdx",filePath:"solutions/wallets/universal-wallet/07-key-management.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./07-key-management-31l3CdaD.js"),[]),path:"/solutions/wallets/universal-wallet/07-key-management.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/07-key-management.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-get-top-orders-CLca8zvz.js"),__vite__mapDeps([23,1])),path:"/solutions/marketplaces/orderbook/examples/03-get-top-orders",type:"mdx",filePath:"solutions/marketplaces/orderbook/examples/03-get-top-orders.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-get-top-orders-CLca8zvz.js"),__vite__mapDeps([23,1])),path:"/solutions/marketplaces/orderbook/examples/03-get-top-orders.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/examples/03-get-top-orders.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-get-orderbook-BLMldV4p.js"),__vite__mapDeps([24,1])),path:"/solutions/marketplaces/orderbook/examples/04-get-orderbook",type:"mdx",filePath:"solutions/marketplaces/orderbook/examples/04-get-orderbook.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-get-orderbook-BLMldV4p.js"),__vite__mapDeps([24,1])),path:"/solutions/marketplaces/orderbook/examples/04-get-orderbook.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/examples/04-get-orderbook.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-get-user-activities-CQNuLaE7.js"),[]),path:"/solutions/marketplaces/orderbook/examples/05-get-user-activities",type:"mdx",filePath:"solutions/marketplaces/orderbook/examples/05-get-user-activities.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-get-user-activities-CQNuLaE7.js"),[]),path:"/solutions/marketplaces/orderbook/examples/05-get-user-activities.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/examples/05-get-user-activities.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-orderbook-transactions-DqH4CAJH.js"),__vite__mapDeps([25,1])),path:"/solutions/marketplaces/orderbook/examples/06-orderbook-transactions",type:"mdx",filePath:"solutions/marketplaces/orderbook/examples/06-orderbook-transactions.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-orderbook-transactions-DqH4CAJH.js"),__vite__mapDeps([25,1])),path:"/solutions/marketplaces/orderbook/examples/06-orderbook-transactions.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/examples/06-orderbook-transactions.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-deploy-C7jVGn4X.js"),__vite__mapDeps([26,1])),path:"/solutions/technical-references/internals/v1/01-deploy",type:"mdx",filePath:"solutions/technical-references/internals/v1/01-deploy.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-deploy-C7jVGn4X.js"),__vite__mapDeps([26,1])),path:"/solutions/technical-references/internals/v1/01-deploy.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/01-deploy.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-wallet-factory-R5wOcB3Z.js"),__vite__mapDeps([27,1])),path:"/solutions/technical-references/internals/v1/03-wallet-factory",type:"mdx",filePath:"solutions/technical-references/internals/v1/03-wallet-factory.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-wallet-factory-R5wOcB3Z.js"),__vite__mapDeps([27,1])),path:"/solutions/technical-references/internals/v1/03-wallet-factory.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/03-wallet-factory.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-wallet-configuration-DagmVdyS.js"),[]),path:"/solutions/technical-references/internals/v1/04-wallet-configuration",type:"mdx",filePath:"solutions/technical-references/internals/v1/04-wallet-configuration.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-wallet-configuration-DagmVdyS.js"),[]),path:"/solutions/technical-references/internals/v1/04-wallet-configuration.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/04-wallet-configuration.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-modules-and-updates-D6-_b8g4.js"),[]),path:"/solutions/technical-references/internals/v1/05-modules-and-updates",type:"mdx",filePath:"solutions/technical-references/internals/v1/05-modules-and-updates.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-modules-and-updates-D6-_b8g4.js"),[]),path:"/solutions/technical-references/internals/v1/05-modules-and-updates.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/05-modules-and-updates.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-main-module-upgradeable-qn_mvGhb.js"),[]),path:"/solutions/technical-references/internals/v1/06-main-module-upgradeable",type:"mdx",filePath:"solutions/technical-references/internals/v1/06-main-module-upgradeable.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-main-module-upgradeable-qn_mvGhb.js"),[]),path:"/solutions/technical-references/internals/v1/06-main-module-upgradeable.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/06-main-module-upgradeable.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./08-signature-encoding--DDkWq4i.js"),[]),path:"/solutions/technical-references/internals/v1/08-signature-encoding",type:"mdx",filePath:"solutions/technical-references/internals/v1/08-signature-encoding.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./08-signature-encoding--DDkWq4i.js"),[]),path:"/solutions/technical-references/internals/v1/08-signature-encoding.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/08-signature-encoding.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./09-nested-transaction-batching-i_3yyQlj.js"),[]),path:"/solutions/technical-references/internals/v1/09-nested-transaction-batching",type:"mdx",filePath:"solutions/technical-references/internals/v1/09-nested-transaction-batching.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./09-nested-transaction-batching-i_3yyQlj.js"),[]),path:"/solutions/technical-references/internals/v1/09-nested-transaction-batching.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/09-nested-transaction-batching.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./10-guest-module-aJInQEuh.js"),[]),path:"/solutions/technical-references/internals/v1/10-guest-module",type:"mdx",filePath:"solutions/technical-references/internals/v1/10-guest-module.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./10-guest-module-aJInQEuh.js"),[]),path:"/solutions/technical-references/internals/v1/10-guest-module.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/10-guest-module.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./11-wallet-context-Bq48GAe9.js"),[]),path:"/solutions/technical-references/internals/v1/11-wallet-context",type:"mdx",filePath:"solutions/technical-references/internals/v1/11-wallet-context.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./11-wallet-context-Bq48GAe9.js"),[]),path:"/solutions/technical-references/internals/v1/11-wallet-context.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/11-wallet-context.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./12-contract-audits-CQhSuOeI.js"),[]),path:"/solutions/technical-references/internals/v1/12-contract-audits",type:"mdx",filePath:"solutions/technical-references/internals/v1/12-contract-audits.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./12-contract-audits-CQhSuOeI.js"),[]),path:"/solutions/technical-references/internals/v1/12-contract-audits.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/12-contract-audits.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-deploy-BFX8y6pi.js"),__vite__mapDeps([28,1])),path:"/solutions/technical-references/internals/v2/01-deploy",type:"mdx",filePath:"solutions/technical-references/internals/v2/01-deploy.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-deploy-BFX8y6pi.js"),__vite__mapDeps([28,1])),path:"/solutions/technical-references/internals/v2/01-deploy.html",type:"mdx",filePath:"solutions/technical-references/internals/v2/01-deploy.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-configuration-Ke_7PJJc.js"),[]),path:"/solutions/technical-references/internals/v2/04-configuration",type:"mdx",filePath:"solutions/technical-references/internals/v2/04-configuration.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-configuration-Ke_7PJJc.js"),[]),path:"/solutions/technical-references/internals/v2/04-configuration.html",type:"mdx",filePath:"solutions/technical-references/internals/v2/04-configuration.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-manage-sessions-4mTx5Qtc.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/03-manage-sessions",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/03-manage-sessions.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-manage-sessions-4mTx5Qtc.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/03-manage-sessions.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/03-manage-sessions.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-use-wallets-C_DQ6UCq.js"),__vite__mapDeps([29,1])),path:"/solutions/wallets/embedded-wallet/examples/04-use-wallets",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/04-use-wallets.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-use-wallets-C_DQ6UCq.js"),__vite__mapDeps([29,1])),path:"/solutions/wallets/embedded-wallet/examples/04-use-wallets.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/04-use-wallets.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-validation-fu6h6RT4.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/05-validation",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/05-validation.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-validation-fu6h6RT4.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/05-validation.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/05-validation.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-transaction-receipts-kCr4ctoT.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/06-transaction-receipts",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/06-transaction-receipts.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-transaction-receipts-kCr4ctoT.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/06-transaction-receipts.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/06-transaction-receipts.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-connect-wallet-DqzhSN1W.js"),__vite__mapDeps([30,1])),path:"/solutions/wallets/universal-wallet/examples/01-connect-wallet",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/01-connect-wallet.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./01-connect-wallet-DqzhSN1W.js"),__vite__mapDeps([30,1])),path:"/solutions/wallets/universal-wallet/examples/01-connect-wallet.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/01-connect-wallet.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-auth-address-60THvB2w.js"),[]),path:"/solutions/wallets/universal-wallet/examples/02-auth-address",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/02-auth-address.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./02-auth-address-60THvB2w.js"),[]),path:"/solutions/wallets/universal-wallet/examples/02-auth-address.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/02-auth-address.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-sign-message-MaCTUdGD.js"),__vite__mapDeps([31,1])),path:"/solutions/wallets/universal-wallet/examples/03-sign-message",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/03-sign-message.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./03-sign-message-MaCTUdGD.js"),__vite__mapDeps([31,1])),path:"/solutions/wallets/universal-wallet/examples/03-sign-message.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/03-sign-message.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-session-keys-DJCy4k-0.js"),[]),path:"/solutions/wallets/universal-wallet/examples/04-session-keys",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/04-session-keys.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./04-session-keys-DJCy4k-0.js"),[]),path:"/solutions/wallets/universal-wallet/examples/04-session-keys.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/04-session-keys.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-send-transaction-Cd0zCRZo.js"),[]),path:"/solutions/wallets/universal-wallet/examples/05-send-transaction",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/05-send-transaction.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./05-send-transaction-Cd0zCRZo.js"),[]),path:"/solutions/wallets/universal-wallet/examples/05-send-transaction.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/05-send-transaction.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-send-erc20-DSzwbCHJ.js"),[]),path:"/solutions/wallets/universal-wallet/examples/06-send-erc20",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/06-send-erc20.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./06-send-erc20-DSzwbCHJ.js"),[]),path:"/solutions/wallets/universal-wallet/examples/06-send-erc20.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/06-send-erc20.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./07-send-erc721-Crk85xhq.js"),[]),path:"/solutions/wallets/universal-wallet/examples/07-send-erc721",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/07-send-erc721.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./07-send-erc721-Crk85xhq.js"),[]),path:"/solutions/wallets/universal-wallet/examples/07-send-erc721.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/07-send-erc721.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./08-send-erc1155-vmPKw9IF.js"),[]),path:"/solutions/wallets/universal-wallet/examples/08-send-erc1155",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/08-send-erc1155.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./08-send-erc1155-vmPKw9IF.js"),[]),path:"/solutions/wallets/universal-wallet/examples/08-send-erc1155.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/08-send-erc1155.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./09-send-batch-transactions-D-VMCWEl.js"),[]),path:"/solutions/wallets/universal-wallet/examples/09-send-batch-transactions",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/09-send-batch-transactions.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./09-send-batch-transactions-D-VMCWEl.js"),[]),path:"/solutions/wallets/universal-wallet/examples/09-send-batch-transactions.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/09-send-batch-transactions.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./10-building-backends-D9uYDf2v.js"),[]),path:"/solutions/wallets/universal-wallet/examples/10-building-backends",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/10-building-backends.mdx",lastUpdatedAt:1712829339e3},{lazy:()=>b(()=>import("./10-building-backends-D9uYDf2v.js"),[]),path:"/solutions/wallets/universal-wallet/examples/10-building-backends.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/10-building-backends.mdx",lastUpdatedAt:1712829339e3}];var zs={horizontalPadding:"var(--vocs-content_horizontalPadding)",verticalPadding:"var(--vocs-content_verticalPadding)",width:"var(--vocs-content_width)"},q3={default:"system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif",mono:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace'},Y3={default:"var(--vocs-fontFamily_default)",mono:"var(--vocs-fontFamily_mono)"},Jp={white:"var(--vocs-color_white)",black:"var(--vocs-color_black)",background:"var(--vocs-color_background)",background2:"var(--vocs-color_background2)",background3:"var(--vocs-color_background3)",background4:"var(--vocs-color_background4)",background5:"var(--vocs-color_background5)",backgroundAccent:"var(--vocs-color_backgroundAccent)",backgroundAccentHover:"var(--vocs-color_backgroundAccentHover)",backgroundAccentText:"var(--vocs-color_backgroundAccentText)",backgroundBlueTint:"var(--vocs-color_backgroundBlueTint)",backgroundDark:"var(--vocs-color_backgroundDark)",backgroundGreenTint:"var(--vocs-color_backgroundGreenTint)",backgroundGreenTint2:"var(--vocs-color_backgroundGreenTint2)",backgroundIrisTint:"var(--vocs-color_backgroundIrisTint)",backgroundRedTint:"var(--vocs-color_backgroundRedTint)",backgroundRedTint2:"var(--vocs-color_backgroundRedTint2)",backgroundYellowTint:"var(--vocs-color_backgroundYellowTint)",border:"var(--vocs-color_border)",border2:"var(--vocs-color_border2)",borderAccent:"var(--vocs-color_borderAccent)",borderBlue:"var(--vocs-color_borderBlue)",borderGreen:"var(--vocs-color_borderGreen)",borderIris:"var(--vocs-color_borderIris)",borderRed:"var(--vocs-color_borderRed)",borderYellow:"var(--vocs-color_borderYellow)",heading:"var(--vocs-color_heading)",inverted:"var(--vocs-color_inverted)",shadow:"var(--vocs-color_shadow)",shadow2:"var(--vocs-color_shadow2)",text:"var(--vocs-color_text)",text2:"var(--vocs-color_text2)",text3:"var(--vocs-color_text3)",text4:"var(--vocs-color_text4)",textAccent:"var(--vocs-color_textAccent)",textAccentHover:"var(--vocs-color_textAccentHover)",textBlue:"var(--vocs-color_textBlue)",textBlueHover:"var(--vocs-color_textBlueHover)",textGreen:"var(--vocs-color_textGreen)",textGreenHover:"var(--vocs-color_textGreenHover)",textIris:"var(--vocs-color_textIris)",textIrisHover:"var(--vocs-color_textIrisHover)",textRed:"var(--vocs-color_textRed)",textRedHover:"var(--vocs-color_textRedHover)",textYellow:"var(--vocs-color_textYellow)",textYellowHover:"var(--vocs-color_textYellowHover)",title:"var(--vocs-color_title)"},Us={0:"var(--vocs-space_0)",1:"var(--vocs-space_1)",2:"var(--vocs-space_2)",3:"var(--vocs-space_3)",4:"var(--vocs-space_4)",6:"var(--vocs-space_6)",8:"var(--vocs-space_8)",12:"var(--vocs-space_12)",14:"var(--vocs-space_14)",16:"var(--vocs-space_16)",18:"var(--vocs-space_18)",20:"var(--vocs-space_20)",22:"var(--vocs-space_22)",24:"var(--vocs-space_24)",28:"var(--vocs-space_28)",32:"var(--vocs-space_32)",36:"var(--vocs-space_36)",40:"var(--vocs-space_40)",44:"var(--vocs-space_44)",48:"var(--vocs-space_48)",56:"var(--vocs-space_56)",64:"var(--vocs-space_64)",72:"var(--vocs-space_72)",80:"var(--vocs-space_80)"};function Gv(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t ")," does not exist in object"));n=n[r]}return n}function qv(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],r={};for(var o in e){var i=e[o],a=[...n,o];typeof i=="string"||typeof i=="number"||i==null?r[o]=t(i,a):typeof i=="object"&&!Array.isArray(i)?r[o]=qv(i,t,a):console.warn('Skipping invalid key "'.concat(a.join("."),'". Should be a string, number, null or object. Received: "').concat(Array.isArray(i)?"Array":typeof i,'"'))}return r}function qt(e,t){var n={};if(typeof t=="object"){var r=e;qv(t,(l,s)=>{if(l!=null){var c=Q3(r,s);n[eh(c)]=String(l)}})}else{var o=e;for(var i in o){var a=o[i];a!=null&&(n[eh(i)]=a)}}return Object.defineProperty(n,"toString",{value:function(){return Object.keys(this).map(s=>"".concat(s,":").concat(this[s])).join(";")},writable:!1}),n}var Z3="var(--vocs_ExternalLink_iconUrl)",X3="vocs_ExternalLink";const J3=p.forwardRef(({className:e,children:t,hideExternalIcon:n,href:r,...o},i)=>{const{basePath:a}=Je(),l=a;return x.jsx("a",{ref:i,className:D(e,n||typeof t!="string"?void 0:X3),href:r,target:"_blank",rel:"noopener noreferrer",style:qt({[Z3]:`url(${l}/.vocs/icons/arrow-diagonal.svg)`}),...o,children:t})});var th="vocs_Link_accent_underlined",nh="vocs_Link",rh="vocs_Link_styleless",uc=new Map,xa=new WeakMap,oh=0,ew=void 0;function tw(e){return e?(xa.has(e)||(oh+=1,xa.set(e,oh.toString())),xa.get(e)):"0"}function nw(e){return Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${t}_${t==="root"?tw(e.root):e[t]}`).toString()}function rw(e){const t=nw(e);let n=uc.get(t);if(!n){const r=new Map;let o;const i=new IntersectionObserver(a=>{a.forEach(l=>{var s;const c=l.isIntersecting&&o.some(d=>l.intersectionRatio>=d);e.trackVisibility&&typeof l.isVisible>"u"&&(l.isVisible=c),(s=r.get(l.target))==null||s.forEach(d=>{d(c,l)})})},e);o=i.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:i,elements:r},uc.set(t,n)}return n}function ow(e,t,n={},r=ew){if(typeof window.IntersectionObserver>"u"&&r!==void 0){const s=e.getBoundingClientRect();return t(r,{isIntersecting:r,target:e,intersectionRatio:typeof n.threshold=="number"?n.threshold:0,time:0,boundingClientRect:s,intersectionRect:s,rootBounds:s}),()=>{}}const{id:o,observer:i,elements:a}=rw(n),l=a.get(e)||[];return a.has(e)||a.set(e,l),l.push(t),i.observe(e),function(){l.splice(l.indexOf(t),1),l.length===0&&(a.delete(e),i.unobserve(e)),a.size===0&&(i.disconnect(),uc.delete(o))}}function Yv({threshold:e,delay:t,trackVisibility:n,rootMargin:r,root:o,triggerOnce:i,skip:a,initialInView:l,fallbackInView:s,onChange:c}={}){var d;const[u,f]=p.useState(null),h=p.useRef(),[y,g]=p.useState({inView:!!l,entry:void 0});h.current=c,p.useEffect(()=>{if(a||!u)return;let _;return _=ow(u,(E,C)=>{g({inView:E,entry:C}),h.current&&h.current(E,C),C.isIntersecting&&i&&_&&(_(),_=void 0)},{root:o,rootMargin:r,threshold:e,trackVisibility:n,delay:t},s),()=>{_&&_()}},[Array.isArray(e)?e.toString():e,u,o,r,i,a,n,s,t]);const w=(d=y.entry)==null?void 0:d.target,m=p.useRef();!u&&w&&!i&&!a&&m.current!==w&&(m.current=w,g({inView:!!l,entry:void 0}));const v=[f,y.inView,y.entry];return v.ref=v[0],v.inView=v[1],v.entry=v[2],v}function iw(...e){return t=>{aw(t,...e)}}function aw(e,...t){t.forEach(n=>{typeof n=="function"?n(e):n!=null&&(n.current=e)})}const Zn=p.forwardRef((e,t)=>{const n=()=>{var i;return(i=Hd.find(a=>a.path===e.to))==null?void 0:i.lazy()},{ref:r,inView:o}=Yv();return p.useEffect(()=>{o&&n()},[o,n]),x.jsx(Vv,{ref:iw(t,r),...e})}),rn=p.forwardRef((e,t)=>{const{href:n,variant:r="accent underlined"}=e,{pathname:o}=Re();if(n!=null&&n.match(/^(www|https?)/))return x.jsx(J3,{...e,ref:t,className:D(e.className,nh,r==="accent underlined"&&th,r==="styleless"&&rh),hideExternalIcon:e.hideExternalIcon});const[i,a]=(n||"").split("#"),l=`${i||o}${a?`#${a}`:""}`;return x.jsx(Zn,{...e,ref:t,className:D(e.className,nh,r==="accent underlined"&&th,r==="styleless"&&rh),to:l})});var lw="vocs_NotFound_divider",sw="vocs_NotFound",uw="vocs_H1",Qv="vocs_Heading",Zv="vocs_Heading_slugTarget";function Oo({level:e,...t}){const n=`h${e}`;return x.jsxs(n,{...t,id:void 0,className:D(t.className,Qv),children:[x.jsx("div",{id:t.id,className:Zv}),t.children]})}function Xv(e){return x.jsx(Oo,{...e,className:D(e.className,uw),level:1})}var cw="vocs_Paragraph";function Jv(e){return x.jsx("p",{...e,className:D(e.className,cw)})}function dw(){return x.jsxs("div",{className:sw,children:[x.jsx(Xv,{children:"Page Not Found"}),x.jsx("div",{style:{height:Us[24]}}),x.jsx("hr",{className:lw}),x.jsx("div",{style:{height:Us[24]}}),x.jsx(Jv,{children:"The page you were looking for could not be found."}),x.jsx("div",{style:{height:Us[8]}}),x.jsx(rn,{href:"/",children:"Go to Home Page"})]})}var fw="var(--vocs_Banner_bannerBackgroundColor)",pw="var(--vocs_Banner_bannerHeight)",hw="var(--vocs_Banner_bannerTextColor)",mw="vocs_Banner_closeButton",vw="vocs_Banner_content",gw="vocs_Banner_inner",yw="vocs_Banner";const xw=Object.getPrototypeOf(_w).constructor;async function _w(e,t){return new xw(String(e))(t)}function ww(e,t){return new Function(String(e))(t)}function Rr(e,t){if(e==null)return{};var n={},r=Object.keys(e),o,i;for(i=0;i=0)&&(n[o]=e[o]);return n}var Ew=["color"],kw=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,Ew);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M6.85355 3.14645C7.04882 3.34171 7.04882 3.65829 6.85355 3.85355L3.70711 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H3.70711L6.85355 11.1464C7.04882 11.3417 7.04882 11.6583 6.85355 11.8536C6.65829 12.0488 6.34171 12.0488 6.14645 11.8536L2.14645 7.85355C1.95118 7.65829 1.95118 7.34171 2.14645 7.14645L6.14645 3.14645C6.34171 2.95118 6.65829 2.95118 6.85355 3.14645Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),bw=["color"],Cw=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,bw);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M6.1584 3.13508C6.35985 2.94621 6.67627 2.95642 6.86514 3.15788L10.6151 7.15788C10.7954 7.3502 10.7954 7.64949 10.6151 7.84182L6.86514 11.8418C6.67627 12.0433 6.35985 12.0535 6.1584 11.8646C5.95694 11.6757 5.94673 11.3593 6.1356 11.1579L9.565 7.49985L6.1356 3.84182C5.94673 3.64036 5.95694 3.32394 6.1584 3.13508Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),Pw=["color"],Aw=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,Pw);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M12.8536 2.85355C13.0488 2.65829 13.0488 2.34171 12.8536 2.14645C12.6583 1.95118 12.3417 1.95118 12.1464 2.14645L7.5 6.79289L2.85355 2.14645C2.65829 1.95118 2.34171 1.95118 2.14645 2.14645C1.95118 2.34171 1.95118 2.65829 2.14645 2.85355L6.79289 7.5L2.14645 12.1464C1.95118 12.3417 1.95118 12.6583 2.14645 12.8536C2.34171 13.0488 2.65829 13.0488 2.85355 12.8536L7.5 8.20711L12.1464 12.8536C12.3417 13.0488 12.6583 13.0488 12.8536 12.8536C13.0488 12.6583 13.0488 12.3417 12.8536 12.1464L8.20711 7.5L12.8536 2.85355Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),Sw=["color"],Tw=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,Sw);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M3.5 2C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V6H8.5C8.22386 6 8 5.77614 8 5.5V2H3.5ZM9 2.70711L11.2929 5H9V2.70711ZM2 2.5C2 1.67157 2.67157 1 3.5 1H8.5C8.63261 1 8.75979 1.05268 8.85355 1.14645L12.8536 5.14645C12.9473 5.24021 13 5.36739 13 5.5V12.5C13 13.3284 12.3284 14 11.5 14H3.5C2.67157 14 2 13.3284 2 12.5V2.5Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),Rw=["color"],$w=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,Rw);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M1.5 5.25C1.91421 5.25 2.25 4.91421 2.25 4.5C2.25 4.08579 1.91421 3.75 1.5 3.75C1.08579 3.75 0.75 4.08579 0.75 4.5C0.75 4.91421 1.08579 5.25 1.5 5.25ZM4 4.5C4 4.22386 4.22386 4 4.5 4H13.5C13.7761 4 14 4.22386 14 4.5C14 4.77614 13.7761 5 13.5 5H4.5C4.22386 5 4 4.77614 4 4.5ZM4.5 7C4.22386 7 4 7.22386 4 7.5C4 7.77614 4.22386 8 4.5 8H13.5C13.7761 8 14 7.77614 14 7.5C14 7.22386 13.7761 7 13.5 7H4.5ZM4.5 10C4.22386 10 4 10.2239 4 10.5C4 10.7761 4.22386 11 4.5 11H13.5C13.7761 11 14 10.7761 14 10.5C14 10.2239 13.7761 10 13.5 10H4.5ZM2.25 7.5C2.25 7.91421 1.91421 8.25 1.5 8.25C1.08579 8.25 0.75 7.91421 0.75 7.5C0.75 7.08579 1.08579 6.75 1.5 6.75C1.91421 6.75 2.25 7.08579 2.25 7.5ZM1.5 11.25C1.91421 11.25 2.25 10.9142 2.25 10.5C2.25 10.0858 1.91421 9.75 1.5 9.75C1.08579 9.75 0.75 10.0858 0.75 10.5C0.75 10.9142 1.08579 11.25 1.5 11.25Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),Ow=["color"],Wd=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,Ow);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),Iw=["color"],Lw=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Rr(e,Iw);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M12.1464 1.14645C12.3417 0.951184 12.6583 0.951184 12.8535 1.14645L14.8535 3.14645C15.0488 3.34171 15.0488 3.65829 14.8535 3.85355L10.9109 7.79618C10.8349 7.87218 10.7471 7.93543 10.651 7.9835L6.72359 9.94721C6.53109 10.0435 6.29861 10.0057 6.14643 9.85355C5.99425 9.70137 5.95652 9.46889 6.05277 9.27639L8.01648 5.34897C8.06455 5.25283 8.1278 5.16507 8.2038 5.08907L12.1464 1.14645ZM12.5 2.20711L8.91091 5.79618L7.87266 7.87267L8.12731 8.12732L10.2038 7.08907L13.7929 3.5L12.5 2.20711ZM9.99998 2L8.99998 3H4.9C4.47171 3 4.18056 3.00039 3.95552 3.01877C3.73631 3.03668 3.62421 3.06915 3.54601 3.10899C3.35785 3.20487 3.20487 3.35785 3.10899 3.54601C3.06915 3.62421 3.03669 3.73631 3.01878 3.95552C3.00039 4.18056 3 4.47171 3 4.9V11.1C3 11.5283 3.00039 11.8194 3.01878 12.0445C3.03669 12.2637 3.06915 12.3758 3.10899 12.454C3.20487 12.6422 3.35785 12.7951 3.54601 12.891C3.62421 12.9309 3.73631 12.9633 3.95552 12.9812C4.18056 12.9996 4.47171 13 4.9 13H11.1C11.5283 13 11.8194 12.9996 12.0445 12.9812C12.2637 12.9633 12.3758 12.9309 12.454 12.891C12.6422 12.7951 12.7951 12.6422 12.891 12.454C12.9309 12.3758 12.9633 12.2637 12.9812 12.0445C12.9996 11.8194 13 11.5283 13 11.1V6.99998L14 5.99998V11.1V11.1207C14 11.5231 14 11.8553 13.9779 12.1259C13.9549 12.407 13.9057 12.6653 13.782 12.908C13.5903 13.2843 13.2843 13.5903 12.908 13.782C12.6653 13.9057 12.407 13.9549 12.1259 13.9779C11.8553 14 11.5231 14 11.1207 14H11.1H4.9H4.87934C4.47686 14 4.14468 14 3.87409 13.9779C3.59304 13.9549 3.33469 13.9057 3.09202 13.782C2.7157 13.5903 2.40973 13.2843 2.21799 12.908C2.09434 12.6653 2.04506 12.407 2.0221 12.1259C1.99999 11.8553 1.99999 11.5231 2 11.1207V11.1206V11.1V4.9V4.87935V4.87932V4.87931C1.99999 4.47685 1.99999 4.14468 2.0221 3.87409C2.04506 3.59304 2.09434 3.33469 2.21799 3.09202C2.40973 2.71569 2.7157 2.40973 3.09202 2.21799C3.33469 2.09434 3.59304 2.04506 3.87409 2.0221C4.14468 1.99999 4.47685 1.99999 4.87932 2H4.87935H4.9H9.99998Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))});function xl(e,t){if(typeof e!="object"||e===null)return e;if(Array.isArray(e))return e.map((r,o)=>xl(r,o));const n=e.props.children?{...e.props,children:xl(e.props.children)}:e.props;return Z.createElement(e.type,{...n,key:t})}function Dw({hide:e}){const{banner:t}=Je(),n=p.useMemo(()=>{const r=(t==null?void 0:t.content)??"";if(!r)return null;if(typeof r!="string")return()=>xl(r);const{default:o}=ww(r,{...Xy,Fragment:p.Fragment});return o},[t]);return n?x.jsx("div",{className:D(yw),style:qt({[fw]:t==null?void 0:t.backgroundColor,[hw]:t==null?void 0:t.textColor}),children:x.jsxs("div",{className:D(gw),children:[x.jsx("div",{className:D(vw),children:x.jsx(n,{})}),(t==null?void 0:t.dismissable)!=="false"&&x.jsx("button",{className:D(mw),onClick:e,type:"button",children:x.jsx(Aw,{width:14,height:14})})]})}):null}var Nw="vocs_Content";function e1({children:e,className:t}){return x.jsx("article",{className:D(t,Nw),children:e})}function t1({items:e,pathname:t}){const n=t.replace(/\.html$/,""),r=[];for(const o of e)(o.link&&n.startsWith(o.match||o.link)||o.items&&t1({items:o.items,pathname:t}).length>0)&&r.push(o.id);return r}function Ki({items:e,pathname:t}){return p.useMemo(()=>t1({items:e,pathname:t}),[e,t])}function $r(){const e=p.useContext(n1);if(!e)throw new Error("`usePageData` must be used within `PageDataContext.Provider`.");return e}const n1=p.createContext(void 0);function Kl(){const{pathname:e}=Re(),t=Je(),{sidebar:n}=t;if(!n)return{items:[]};if(Array.isArray(n))return{items:n};const r=p.useMemo(()=>{const o=Object.keys(n).filter(i=>e.startsWith(i));return o[o.length-1]},[n,e]);return r?Array.isArray(n[r])?{key:r,items:n[r]}:{...n[r],key:r}:{items:[]}}function Or(){const e=Kl(),{frontmatter:t}=$r(),{layout:n,showLogo:r,showOutline:o,showSidebar:i,showTopNav:a}=t||{},l=n??"docs";return{layout:l,get showLogo(){return typeof r<"u"?r:!0},get showOutline(){return typeof o<"u"?o:l==="docs"},get showSidebar(){return e.items.length===0?!1:typeof i<"u"?i:!(l==="minimal"||l==="landing")},get showTopNav(){return typeof a<"u"?a:!0}}}function Mw(){const[e,t]=p.useState(()=>{if(!(typeof window>"u")){if(localStorage.getItem("vocs.theme")){const n=localStorage.getItem("vocs.theme");if(n)return n}return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}});return p.useEffect(()=>{e&&localStorage.setItem("vocs.theme",e),e==="dark"?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")},[e]),{theme:e,toggle(){t(n=>n==="light"?"dark":"light")}}}var jw="vocs_utils_visibleDark",Fw="vocs_utils_visibleLight",r1="vocs_utils_visuallyHidden";function q(){return q=Object.assign?Object.assign.bind():function(e){for(var t=1;te.forEach(n=>zw(n,t))}function Ue(...e){return p.useCallback(o1(...e),e)}function kn(e,t=[]){let n=[];function r(i,a){const l=p.createContext(a),s=n.length;n=[...n,a];function c(u){const{scope:f,children:h,...y}=u,g=(f==null?void 0:f[e][s])||l,w=p.useMemo(()=>y,Object.values(y));return p.createElement(g.Provider,{value:w},h)}function d(u,f){const h=(f==null?void 0:f[e][s])||l,y=p.useContext(h);if(y)return y;if(a!==void 0)return a;throw new Error(`\`${u}\` must be used within \`${i}\``)}return c.displayName=i+"Provider",[c,d]}const o=()=>{const i=n.map(a=>p.createContext(a));return function(l){const s=(l==null?void 0:l[e])||i;return p.useMemo(()=>({[`__scope${e}`]:{...l,[e]:s}}),[l,s])}};return o.scopeName=e,[r,Uw(o,...t)]}function Uw(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(i){const a=r.reduce((l,{useScope:s,scopeName:c})=>{const u=s(i)[`__scope${c}`];return{...l,...u}},{});return p.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return n.scopeName=t.scopeName,n}const yn=globalThis!=null&&globalThis.document?p.useLayoutEffect:()=>{},Vw=Wc.useId||(()=>{});let Bw=0;function on(e){const[t,n]=p.useState(Vw());return yn(()=>{e||n(r=>r??String(Bw++))},[e]),e||(t?`radix-${t}`:"")}function at(e){const t=p.useRef(e);return p.useEffect(()=>{t.current=e}),p.useMemo(()=>(...n)=>{var r;return(r=t.current)===null||r===void 0?void 0:r.call(t,...n)},[])}function ar({prop:e,defaultProp:t,onChange:n=()=>{}}){const[r,o]=Hw({defaultProp:t,onChange:n}),i=e!==void 0,a=i?e:r,l=at(n),s=p.useCallback(c=>{if(i){const u=typeof c=="function"?c(e):c;u!==e&&l(u)}else o(c)},[i,e,o,l]);return[a,s]}function Hw({defaultProp:e,onChange:t}){const n=p.useState(e),[r]=n,o=p.useRef(r),i=at(t);return p.useEffect(()=>{o.current!==r&&(i(r),o.current=r)},[r,o,i]),n}const bo=p.forwardRef((e,t)=>{const{children:n,...r}=e,o=p.Children.toArray(n),i=o.find(Kw);if(i){const a=i.props.children,l=o.map(s=>s===i?p.Children.count(a)>1?p.Children.only(null):p.isValidElement(a)?a.props.children:null:s);return p.createElement(cc,q({},r,{ref:t}),p.isValidElement(a)?p.cloneElement(a,void 0,l):null)}return p.createElement(cc,q({},r,{ref:t}),n)});bo.displayName="Slot";const cc=p.forwardRef((e,t)=>{const{children:n,...r}=e;return p.isValidElement(n)?p.cloneElement(n,{...Gw(r,n.props),ref:t?o1(t,n.ref):n.ref}):p.Children.count(n)>1?p.Children.only(null):null});cc.displayName="SlotClone";const Ww=({children:e})=>p.createElement(p.Fragment,null,e);function Kw(e){return p.isValidElement(e)&&e.type===Ww}function Gw(e,t){const n={...t};for(const r in t){const o=e[r],i=t[r];/^on[A-Z]/.test(r)?o&&i?n[r]=(...l)=>{i(...l),o(...l)}:o&&(n[r]=o):r==="style"?n[r]={...o,...i}:r==="className"&&(n[r]=[o,i].filter(Boolean).join(" "))}return{...e,...n}}const qw=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],fe=qw.reduce((e,t)=>{const n=p.forwardRef((r,o)=>{const{asChild:i,...a}=r,l=i?bo:t;return p.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),p.createElement(l,q({},a,{ref:o}))});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function dc(e,t){e&&Ro.flushSync(()=>e.dispatchEvent(t))}function Yw(e,t=globalThis==null?void 0:globalThis.document){const n=at(e);p.useEffect(()=>{const r=o=>{o.key==="Escape"&&n(o)};return t.addEventListener("keydown",r),()=>t.removeEventListener("keydown",r)},[n,t])}const fc="dismissableLayer.update",Qw="dismissableLayer.pointerDownOutside",Zw="dismissableLayer.focusOutside";let ih;const Xw=p.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Kd=p.forwardRef((e,t)=>{var n;const{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:o,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:l,onDismiss:s,...c}=e,d=p.useContext(Xw),[u,f]=p.useState(null),h=(n=u==null?void 0:u.ownerDocument)!==null&&n!==void 0?n:globalThis==null?void 0:globalThis.document,[,y]=p.useState({}),g=Ue(t,A=>f(A)),w=Array.from(d.layers),[m]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),v=w.indexOf(m),_=u?w.indexOf(u):-1,E=d.layersWithOutsidePointerEventsDisabled.size>0,C=_>=v,k=Jw(A=>{const S=A.target,O=[...d.branches].some(j=>j.contains(S));!C||O||(i==null||i(A),l==null||l(A),A.defaultPrevented||s==null||s())},h),P=eE(A=>{const S=A.target;[...d.branches].some(j=>j.contains(S))||(a==null||a(A),l==null||l(A),A.defaultPrevented||s==null||s())},h);return Yw(A=>{_===d.layers.size-1&&(o==null||o(A),!A.defaultPrevented&&s&&(A.preventDefault(),s()))},h),p.useEffect(()=>{if(u)return r&&(d.layersWithOutsidePointerEventsDisabled.size===0&&(ih=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),d.layersWithOutsidePointerEventsDisabled.add(u)),d.layers.add(u),ah(),()=>{r&&d.layersWithOutsidePointerEventsDisabled.size===1&&(h.body.style.pointerEvents=ih)}},[u,h,r,d]),p.useEffect(()=>()=>{u&&(d.layers.delete(u),d.layersWithOutsidePointerEventsDisabled.delete(u),ah())},[u,d]),p.useEffect(()=>{const A=()=>y({});return document.addEventListener(fc,A),()=>document.removeEventListener(fc,A)},[]),p.createElement(fe.div,q({},c,{ref:g,style:{pointerEvents:E?C?"auto":"none":void 0,...e.style},onFocusCapture:le(e.onFocusCapture,P.onFocusCapture),onBlurCapture:le(e.onBlurCapture,P.onBlurCapture),onPointerDownCapture:le(e.onPointerDownCapture,k.onPointerDownCapture)}))});function Jw(e,t=globalThis==null?void 0:globalThis.document){const n=at(e),r=p.useRef(!1),o=p.useRef(()=>{});return p.useEffect(()=>{const i=l=>{if(l.target&&!r.current){let c=function(){i1(Qw,n,s,{discrete:!0})};const s={originalEvent:l};l.pointerType==="touch"?(t.removeEventListener("click",o.current),o.current=c,t.addEventListener("click",o.current,{once:!0})):c()}else t.removeEventListener("click",o.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener("pointerdown",i)},0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",i),t.removeEventListener("click",o.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function eE(e,t=globalThis==null?void 0:globalThis.document){const n=at(e),r=p.useRef(!1);return p.useEffect(()=>{const o=i=>{i.target&&!r.current&&i1(Zw,n,{originalEvent:i},{discrete:!1})};return t.addEventListener("focusin",o),()=>t.removeEventListener("focusin",o)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function ah(){const e=new CustomEvent(fc);document.dispatchEvent(e)}function i1(e,t,n,{discrete:r}){const o=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&o.addEventListener(e,t,{once:!0}),r?dc(o,i):o.dispatchEvent(i)}const Vs="focusScope.autoFocusOnMount",Bs="focusScope.autoFocusOnUnmount",lh={bubbles:!1,cancelable:!0},a1=p.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:o,onUnmountAutoFocus:i,...a}=e,[l,s]=p.useState(null),c=at(o),d=at(i),u=p.useRef(null),f=Ue(t,g=>s(g)),h=p.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;p.useEffect(()=>{if(r){let g=function(_){if(h.paused||!l)return;const E=_.target;l.contains(E)?u.current=E:Ln(u.current,{select:!0})},w=function(_){if(h.paused||!l)return;const E=_.relatedTarget;E!==null&&(l.contains(E)||Ln(u.current,{select:!0}))},m=function(_){if(document.activeElement===document.body)for(const C of _)C.removedNodes.length>0&&Ln(l)};document.addEventListener("focusin",g),document.addEventListener("focusout",w);const v=new MutationObserver(m);return l&&v.observe(l,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",g),document.removeEventListener("focusout",w),v.disconnect()}}},[r,l,h.paused]),p.useEffect(()=>{if(l){uh.add(h);const g=document.activeElement;if(!l.contains(g)){const m=new CustomEvent(Vs,lh);l.addEventListener(Vs,c),l.dispatchEvent(m),m.defaultPrevented||(tE(aE(l1(l)),{select:!0}),document.activeElement===g&&Ln(l))}return()=>{l.removeEventListener(Vs,c),setTimeout(()=>{const m=new CustomEvent(Bs,lh);l.addEventListener(Bs,d),l.dispatchEvent(m),m.defaultPrevented||Ln(g??document.body,{select:!0}),l.removeEventListener(Bs,d),uh.remove(h)},0)}}},[l,c,d,h]);const y=p.useCallback(g=>{if(!n&&!r||h.paused)return;const w=g.key==="Tab"&&!g.altKey&&!g.ctrlKey&&!g.metaKey,m=document.activeElement;if(w&&m){const v=g.currentTarget,[_,E]=nE(v);_&&E?!g.shiftKey&&m===E?(g.preventDefault(),n&&Ln(_,{select:!0})):g.shiftKey&&m===_&&(g.preventDefault(),n&&Ln(E,{select:!0})):m===v&&g.preventDefault()}},[n,r,h.paused]);return p.createElement(fe.div,q({tabIndex:-1},a,{ref:f,onKeyDown:y}))});function tE(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(Ln(r,{select:t}),document.activeElement!==n)return}function nE(e){const t=l1(e),n=sh(t,e),r=sh(t.reverse(),e);return[n,r]}function l1(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const o=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||o?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function sh(e,t){for(const n of e)if(!rE(n,{upTo:t}))return n}function rE(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function oE(e){return e instanceof HTMLInputElement&&"select"in e}function Ln(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&oE(e)&&t&&e.select()}}const uh=iE();function iE(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=ch(e,t),e.unshift(t)},remove(t){var n;e=ch(e,t),(n=e[0])===null||n===void 0||n.resume()}}}function ch(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function aE(e){return e.filter(t=>t.tagName!=="A")}const s1=p.forwardRef((e,t)=>{var n;const{container:r=globalThis==null||(n=globalThis.document)===null||n===void 0?void 0:n.body,...o}=e;return r?bv.createPortal(p.createElement(fe.div,q({},o,{ref:t})),r):null});function lE(e,t){return p.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const bn=e=>{const{present:t,children:n}=e,r=sE(t),o=typeof n=="function"?n({present:r.isPresent}):p.Children.only(n),i=Ue(r.ref,o.ref);return typeof n=="function"||r.isPresent?p.cloneElement(o,{ref:i}):null};bn.displayName="Presence";function sE(e){const[t,n]=p.useState(),r=p.useRef({}),o=p.useRef(e),i=p.useRef("none"),a=e?"mounted":"unmounted",[l,s]=lE(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return p.useEffect(()=>{const c=_a(r.current);i.current=l==="mounted"?c:"none"},[l]),yn(()=>{const c=r.current,d=o.current;if(d!==e){const f=i.current,h=_a(c);e?s("MOUNT"):h==="none"||(c==null?void 0:c.display)==="none"?s("UNMOUNT"):s(d&&f!==h?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,s]),yn(()=>{if(t){const c=u=>{const h=_a(r.current).includes(u.animationName);u.target===t&&h&&Ro.flushSync(()=>s("ANIMATION_END"))},d=u=>{u.target===t&&(i.current=_a(r.current))};return t.addEventListener("animationstart",d),t.addEventListener("animationcancel",c),t.addEventListener("animationend",c),()=>{t.removeEventListener("animationstart",d),t.removeEventListener("animationcancel",c),t.removeEventListener("animationend",c)}}else s("ANIMATION_END")},[t,s]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:p.useCallback(c=>{c&&(r.current=getComputedStyle(c)),n(c)},[])}}function _a(e){return(e==null?void 0:e.animationName)||"none"}let Hs=0;function u1(){p.useEffect(()=>{var e,t;const n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",(e=n[0])!==null&&e!==void 0?e:dh()),document.body.insertAdjacentElement("beforeend",(t=n[1])!==null&&t!==void 0?t:dh()),Hs++,()=>{Hs===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(r=>r.remove()),Hs--}},[])}function dh(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}var en=function(){return en=Object.assign||function(t){for(var n,r=1,o=arguments.length;r"u")return CE;var t=PE(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},SE=p1(),co="data-scroll-locked",TE=function(e,t,n,r){var o=e.left,i=e.top,a=e.right,l=e.gap;return n===void 0&&(n="margin"),` + .`.concat(cE,` { overflow: hidden `).concat(r,`; padding-right: `).concat(l,"px ").concat(r,`; } @@ -106,18 +106,18 @@ Error generating stack: `+i.message+` } body[`).concat(co,`] { - `).concat(d4,": ").concat(l,`px; + `).concat(dE,": ").concat(l,`px; } -`)},ph=function(){var e=parseInt(document.body.getAttribute(co)||"0",10);return isFinite(e)?e:0},R4=function(){p.useEffect(function(){return document.body.setAttribute(co,(ph()+1).toString()),function(){var e=ph()-1;e<=0?document.body.removeAttribute(co):document.body.setAttribute(co,e.toString())}},[])},$4=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=r===void 0?"margin":r;R4();var i=p.useMemo(function(){return A4(o)},[o]);return p.createElement(S4,{styles:T4(i,!t,o,n?"":"!important")})},pc=!1;if(typeof window<"u")try{var wa=Object.defineProperty({},"passive",{get:function(){return pc=!0,!0}});window.addEventListener("test",wa,wa),window.removeEventListener("test",wa,wa)}catch{pc=!1}var Fr=pc?{passive:!1}:!1,O4=function(e){return e.tagName==="TEXTAREA"},h1=function(e,t){var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!O4(e)&&n[t]==="visible")},I4=function(e){return h1(e,"overflowY")},L4=function(e){return h1(e,"overflowX")},hh=function(e,t){var n=t;do{typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&(n=n.host);var r=m1(e,n);if(r){var o=v1(e,n),i=o[1],a=o[2];if(i>a)return!0}n=n.parentNode}while(n&&n!==document.body);return!1},D4=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},N4=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},m1=function(e,t){return e==="v"?I4(t):L4(t)},v1=function(e,t){return e==="v"?D4(t):N4(t)},M4=function(e,t){return e==="h"&&t==="rtl"?-1:1},j4=function(e,t,n,r,o){var i=M4(e,window.getComputedStyle(t).direction),a=i*r,l=n.target,s=t.contains(l),c=!1,d=a>0,u=0,f=0;do{var h=v1(e,l),y=h[0],g=h[1],w=h[2],m=g-w-i*y;(y||m)&&m1(e,l)&&(u+=m,f+=y),l=l.parentNode}while(!s&&l!==document.body||s&&(t.contains(l)||t===l));return(d&&(o&&u===0||!o&&a>u)||!d&&(o&&f===0||!o&&-a>f))&&(c=!0),c},Ea=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},mh=function(e){return[e.deltaX,e.deltaY]},vh=function(e){return e&&"current"in e?e.current:e},F4=function(e,t){return e[0]===t[0]&&e[1]===t[1]},z4=function(e){return` +`)},ph=function(){var e=parseInt(document.body.getAttribute(co)||"0",10);return isFinite(e)?e:0},RE=function(){p.useEffect(function(){return document.body.setAttribute(co,(ph()+1).toString()),function(){var e=ph()-1;e<=0?document.body.removeAttribute(co):document.body.setAttribute(co,e.toString())}},[])},$E=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=r===void 0?"margin":r;RE();var i=p.useMemo(function(){return AE(o)},[o]);return p.createElement(SE,{styles:TE(i,!t,o,n?"":"!important")})},pc=!1;if(typeof window<"u")try{var wa=Object.defineProperty({},"passive",{get:function(){return pc=!0,!0}});window.addEventListener("test",wa,wa),window.removeEventListener("test",wa,wa)}catch{pc=!1}var Fr=pc?{passive:!1}:!1,OE=function(e){return e.tagName==="TEXTAREA"},h1=function(e,t){var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!OE(e)&&n[t]==="visible")},IE=function(e){return h1(e,"overflowY")},LE=function(e){return h1(e,"overflowX")},hh=function(e,t){var n=t;do{typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&(n=n.host);var r=m1(e,n);if(r){var o=v1(e,n),i=o[1],a=o[2];if(i>a)return!0}n=n.parentNode}while(n&&n!==document.body);return!1},DE=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},NE=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},m1=function(e,t){return e==="v"?IE(t):LE(t)},v1=function(e,t){return e==="v"?DE(t):NE(t)},ME=function(e,t){return e==="h"&&t==="rtl"?-1:1},jE=function(e,t,n,r,o){var i=ME(e,window.getComputedStyle(t).direction),a=i*r,l=n.target,s=t.contains(l),c=!1,d=a>0,u=0,f=0;do{var h=v1(e,l),y=h[0],g=h[1],w=h[2],m=g-w-i*y;(y||m)&&m1(e,l)&&(u+=m,f+=y),l=l.parentNode}while(!s&&l!==document.body||s&&(t.contains(l)||t===l));return(d&&(o&&u===0||!o&&a>u)||!d&&(o&&f===0||!o&&-a>f))&&(c=!0),c},Ea=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},mh=function(e){return[e.deltaX,e.deltaY]},vh=function(e){return e&&"current"in e?e.current:e},FE=function(e,t){return e[0]===t[0]&&e[1]===t[1]},zE=function(e){return` .block-interactivity-`.concat(e,` {pointer-events: none;} .allow-interactivity-`).concat(e,` {pointer-events: all;} -`)},U4=0,zr=[];function V4(e){var t=p.useRef([]),n=p.useRef([0,0]),r=p.useRef(),o=p.useState(U4++)[0],i=p.useState(function(){return p1()})[0],a=p.useRef(e);p.useEffect(function(){a.current=e},[e]),p.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var g=u4([e.lockRef.current],(e.shards||[]).map(vh),!0).filter(Boolean);return g.forEach(function(w){return w.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),g.forEach(function(w){return w.classList.remove("allow-interactivity-".concat(o))})}}},[e.inert,e.lockRef.current,e.shards]);var l=p.useCallback(function(g,w){if("touches"in g&&g.touches.length===2)return!a.current.allowPinchZoom;var m=Ea(g),v=n.current,_="deltaX"in g?g.deltaX:v[0]-m[0],E="deltaY"in g?g.deltaY:v[1]-m[1],C,k=g.target,P=Math.abs(_)>Math.abs(E)?"h":"v";if("touches"in g&&P==="h"&&k.type==="range")return!1;var A=hh(P,k);if(!A)return!0;if(A?C=P:(C=P==="v"?"h":"v",A=hh(P,k)),!A)return!1;if(!r.current&&"changedTouches"in g&&(_||E)&&(r.current=C),!C)return!0;var S=r.current||C;return j4(S,w,g,S==="h"?_:E,!0)},[]),s=p.useCallback(function(g){var w=g;if(!(!zr.length||zr[zr.length-1]!==i)){var m="deltaY"in w?mh(w):Ea(w),v=t.current.filter(function(C){return C.name===w.type&&C.target===w.target&&F4(C.delta,m)})[0];if(v&&v.should){w.cancelable&&w.preventDefault();return}if(!v){var _=(a.current.shards||[]).map(vh).filter(Boolean).filter(function(C){return C.contains(w.target)}),E=_.length>0?l(w,_[0]):!a.current.noIsolation;E&&w.cancelable&&w.preventDefault()}}},[]),c=p.useCallback(function(g,w,m,v){var _={name:g,delta:w,target:m,should:v};t.current.push(_),setTimeout(function(){t.current=t.current.filter(function(E){return E!==_})},1)},[]),d=p.useCallback(function(g){n.current=Ea(g),r.current=void 0},[]),u=p.useCallback(function(g){c(g.type,mh(g),g.target,l(g,e.lockRef.current))},[]),f=p.useCallback(function(g){c(g.type,Ea(g),g.target,l(g,e.lockRef.current))},[]);p.useEffect(function(){return zr.push(i),e.setCallbacks({onScrollCapture:u,onWheelCapture:u,onTouchMoveCapture:f}),document.addEventListener("wheel",s,Fr),document.addEventListener("touchmove",s,Fr),document.addEventListener("touchstart",d,Fr),function(){zr=zr.filter(function(g){return g!==i}),document.removeEventListener("wheel",s,Fr),document.removeEventListener("touchmove",s,Fr),document.removeEventListener("touchstart",d,Fr)}},[]);var h=e.removeScrollBar,y=e.inert;return p.createElement(p.Fragment,null,y?p.createElement(i,{styles:z4(o)}):null,h?p.createElement($4,{gapMode:"margin"}):null)}const B4=y4(f1,V4);var g1=p.forwardRef(function(e,t){return p.createElement(Gl,en({},e,{ref:t,sideCar:B4}))});g1.classNames=Gl.classNames;const y1=g1;var H4=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Ur=new WeakMap,ka=new WeakMap,ba={},qs=0,x1=function(e){return e&&(e.host||x1(e.parentNode))},W4=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=x1(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},K4=function(e,t,n,r){var o=W4(t,Array.isArray(e)?e:[e]);ba[n]||(ba[n]=new WeakMap);var i=ba[n],a=[],l=new Set,s=new Set(o),c=function(u){!u||l.has(u)||(l.add(u),c(u.parentNode))};o.forEach(c);var d=function(u){!u||s.has(u)||Array.prototype.forEach.call(u.children,function(f){if(l.has(f))d(f);else try{var h=f.getAttribute(r),y=h!==null&&h!=="false",g=(Ur.get(f)||0)+1,w=(i.get(f)||0)+1;Ur.set(f,g),i.set(f,w),a.push(f),g===1&&y&&ka.set(f,!0),w===1&&f.setAttribute(n,"true"),y||f.setAttribute(r,"true")}catch(m){console.error("aria-hidden: cannot operate on ",f,m)}})};return d(t),l.clear(),qs++,function(){a.forEach(function(u){var f=Ur.get(u)-1,h=i.get(u)-1;Ur.set(u,f),i.set(u,h),f||(ka.has(u)||u.removeAttribute(r),ka.delete(u)),h||u.removeAttribute(n)}),qs--,qs||(Ur=new WeakMap,Ur=new WeakMap,ka=new WeakMap,ba={})}},_1=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||H4(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live]"))),K4(r,o,n,"aria-hidden")):function(){return null}};const w1="Dialog",[E1,EP]=kn(w1),[G4,Cn]=E1(w1),q4=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:o,onOpenChange:i,modal:a=!0}=e,l=p.useRef(null),s=p.useRef(null),[c=!1,d]=ar({prop:r,defaultProp:o,onChange:i});return p.createElement(G4,{scope:t,triggerRef:l,contentRef:s,contentId:on(),titleId:on(),descriptionId:on(),open:c,onOpenChange:d,onOpenToggle:p.useCallback(()=>d(u=>!u),[d]),modal:a},n)},Y4="DialogTrigger",Q4=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Cn(Y4,n),i=Ue(t,o.triggerRef);return p.createElement(fe.button,q({type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Gd(o.open)},r,{ref:i,onClick:le(e.onClick,o.onOpenToggle)}))}),k1="DialogPortal",[Z4,b1]=E1(k1,{forceMount:void 0}),X4=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:o}=e,i=Cn(k1,t);return p.createElement(Z4,{scope:t,forceMount:n},p.Children.map(r,a=>p.createElement(bn,{present:n||i.open},p.createElement(s1,{asChild:!0,container:o},a))))},hc="DialogOverlay",J4=p.forwardRef((e,t)=>{const n=b1(hc,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=Cn(hc,e.__scopeDialog);return i.modal?p.createElement(bn,{present:r||i.open},p.createElement(eE,q({},o,{ref:t}))):null}),eE=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Cn(hc,n);return p.createElement(y1,{as:bo,allowPinchZoom:!0,shards:[o.contentRef]},p.createElement(fe.div,q({"data-state":Gd(o.open)},r,{ref:t,style:{pointerEvents:"auto",...r.style}})))}),Di="DialogContent",tE=p.forwardRef((e,t)=>{const n=b1(Di,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=Cn(Di,e.__scopeDialog);return p.createElement(bn,{present:r||i.open},i.modal?p.createElement(nE,q({},o,{ref:t})):p.createElement(rE,q({},o,{ref:t})))}),nE=p.forwardRef((e,t)=>{const n=Cn(Di,e.__scopeDialog),r=p.useRef(null),o=Ue(t,n.contentRef,r);return p.useEffect(()=>{const i=r.current;if(i)return _1(i)},[]),p.createElement(C1,q({},e,{ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:le(e.onCloseAutoFocus,i=>{var a;i.preventDefault(),(a=n.triggerRef.current)===null||a===void 0||a.focus()}),onPointerDownOutside:le(e.onPointerDownOutside,i=>{const a=i.detail.originalEvent,l=a.button===0&&a.ctrlKey===!0;(a.button===2||l)&&i.preventDefault()}),onFocusOutside:le(e.onFocusOutside,i=>i.preventDefault())}))}),rE=p.forwardRef((e,t)=>{const n=Cn(Di,e.__scopeDialog),r=p.useRef(!1),o=p.useRef(!1);return p.createElement(C1,q({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var a;if((a=e.onCloseAutoFocus)===null||a===void 0||a.call(e,i),!i.defaultPrevented){var l;r.current||(l=n.triggerRef.current)===null||l===void 0||l.focus(),i.preventDefault()}r.current=!1,o.current=!1},onInteractOutside:i=>{var a,l;(a=e.onInteractOutside)===null||a===void 0||a.call(e,i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const s=i.target;((l=n.triggerRef.current)===null||l===void 0?void 0:l.contains(s))&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&o.current&&i.preventDefault()}}))}),C1=p.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:i,...a}=e,l=Cn(Di,n),s=p.useRef(null),c=Ue(t,s);return u1(),p.createElement(p.Fragment,null,p.createElement(a1,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:i},p.createElement(Kd,q({role:"dialog",id:l.contentId,"aria-describedby":l.descriptionId,"aria-labelledby":l.titleId,"data-state":Gd(l.open)},a,{ref:c,onDismiss:()=>l.onOpenChange(!1)}))),!1)}),oE="DialogTitle",iE=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Cn(oE,n);return p.createElement(fe.h2,q({id:o.titleId},r,{ref:t}))});function Gd(e){return e?"open":"closed"}const P1=q4,A1=Q4,aE=X4,lE=J4,sE=tE,uE=iE;var me=function(){return me=Object.assign||function(t){for(var n,r=1,o=arguments.length;r0&&i[i.length-1])&&(c[0]===6||c[0]===2)){n=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function Ne(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),o,i=[],a;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(l){a={error:l}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(a)throw a.error}}return i}var fE="ENTRIES",S1="KEYS",T1="VALUES",Qe="",Ys=function(){function e(t,n){var r=t._tree,o=Array.from(r.keys());this.set=t,this._type=n,this._path=o.length>0?[{node:r,keys:o}]:[]}return e.prototype.next=function(){var t=this.dive();return this.backtrack(),t},e.prototype.dive=function(){if(this._path.length===0)return{done:!0,value:void 0};var t=Vr(this._path),n=t.node,r=t.keys;if(Vr(r)===Qe)return{done:!1,value:this.result()};var o=n.get(Vr(r));return this._path.push({node:o,keys:Array.from(o.keys())}),this.dive()},e.prototype.backtrack=function(){if(this._path.length!==0){var t=Vr(this._path).keys;t.pop(),!(t.length>0)&&(this._path.pop(),this.backtrack())}},e.prototype.key=function(){return this.set._prefix+this._path.map(function(t){var n=t.keys;return Vr(n)}).filter(function(t){return t!==Qe}).join("")},e.prototype.value=function(){return Vr(this._path).node.get(Qe)},e.prototype.result=function(){switch(this._type){case T1:return this.value();case S1:return this.key();default:return[this.key(),this.value()]}},e.prototype[Symbol.iterator]=function(){return this},e}(),Vr=function(e){return e[e.length-1]},pE=function(e,t,n){var r=new Map;if(t===void 0)return r;for(var o=t.length+1,i=o+n,a=new Uint8Array(i*o).fill(n+1),l=0;ln)continue e}R1(e.get(h),t,n,r,o,g,a,l+h)}}}catch(F){s={error:F}}finally{try{f&&!f.done&&(c=u.return)&&c.call(u)}finally{if(s)throw s.error}}},Qs=function(){function e(t,n){t===void 0&&(t=new Map),n===void 0&&(n=""),this._size=void 0,this._tree=t,this._prefix=n}return e.prototype.atPrefix=function(t){var n,r;if(!t.startsWith(this._prefix))throw new Error("Mismatched prefix");var o=Ne(_l(this._tree,t.slice(this._prefix.length)),2),i=o[0],a=o[1];if(i===void 0){var l=Ne(qd(a),2),s=l[0],c=l[1];try{for(var d=re(s.keys()),u=d.next();!u.done;u=d.next()){var f=u.value;if(f!==Qe&&f.startsWith(c)){var h=new Map;return h.set(f.slice(c.length),s.get(f)),new e(h,t)}}}catch(y){n={error:y}}finally{try{u&&!u.done&&(r=d.return)&&r.call(d)}finally{if(n)throw n.error}}}return new e(i,t)},e.prototype.clear=function(){this._size=void 0,this._tree.clear()},e.prototype.delete=function(t){return this._size=void 0,hE(this._tree,t)},e.prototype.entries=function(){return new Ys(this,fE)},e.prototype.forEach=function(t){var n,r;try{for(var o=re(this),i=o.next();!i.done;i=o.next()){var a=Ne(i.value,2),l=a[0],s=a[1];t(l,s,this)}}catch(c){n={error:c}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}},e.prototype.fuzzyGet=function(t,n){return pE(this._tree,t,n)},e.prototype.get=function(t){var n=mc(this._tree,t);return n!==void 0?n.get(Qe):void 0},e.prototype.has=function(t){var n=mc(this._tree,t);return n!==void 0&&n.has(Qe)},e.prototype.keys=function(){return new Ys(this,S1)},e.prototype.set=function(t,n){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;var r=Zs(this._tree,t);return r.set(Qe,n),this},Object.defineProperty(e.prototype,"size",{get:function(){if(this._size)return this._size;this._size=0;for(var t=this.entries();!t.next().done;)this._size+=1;return this._size},enumerable:!1,configurable:!0}),e.prototype.update=function(t,n){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;var r=Zs(this._tree,t);return r.set(Qe,n(r.get(Qe))),this},e.prototype.fetch=function(t,n){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;var r=Zs(this._tree,t),o=r.get(Qe);return o===void 0&&r.set(Qe,o=n()),o},e.prototype.values=function(){return new Ys(this,T1)},e.prototype[Symbol.iterator]=function(){return this.entries()},e.from=function(t){var n,r,o=new e;try{for(var i=re(t),a=i.next();!a.done;a=i.next()){var l=Ne(a.value,2),s=l[0],c=l[1];o.set(s,c)}}catch(d){n={error:d}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return o},e.fromObject=function(t){return e.from(Object.entries(t))},e}(),_l=function(e,t,n){var r,o;if(n===void 0&&(n=[]),t.length===0||e==null)return[e,n];try{for(var i=re(e.keys()),a=i.next();!a.done;a=i.next()){var l=a.value;if(l!==Qe&&t.startsWith(l))return n.push([e,l]),_l(e.get(l),t.slice(l.length),n)}}catch(s){r={error:s}}finally{try{a&&!a.done&&(o=i.return)&&o.call(i)}finally{if(r)throw r.error}}return n.push([e,t]),_l(void 0,"",n)},mc=function(e,t){var n,r;if(t.length===0||e==null)return e;try{for(var o=re(e.keys()),i=o.next();!i.done;i=o.next()){var a=i.value;if(a!==Qe&&t.startsWith(a))return mc(e.get(a),t.slice(a.length))}}catch(l){n={error:l}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}},Zs=function(e,t){var n,r,o=t.length;e:for(var i=0;e&&i0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Qs,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},e.prototype.discard=function(t){var n=this,r=this._idToShortId.get(t);if(r==null)throw new Error("MiniSearch: cannot discard document with ID ".concat(t,": it is not in the index"));this._idToShortId.delete(t),this._documentIds.delete(r),this._storedFields.delete(r),(this._fieldLength.get(r)||[]).forEach(function(o,i){n.removeFieldLength(r,i,n._documentCount,o)}),this._fieldLength.delete(r),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},e.prototype.maybeAutoVacuum=function(){if(this._options.autoVacuum!==!1){var t=this._options.autoVacuum,n=t.minDirtFactor,r=t.minDirtCount,o=t.batchSize,i=t.batchWait;this.conditionalVacuum({batchSize:o,batchWait:i},{minDirtCount:r,minDirtFactor:n})}},e.prototype.discardAll=function(t){var n,r,o=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var i=re(t),a=i.next();!a.done;a=i.next()){var l=a.value;this.discard(l)}}catch(s){n={error:s}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}finally{this._options.autoVacuum=o}this.maybeAutoVacuum()},e.prototype.replace=function(t){var n=this._options,r=n.idField,o=n.extractField,i=o(t,r);this.discard(i),this.add(t)},e.prototype.vacuum=function(t){return t===void 0&&(t={}),this.conditionalVacuum(t)},e.prototype.conditionalVacuum=function(t,n){var r=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&n,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(function(){var o=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=gc,r.performVacuuming(t,o)}),this._enqueuedVacuum)):this.vacuumConditionsMet(n)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(t),this._currentVacuum)},e.prototype.performVacuuming=function(t,n){return cE(this,void 0,void 0,function(){var r,o,i,a,l,s,c,d,u,f,h,y,g,w,m,v,_,E,C,k,P,A,S,O,j;return dE(this,function(N){switch(N.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(n))return[3,10];o=t.batchSize||vc.batchSize,i=t.batchWait||vc.batchWait,a=1,N.label=1;case 1:N.trys.push([1,7,8,9]),l=re(this._index),s=l.next(),N.label=2;case 2:if(s.done)return[3,6];c=Ne(s.value,2),d=c[0],u=c[1];try{for(f=(A=void 0,re(u)),h=f.next();!h.done;h=f.next()){y=Ne(h.value,2),g=y[0],w=y[1];try{for(m=(O=void 0,re(w)),v=m.next();!v.done;v=m.next())_=Ne(v.value,1),E=_[0],!this._documentIds.has(E)&&(w.size<=1?u.delete(g):w.delete(E))}catch(F){O={error:F}}finally{try{v&&!v.done&&(j=m.return)&&j.call(m)}finally{if(O)throw O.error}}}}catch(F){A={error:F}}finally{try{h&&!h.done&&(S=f.return)&&S.call(f)}finally{if(A)throw A.error}}return this._index.get(d).size===0&&this._index.delete(d),a%o!==0?[3,4]:[4,new Promise(function(F){return setTimeout(F,i)})];case 3:N.sent(),N.label=4;case 4:a+=1,N.label=5;case 5:return s=l.next(),[3,2];case 6:return[3,9];case 7:return C=N.sent(),k={error:C},[3,9];case 8:try{s&&!s.done&&(P=l.return)&&P.call(l)}finally{if(k)throw k.error}return[7];case 9:this._dirtCount-=r,N.label=10;case 10:return[4,null];case 11:return N.sent(),this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null,[2]}})})},e.prototype.vacuumConditionsMet=function(t){if(t==null)return!0;var n=t.minDirtCount,r=t.minDirtFactor;return n=n||eu.minDirtCount,r=r||eu.minDirtFactor,this.dirtCount>=n&&this.dirtFactor>=r},Object.defineProperty(e.prototype,"isVacuuming",{get:function(){return this._currentVacuum!=null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),e.prototype.has=function(t){return this._idToShortId.has(t)},e.prototype.getStoredFields=function(t){var n=this._idToShortId.get(t);if(n!=null)return this._storedFields.get(n)},e.prototype.search=function(t,n){var r,o;n===void 0&&(n={});var i=this.executeQuery(t,n),a=[];try{for(var l=re(i),s=l.next();!s.done;s=l.next()){var c=Ne(s.value,2),d=c[0],u=c[1],f=u.score,h=u.terms,y=u.match,g=h.length||1,w={id:this._documentIds.get(d),score:f*g,terms:Object.keys(y),queryTerms:h,match:y};Object.assign(w,this._storedFields.get(d)),(n.filter==null||n.filter(w))&&a.push(w)}}catch(m){r={error:m}}finally{try{s&&!s.done&&(o=l.return)&&o.call(l)}finally{if(r)throw r.error}}return t===e.wildcard&&n.boostDocument==null&&this._options.searchOptions.boostDocument==null||a.sort(xh),a},e.prototype.autoSuggest=function(t,n){var r,o,i,a;n===void 0&&(n={}),n=me(me({},this._options.autoSuggestOptions),n);var l=new Map;try{for(var s=re(this.search(t,n)),c=s.next();!c.done;c=s.next()){var d=c.value,u=d.score,f=d.terms,h=f.join(" "),y=l.get(h);y!=null?(y.score+=u,y.count+=1):l.set(h,{score:u,terms:f,count:1})}}catch(C){r={error:C}}finally{try{c&&!c.done&&(o=s.return)&&o.call(s)}finally{if(r)throw r.error}}var g=[];try{for(var w=re(l),m=w.next();!m.done;m=w.next()){var v=Ne(m.value,2),y=v[0],_=v[1],u=_.score,f=_.terms,E=_.count;g.push({suggestion:y,terms:f,score:u/E})}}catch(C){i={error:C}}finally{try{m&&!m.done&&(a=w.return)&&a.call(w)}finally{if(i)throw i.error}}return g.sort(xh),g},Object.defineProperty(e.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),e.loadJSON=function(t,n){if(n==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(t),n)},e.getDefault=function(t){if(Js.hasOwnProperty(t))return Xs(Js,t);throw new Error('MiniSearch: unknown option "'.concat(t,'"'))},e.loadJS=function(t,n){var r,o,i,a,l,s,c=t.index,d=t.documentCount,u=t.nextId,f=t.documentIds,h=t.fieldIds,y=t.fieldLength,g=t.averageFieldLength,w=t.storedFields,m=t.dirtCount,v=t.serializationVersion;if(v!==1&&v!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var _=new e(n);_._documentCount=d,_._nextId=u,_._documentIds=Ca(f),_._idToShortId=new Map,_._fieldIds=h,_._fieldLength=Ca(y),_._avgFieldLength=g,_._storedFields=Ca(w),_._dirtCount=m||0,_._index=new Qs;try{for(var E=re(_._documentIds),C=E.next();!C.done;C=E.next()){var k=Ne(C.value,2),P=k[0],A=k[1];_._idToShortId.set(A,P)}}catch(z){r={error:z}}finally{try{C&&!C.done&&(o=E.return)&&o.call(E)}finally{if(r)throw r.error}}try{for(var S=re(c),O=S.next();!O.done;O=S.next()){var j=Ne(O.value,2),N=j[0],F=j[1],$=new Map;try{for(var U=(l=void 0,re(Object.keys(F))),W=U.next();!W.done;W=U.next()){var B=W.value,L=F[B];v===1&&(L=L.ds),$.set(parseInt(B,10),Ca(L))}}catch(z){l={error:z}}finally{try{W&&!W.done&&(s=U.return)&&s.call(U)}finally{if(l)throw l.error}}_._index.set(N,$)}}catch(z){i={error:z}}finally{try{O&&!O.done&&(a=S.return)&&a.call(S)}finally{if(i)throw i.error}}return _},e.prototype.executeQuery=function(t,n){var r=this;if(n===void 0&&(n={}),t===e.wildcard)return this.executeWildcardQuery(n);if(typeof t!="string"){var o=me(me(me({},n),t),{queries:void 0}),i=t.queries.map(function(w){return r.executeQuery(w,o)});return this.combineResults(i,o.combineWith)}var a=this._options,l=a.tokenize,s=a.processTerm,c=a.searchOptions,d=me(me({tokenize:l,processTerm:s},c),n),u=d.tokenize,f=d.processTerm,h=u(t).flatMap(function(w){return f(w)}).filter(function(w){return!!w}),y=h.map(_E(d)),g=y.map(function(w){return r.executeQuerySpec(w,d)});return this.combineResults(g,d.combineWith)},e.prototype.executeQuerySpec=function(t,n){var r,o,i,a,l=me(me({},this._options.searchOptions),n),s=(l.fields||this._options.fields).reduce(function(B,L){var z;return me(me({},B),(z={},z[L]=Xs(l.boost,L)||1,z))},{}),c=l.boostDocument,d=l.weights,u=l.maxFuzzy,f=l.bm25,h=me(me({},gh.weights),d),y=h.fuzzy,g=h.prefix,w=this._index.get(t.term),m=this.termResults(t.term,t.term,1,w,s,c,f),v,_;if(t.prefix&&(v=this._index.atPrefix(t.term)),t.fuzzy){var E=t.fuzzy===!0?.2:t.fuzzy,C=E<1?Math.min(u,Math.round(t.term.length*E)):E;C&&(_=this._index.fuzzyGet(t.term,C))}if(v)try{for(var k=re(v),P=k.next();!P.done;P=k.next()){var A=Ne(P.value,2),S=A[0],O=A[1],j=S.length-t.term.length;if(j){_==null||_.delete(S);var N=g*S.length/(S.length+.3*j);this.termResults(t.term,S,N,O,s,c,f,m)}}}catch(B){r={error:B}}finally{try{P&&!P.done&&(o=k.return)&&o.call(k)}finally{if(r)throw r.error}}if(_)try{for(var F=re(_.keys()),$=F.next();!$.done;$=F.next()){var S=$.value,U=Ne(_.get(S),2),W=U[0],j=U[1];if(j){var N=y*S.length/(S.length+j);this.termResults(t.term,S,N,W,s,c,f,m)}}}catch(B){i={error:B}}finally{try{$&&!$.done&&(a=F.return)&&a.call(F)}finally{if(i)throw i.error}}return m},e.prototype.executeWildcardQuery=function(t){var n,r,o=new Map,i=me(me({},this._options.searchOptions),t);try{for(var a=re(this._documentIds),l=a.next();!l.done;l=a.next()){var s=Ne(l.value,2),c=s[0],d=s[1],u=i.boostDocument?i.boostDocument(d,"",this._storedFields.get(c)):1;o.set(c,{score:u,terms:[],match:{}})}}catch(f){n={error:f}}finally{try{l&&!l.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return o},e.prototype.combineResults=function(t,n){if(n===void 0&&(n=Yd),t.length===0)return new Map;var r=n.toLowerCase();return t.reduce(gE[r])||new Map},e.prototype.toJSON=function(){var t,n,r,o,i=[];try{for(var a=re(this._index),l=a.next();!l.done;l=a.next()){var s=Ne(l.value,2),c=s[0],d=s[1],u={};try{for(var f=(r=void 0,re(d)),h=f.next();!h.done;h=f.next()){var y=Ne(h.value,2),g=y[0],w=y[1];u[g]=Object.fromEntries(w)}}catch(m){r={error:m}}finally{try{h&&!h.done&&(o=f.return)&&o.call(f)}finally{if(r)throw r.error}}i.push([c,u])}}catch(m){t={error:m}}finally{try{l&&!l.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:i,serializationVersion:2}},e.prototype.termResults=function(t,n,r,o,i,a,l,s){var c,d,u,f,h;if(s===void 0&&(s=new Map),o==null)return s;try{for(var y=re(Object.keys(i)),g=y.next();!g.done;g=y.next()){var w=g.value,m=i[w],v=this._fieldIds[w],_=o.get(v);if(_!=null){var E=_.size,C=this._avgFieldLength[v];try{for(var k=(u=void 0,re(_.keys())),P=k.next();!P.done;P=k.next()){var A=P.value;if(!this._documentIds.has(A)){this.removeTerm(v,A,n),E-=1;continue}var S=a?a(this._documentIds.get(A),n,this._storedFields.get(A)):1;if(S){var O=_.get(A),j=this._fieldLength.get(A)[v],N=xE(O,E,this._documentCount,j,C,l),F=r*m*S*N,$=s.get(A);if($){$.score+=F,EE($.terms,t);var U=Xs($.match,n);U?U.push(w):$.match[n]=[w]}else s.set(A,{score:F,terms:[t],match:(h={},h[n]=[w],h)})}}}catch(W){u={error:W}}finally{try{P&&!P.done&&(f=k.return)&&f.call(k)}finally{if(u)throw u.error}}}}}catch(W){c={error:W}}finally{try{g&&!g.done&&(d=y.return)&&d.call(y)}finally{if(c)throw c.error}}return s},e.prototype.addTerm=function(t,n,r){var o=this._index.fetch(r,_h),i=o.get(t);if(i==null)i=new Map,i.set(n,1),o.set(t,i);else{var a=i.get(n);i.set(n,(a||0)+1)}},e.prototype.removeTerm=function(t,n,r){if(!this._index.has(r)){this.warnDocumentChanged(n,t,r);return}var o=this._index.fetch(r,_h),i=o.get(t);i==null||i.get(n)==null?this.warnDocumentChanged(n,t,r):i.get(n)<=1?i.size<=1?o.delete(t):i.delete(n):i.set(n,i.get(n)-1),this._index.get(r).size===0&&this._index.delete(r)},e.prototype.warnDocumentChanged=function(t,n,r){var o,i;try{for(var a=re(Object.keys(this._fieldIds)),l=a.next();!l.done;l=a.next()){var s=l.value;if(this._fieldIds[s]===n){this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(t),' has changed before removal: term "').concat(r,'" was not present in field "').concat(s,'". Removing a document after it has changed can corrupt the index!'),"version_conflict");return}}}catch(c){o={error:c}}finally{try{l&&!l.done&&(i=a.return)&&i.call(a)}finally{if(o)throw o.error}}},e.prototype.addDocumentId=function(t){var n=this._nextId;return this._idToShortId.set(t,n),this._documentIds.set(n,t),this._documentCount+=1,this._nextId+=1,n},e.prototype.addFields=function(t){for(var n=0;nJSON.stringify(await(await fetch("/.vocs/search-index-b8370438.json")).json());let tu;function L1(){const[e,t]=p.useState();return p.useEffect(()=>{(async()=>{tu||(tu=bE());const n=await tu,r=vE.loadJSON(n,{fields:["title","titles","text"],searchOptions:{boost:{title:4,text:2,titles:1},fuzzy:.2,prefix:!0},storeFields:["href","html","isPage","text","title","titles"]});t(r)})()},[]),p.useEffect(()=>{},[]),e}var CE="vocs_DesktopSearch_search",PE="vocs_DesktopSearch_searchCommand";const AE=p.forwardRef((e,t)=>p.createElement(fe.label,q({},e,{ref:t,onMouseDown:n=>{var r;(r=e.onMouseDown)===null||r===void 0||r.call(e,n),!n.defaultPrevented&&n.detail>1&&n.preventDefault()}}))),SE=AE;var D1={exports:{}};/*!*************************************************** +`)},UE=0,zr=[];function VE(e){var t=p.useRef([]),n=p.useRef([0,0]),r=p.useRef(),o=p.useState(UE++)[0],i=p.useState(function(){return p1()})[0],a=p.useRef(e);p.useEffect(function(){a.current=e},[e]),p.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var g=uE([e.lockRef.current],(e.shards||[]).map(vh),!0).filter(Boolean);return g.forEach(function(w){return w.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),g.forEach(function(w){return w.classList.remove("allow-interactivity-".concat(o))})}}},[e.inert,e.lockRef.current,e.shards]);var l=p.useCallback(function(g,w){if("touches"in g&&g.touches.length===2)return!a.current.allowPinchZoom;var m=Ea(g),v=n.current,_="deltaX"in g?g.deltaX:v[0]-m[0],E="deltaY"in g?g.deltaY:v[1]-m[1],C,k=g.target,P=Math.abs(_)>Math.abs(E)?"h":"v";if("touches"in g&&P==="h"&&k.type==="range")return!1;var A=hh(P,k);if(!A)return!0;if(A?C=P:(C=P==="v"?"h":"v",A=hh(P,k)),!A)return!1;if(!r.current&&"changedTouches"in g&&(_||E)&&(r.current=C),!C)return!0;var S=r.current||C;return jE(S,w,g,S==="h"?_:E,!0)},[]),s=p.useCallback(function(g){var w=g;if(!(!zr.length||zr[zr.length-1]!==i)){var m="deltaY"in w?mh(w):Ea(w),v=t.current.filter(function(C){return C.name===w.type&&C.target===w.target&&FE(C.delta,m)})[0];if(v&&v.should){w.cancelable&&w.preventDefault();return}if(!v){var _=(a.current.shards||[]).map(vh).filter(Boolean).filter(function(C){return C.contains(w.target)}),E=_.length>0?l(w,_[0]):!a.current.noIsolation;E&&w.cancelable&&w.preventDefault()}}},[]),c=p.useCallback(function(g,w,m,v){var _={name:g,delta:w,target:m,should:v};t.current.push(_),setTimeout(function(){t.current=t.current.filter(function(E){return E!==_})},1)},[]),d=p.useCallback(function(g){n.current=Ea(g),r.current=void 0},[]),u=p.useCallback(function(g){c(g.type,mh(g),g.target,l(g,e.lockRef.current))},[]),f=p.useCallback(function(g){c(g.type,Ea(g),g.target,l(g,e.lockRef.current))},[]);p.useEffect(function(){return zr.push(i),e.setCallbacks({onScrollCapture:u,onWheelCapture:u,onTouchMoveCapture:f}),document.addEventListener("wheel",s,Fr),document.addEventListener("touchmove",s,Fr),document.addEventListener("touchstart",d,Fr),function(){zr=zr.filter(function(g){return g!==i}),document.removeEventListener("wheel",s,Fr),document.removeEventListener("touchmove",s,Fr),document.removeEventListener("touchstart",d,Fr)}},[]);var h=e.removeScrollBar,y=e.inert;return p.createElement(p.Fragment,null,y?p.createElement(i,{styles:zE(o)}):null,h?p.createElement($E,{gapMode:"margin"}):null)}const BE=yE(f1,VE);var g1=p.forwardRef(function(e,t){return p.createElement(Gl,en({},e,{ref:t,sideCar:BE}))});g1.classNames=Gl.classNames;const y1=g1;var HE=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Ur=new WeakMap,ka=new WeakMap,ba={},qs=0,x1=function(e){return e&&(e.host||x1(e.parentNode))},WE=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=x1(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},KE=function(e,t,n,r){var o=WE(t,Array.isArray(e)?e:[e]);ba[n]||(ba[n]=new WeakMap);var i=ba[n],a=[],l=new Set,s=new Set(o),c=function(u){!u||l.has(u)||(l.add(u),c(u.parentNode))};o.forEach(c);var d=function(u){!u||s.has(u)||Array.prototype.forEach.call(u.children,function(f){if(l.has(f))d(f);else try{var h=f.getAttribute(r),y=h!==null&&h!=="false",g=(Ur.get(f)||0)+1,w=(i.get(f)||0)+1;Ur.set(f,g),i.set(f,w),a.push(f),g===1&&y&&ka.set(f,!0),w===1&&f.setAttribute(n,"true"),y||f.setAttribute(r,"true")}catch(m){console.error("aria-hidden: cannot operate on ",f,m)}})};return d(t),l.clear(),qs++,function(){a.forEach(function(u){var f=Ur.get(u)-1,h=i.get(u)-1;Ur.set(u,f),i.set(u,h),f||(ka.has(u)||u.removeAttribute(r),ka.delete(u)),h||u.removeAttribute(n)}),qs--,qs||(Ur=new WeakMap,Ur=new WeakMap,ka=new WeakMap,ba={})}},_1=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||HE(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live]"))),KE(r,o,n,"aria-hidden")):function(){return null}};const w1="Dialog",[E1,EP]=kn(w1),[GE,Cn]=E1(w1),qE=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:o,onOpenChange:i,modal:a=!0}=e,l=p.useRef(null),s=p.useRef(null),[c=!1,d]=ar({prop:r,defaultProp:o,onChange:i});return p.createElement(GE,{scope:t,triggerRef:l,contentRef:s,contentId:on(),titleId:on(),descriptionId:on(),open:c,onOpenChange:d,onOpenToggle:p.useCallback(()=>d(u=>!u),[d]),modal:a},n)},YE="DialogTrigger",QE=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Cn(YE,n),i=Ue(t,o.triggerRef);return p.createElement(fe.button,q({type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Gd(o.open)},r,{ref:i,onClick:le(e.onClick,o.onOpenToggle)}))}),k1="DialogPortal",[ZE,b1]=E1(k1,{forceMount:void 0}),XE=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:o}=e,i=Cn(k1,t);return p.createElement(ZE,{scope:t,forceMount:n},p.Children.map(r,a=>p.createElement(bn,{present:n||i.open},p.createElement(s1,{asChild:!0,container:o},a))))},hc="DialogOverlay",JE=p.forwardRef((e,t)=>{const n=b1(hc,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=Cn(hc,e.__scopeDialog);return i.modal?p.createElement(bn,{present:r||i.open},p.createElement(e5,q({},o,{ref:t}))):null}),e5=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Cn(hc,n);return p.createElement(y1,{as:bo,allowPinchZoom:!0,shards:[o.contentRef]},p.createElement(fe.div,q({"data-state":Gd(o.open)},r,{ref:t,style:{pointerEvents:"auto",...r.style}})))}),Di="DialogContent",t5=p.forwardRef((e,t)=>{const n=b1(Di,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=Cn(Di,e.__scopeDialog);return p.createElement(bn,{present:r||i.open},i.modal?p.createElement(n5,q({},o,{ref:t})):p.createElement(r5,q({},o,{ref:t})))}),n5=p.forwardRef((e,t)=>{const n=Cn(Di,e.__scopeDialog),r=p.useRef(null),o=Ue(t,n.contentRef,r);return p.useEffect(()=>{const i=r.current;if(i)return _1(i)},[]),p.createElement(C1,q({},e,{ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:le(e.onCloseAutoFocus,i=>{var a;i.preventDefault(),(a=n.triggerRef.current)===null||a===void 0||a.focus()}),onPointerDownOutside:le(e.onPointerDownOutside,i=>{const a=i.detail.originalEvent,l=a.button===0&&a.ctrlKey===!0;(a.button===2||l)&&i.preventDefault()}),onFocusOutside:le(e.onFocusOutside,i=>i.preventDefault())}))}),r5=p.forwardRef((e,t)=>{const n=Cn(Di,e.__scopeDialog),r=p.useRef(!1),o=p.useRef(!1);return p.createElement(C1,q({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var a;if((a=e.onCloseAutoFocus)===null||a===void 0||a.call(e,i),!i.defaultPrevented){var l;r.current||(l=n.triggerRef.current)===null||l===void 0||l.focus(),i.preventDefault()}r.current=!1,o.current=!1},onInteractOutside:i=>{var a,l;(a=e.onInteractOutside)===null||a===void 0||a.call(e,i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const s=i.target;((l=n.triggerRef.current)===null||l===void 0?void 0:l.contains(s))&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&o.current&&i.preventDefault()}}))}),C1=p.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:i,...a}=e,l=Cn(Di,n),s=p.useRef(null),c=Ue(t,s);return u1(),p.createElement(p.Fragment,null,p.createElement(a1,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:i},p.createElement(Kd,q({role:"dialog",id:l.contentId,"aria-describedby":l.descriptionId,"aria-labelledby":l.titleId,"data-state":Gd(l.open)},a,{ref:c,onDismiss:()=>l.onOpenChange(!1)}))),!1)}),o5="DialogTitle",i5=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Cn(o5,n);return p.createElement(fe.h2,q({id:o.titleId},r,{ref:t}))});function Gd(e){return e?"open":"closed"}const P1=qE,A1=QE,a5=XE,l5=JE,s5=t5,u5=i5;var me=function(){return me=Object.assign||function(t){for(var n,r=1,o=arguments.length;r0&&i[i.length-1])&&(c[0]===6||c[0]===2)){n=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function Ne(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),o,i=[],a;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(l){a={error:l}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(a)throw a.error}}return i}var f5="ENTRIES",S1="KEYS",T1="VALUES",Qe="",Ys=function(){function e(t,n){var r=t._tree,o=Array.from(r.keys());this.set=t,this._type=n,this._path=o.length>0?[{node:r,keys:o}]:[]}return e.prototype.next=function(){var t=this.dive();return this.backtrack(),t},e.prototype.dive=function(){if(this._path.length===0)return{done:!0,value:void 0};var t=Vr(this._path),n=t.node,r=t.keys;if(Vr(r)===Qe)return{done:!1,value:this.result()};var o=n.get(Vr(r));return this._path.push({node:o,keys:Array.from(o.keys())}),this.dive()},e.prototype.backtrack=function(){if(this._path.length!==0){var t=Vr(this._path).keys;t.pop(),!(t.length>0)&&(this._path.pop(),this.backtrack())}},e.prototype.key=function(){return this.set._prefix+this._path.map(function(t){var n=t.keys;return Vr(n)}).filter(function(t){return t!==Qe}).join("")},e.prototype.value=function(){return Vr(this._path).node.get(Qe)},e.prototype.result=function(){switch(this._type){case T1:return this.value();case S1:return this.key();default:return[this.key(),this.value()]}},e.prototype[Symbol.iterator]=function(){return this},e}(),Vr=function(e){return e[e.length-1]},p5=function(e,t,n){var r=new Map;if(t===void 0)return r;for(var o=t.length+1,i=o+n,a=new Uint8Array(i*o).fill(n+1),l=0;ln)continue e}R1(e.get(h),t,n,r,o,g,a,l+h)}}}catch(F){s={error:F}}finally{try{f&&!f.done&&(c=u.return)&&c.call(u)}finally{if(s)throw s.error}}},Qs=function(){function e(t,n){t===void 0&&(t=new Map),n===void 0&&(n=""),this._size=void 0,this._tree=t,this._prefix=n}return e.prototype.atPrefix=function(t){var n,r;if(!t.startsWith(this._prefix))throw new Error("Mismatched prefix");var o=Ne(_l(this._tree,t.slice(this._prefix.length)),2),i=o[0],a=o[1];if(i===void 0){var l=Ne(qd(a),2),s=l[0],c=l[1];try{for(var d=re(s.keys()),u=d.next();!u.done;u=d.next()){var f=u.value;if(f!==Qe&&f.startsWith(c)){var h=new Map;return h.set(f.slice(c.length),s.get(f)),new e(h,t)}}}catch(y){n={error:y}}finally{try{u&&!u.done&&(r=d.return)&&r.call(d)}finally{if(n)throw n.error}}}return new e(i,t)},e.prototype.clear=function(){this._size=void 0,this._tree.clear()},e.prototype.delete=function(t){return this._size=void 0,h5(this._tree,t)},e.prototype.entries=function(){return new Ys(this,f5)},e.prototype.forEach=function(t){var n,r;try{for(var o=re(this),i=o.next();!i.done;i=o.next()){var a=Ne(i.value,2),l=a[0],s=a[1];t(l,s,this)}}catch(c){n={error:c}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}},e.prototype.fuzzyGet=function(t,n){return p5(this._tree,t,n)},e.prototype.get=function(t){var n=mc(this._tree,t);return n!==void 0?n.get(Qe):void 0},e.prototype.has=function(t){var n=mc(this._tree,t);return n!==void 0&&n.has(Qe)},e.prototype.keys=function(){return new Ys(this,S1)},e.prototype.set=function(t,n){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;var r=Zs(this._tree,t);return r.set(Qe,n),this},Object.defineProperty(e.prototype,"size",{get:function(){if(this._size)return this._size;this._size=0;for(var t=this.entries();!t.next().done;)this._size+=1;return this._size},enumerable:!1,configurable:!0}),e.prototype.update=function(t,n){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;var r=Zs(this._tree,t);return r.set(Qe,n(r.get(Qe))),this},e.prototype.fetch=function(t,n){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;var r=Zs(this._tree,t),o=r.get(Qe);return o===void 0&&r.set(Qe,o=n()),o},e.prototype.values=function(){return new Ys(this,T1)},e.prototype[Symbol.iterator]=function(){return this.entries()},e.from=function(t){var n,r,o=new e;try{for(var i=re(t),a=i.next();!a.done;a=i.next()){var l=Ne(a.value,2),s=l[0],c=l[1];o.set(s,c)}}catch(d){n={error:d}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return o},e.fromObject=function(t){return e.from(Object.entries(t))},e}(),_l=function(e,t,n){var r,o;if(n===void 0&&(n=[]),t.length===0||e==null)return[e,n];try{for(var i=re(e.keys()),a=i.next();!a.done;a=i.next()){var l=a.value;if(l!==Qe&&t.startsWith(l))return n.push([e,l]),_l(e.get(l),t.slice(l.length),n)}}catch(s){r={error:s}}finally{try{a&&!a.done&&(o=i.return)&&o.call(i)}finally{if(r)throw r.error}}return n.push([e,t]),_l(void 0,"",n)},mc=function(e,t){var n,r;if(t.length===0||e==null)return e;try{for(var o=re(e.keys()),i=o.next();!i.done;i=o.next()){var a=i.value;if(a!==Qe&&t.startsWith(a))return mc(e.get(a),t.slice(a.length))}}catch(l){n={error:l}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}},Zs=function(e,t){var n,r,o=t.length;e:for(var i=0;e&&i0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Qs,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},e.prototype.discard=function(t){var n=this,r=this._idToShortId.get(t);if(r==null)throw new Error("MiniSearch: cannot discard document with ID ".concat(t,": it is not in the index"));this._idToShortId.delete(t),this._documentIds.delete(r),this._storedFields.delete(r),(this._fieldLength.get(r)||[]).forEach(function(o,i){n.removeFieldLength(r,i,n._documentCount,o)}),this._fieldLength.delete(r),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},e.prototype.maybeAutoVacuum=function(){if(this._options.autoVacuum!==!1){var t=this._options.autoVacuum,n=t.minDirtFactor,r=t.minDirtCount,o=t.batchSize,i=t.batchWait;this.conditionalVacuum({batchSize:o,batchWait:i},{minDirtCount:r,minDirtFactor:n})}},e.prototype.discardAll=function(t){var n,r,o=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var i=re(t),a=i.next();!a.done;a=i.next()){var l=a.value;this.discard(l)}}catch(s){n={error:s}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}finally{this._options.autoVacuum=o}this.maybeAutoVacuum()},e.prototype.replace=function(t){var n=this._options,r=n.idField,o=n.extractField,i=o(t,r);this.discard(i),this.add(t)},e.prototype.vacuum=function(t){return t===void 0&&(t={}),this.conditionalVacuum(t)},e.prototype.conditionalVacuum=function(t,n){var r=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&n,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(function(){var o=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=gc,r.performVacuuming(t,o)}),this._enqueuedVacuum)):this.vacuumConditionsMet(n)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(t),this._currentVacuum)},e.prototype.performVacuuming=function(t,n){return c5(this,void 0,void 0,function(){var r,o,i,a,l,s,c,d,u,f,h,y,g,w,m,v,_,E,C,k,P,A,S,O,j;return d5(this,function(N){switch(N.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(n))return[3,10];o=t.batchSize||vc.batchSize,i=t.batchWait||vc.batchWait,a=1,N.label=1;case 1:N.trys.push([1,7,8,9]),l=re(this._index),s=l.next(),N.label=2;case 2:if(s.done)return[3,6];c=Ne(s.value,2),d=c[0],u=c[1];try{for(f=(A=void 0,re(u)),h=f.next();!h.done;h=f.next()){y=Ne(h.value,2),g=y[0],w=y[1];try{for(m=(O=void 0,re(w)),v=m.next();!v.done;v=m.next())_=Ne(v.value,1),E=_[0],!this._documentIds.has(E)&&(w.size<=1?u.delete(g):w.delete(E))}catch(F){O={error:F}}finally{try{v&&!v.done&&(j=m.return)&&j.call(m)}finally{if(O)throw O.error}}}}catch(F){A={error:F}}finally{try{h&&!h.done&&(S=f.return)&&S.call(f)}finally{if(A)throw A.error}}return this._index.get(d).size===0&&this._index.delete(d),a%o!==0?[3,4]:[4,new Promise(function(F){return setTimeout(F,i)})];case 3:N.sent(),N.label=4;case 4:a+=1,N.label=5;case 5:return s=l.next(),[3,2];case 6:return[3,9];case 7:return C=N.sent(),k={error:C},[3,9];case 8:try{s&&!s.done&&(P=l.return)&&P.call(l)}finally{if(k)throw k.error}return[7];case 9:this._dirtCount-=r,N.label=10;case 10:return[4,null];case 11:return N.sent(),this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null,[2]}})})},e.prototype.vacuumConditionsMet=function(t){if(t==null)return!0;var n=t.minDirtCount,r=t.minDirtFactor;return n=n||eu.minDirtCount,r=r||eu.minDirtFactor,this.dirtCount>=n&&this.dirtFactor>=r},Object.defineProperty(e.prototype,"isVacuuming",{get:function(){return this._currentVacuum!=null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),e.prototype.has=function(t){return this._idToShortId.has(t)},e.prototype.getStoredFields=function(t){var n=this._idToShortId.get(t);if(n!=null)return this._storedFields.get(n)},e.prototype.search=function(t,n){var r,o;n===void 0&&(n={});var i=this.executeQuery(t,n),a=[];try{for(var l=re(i),s=l.next();!s.done;s=l.next()){var c=Ne(s.value,2),d=c[0],u=c[1],f=u.score,h=u.terms,y=u.match,g=h.length||1,w={id:this._documentIds.get(d),score:f*g,terms:Object.keys(y),queryTerms:h,match:y};Object.assign(w,this._storedFields.get(d)),(n.filter==null||n.filter(w))&&a.push(w)}}catch(m){r={error:m}}finally{try{s&&!s.done&&(o=l.return)&&o.call(l)}finally{if(r)throw r.error}}return t===e.wildcard&&n.boostDocument==null&&this._options.searchOptions.boostDocument==null||a.sort(xh),a},e.prototype.autoSuggest=function(t,n){var r,o,i,a;n===void 0&&(n={}),n=me(me({},this._options.autoSuggestOptions),n);var l=new Map;try{for(var s=re(this.search(t,n)),c=s.next();!c.done;c=s.next()){var d=c.value,u=d.score,f=d.terms,h=f.join(" "),y=l.get(h);y!=null?(y.score+=u,y.count+=1):l.set(h,{score:u,terms:f,count:1})}}catch(C){r={error:C}}finally{try{c&&!c.done&&(o=s.return)&&o.call(s)}finally{if(r)throw r.error}}var g=[];try{for(var w=re(l),m=w.next();!m.done;m=w.next()){var v=Ne(m.value,2),y=v[0],_=v[1],u=_.score,f=_.terms,E=_.count;g.push({suggestion:y,terms:f,score:u/E})}}catch(C){i={error:C}}finally{try{m&&!m.done&&(a=w.return)&&a.call(w)}finally{if(i)throw i.error}}return g.sort(xh),g},Object.defineProperty(e.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),e.loadJSON=function(t,n){if(n==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(t),n)},e.getDefault=function(t){if(Js.hasOwnProperty(t))return Xs(Js,t);throw new Error('MiniSearch: unknown option "'.concat(t,'"'))},e.loadJS=function(t,n){var r,o,i,a,l,s,c=t.index,d=t.documentCount,u=t.nextId,f=t.documentIds,h=t.fieldIds,y=t.fieldLength,g=t.averageFieldLength,w=t.storedFields,m=t.dirtCount,v=t.serializationVersion;if(v!==1&&v!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var _=new e(n);_._documentCount=d,_._nextId=u,_._documentIds=Ca(f),_._idToShortId=new Map,_._fieldIds=h,_._fieldLength=Ca(y),_._avgFieldLength=g,_._storedFields=Ca(w),_._dirtCount=m||0,_._index=new Qs;try{for(var E=re(_._documentIds),C=E.next();!C.done;C=E.next()){var k=Ne(C.value,2),P=k[0],A=k[1];_._idToShortId.set(A,P)}}catch(z){r={error:z}}finally{try{C&&!C.done&&(o=E.return)&&o.call(E)}finally{if(r)throw r.error}}try{for(var S=re(c),O=S.next();!O.done;O=S.next()){var j=Ne(O.value,2),N=j[0],F=j[1],$=new Map;try{for(var U=(l=void 0,re(Object.keys(F))),W=U.next();!W.done;W=U.next()){var B=W.value,L=F[B];v===1&&(L=L.ds),$.set(parseInt(B,10),Ca(L))}}catch(z){l={error:z}}finally{try{W&&!W.done&&(s=U.return)&&s.call(U)}finally{if(l)throw l.error}}_._index.set(N,$)}}catch(z){i={error:z}}finally{try{O&&!O.done&&(a=S.return)&&a.call(S)}finally{if(i)throw i.error}}return _},e.prototype.executeQuery=function(t,n){var r=this;if(n===void 0&&(n={}),t===e.wildcard)return this.executeWildcardQuery(n);if(typeof t!="string"){var o=me(me(me({},n),t),{queries:void 0}),i=t.queries.map(function(w){return r.executeQuery(w,o)});return this.combineResults(i,o.combineWith)}var a=this._options,l=a.tokenize,s=a.processTerm,c=a.searchOptions,d=me(me({tokenize:l,processTerm:s},c),n),u=d.tokenize,f=d.processTerm,h=u(t).flatMap(function(w){return f(w)}).filter(function(w){return!!w}),y=h.map(_5(d)),g=y.map(function(w){return r.executeQuerySpec(w,d)});return this.combineResults(g,d.combineWith)},e.prototype.executeQuerySpec=function(t,n){var r,o,i,a,l=me(me({},this._options.searchOptions),n),s=(l.fields||this._options.fields).reduce(function(B,L){var z;return me(me({},B),(z={},z[L]=Xs(l.boost,L)||1,z))},{}),c=l.boostDocument,d=l.weights,u=l.maxFuzzy,f=l.bm25,h=me(me({},gh.weights),d),y=h.fuzzy,g=h.prefix,w=this._index.get(t.term),m=this.termResults(t.term,t.term,1,w,s,c,f),v,_;if(t.prefix&&(v=this._index.atPrefix(t.term)),t.fuzzy){var E=t.fuzzy===!0?.2:t.fuzzy,C=E<1?Math.min(u,Math.round(t.term.length*E)):E;C&&(_=this._index.fuzzyGet(t.term,C))}if(v)try{for(var k=re(v),P=k.next();!P.done;P=k.next()){var A=Ne(P.value,2),S=A[0],O=A[1],j=S.length-t.term.length;if(j){_==null||_.delete(S);var N=g*S.length/(S.length+.3*j);this.termResults(t.term,S,N,O,s,c,f,m)}}}catch(B){r={error:B}}finally{try{P&&!P.done&&(o=k.return)&&o.call(k)}finally{if(r)throw r.error}}if(_)try{for(var F=re(_.keys()),$=F.next();!$.done;$=F.next()){var S=$.value,U=Ne(_.get(S),2),W=U[0],j=U[1];if(j){var N=y*S.length/(S.length+j);this.termResults(t.term,S,N,W,s,c,f,m)}}}catch(B){i={error:B}}finally{try{$&&!$.done&&(a=F.return)&&a.call(F)}finally{if(i)throw i.error}}return m},e.prototype.executeWildcardQuery=function(t){var n,r,o=new Map,i=me(me({},this._options.searchOptions),t);try{for(var a=re(this._documentIds),l=a.next();!l.done;l=a.next()){var s=Ne(l.value,2),c=s[0],d=s[1],u=i.boostDocument?i.boostDocument(d,"",this._storedFields.get(c)):1;o.set(c,{score:u,terms:[],match:{}})}}catch(f){n={error:f}}finally{try{l&&!l.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return o},e.prototype.combineResults=function(t,n){if(n===void 0&&(n=Yd),t.length===0)return new Map;var r=n.toLowerCase();return t.reduce(g5[r])||new Map},e.prototype.toJSON=function(){var t,n,r,o,i=[];try{for(var a=re(this._index),l=a.next();!l.done;l=a.next()){var s=Ne(l.value,2),c=s[0],d=s[1],u={};try{for(var f=(r=void 0,re(d)),h=f.next();!h.done;h=f.next()){var y=Ne(h.value,2),g=y[0],w=y[1];u[g]=Object.fromEntries(w)}}catch(m){r={error:m}}finally{try{h&&!h.done&&(o=f.return)&&o.call(f)}finally{if(r)throw r.error}}i.push([c,u])}}catch(m){t={error:m}}finally{try{l&&!l.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:i,serializationVersion:2}},e.prototype.termResults=function(t,n,r,o,i,a,l,s){var c,d,u,f,h;if(s===void 0&&(s=new Map),o==null)return s;try{for(var y=re(Object.keys(i)),g=y.next();!g.done;g=y.next()){var w=g.value,m=i[w],v=this._fieldIds[w],_=o.get(v);if(_!=null){var E=_.size,C=this._avgFieldLength[v];try{for(var k=(u=void 0,re(_.keys())),P=k.next();!P.done;P=k.next()){var A=P.value;if(!this._documentIds.has(A)){this.removeTerm(v,A,n),E-=1;continue}var S=a?a(this._documentIds.get(A),n,this._storedFields.get(A)):1;if(S){var O=_.get(A),j=this._fieldLength.get(A)[v],N=x5(O,E,this._documentCount,j,C,l),F=r*m*S*N,$=s.get(A);if($){$.score+=F,E5($.terms,t);var U=Xs($.match,n);U?U.push(w):$.match[n]=[w]}else s.set(A,{score:F,terms:[t],match:(h={},h[n]=[w],h)})}}}catch(W){u={error:W}}finally{try{P&&!P.done&&(f=k.return)&&f.call(k)}finally{if(u)throw u.error}}}}}catch(W){c={error:W}}finally{try{g&&!g.done&&(d=y.return)&&d.call(y)}finally{if(c)throw c.error}}return s},e.prototype.addTerm=function(t,n,r){var o=this._index.fetch(r,_h),i=o.get(t);if(i==null)i=new Map,i.set(n,1),o.set(t,i);else{var a=i.get(n);i.set(n,(a||0)+1)}},e.prototype.removeTerm=function(t,n,r){if(!this._index.has(r)){this.warnDocumentChanged(n,t,r);return}var o=this._index.fetch(r,_h),i=o.get(t);i==null||i.get(n)==null?this.warnDocumentChanged(n,t,r):i.get(n)<=1?i.size<=1?o.delete(t):i.delete(n):i.set(n,i.get(n)-1),this._index.get(r).size===0&&this._index.delete(r)},e.prototype.warnDocumentChanged=function(t,n,r){var o,i;try{for(var a=re(Object.keys(this._fieldIds)),l=a.next();!l.done;l=a.next()){var s=l.value;if(this._fieldIds[s]===n){this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(t),' has changed before removal: term "').concat(r,'" was not present in field "').concat(s,'". Removing a document after it has changed can corrupt the index!'),"version_conflict");return}}}catch(c){o={error:c}}finally{try{l&&!l.done&&(i=a.return)&&i.call(a)}finally{if(o)throw o.error}}},e.prototype.addDocumentId=function(t){var n=this._nextId;return this._idToShortId.set(t,n),this._documentIds.set(n,t),this._documentCount+=1,this._nextId+=1,n},e.prototype.addFields=function(t){for(var n=0;nJSON.stringify(await(await fetch("/.vocs/search-index-9565ce6b.json")).json());let tu;function L1(){const[e,t]=p.useState();return p.useEffect(()=>{(async()=>{tu||(tu=b5());const n=await tu,r=v5.loadJSON(n,{fields:["title","titles","text"],searchOptions:{boost:{title:4,text:2,titles:1},fuzzy:.2,prefix:!0},storeFields:["href","html","isPage","text","title","titles"]});t(r)})()},[]),p.useEffect(()=>{},[]),e}var C5="vocs_DesktopSearch_search",P5="vocs_DesktopSearch_searchCommand";const A5=p.forwardRef((e,t)=>p.createElement(fe.label,q({},e,{ref:t,onMouseDown:n=>{var r;(r=e.onMouseDown)===null||r===void 0||r.call(e,n),!n.defaultPrevented&&n.detail>1&&n.preventDefault()}}))),S5=A5;var D1={exports:{}};/*!*************************************************** * mark.js v8.11.1 * https://markjs.io/ * Copyright (c) 2014–2018, Julian Kühnel * Released under the MIT license https://git.io/vwTVl -*****************************************************/(function(e,t){(function(n,r){e.exports=r()})(Ty,function(){var n=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(c){return typeof c}:function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},r=function(c,d){if(!(c instanceof d))throw new TypeError("Cannot call a class as a function")},o=function(){function c(d,u){for(var f=0;f1&&arguments[1]!==void 0?arguments[1]:!0,f=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:5e3;r(this,c),this.ctx=d,this.iframes=u,this.exclude=f,this.iframesTimeout=h}return o(c,[{key:"getContexts",value:function(){var u=void 0,f=[];return typeof this.ctx>"u"||!this.ctx?u=[]:NodeList.prototype.isPrototypeOf(this.ctx)?u=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?u=this.ctx:typeof this.ctx=="string"?u=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):u=[this.ctx],u.forEach(function(h){var y=f.filter(function(g){return g.contains(h)}).length>0;f.indexOf(h)===-1&&!y&&f.push(h)}),f}},{key:"getIframeContents",value:function(u,f){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},y=void 0;try{var g=u.contentWindow;if(y=g.document,!g||!y)throw new Error("iframe inaccessible")}catch{h()}y&&f(y)}},{key:"isIframeBlank",value:function(u){var f="about:blank",h=u.getAttribute("src").trim(),y=u.contentWindow.location.href;return y===f&&h!==f&&h}},{key:"observeIframeLoad",value:function(u,f,h){var y=this,g=!1,w=null,m=function v(){if(!g){g=!0,clearTimeout(w);try{y.isIframeBlank(u)||(u.removeEventListener("load",v),y.getIframeContents(u,f,h))}catch{h()}}};u.addEventListener("load",m),w=setTimeout(m,this.iframesTimeout)}},{key:"onIframeReady",value:function(u,f,h){try{u.contentWindow.document.readyState==="complete"?this.isIframeBlank(u)?this.observeIframeLoad(u,f,h):this.getIframeContents(u,f,h):this.observeIframeLoad(u,f,h)}catch{h()}}},{key:"waitForIframes",value:function(u,f){var h=this,y=0;this.forEachIframe(u,function(){return!0},function(g){y++,h.waitForIframes(g.querySelector("html"),function(){--y||f()})},function(g){g||f()})}},{key:"forEachIframe",value:function(u,f,h){var y=this,g=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},w=u.querySelectorAll("iframe"),m=w.length,v=0;w=Array.prototype.slice.call(w);var _=function(){--m<=0&&g(v)};m||_(),w.forEach(function(E){c.matches(E,y.exclude)?_():y.onIframeReady(E,function(C){f(E)&&(v++,h(C)),_()},_)})}},{key:"createIterator",value:function(u,f,h){return document.createNodeIterator(u,f,h,!1)}},{key:"createInstanceOnIframe",value:function(u){return new c(u.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(u,f,h){var y=u.compareDocumentPosition(h),g=Node.DOCUMENT_POSITION_PRECEDING;if(y&g)if(f!==null){var w=f.compareDocumentPosition(h),m=Node.DOCUMENT_POSITION_FOLLOWING;if(w&m)return!0}else return!0;return!1}},{key:"getIteratorNode",value:function(u){var f=u.previousNode(),h=void 0;return f===null?h=u.nextNode():h=u.nextNode()&&u.nextNode(),{prevNode:f,node:h}}},{key:"checkIframeFilter",value:function(u,f,h,y){var g=!1,w=!1;return y.forEach(function(m,v){m.val===h&&(g=v,w=m.handled)}),this.compareNodeIframe(u,f,h)?(g===!1&&!w?y.push({val:h,handled:!0}):g!==!1&&!w&&(y[g].handled=!0),!0):(g===!1&&y.push({val:h,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(u,f,h,y){var g=this;u.forEach(function(w){w.handled||g.getIframeContents(w.val,function(m){g.createInstanceOnIframe(m).forEachNode(f,h,y)})})}},{key:"iterateThroughNodes",value:function(u,f,h,y,g){for(var w=this,m=this.createIterator(f,u,y),v=[],_=[],E=void 0,C=void 0,k=function(){var A=w.getIteratorNode(m);return C=A.prevNode,E=A.node,E};k();)this.iframes&&this.forEachIframe(f,function(P){return w.checkIframeFilter(E,C,P,v)},function(P){w.createInstanceOnIframe(P).forEachNode(u,function(A){return _.push(A)},y)}),_.push(E);_.forEach(function(P){h(P)}),this.iframes&&this.handleOpenIframes(v,u,h,y),g()}},{key:"forEachNode",value:function(u,f,h){var y=this,g=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},w=this.getContexts(),m=w.length;m||g(),w.forEach(function(v){var _=function(){y.iterateThroughNodes(u,v,f,h,function(){--m<=0&&g()})};y.iframes?y.waitForIframes(v,_):_()})}}],[{key:"matches",value:function(u,f){var h=typeof f=="string"?[f]:f,y=u.matches||u.matchesSelector||u.msMatchesSelector||u.mozMatchesSelector||u.oMatchesSelector||u.webkitMatchesSelector;if(y){var g=!1;return h.every(function(w){return y.call(u,w)?(g=!0,!1):!0}),g}else return!1}}]),c}(),l=function(){function c(d){r(this,c),this.ctx=d,this.ie=!1;var u=window.navigator.userAgent;(u.indexOf("MSIE")>-1||u.indexOf("Trident")>-1)&&(this.ie=!0)}return o(c,[{key:"log",value:function(u){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"debug",h=this.opt.log;this.opt.debug&&(typeof h>"u"?"undefined":n(h))==="object"&&typeof h[f]=="function"&&h[f]("mark.js: "+u)}},{key:"escapeStr",value:function(u){return u.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(u){return this.opt.wildcards!=="disabled"&&(u=this.setupWildcardsRegExp(u)),u=this.escapeStr(u),Object.keys(this.opt.synonyms).length&&(u=this.createSynonymsRegExp(u)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(u=this.setupIgnoreJoinersRegExp(u)),this.opt.diacritics&&(u=this.createDiacriticsRegExp(u)),u=this.createMergedBlanksRegExp(u),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(u=this.createJoinersRegExp(u)),this.opt.wildcards!=="disabled"&&(u=this.createWildcardsRegExp(u)),u=this.createAccuracyRegExp(u),u}},{key:"createSynonymsRegExp",value:function(u){var f=this.opt.synonyms,h=this.opt.caseSensitive?"":"i",y=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var g in f)if(f.hasOwnProperty(g)){var w=f[g],m=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(g):this.escapeStr(g),v=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(w):this.escapeStr(w);m!==""&&v!==""&&(u=u.replace(new RegExp("("+this.escapeStr(m)+"|"+this.escapeStr(v)+")","gm"+h),y+("("+this.processSynomyms(m)+"|")+(this.processSynomyms(v)+")")+y))}return u}},{key:"processSynomyms",value:function(u){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(u=this.setupIgnoreJoinersRegExp(u)),u}},{key:"setupWildcardsRegExp",value:function(u){return u=u.replace(/(?:\\)*\?/g,function(f){return f.charAt(0)==="\\"?"?":""}),u.replace(/(?:\\)*\*/g,function(f){return f.charAt(0)==="\\"?"*":""})}},{key:"createWildcardsRegExp",value:function(u){var f=this.opt.wildcards==="withSpaces";return u.replace(/\u0001/g,f?"[\\S\\s]?":"\\S?").replace(/\u0002/g,f?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(u){return u.replace(/[^(|)\\]/g,function(f,h,y){var g=y.charAt(h+1);return/[(|)\\]/.test(g)||g===""?f:f+"\0"})}},{key:"createJoinersRegExp",value:function(u){var f=[],h=this.opt.ignorePunctuation;return Array.isArray(h)&&h.length&&f.push(this.escapeStr(h.join(""))),this.opt.ignoreJoiners&&f.push("\\u00ad\\u200b\\u200c\\u200d"),f.length?u.split(/\u0000+/).join("["+f.join("")+"]*"):u}},{key:"createDiacriticsRegExp",value:function(u){var f=this.opt.caseSensitive?"":"i",h=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"],y=[];return u.split("").forEach(function(g){h.every(function(w){if(w.indexOf(g)!==-1){if(y.indexOf(w)>-1)return!1;u=u.replace(new RegExp("["+w+"]","gm"+f),"["+w+"]"),y.push(w)}return!0})}),u}},{key:"createMergedBlanksRegExp",value:function(u){return u.replace(/[\s]+/gmi,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(u){var f=this,h="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿",y=this.opt.accuracy,g=typeof y=="string"?y:y.value,w=typeof y=="string"?[]:y.limiters,m="";switch(w.forEach(function(v){m+="|"+f.escapeStr(v)}),g){case"partially":default:return"()("+u+")";case"complementary":return m="\\s"+(m||this.escapeStr(h)),"()([^"+m+"]*"+u+"[^"+m+"]*)";case"exactly":return"(^|\\s"+m+")("+u+")(?=$|\\s"+m+")"}}},{key:"getSeparatedKeywords",value:function(u){var f=this,h=[];return u.forEach(function(y){f.opt.separateWordSearch?y.split(" ").forEach(function(g){g.trim()&&h.indexOf(g)===-1&&h.push(g)}):y.trim()&&h.indexOf(y)===-1&&h.push(y)}),{keywords:h.sort(function(y,g){return g.length-y.length}),length:h.length}}},{key:"isNumeric",value:function(u){return Number(parseFloat(u))==u}},{key:"checkRanges",value:function(u){var f=this;if(!Array.isArray(u)||Object.prototype.toString.call(u[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(u),[];var h=[],y=0;return u.sort(function(g,w){return g.start-w.start}).forEach(function(g){var w=f.callNoMatchOnInvalidRanges(g,y),m=w.start,v=w.end,_=w.valid;_&&(g.start=m,g.length=v-m,h.push(g),y=v)}),h}},{key:"callNoMatchOnInvalidRanges",value:function(u,f){var h=void 0,y=void 0,g=!1;return u&&typeof u.start<"u"?(h=parseInt(u.start,10),y=h+parseInt(u.length,10),this.isNumeric(u.start)&&this.isNumeric(u.length)&&y-f>0&&y-h>0?g=!0:(this.log("Ignoring invalid or overlapping range: "+(""+JSON.stringify(u))),this.opt.noMatch(u))):(this.log("Ignoring invalid range: "+JSON.stringify(u)),this.opt.noMatch(u)),{start:h,end:y,valid:g}}},{key:"checkWhitespaceRanges",value:function(u,f,h){var y=void 0,g=!0,w=h.length,m=f-w,v=parseInt(u.start,10)-m;return v=v>w?w:v,y=v+parseInt(u.length,10),y>w&&(y=w,this.log("End range automatically set to the max value of "+w)),v<0||y-v<0||v>w||y>w?(g=!1,this.log("Invalid range: "+JSON.stringify(u)),this.opt.noMatch(u)):h.substring(v,y).replace(/\s+/g,"")===""&&(g=!1,this.log("Skipping whitespace only range: "+JSON.stringify(u)),this.opt.noMatch(u)),{start:v,end:y,valid:g}}},{key:"getTextNodes",value:function(u){var f=this,h="",y=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,function(g){y.push({start:h.length,end:(h+=g.textContent).length,node:g})},function(g){return f.matchesExclude(g.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},function(){u({value:h,nodes:y})})}},{key:"matchesExclude",value:function(u){return a.matches(u,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(u,f,h){var y=this.opt.element?this.opt.element:"mark",g=u.splitText(f),w=g.splitText(h-f),m=document.createElement(y);return m.setAttribute("data-markjs","true"),this.opt.className&&m.setAttribute("class",this.opt.className),m.textContent=g.textContent,g.parentNode.replaceChild(m,g),w}},{key:"wrapRangeInMappedTextNode",value:function(u,f,h,y,g){var w=this;u.nodes.every(function(m,v){var _=u.nodes[v+1];if(typeof _>"u"||_.start>f){if(!y(m.node))return!1;var E=f-m.start,C=(h>m.end?m.end:h)-m.start,k=u.value.substr(0,m.start),P=u.value.substr(C+m.start);if(m.node=w.wrapRangeInTextNode(m.node,E,C),u.value=k+P,u.nodes.forEach(function(A,S){S>=v&&(u.nodes[S].start>0&&S!==v&&(u.nodes[S].start-=C),u.nodes[S].end-=C)}),h-=C,g(m.node.previousSibling,m.start),h>m.end)f=m.end;else return!1}return!0})}},{key:"wrapMatches",value:function(u,f,h,y,g){var w=this,m=f===0?0:f+1;this.getTextNodes(function(v){v.nodes.forEach(function(_){_=_.node;for(var E=void 0;(E=u.exec(_.textContent))!==null&&E[m]!=="";)if(h(E[m],_)){var C=E.index;if(m!==0)for(var k=1;k{const o=setTimeout(()=>r(e),t||500);return()=>{clearTimeout(o)}},[e,t]),n}function yc(e,t){const[n,r]=p.useState();p.useEffect(()=>{const i=OE(e);r(typeof i>"u"||i===null?typeof t=="function"?t():t:i)},[t,e]);const o=p.useCallback(i=>{r(a=>{let l;typeof i=="function"?l=i(a):l=i;try{localStorage.setItem(e,JSON.stringify(l))}catch{}return l})},[e]);return[n,o]}function OE(e){try{const t=localStorage.getItem(e);return typeof t=="string"?JSON.parse(t):void 0}catch{return}}var IE="vocs_Kbd";function N1(e){return x.jsx("kbd",{...e,className:D(e.className,IE)})}var LE="vocs_KeyboardShortcut_kbdGroup",DE="vocs_KeyboardShortcut";function ro(e){const{description:t,keys:n}=e;return x.jsxs("span",{className:DE,children:[t,x.jsx("span",{className:LE,children:n.map(r=>x.jsx(N1,{children:r},r))})]})}var NE="vocs_SearchDialog_content",wh="vocs_SearchDialog_excerpt",ME="vocs_SearchDialog_overlay",jE="vocs_SearchDialog_result",Eh="vocs_SearchDialog_resultIcon",FE="vocs_SearchDialog_resultSelected",zE="vocs_SearchDialog_results",UE="vocs_SearchDialog",VE="vocs_SearchDialog_searchBox",BE="vocs_SearchDialog_searchInput",Pa="vocs_SearchDialog_searchInputIcon",HE="vocs_SearchDialog_searchInputIconDesktop",WE="vocs_SearchDialog_searchInputIconMobile",KE="vocs_SearchDialog_searchShortcuts",kh="vocs_SearchDialog_title",GE="vocs_SearchDialog_titleIcon",qE="vocs_SearchDialog_titles";function M1(e){const t=Ud(),n=p.useRef(null),r=p.useRef(null),[o,i]=yc("filterText",""),a=$E(o,200),l=L1(),[s,c]=p.useState(-1),[d,u]=p.useState(!1),[f,h]=yc("showDetailView",!0),y=p.useMemo(()=>l?a?(c(0),l.search(a).slice(0,16)):(c(-1),[]):[],[l,a]),g=y.length,w=y[s],m=p.useCallback(()=>{var C,k,P;if(!r.current)return;const v=new Set;for(const A of y)for(const S in A.match)v.add(S);const _=new RE(r.current);_.unmark({done(){_==null||_.markRegExp(YE(v))}});const E=r.current.querySelectorAll(`.${wh}`);for(const A of E)(C=A.querySelector('mark[data-markjs="true"]'))==null||C.scrollIntoView({block:"center"});(P=(k=r.current)==null?void 0:k.firstElementChild)==null||P.scrollIntoView({block:"start"})},[y]);return p.useEffect(()=>{if(!e.open)return;function v(_){var E;switch(_.key){case"ArrowDown":{_.preventDefault(),c(C=>{var A;let k=C+1;k>=g&&(k=0);const P=(A=r.current)==null?void 0:A.children[k];return P==null||P.scrollIntoView({block:"nearest"}),k}),u(!0);break}case"ArrowUp":{_.preventDefault(),c(C=>{var A;let k=C-1;k<0&&(k=g-1);const P=(A=r.current)==null?void 0:A.children[k];return P==null||P.scrollIntoView({block:"nearest"}),k}),u(!0);break}case"Backspace":{if(!_.metaKey)return;_.preventDefault(),i(""),(E=n.current)==null||E.focus();break}case"Enter":{if(_.target instanceof HTMLButtonElement&&_.target.type!=="submit"||!w)return;_.preventDefault(),t(w.href),e.onClose();break}}}return window.addEventListener("keydown",v),()=>{window.removeEventListener("keydown",v)}},[t,g,i,w,e.open,e.onClose]),p.useEffect(()=>{a!==""&&r.current&&m()},[m,a]),x.jsxs(aE,{children:[x.jsx(lE,{className:ME}),x.jsxs(sE,{onOpenAutoFocus:v=>{n.current&&(v.preventDefault(),n.current.focus()),m()},onCloseAutoFocus:()=>{c(0)},className:UE,"aria-describedby":void 0,children:[x.jsx(uE,{className:r1,children:"Search"}),x.jsxs("form",{className:VE,children:[x.jsx("button",{"aria-label":"Close search dialog",type:"button",onClick:()=>e.onClose(),className:WE,children:x.jsx(k3,{className:Pa,height:20,width:20})}),x.jsx(SE,{htmlFor:"search-input",children:x.jsx(Wd,{"aria-label":"Search",className:D(Pa,HE),height:20,width:20})}),x.jsx("input",{ref:n,tabIndex:0,className:BE,id:"search-input",onChange:v=>i(v.target.value),placeholder:"Search",type:"search",value:o}),x.jsx("button",{"aria-label":"Toggle detail view",type:"button",onClick:()=>h(v=>!v),children:x.jsx($3,{className:Pa,height:20,width:20})}),x.jsx("button",{"aria-label":"Reset search",type:"button",className:Pa,onClick:()=>{var v;i(""),(v=n.current)==null||v.focus()},children:"⌫"})]}),x.jsxs("ul",{className:zE,role:y.length?"listbox":void 0,onMouseMove:()=>u(!1),ref:r,children:[a&&y.length===0&&x.jsxs("li",{children:['No results for "',x.jsx("span",{children:a}),'"']}),y.map((v,_)=>{var E;return x.jsx("li",{role:"option",className:D(jE,_===s&&FE),"aria-selected":_===s,"aria-label":[...v.titles.filter(C=>!!C),v.title].join(" > "),children:x.jsxs(Vv,{to:v.href,onClick:C=>{C.metaKey||e.onClose()},onMouseEnter:()=>!d&&c(_),onFocus:()=>c(_),children:[x.jsxs("div",{className:qE,children:[v.isPage?x.jsx(T3,{className:Eh}):x.jsx("span",{className:Eh,children:"#"}),v.titles.filter(C=>!!C).map(C=>x.jsxs("span",{className:kh,children:[x.jsx("span",{dangerouslySetInnerHTML:{__html:C}}),x.jsx(C3,{className:GE})]},C)),x.jsx("span",{className:kh,children:x.jsx("span",{dangerouslySetInnerHTML:{__html:v.title}})})]}),f&&((E=v.text)==null?void 0:E.trim())&&x.jsx("div",{className:wh,children:x.jsx(e1,{className:NE,children:x.jsx("div",{dangerouslySetInnerHTML:{__html:v.html}})})})]})},v.id)})]}),x.jsxs("div",{className:KE,children:[x.jsx(ro,{description:"Navigate",keys:["↑","↓"]}),x.jsx(ro,{description:"Select",keys:["enter"]}),x.jsx(ro,{description:"Close",keys:["esc"]}),x.jsx(ro,{description:"Reset",keys:["⌘","⌫"]})]})]})]})}function YE(e){return new RegExp([...e].sort((t,n)=>n.length-t.length).map(t=>`(${t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")})`).join("|"),"gi")}function QE(){L1();const[e,t]=p.useState(!1);return p.useEffect(()=>{function n(r){const o=document.activeElement instanceof HTMLElement&&(["input","select","textarea"].includes(document.activeElement.tagName.toLowerCase())||document.activeElement.isContentEditable);r.key==="/"&&!e&&!o?(r.preventDefault(),t(!0)):r.metaKey===!0&&r.key==="k"&&(r.preventDefault(),t(i=>!i))}return window.addEventListener("keydown",n),()=>{window.removeEventListener("keydown",n)}},[e]),x.jsxs(P1,{open:e,onOpenChange:t,children:[x.jsx(A1,{asChild:!0,children:x.jsxs("button",{className:CE,type:"button",children:[x.jsx(Wd,{style:{marginTop:2}}),"Search",x.jsx("div",{className:PE,children:x.jsx("div",{style:{background:"currentColor",transform:"rotate(45deg)",width:1.5,borderRadius:2,height:"100%"}})})]})}),x.jsx(M1,{open:e,onClose:()=>t(!1)})]})}var j1="vocs_DesktopTopNav_button",ZE="vocs_DesktopTopNav_content",XE="vocs_DesktopTopNav_curtain",bh="vocs_DesktopTopNav_divider",nu="vocs_DesktopTopNav_group",Aa="vocs_DesktopTopNav_hideCompact",xc="vocs_DesktopTopNav_icon",wl="vocs_DesktopTopNav_item",JE="vocs_DesktopTopNav_logo",e5="vocs_DesktopTopNav_logoWrapper",t5="vocs_DesktopTopNav",Ch="vocs_DesktopTopNav_section",n5="vocs_DesktopTopNav_withLogo",r5="vocs_Icon",_c="var(--vocs_Icon_size)";function st({className:e,label:t,icon:n,size:r,style:o}){return x.jsx("div",{"aria-label":t,className:D(r5,e),role:"img",style:{...o,...qt({[_c]:r})},children:x.jsx(n,{height:r,width:r})})}var o5="vocs_Logo_logoDark",i5="vocs_Logo_logoLight",ru="vocs_Logo";function a5({className:e}){const{logoUrl:t}=Je();return t?x.jsx(x.Fragment,{children:typeof t=="string"?x.jsx("img",{alt:"Logo",className:D(e,ru),src:t}):x.jsxs(x.Fragment,{children:[x.jsx("img",{alt:"Logo",className:D(e,ru,o5),src:t.dark}),x.jsx("img",{alt:"Logo",className:D(e,ru,i5),src:t.light})]})}):null}var l5="vocs_NavLogo_logoImage",s5="vocs_NavLogo_title";function Qd(){const e=Je();return e.logoUrl?x.jsx(a5,{className:l5}):x.jsx("div",{className:s5,children:e.title})}const u5=p.createContext(void 0);function ql(e){const t=p.useContext(u5);return e||t||"ltr"}function Yl(e){const t=e+"CollectionProvider",[n,r]=kn(t),[o,i]=n(t,{collectionRef:{current:null},itemMap:new Map}),a=h=>{const{scope:y,children:g}=h,w=Z.useRef(null),m=Z.useRef(new Map).current;return Z.createElement(o,{scope:y,itemMap:m,collectionRef:w},g)},l=e+"CollectionSlot",s=Z.forwardRef((h,y)=>{const{scope:g,children:w}=h,m=i(l,g),v=Ue(y,m.collectionRef);return Z.createElement(bo,{ref:v},w)}),c=e+"CollectionItemSlot",d="data-radix-collection-item",u=Z.forwardRef((h,y)=>{const{scope:g,children:w,...m}=h,v=Z.useRef(null),_=Ue(y,v),E=i(c,g);return Z.useEffect(()=>(E.itemMap.set(v,{ref:v,...m}),()=>void E.itemMap.delete(v))),Z.createElement(bo,{[d]:"",ref:_},w)});function f(h){const y=i(e+"CollectionConsumer",h);return Z.useCallback(()=>{const w=y.collectionRef.current;if(!w)return[];const m=Array.from(w.querySelectorAll(`[${d}]`));return Array.from(y.itemMap.values()).sort((E,C)=>m.indexOf(E.ref.current)-m.indexOf(C.ref.current))},[y.collectionRef,y.itemMap])}return[{Provider:a,Slot:s,ItemSlot:u},f,r]}function c5(e){const t=p.useRef({value:e,previous:e});return p.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}const d5=p.forwardRef((e,t)=>p.createElement(fe.span,q({},e,{ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}}))),f5=d5,Gi="NavigationMenu",[Zd,p5,h5]=Yl(Gi),[wc,m5,v5]=Yl(Gi),[Xd,kP]=kn(Gi,[h5,v5]),[g5,Ir]=Xd(Gi),[y5,bP]=Xd(Gi),x5=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,onValueChange:o,defaultValue:i,delayDuration:a=200,skipDelayDuration:l=300,orientation:s="horizontal",dir:c,...d}=e,[u,f]=p.useState(null),h=Ue(t,S=>f(S)),y=ql(c),g=p.useRef(0),w=p.useRef(0),m=p.useRef(0),[v,_]=p.useState(!0),[E="",C]=ar({prop:r,onChange:S=>{const O=S!=="",j=l>0;O?(window.clearTimeout(m.current),j&&_(!1)):(window.clearTimeout(m.current),m.current=window.setTimeout(()=>_(!0),l)),o==null||o(S)},defaultProp:i}),k=p.useCallback(()=>{window.clearTimeout(w.current),w.current=window.setTimeout(()=>C(""),150)},[C]),P=p.useCallback(S=>{window.clearTimeout(w.current),C(S)},[C]),A=p.useCallback(S=>{E===S?window.clearTimeout(w.current):g.current=window.setTimeout(()=>{window.clearTimeout(w.current),C(S)},a)},[E,C,a]);return p.useEffect(()=>()=>{window.clearTimeout(g.current),window.clearTimeout(w.current),window.clearTimeout(m.current)},[]),p.createElement(_5,{scope:n,isRootMenu:!0,value:E,dir:y,orientation:s,rootNavigationMenu:u,onTriggerEnter:S=>{window.clearTimeout(g.current),v?A(S):P(S)},onTriggerLeave:()=>{window.clearTimeout(g.current),k()},onContentEnter:()=>window.clearTimeout(w.current),onContentLeave:k,onItemSelect:S=>{C(O=>O===S?"":S)},onItemDismiss:()=>C("")},p.createElement(fe.nav,q({"aria-label":"Main","data-orientation":s,dir:y},d,{ref:h})))}),_5=e=>{const{scope:t,isRootMenu:n,rootNavigationMenu:r,dir:o,orientation:i,children:a,value:l,onItemSelect:s,onItemDismiss:c,onTriggerEnter:d,onTriggerLeave:u,onContentEnter:f,onContentLeave:h}=e,[y,g]=p.useState(null),[w,m]=p.useState(new Map),[v,_]=p.useState(null);return p.createElement(g5,{scope:t,isRootMenu:n,rootNavigationMenu:r,value:l,previousValue:c5(l),baseId:on(),dir:o,orientation:i,viewport:y,onViewportChange:g,indicatorTrack:v,onIndicatorTrackChange:_,onTriggerEnter:at(d),onTriggerLeave:at(u),onContentEnter:at(f),onContentLeave:at(h),onItemSelect:at(s),onItemDismiss:at(c),onViewportContentChange:p.useCallback((E,C)=>{m(k=>(k.set(E,C),new Map(k)))},[]),onViewportContentRemove:p.useCallback(E=>{m(C=>C.has(E)?(C.delete(E),new Map(C)):C)},[])},p.createElement(Zd.Provider,{scope:t},p.createElement(y5,{scope:t,items:w},a)))},w5="NavigationMenuList",E5=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=Ir(w5,n),i=p.createElement(fe.ul,q({"data-orientation":o.orientation},r,{ref:t}));return p.createElement(fe.div,{style:{position:"relative"},ref:o.onIndicatorTrackChange},p.createElement(Zd.Slot,{scope:n},o.isRootMenu?p.createElement(z1,{asChild:!0},i):i))}),k5="NavigationMenuItem",[b5,F1]=Xd(k5),C5=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,...o}=e,i=on(),a=r||i||"LEGACY_REACT_AUTO_VALUE",l=p.useRef(null),s=p.useRef(null),c=p.useRef(null),d=p.useRef(()=>{}),u=p.useRef(!1),f=p.useCallback((y="start")=>{if(l.current){d.current();const g=Ec(l.current);g.length&&Jd(y==="start"?g:g.reverse())}},[]),h=p.useCallback(()=>{if(l.current){const y=Ec(l.current);y.length&&(d.current=I5(y))}},[]);return p.createElement(b5,{scope:n,value:a,triggerRef:s,contentRef:l,focusProxyRef:c,wasEscapeCloseRef:u,onEntryKeyDown:f,onFocusProxyEnter:f,onRootContentClose:h,onContentFocusOutside:h},p.createElement(fe.li,q({},o,{ref:t})))}),Ph="NavigationMenuTrigger",P5=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,disabled:r,...o}=e,i=Ir(Ph,e.__scopeNavigationMenu),a=F1(Ph,e.__scopeNavigationMenu),l=p.useRef(null),s=Ue(l,a.triggerRef,t),c=B1(i.baseId,a.value),d=H1(i.baseId,a.value),u=p.useRef(!1),f=p.useRef(!1),h=a.value===i.value;return p.createElement(p.Fragment,null,p.createElement(Zd.ItemSlot,{scope:n,value:a.value},p.createElement(U1,{asChild:!0},p.createElement(fe.button,q({id:c,disabled:r,"data-disabled":r?"":void 0,"data-state":V1(h),"aria-expanded":h,"aria-controls":d},o,{ref:s,onPointerEnter:le(e.onPointerEnter,()=>{f.current=!1,a.wasEscapeCloseRef.current=!1}),onPointerMove:le(e.onPointerMove,kc(()=>{r||f.current||a.wasEscapeCloseRef.current||u.current||(i.onTriggerEnter(a.value),u.current=!0)})),onPointerLeave:le(e.onPointerLeave,kc(()=>{r||(i.onTriggerLeave(),u.current=!1)})),onClick:le(e.onClick,()=>{i.onItemSelect(a.value),f.current=h}),onKeyDown:le(e.onKeyDown,y=>{const w={horizontal:"ArrowDown",vertical:i.dir==="rtl"?"ArrowLeft":"ArrowRight"}[i.orientation];h&&y.key===w&&(a.onEntryKeyDown(),y.preventDefault())})})))),h&&p.createElement(p.Fragment,null,p.createElement(f5,{"aria-hidden":!0,tabIndex:0,ref:a.focusProxyRef,onFocus:y=>{const g=a.contentRef.current,w=y.relatedTarget,m=w===l.current,v=g==null?void 0:g.contains(w);(m||!v)&&a.onFocusProxyEnter(m?"start":"end")}}),i.viewport&&p.createElement("span",{"aria-owns":d})))}),Ah="navigationMenu.linkSelect",A5=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,active:r,onSelect:o,...i}=e;return p.createElement(U1,{asChild:!0},p.createElement(fe.a,q({"data-active":r?"":void 0,"aria-current":r?"page":void 0},i,{ref:t,onClick:le(e.onClick,a=>{const l=a.target,s=new CustomEvent(Ah,{bubbles:!0,cancelable:!0});if(l.addEventListener(Ah,c=>o==null?void 0:o(c),{once:!0}),dc(l,s),!s.defaultPrevented&&!a.metaKey){const c=new CustomEvent(Wa,{bubbles:!0,cancelable:!0});dc(l,c)}},{checkForDefaultPrevented:!1})})))}),El="NavigationMenuContent",S5=p.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Ir(El,e.__scopeNavigationMenu),i=F1(El,e.__scopeNavigationMenu),a=Ue(i.contentRef,t),l=i.value===o.value,s={value:i.value,triggerRef:i.triggerRef,focusProxyRef:i.focusProxyRef,wasEscapeCloseRef:i.wasEscapeCloseRef,onContentFocusOutside:i.onContentFocusOutside,onRootContentClose:i.onRootContentClose,...r};return o.viewport?p.createElement(T5,q({forceMount:n},s,{ref:a})):p.createElement(bn,{present:n||l},p.createElement(R5,q({"data-state":V1(l)},s,{ref:a,onPointerEnter:le(e.onPointerEnter,o.onContentEnter),onPointerLeave:le(e.onPointerLeave,kc(o.onContentLeave)),style:{pointerEvents:!l&&o.isRootMenu?"none":void 0,...s.style}})))}),T5=p.forwardRef((e,t)=>{const n=Ir(El,e.__scopeNavigationMenu),{onViewportContentChange:r,onViewportContentRemove:o}=n;return yn(()=>{r(e.value,{ref:t,...e})},[e,t,r]),yn(()=>()=>o(e.value),[e.value,o]),null}),Wa="navigationMenu.rootContentDismiss",R5=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,triggerRef:o,focusProxyRef:i,wasEscapeCloseRef:a,onRootContentClose:l,onContentFocusOutside:s,...c}=e,d=Ir(El,n),u=p.useRef(null),f=Ue(u,t),h=B1(d.baseId,r),y=H1(d.baseId,r),g=p5(n),w=p.useRef(null),{onItemDismiss:m}=d;p.useEffect(()=>{const _=u.current;if(d.isRootMenu&&_){const E=()=>{var C;m(),l(),_.contains(document.activeElement)&&((C=o.current)===null||C===void 0||C.focus())};return _.addEventListener(Wa,E),()=>_.removeEventListener(Wa,E)}},[d.isRootMenu,e.value,o,m,l]);const v=p.useMemo(()=>{const E=g().map(O=>O.value);d.dir==="rtl"&&E.reverse();const C=E.indexOf(d.value),k=E.indexOf(d.previousValue),P=r===d.value,A=k===E.indexOf(r);if(!P&&!A)return w.current;const S=(()=>{if(C!==k){if(P&&k!==-1)return C>k?"from-end":"from-start";if(A&&C!==-1)return C>k?"to-start":"to-end"}return null})();return w.current=S,S},[d.previousValue,d.value,d.dir,g,r]);return p.createElement(z1,{asChild:!0},p.createElement(Kd,q({id:y,"aria-labelledby":h,"data-motion":v,"data-orientation":d.orientation},c,{ref:f,onDismiss:()=>{var _;const E=new Event(Wa,{bubbles:!0,cancelable:!0});(_=u.current)===null||_===void 0||_.dispatchEvent(E)},onFocusOutside:le(e.onFocusOutside,_=>{var E;s();const C=_.target;(E=d.rootNavigationMenu)!==null&&E!==void 0&&E.contains(C)&&_.preventDefault()}),onPointerDownOutside:le(e.onPointerDownOutside,_=>{var E;const C=_.target,k=g().some(A=>{var S;return(S=A.ref.current)===null||S===void 0?void 0:S.contains(C)}),P=d.isRootMenu&&((E=d.viewport)===null||E===void 0?void 0:E.contains(C));(k||P||!d.isRootMenu)&&_.preventDefault()}),onKeyDown:le(e.onKeyDown,_=>{const E=_.altKey||_.ctrlKey||_.metaKey;if(_.key==="Tab"&&!E){const P=Ec(_.currentTarget),A=document.activeElement,S=P.findIndex(N=>N===A),j=_.shiftKey?P.slice(0,S).reverse():P.slice(S+1,P.length);if(Jd(j))_.preventDefault();else{var k;(k=i.current)===null||k===void 0||k.focus()}}}),onEscapeKeyDown:le(e.onEscapeKeyDown,_=>{a.current=!0})})))}),$5="FocusGroup",z1=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=Ir($5,n);return p.createElement(wc.Provider,{scope:n},p.createElement(wc.Slot,{scope:n},p.createElement(fe.div,q({dir:o.dir},r,{ref:t}))))}),Sh=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"],O5="FocusGroupItem",U1=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=m5(n),i=Ir(O5,n);return p.createElement(wc.ItemSlot,{scope:n},p.createElement(fe.button,q({},r,{ref:t,onKeyDown:le(e.onKeyDown,a=>{if(["Home","End",...Sh].includes(a.key)){let s=o().map(u=>u.ref.current);if([i.dir==="rtl"?"ArrowRight":"ArrowLeft","ArrowUp","End"].includes(a.key)&&s.reverse(),Sh.includes(a.key)){const u=s.indexOf(a.currentTarget);s=s.slice(u+1)}setTimeout(()=>Jd(s)),a.preventDefault()}})})))});function Ec(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const o=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||o?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Jd(e){const t=document.activeElement;return e.some(n=>n===t?!0:(n.focus(),document.activeElement!==t))}function I5(e){return e.forEach(t=>{t.dataset.tabindex=t.getAttribute("tabindex")||"",t.setAttribute("tabindex","-1")}),()=>{e.forEach(t=>{const n=t.dataset.tabindex;t.setAttribute("tabindex",n)})}}function V1(e){return e?"open":"closed"}function B1(e,t){return`${e}-trigger-${t}`}function H1(e,t){return`${e}-content-${t}`}function kc(e){return t=>t.pointerType==="mouse"?e(t):void 0}const L5=x5,D5=E5,N5=C5,M5=P5,j5=A5,F5=S5;var z5="var(--vocs_NavigationMenu_chevronDownIcon)",U5="vocs_NavigationMenu_content",V5="vocs_NavigationMenu_item",B5="vocs_NavigationMenu_link",H5="vocs_NavigationMenu_list",W5="vocs_NavigationMenu",K5="vocs_NavigationMenu_trigger vocs_NavigationMenu_link";const W1=e=>x.jsx(L5,{...e,className:D(e.className,W5)}),K1=e=>x.jsx(D5,{...e,className:D(e.className,H5)}),Ql=({active:e,children:t,className:n,href:r})=>x.jsx(j5,{asChild:!0,children:x.jsx(rn,{"data-active":e,className:D(n,B5),href:r,variant:"styleless",children:t})}),G1=e=>x.jsx(N5,{...e,className:D(e.className,V5)}),q1=({active:e,className:t,...n})=>{const{basePath:r}=Je(),o=r;return x.jsx(M5,{...n,"data-active":e,className:D(t,K5),style:qt({[z5]:`url(${o}/.vocs/icons/chevron-down.svg)`})})},Y1=e=>x.jsx(F5,{...e,className:D(e.className,U5)});function Q1(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 127.14 96.36",children:[x.jsx("title",{children:"Discord"}),x.jsx("g",{id:"图层_2","data-name":"图层 2",children:x.jsx("g",{id:"Discord_Logos","data-name":"Discord Logos",children:x.jsx("g",{id:"Discord_Logo_-_Large_-_White","data-name":"Discord Logo - Large - White",children:x.jsx("path",{d:"M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z",fill:"currentColor"})})})})]})}function Z1(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 98 96",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"GitHub"}),x.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z",fill:"currentColor"})]})}function G5(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 78 82",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Moon"}),x.jsx("path",{d:"M62.8455 45.9668C63.6268 45.9668 64.2127 45.3809 64.3104 44.5508C65.4334 34.3457 66.0682 33.9551 76.4197 32.3438C77.3963 32.1973 77.9334 31.7578 77.9334 30.8789C77.9334 30.0977 77.3963 29.5605 76.6151 29.4629C66.1658 27.4609 65.4334 27.4609 64.3104 17.2559C64.2127 16.377 63.6268 15.8398 62.8455 15.8398C62.0154 15.8398 61.4783 16.377 61.3807 17.207C60.1111 27.6074 59.6229 28.0957 49.0272 29.4629C48.2947 29.5117 47.7088 30.0977 47.7088 30.8789C47.7088 31.709 48.2947 32.1973 49.0272 32.3438C59.6229 34.3457 60.0623 34.4434 61.3807 44.6484C61.4783 45.3809 62.0154 45.9668 62.8455 45.9668ZM44.535 19.5508C45.0233 19.5508 45.3162 19.2578 45.4139 18.7695C46.6834 12.4707 46.5369 12.373 53.1287 11.0547C53.5682 10.957 53.91 10.7129 53.91 10.1758C53.91 9.63868 53.5682 9.39448 53.1287 9.29688C46.5369 7.97848 46.6834 7.88089 45.4139 1.58199C45.3162 1.09379 45.0233 0.800781 44.535 0.800781C43.9979 0.800781 43.7049 1.09379 43.6072 1.58199C42.3377 7.88089 42.4842 7.97848 35.9412 9.29688C35.4529 9.39448 35.1111 9.63868 35.1111 10.1758C35.1111 10.7129 35.4529 10.957 35.9412 11.0547C42.4842 12.373 42.3865 12.4707 43.6072 18.7695C43.7049 19.2578 43.9979 19.5508 44.535 19.5508Z",fill:"currentColor"}),x.jsx("path",{d:"M34.3298 81.2696C48.49 81.2696 59.9157 74.043 65.0915 61.7872C65.8239 59.9806 65.5798 58.6134 64.7497 57.7833C64.0173 57.0509 62.7478 56.9044 61.3318 57.4903C58.4509 58.6134 54.9353 59.2481 50.6384 59.2481C33.695 59.2481 22.7575 48.6036 22.7575 32.2462C22.7575 27.4122 23.6853 22.6759 24.7595 20.5763C25.5407 18.9161 25.4919 17.5001 24.8083 16.67C24.0271 15.7423 22.6599 15.4005 20.7068 16.1329C8.64624 20.7716 0.345459 33.4181 0.345459 47.8712C0.345459 66.8165 14.5056 81.2696 34.3298 81.2696ZM34.4275 74.5801C18.4607 74.5801 7.03494 62.9591 7.03494 47.3341C7.03494 38.2521 10.9411 30.0489 17.6306 24.629C16.8005 27.0704 16.361 30.6837 16.361 34.1505C16.361 52.8517 29.5446 65.6935 48.8806 65.6935C52.0544 65.6935 54.9841 65.3517 56.4001 64.9122C51.615 70.918 43.4607 74.5801 34.4275 74.5801Z",fill:"currentColor"})]})}function q5(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 84 84",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Sun"}),x.jsx("path",{d:"M41.8675 15.5254C43.9183 15.5254 45.6273 13.7676 45.6273 11.7168V3.80658C45.6273 1.75588 43.9183 0.046875 41.8675 0.046875C39.7679 0.046875 38.0589 1.75588 38.0589 3.80658V11.7168C38.0589 13.7676 39.7679 15.5254 41.8675 15.5254ZM60.3246 23.2402C61.7895 24.7051 64.2309 24.7539 65.7446 23.2402L71.3598 17.6738C72.7758 16.209 72.7758 13.7188 71.3598 12.2539C69.8949 10.7891 67.4535 10.7891 65.9887 12.2539L60.3246 17.918C58.9086 19.3828 58.9086 21.7754 60.3246 23.2402ZM67.9906 41.7461C67.9906 43.7969 69.7485 45.5547 71.7992 45.5547H79.6117C81.7113 45.5547 83.4202 43.7969 83.4202 41.7461C83.4202 39.6953 81.7113 37.9375 79.6117 37.9375H71.7992C69.7485 37.9375 67.9906 39.6953 67.9906 41.7461ZM60.3246 60.3008C58.9086 61.7656 58.9086 64.1582 60.3246 65.623L65.9887 71.2871C67.4535 72.7519 69.8949 72.7031 71.3598 71.2383C72.7758 69.7734 72.7758 67.332 71.3598 65.8672L65.6957 60.3008C64.2309 58.8359 61.7895 58.8359 60.3246 60.3008ZM41.8675 67.9668C39.7679 67.9668 38.0589 69.7246 38.0589 71.7754V79.6855C38.0589 81.7363 39.7679 83.4453 41.8675 83.4453C43.9183 83.4453 45.6273 81.7363 45.6273 79.6855V71.7754C45.6273 69.7246 43.9183 67.9668 41.8675 67.9668ZM23.3617 60.3008C21.8969 58.8359 19.4067 58.8359 17.9418 60.3008L12.3754 65.8184C10.9106 67.2832 10.9106 69.7246 12.3266 71.1894C13.7914 72.6543 16.2328 72.7031 17.6977 71.2383L23.3129 65.623C24.7778 64.1582 24.7778 61.7656 23.3617 60.3008ZM15.6957 41.7461C15.6957 39.6953 13.9867 37.9375 11.8871 37.9375H4.07455C1.97497 37.9375 0.265991 39.6953 0.265991 41.7461C0.265991 43.7969 1.97497 45.5547 4.07455 45.5547H11.8871C13.9867 45.5547 15.6957 43.7969 15.6957 41.7461ZM23.3129 23.2402C24.7778 21.8242 24.7778 19.334 23.3617 17.918L17.7465 12.2539C16.3305 10.8379 13.8403 10.7891 12.4242 12.2539C10.9594 13.7188 10.9594 16.209 12.3754 17.625L17.9418 23.2402C19.4067 24.7051 21.8481 24.7051 23.3129 23.2402Z",fill:"currentColor"}),x.jsx("path",{d:"M41.8675 61.668C52.7073 61.668 61.7405 52.6836 61.7405 41.7461C61.7405 30.8086 52.7073 21.8242 41.8675 21.8242C30.9788 21.8242 21.9456 30.8086 21.9456 41.7461C21.9456 52.6836 30.9788 61.668 41.8675 61.668ZM41.8675 55.0273C34.5921 55.0273 28.5862 48.9727 28.5862 41.7461C28.5862 34.5195 34.5921 28.4648 41.8675 28.4648C49.0941 28.4648 55.0999 34.5195 55.0999 41.7461C55.0999 48.9727 49.0941 55.0273 41.8675 55.0273Z",fill:"currentColor"})]})}function X1(){return x.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%",viewBox:"0 0 50 50",children:[x.jsx("title",{children:"Telegram"}),x.jsx("path",{d:"M25 2c12.703 0 23 10.297 23 23S37.703 48 25 48 2 37.703 2 25 12.297 2 25 2zm7.934 32.375c.423-1.298 2.405-14.234 2.65-16.783.074-.772-.17-1.285-.648-1.514-.578-.278-1.434-.139-2.427.219-1.362.491-18.774 7.884-19.78 8.312-.954.405-1.856.847-1.856 1.487 0 .45.267.703 1.003.966.766.273 2.695.858 3.834 1.172 1.097.303 2.346.04 3.046-.395.742-.461 9.305-6.191 9.92-6.693.614-.502 1.104.141.602.644-.502.502-6.38 6.207-7.155 6.997-.941.959-.273 1.953.358 2.351.721.454 5.906 3.932 6.687 4.49.781.558 1.573.811 2.298.811.725 0 1.107-.955 1.468-2.064z",fill:"currentColor"})]})}function J1(){return x.jsxs("svg",{width:"32",height:"32",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Warpcast"}),x.jsx("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M7.92028 31.9901H24.0698C28.4371 31.9901 31.9901 28.4373 31.9901 24.0699V7.92053C31.9901 3.55319 28.4371 0.000137329 24.0698 0.000137329H7.92028C3.55304 0.000137329 0 3.55319 0 7.92053V24.0699C0 28.4373 3.55304 31.9901 7.92028 31.9901ZM19.4134 16.048L20.9908 10.124H25.1383L21.2924 23.2218H17.7062L15.9951 17.1397L14.284 23.2218H10.7055L6.85115 10.124H10.999L12.5915 16.0916L14.1891 10.124H17.8309L19.4134 16.048Z",fill:"currentColor"})]})}function eg(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 1200 1227",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"X"}),x.jsx("path",{d:"M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z",fill:"currentColor"})]})}bc.Curtain=Y5;function bc(){var r,o,i,a;const e=Je(),{showLogo:t,showSidebar:n}=Or();return x.jsxs("div",{className:D(t5,t&&!n&&n5),children:[x.jsx(QE,{}),t&&x.jsx("div",{className:e5,children:x.jsx("div",{className:JE,children:x.jsx(Zn,{to:"/",style:{alignItems:"center",display:"flex",height:"56px",marginTop:"4px"},children:x.jsx(Qd,{})})})}),x.jsx("div",{className:Ch}),x.jsxs("div",{className:Ch,children:[(((r=e.topNav)==null?void 0:r.length)||0)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:nu,children:x.jsx(Q5,{})}),x.jsx("div",{className:D(bh,Aa)})]}),e.socials&&((o=e.socials)==null?void 0:o.length)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:D(nu,Aa),style:{marginLeft:"-8px",marginRight:"-8px"},children:e.socials.map((l,s)=>x.jsx("div",{className:wl,children:x.jsx(t7,{...l})},s))}),!((i=e.theme)!=null&&i.colorScheme)&&x.jsx("div",{className:D(bh,Aa)})]}),!((a=e.theme)!=null&&a.colorScheme)&&x.jsx("div",{className:D(nu,Aa),style:{marginLeft:"-8px",marginRight:"-8px"},children:x.jsx("div",{className:wl,children:x.jsx(X5,{})})})]})]})}function Y5(){return x.jsx("div",{className:XE})}function Q5(){const{topNav:e}=Je();if(!e)return null;const{pathname:t}=Re(),n=Ki({pathname:t,items:e});return x.jsx(W1,{delayDuration:0,children:x.jsx(K1,{children:e.map((r,o)=>r.link?x.jsx(Ql,{active:n.includes(r.id),className:wl,href:r.link,children:r.text},o):r.items?x.jsxs(G1,{className:wl,children:[x.jsx(q1,{active:n.includes(r.id),children:r.text}),x.jsx(Y1,{className:ZE,children:x.jsx(Z5,{items:r.items})})]},o):null)})})}function Z5({items:e}){const{pathname:t}=Re(),n=Ki({pathname:t,items:e});return x.jsx("ul",{children:e==null?void 0:e.map((r,o)=>x.jsx(Ql,{active:n.includes(r.id),href:r.link,children:r.text},o))})}function X5(){const{toggle:e}=M3();return x.jsxs("button",{className:j1,onClick:e,type:"button",children:[x.jsx(st,{className:D(xc,j3),size:"20px",label:"Light",icon:q5}),x.jsx(st,{className:D(xc,F3),size:"20px",label:"Dark",icon:G5,style:{marginTop:"-2px"}})]})}const J5={discord:Q1,github:Z1,telegram:X1,warpcast:J1,x:eg},e7={discord:"23px",github:"20px",telegram:"21px",warpcast:"20px",x:"18px"};function t7({icon:e,label:t,link:n}){return x.jsx("a",{className:j1,href:n,target:"_blank",rel:"noopener noreferrer",children:x.jsx(st,{className:xc,label:t,icon:J5[e],size:e7[e]||"20px"})})}function n7(){return x.jsx("div",{})}const r7=({children:e})=>e;function o7(){const e=$r(),t=Je();return p.useMemo(()=>{const{pattern:n="",text:r="Edit page"}=t.editLink??{};let o="";return typeof n=="function"?o="":e.filePath&&(o=n.replace(/:path/g,e.filePath)),{url:o,text:r}},[t.editLink,e.filePath])}function tg(){const[e,t]=p.useState(!1);return p.useEffect(()=>{t(!0)},[]),e}var i7="vocs_Footer_container",a7="vocs_Footer_editLink",l7="vocs_Footer_lastUpdated",s7="vocs_Footer_navigation",Th="vocs_Footer_navigationIcon",u7="vocs_Footer_navigationIcon_left",c7="vocs_Footer_navigationIcon_right",Rh="vocs_Footer_navigationItem",d7="vocs_Footer_navigationItem_left",f7="vocs_Footer_navigationItem_right",$h="vocs_Footer_navigationText",Oh="vocs_Footer_navigationTextInner",p7="vocs_Footer";function h7(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 72 60",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Arrow Left"}),x.jsx("path",{d:"M0.325684 29.7461C0.325684 30.8203 0.813963 31.8457 1.69286 32.6758L26.8882 57.8223C27.7671 58.6524 28.7437 59.043 29.7691 59.043C31.9175 59.043 33.5777 57.4317 33.5777 55.2344C33.5777 54.209 33.2359 53.1836 32.5035 52.5L25.7652 45.5176L9.26126 30.6738L8.38236 32.7734L21.3706 33.7012H67.4644C69.7593 33.7012 71.3706 32.041 71.3706 29.7461C71.3706 27.4512 69.7593 25.791 67.4644 25.791H21.3706L8.38236 26.7188L9.26126 28.8672L25.7652 13.9746L32.5035 6.99221C33.2359 6.30861 33.5777 5.28322 33.5777 4.25782C33.5777 2.06052 31.9175 0.449219 29.7691 0.449219C28.7437 0.449219 27.7671 0.839814 26.8882 1.66991L1.69286 26.8164C0.813963 27.6465 0.325684 28.6719 0.325684 29.7461Z",fill:"currentColor"})]})}function m7(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 72 60",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Arrow Right"}),x.jsx("path",{d:"M71.3706 29.7461C71.3706 28.6719 70.8824 27.6465 70.0035 26.8164L44.8081 1.66991C43.9292 0.839814 42.9527 0.449219 41.9273 0.449219C39.7789 0.449219 38.1187 2.06052 38.1187 4.25782C38.1187 5.28322 38.4605 6.30861 39.1929 6.99221L45.9312 13.9746L62.4351 28.8672L63.314 26.7188L50.3257 25.791H4.23196C1.93706 25.791 0.325684 27.4512 0.325684 29.7461C0.325684 32.041 1.93706 33.7012 4.23196 33.7012H50.3257L63.314 32.7734L62.4351 30.6738L45.9312 45.5176L39.1929 52.5C38.4605 53.1836 38.1187 54.209 38.1187 55.2344C38.1187 57.4317 39.7789 59.043 41.9273 59.043C42.9527 59.043 43.9292 58.6524 44.8081 57.8223L70.0035 32.6758C70.8824 31.8457 71.3706 30.8203 71.3706 29.7461Z",fill:"currentColor"})]})}function v7(){const{layout:e}=Or(),t=tg(),n=$r(),r=p.useMemo(()=>n.lastUpdatedAt?new Date(n.lastUpdatedAt):void 0,[n.lastUpdatedAt]),o=p.useMemo(()=>r==null?void 0:r.toISOString(),[r]);return x.jsxs("footer",{className:p7,children:[e==="docs"&&x.jsxs(x.Fragment,{children:[x.jsxs("div",{className:i7,children:[x.jsx(g7,{}),t&&n.lastUpdatedAt&&x.jsxs("div",{className:l7,children:["Last updated:"," ",x.jsx("time",{dateTime:o,children:new Intl.DateTimeFormat(void 0,{dateStyle:"short",timeStyle:"short"}).format(r)})]})]}),x.jsx(y7,{})]}),x.jsx(n7,{})]})}function g7(){const e=o7();return e.url?x.jsx("div",{children:x.jsxs(rn,{className:a7,href:e.url,children:[x.jsx(L3,{})," ",e.text]})}):null}function y7(){const e=tg(),t=Kl(),{pathname:n}=Re(),r=p.useMemo(()=>ng(t.items||[]).filter(s=>s.link),[t]),o=p.useMemo(()=>r.findIndex(s=>s.link===n),[r,n]),[i,a]=p.useMemo(()=>o<0?[]:o===0?[null,r[o+1]]:o===r.length-1?[r[o-1],null]:[r[o-1],r[o+1]],[o,r]),l=Ud();return p.useEffect(()=>{let s=o,c=!1;const d=f=>{if(f.code==="ShiftLeft"&&(c=!0),c){const h=r[s+1],y=r[s-1];f.code==="ArrowRight"&&(h!=null&&h.link)&&(l(h.link),s++),f.code==="ArrowLeft"&&(y!=null&&y.link)&&(l(y.link),s--)}},u=f=>{f.code==="ShiftLeft"&&(c=!1)};return window.addEventListener("keydown",d),window.addEventListener("keyup",u),()=>{window.removeEventListener("keydown",d),window.removeEventListener("keyup",u)}},[]),e?x.jsxs("div",{className:s7,children:[i?x.jsxs(rn,{className:D(Rh,d7),href:i.link,variant:"styleless",children:[x.jsxs("div",{className:$h,children:[x.jsx("div",{className:D(Th,u7),style:qt({[_c]:"0.75em"}),children:x.jsx(st,{label:"Previous",icon:h7})}),x.jsx("div",{className:Oh,children:i.text})]}),x.jsx(ro,{description:"Previous",keys:["shift","←"]})]}):x.jsx("div",{}),a?x.jsxs(rn,{className:D(Rh,f7),href:a.link,variant:"styleless",children:[x.jsxs("div",{className:$h,children:[x.jsx("div",{className:Oh,style:{textAlign:"right"},children:a.text}),x.jsx("div",{className:D(Th,c7),style:qt({[_c]:"0.75em"}),children:x.jsx(st,{label:"Next",icon:m7})})]}),x.jsx(ro,{description:"Next",keys:["shift","→"]})]}):x.jsx("div",{})]}):null}function ng(e){const t=[];for(const n of e){if(n.items){t.push(...ng(n.items));continue}t.push(n)}return t}const rg="Collapsible",[x7,og]=kn(rg),[_7,ef]=x7(rg),w7=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,open:r,defaultOpen:o,disabled:i,onOpenChange:a,...l}=e,[s=!1,c]=ar({prop:r,defaultProp:o,onChange:a});return p.createElement(_7,{scope:n,disabled:i,contentId:on(),open:s,onOpenToggle:p.useCallback(()=>c(d=>!d),[c])},p.createElement(fe.div,q({"data-state":tf(s),"data-disabled":i?"":void 0},l,{ref:t})))}),E7="CollapsibleTrigger",k7=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,...r}=e,o=ef(E7,n);return p.createElement(fe.button,q({type:"button","aria-controls":o.contentId,"aria-expanded":o.open||!1,"data-state":tf(o.open),"data-disabled":o.disabled?"":void 0,disabled:o.disabled},r,{ref:t,onClick:le(e.onClick,o.onOpenToggle)}))}),ig="CollapsibleContent",b7=p.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=ef(ig,e.__scopeCollapsible);return p.createElement(bn,{present:n||o.open},({present:i})=>p.createElement(C7,q({},r,{ref:t,present:i})))}),C7=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,present:r,children:o,...i}=e,a=ef(ig,n),[l,s]=p.useState(r),c=p.useRef(null),d=Ue(t,c),u=p.useRef(0),f=u.current,h=p.useRef(0),y=h.current,g=a.open||l,w=p.useRef(g),m=p.useRef();return p.useEffect(()=>{const v=requestAnimationFrame(()=>w.current=!1);return()=>cancelAnimationFrame(v)},[]),yn(()=>{const v=c.current;if(v){m.current=m.current||{transitionDuration:v.style.transitionDuration,animationName:v.style.animationName},v.style.transitionDuration="0s",v.style.animationName="none";const _=v.getBoundingClientRect();u.current=_.height,h.current=_.width,w.current||(v.style.transitionDuration=m.current.transitionDuration,v.style.animationName=m.current.animationName),s(r)}},[a.open,r]),p.createElement(fe.div,q({"data-state":tf(a.open),"data-disabled":a.disabled?"":void 0,id:a.contentId,hidden:!g},i,{ref:d,style:{"--radix-collapsible-content-height":f?`${f}px`:void 0,"--radix-collapsible-content-width":y?`${y}px`:void 0,...e.style}}),g&&o)});function tf(e){return e?"open":"closed"}const P7=w7,A7=k7,S7=b7,Lr="Accordion",T7=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[nf,R7,$7]=Yl(Lr),[Zl,CP]=kn(Lr,[$7,og]),rf=og(),ag=Z.forwardRef((e,t)=>{const{type:n,...r}=e,o=r,i=r;return Z.createElement(nf.Provider,{scope:e.__scopeAccordion},n==="multiple"?Z.createElement(D7,q({},i,{ref:t})):Z.createElement(L7,q({},o,{ref:t})))});ag.propTypes={type(e){const t=e.value||e.defaultValue;return e.type&&!["single","multiple"].includes(e.type)?new Error("Invalid prop `type` supplied to `Accordion`. Expected one of `single | multiple`."):e.type==="multiple"&&typeof t=="string"?new Error("Invalid prop `type` supplied to `Accordion`. Expected `single` when `defaultValue` or `value` is type `string`."):e.type==="single"&&Array.isArray(t)?new Error("Invalid prop `type` supplied to `Accordion`. Expected `multiple` when `defaultValue` or `value` is type `string[]`."):null}};const[lg,O7]=Zl(Lr),[sg,I7]=Zl(Lr,{collapsible:!1}),L7=Z.forwardRef((e,t)=>{const{value:n,defaultValue:r,onValueChange:o=()=>{},collapsible:i=!1,...a}=e,[l,s]=ar({prop:n,defaultProp:r,onChange:o});return Z.createElement(lg,{scope:e.__scopeAccordion,value:l?[l]:[],onItemOpen:s,onItemClose:Z.useCallback(()=>i&&s(""),[i,s])},Z.createElement(sg,{scope:e.__scopeAccordion,collapsible:i},Z.createElement(ug,q({},a,{ref:t}))))}),D7=Z.forwardRef((e,t)=>{const{value:n,defaultValue:r,onValueChange:o=()=>{},...i}=e,[a=[],l]=ar({prop:n,defaultProp:r,onChange:o}),s=Z.useCallback(d=>l((u=[])=>[...u,d]),[l]),c=Z.useCallback(d=>l((u=[])=>u.filter(f=>f!==d)),[l]);return Z.createElement(lg,{scope:e.__scopeAccordion,value:a,onItemOpen:s,onItemClose:c},Z.createElement(sg,{scope:e.__scopeAccordion,collapsible:!0},Z.createElement(ug,q({},i,{ref:t}))))}),[N7,of]=Zl(Lr),ug=Z.forwardRef((e,t)=>{const{__scopeAccordion:n,disabled:r,dir:o,orientation:i="vertical",...a}=e,l=Z.useRef(null),s=Ue(l,t),c=R7(n),u=ql(o)==="ltr",f=le(e.onKeyDown,h=>{var y;if(!T7.includes(h.key))return;const g=h.target,w=c().filter(S=>{var O;return!((O=S.ref.current)!==null&&O!==void 0&&O.disabled)}),m=w.findIndex(S=>S.ref.current===g),v=w.length;if(m===-1)return;h.preventDefault();let _=m;const E=0,C=v-1,k=()=>{_=m+1,_>C&&(_=E)},P=()=>{_=m-1,_{const{__scopeAccordion:n,value:r,...o}=e,i=of(Cc,n),a=O7(Cc,n),l=rf(n),s=on(),c=r&&a.value.includes(r)||!1,d=i.disabled||e.disabled;return Z.createElement(M7,{scope:n,open:c,disabled:d,triggerId:s},Z.createElement(P7,q({"data-orientation":i.orientation,"data-state":V7(c)},l,o,{ref:t,disabled:d,open:c,onOpenChange:u=>{u?a.onItemOpen(r):a.onItemClose(r)}})))}),Ih="AccordionTrigger",F7=Z.forwardRef((e,t)=>{const{__scopeAccordion:n,...r}=e,o=of(Lr,n),i=cg(Ih,n),a=I7(Ih,n),l=rf(n);return Z.createElement(nf.ItemSlot,{scope:n},Z.createElement(A7,q({"aria-disabled":i.open&&!a.collapsible||void 0,"data-orientation":o.orientation,id:i.triggerId},l,r,{ref:t})))}),z7="AccordionContent",U7=Z.forwardRef((e,t)=>{const{__scopeAccordion:n,...r}=e,o=of(Lr,n),i=cg(z7,n),a=rf(n);return Z.createElement(S7,q({role:"region","aria-labelledby":i.triggerId,"data-orientation":o.orientation},a,r,{ref:t,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}}))});function V7(e){return e?"open":"closed"}const B7=ag,H7=j7,W7=F7,K7=U7;var G7="vocs_MobileSearch_searchButton";function q7(){const[e,t]=p.useState(!1);return x.jsxs(P1,{open:e,onOpenChange:t,children:[x.jsx(A1,{asChild:!0,children:x.jsx("button",{className:G7,type:"button","aria-label":"Search",children:x.jsx(Wd,{height:21,width:21})})}),x.jsx(M1,{open:e,onClose:()=>t(!1)})]})}var Y7="vocs_MobileTopNav_button",Q7="var(--vocs_MobileTopNav_chevronDownIcon)",Z7="var(--vocs_MobileTopNav_chevronUpIcon)",X7="vocs_MobileTopNav_content",J7="vocs_MobileTopNav_curtain",Lh="vocs_MobileTopNav_curtainGroup",ou="vocs_MobileTopNav_curtainItem",e8="vocs_MobileTopNav_divider",Sa="vocs_MobileTopNav_group",t8="vocs_MobileTopNav_icon",n8="vocs_MobileTopNav_item",r8="vocs_MobileTopNav_logo",o8="vocs_MobileTopNav_menuTitle",dg="vocs_MobileTopNav_menuTrigger",fg="vocs_MobileTopNav_navigation",i8="vocs_MobileTopNav_navigationContent",Xo="vocs_MobileTopNav_navigationItem",a8="vocs_MobileTopNav_trigger",l8="vocs_MobileTopNav_navigation_compact",s8="vocs_MobileTopNav_outlinePopover",Dh="vocs_MobileTopNav_outlineTrigger",u8="vocs_MobileTopNav",Nh="vocs_MobileTopNav_section",c8="vocs_MobileTopNav_separator",d8="vocs_MobileTopNav_sidebarPopover",f8="vocs_MobileTopNav_topNavPopover";function p8(e,t){let n=!1;return()=>{n=!0,setTimeout(()=>{n&&e(),n=!1},t)}}var h8="vocs_Outline_heading",m8="vocs_Outline_item",v8="vocs_Outline_items",g8="vocs_Outline_link",y8="vocs_Outline_nav",x8="vocs_Outline";function pg({minLevel:e=2,maxLevel:t=3,highlightActive:n=!0,onClickItem:r,showTitle:o=!0}={}){const{outlineFooter:i}=Je(),{showOutline:a}=Or(),l=typeof a=="number"?e+a-1:t,s=p.useRef(!0),{pathname:c,hash:d}=Re(),[u,f]=p.useState([]);p.useEffect(()=>{if(typeof window>"u")return;const m=Array.from(document.querySelectorAll(`.${Qv}`));f(m)},[c]);const h=p.useMemo(()=>u?u.map(m=>{const v=m.querySelector(`.${Zv}`);if(!v)return null;const _=v.getBoundingClientRect(),E=v.id,C=Number(m.tagName[1]),k=m.textContent,P=window.scrollY+_.top;return Cl?null:{id:E,level:C,slugTargetElement:v,text:k,topOffset:P}}).filter(Boolean):[],[u,l,e]),[y,g]=p.useState(d.replace("#",""));if(p.useEffect(()=>{if(typeof window>"u")return;const m=new IntersectionObserver(([v])=>{var E;if(!s.current)return;const _=v.target.id;if(v.isIntersecting)g(_);else{if(!(v.target.getBoundingClientRect().top>0))return;const P=h.findIndex(S=>S.id===y),A=(E=h[P-1])==null?void 0:E.id;g(A)}},{rootMargin:"0px 0px -95% 0px"});for(const v of h)m.observe(v.slugTargetElement);return()=>m.disconnect()},[y,h]),p.useEffect(()=>{if(typeof window>"u")return;const m=new IntersectionObserver(([v])=>{var E;if(!s.current)return;const _=(E=h[h.length-1])==null?void 0:E.id;v.isIntersecting?g(_):y===_&&g(h[h.length-2].id)});return m.observe(document.querySelector("[data-bottom-observer]")),()=>m.disconnect()},[y,h]),p.useEffect(()=>{if(typeof window>"u")return;const m=p8(()=>{var v,_,E;if(s.current){if(window.scrollY===0){g((v=h[0])==null?void 0:v.id);return}if(window.scrollY+document.documentElement.clientHeight>=document.documentElement.scrollHeight){g((_=h[h.length-1])==null?void 0:_.id);return}for(let C=0;Cwindow.removeEventListener("scroll",m)},[h]),h.length===0)return null;const w=h.filter(m=>m.level===e);return x.jsxs("aside",{className:x8,children:[x.jsxs("nav",{className:y8,children:[o&&x.jsx("h2",{className:h8,children:"On this page"}),x.jsx(hg,{activeId:n?y:null,items:h,onClickItem:()=>{r==null||r(),s.current=!1,setTimeout(()=>{s.current=!0},500)},levelItems:w,setActiveId:g})]}),xl(i)]})}function hg({activeId:e,items:t,levelItems:n,onClickItem:r,setActiveId:o}){const{pathname:i}=Re();return x.jsx("ul",{className:v8,children:n.map(({id:a,level:l,text:s})=>{const c=`#${a}`,d=e===a,u=(()=>{var w;const h=t.findIndex(m=>m.id===a)+1,y=(w=t[h])==null?void 0:w.level;if(y<=l)return null;const g=[];for(let m=h;m{r==null||r(),o(a)},className:g8,children:s})}),u&&x.jsx(hg,{activeId:e,levelItems:u,items:t,onClickItem:r,setActiveId:o})]},a)})})}const _8=["top","right","bottom","left"],Xn=Math.min,Et=Math.max,kl=Math.round,Ta=Math.floor,Jn=e=>({x:e,y:e}),w8={left:"right",right:"left",bottom:"top",top:"bottom"},E8={start:"end",end:"start"};function Pc(e,t,n){return Et(e,Xn(t,n))}function xn(e,t){return typeof e=="function"?e(t):e}function _n(e){return e.split("-")[0]}function Io(e){return e.split("-")[1]}function af(e){return e==="x"?"y":"x"}function lf(e){return e==="y"?"height":"width"}function Lo(e){return["top","bottom"].includes(_n(e))?"y":"x"}function sf(e){return af(Lo(e))}function k8(e,t,n){n===void 0&&(n=!1);const r=Io(e),o=sf(e),i=lf(o);let a=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=bl(a)),[a,bl(a)]}function b8(e){const t=bl(e);return[Ac(e),t,Ac(t)]}function Ac(e){return e.replace(/start|end/g,t=>E8[t])}function C8(e,t,n){const r=["left","right"],o=["right","left"],i=["top","bottom"],a=["bottom","top"];switch(e){case"top":case"bottom":return n?t?o:r:t?r:o;case"left":case"right":return t?i:a;default:return[]}}function P8(e,t,n,r){const o=Io(e);let i=C8(_n(e),n==="start",r);return o&&(i=i.map(a=>a+"-"+o),t&&(i=i.concat(i.map(Ac)))),i}function bl(e){return e.replace(/left|right|bottom|top/g,t=>w8[t])}function A8(e){return{top:0,right:0,bottom:0,left:0,...e}}function mg(e){return typeof e!="number"?A8(e):{top:e,right:e,bottom:e,left:e}}function Cl(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function Mh(e,t,n){let{reference:r,floating:o}=e;const i=Lo(t),a=sf(t),l=lf(a),s=_n(t),c=i==="y",d=r.x+r.width/2-o.width/2,u=r.y+r.height/2-o.height/2,f=r[l]/2-o[l]/2;let h;switch(s){case"top":h={x:d,y:r.y-o.height};break;case"bottom":h={x:d,y:r.y+r.height};break;case"right":h={x:r.x+r.width,y:u};break;case"left":h={x:r.x-o.width,y:u};break;default:h={x:r.x,y:r.y}}switch(Io(t)){case"start":h[a]-=f*(n&&c?-1:1);break;case"end":h[a]+=f*(n&&c?-1:1);break}return h}const S8=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:i=[],platform:a}=n,l=i.filter(Boolean),s=await(a.isRTL==null?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:o}),{x:d,y:u}=Mh(c,r,s),f=r,h={},y=0;for(let g=0;g({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:i,platform:a,elements:l,middlewareData:s}=t,{element:c,padding:d=0}=xn(e,t)||{};if(c==null)return{};const u=mg(d),f={x:n,y:r},h=sf(o),y=lf(h),g=await a.getDimensions(c),w=h==="y",m=w?"top":"left",v=w?"bottom":"right",_=w?"clientHeight":"clientWidth",E=i.reference[y]+i.reference[h]-f[h]-i.floating[y],C=f[h]-i.reference[h],k=await(a.getOffsetParent==null?void 0:a.getOffsetParent(c));let P=k?k[_]:0;(!P||!await(a.isElement==null?void 0:a.isElement(k)))&&(P=l.floating[_]||i.floating[y]);const A=E/2-C/2,S=P/2-g[y]/2-1,O=Xn(u[m],S),j=Xn(u[v],S),N=O,F=P-g[y]-j,$=P/2-g[y]/2+A,U=Pc(N,$,F),W=!s.arrow&&Io(o)!=null&&$!==U&&i.reference[y]/2-($N<=0)){var S,O;const N=(((S=i.flip)==null?void 0:S.index)||0)+1,F=C[N];if(F)return{data:{index:N,overflows:A},reset:{placement:F}};let $=(O=A.filter(U=>U.overflows[0]<=0).sort((U,W)=>U.overflows[1]-W.overflows[1])[0])==null?void 0:O.placement;if(!$)switch(h){case"bestFit":{var j;const U=(j=A.map(W=>[W.placement,W.overflows.filter(B=>B>0).reduce((B,L)=>B+L,0)]).sort((W,B)=>W[1]-B[1])[0])==null?void 0:j[0];U&&($=U);break}case"initialPlacement":$=l;break}if(o!==$)return{reset:{placement:$}}}return{}}}};function jh(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Fh(e){return _8.some(t=>e[t]>=0)}const $8=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...o}=xn(e,t);switch(r){case"referenceHidden":{const i=await Ni(t,{...o,elementContext:"reference"}),a=jh(i,n.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:Fh(a)}}}case"escaped":{const i=await Ni(t,{...o,altBoundary:!0}),a=jh(i,n.floating);return{data:{escapedOffsets:a,escaped:Fh(a)}}}default:return{}}}}};async function O8(e,t){const{placement:n,platform:r,elements:o}=e,i=await(r.isRTL==null?void 0:r.isRTL(o.floating)),a=_n(n),l=Io(n),s=Lo(n)==="y",c=["left","top"].includes(a)?-1:1,d=i&&s?-1:1,u=xn(t,e);let{mainAxis:f,crossAxis:h,alignmentAxis:y}=typeof u=="number"?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...u};return l&&typeof y=="number"&&(h=l==="end"?y*-1:y),s?{x:h*d,y:f*c}:{x:f*c,y:h*d}}const vg=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:o,y:i,placement:a,middlewareData:l}=t,s=await O8(t,e);return a===((n=l.offset)==null?void 0:n.placement)&&(r=l.arrow)!=null&&r.alignmentOffset?{}:{x:o+s.x,y:i+s.y,data:{...s,placement:a}}}}},I8=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:l={fn:w=>{let{x:m,y:v}=w;return{x:m,y:v}}},...s}=xn(e,t),c={x:n,y:r},d=await Ni(t,s),u=Lo(_n(o)),f=af(u);let h=c[f],y=c[u];if(i){const w=f==="y"?"top":"left",m=f==="y"?"bottom":"right",v=h+d[w],_=h-d[m];h=Pc(v,h,_)}if(a){const w=u==="y"?"top":"left",m=u==="y"?"bottom":"right",v=y+d[w],_=y-d[m];y=Pc(v,y,_)}const g=l.fn({...t,[f]:h,[u]:y});return{...g,data:{x:g.x-n,y:g.y-r}}}}},L8=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:i,middlewareData:a}=t,{offset:l=0,mainAxis:s=!0,crossAxis:c=!0}=xn(e,t),d={x:n,y:r},u=Lo(o),f=af(u);let h=d[f],y=d[u];const g=xn(l,t),w=typeof g=="number"?{mainAxis:g,crossAxis:0}:{mainAxis:0,crossAxis:0,...g};if(s){const _=f==="y"?"height":"width",E=i.reference[f]-i.floating[_]+w.mainAxis,C=i.reference[f]+i.reference[_]-w.mainAxis;hC&&(h=C)}if(c){var m,v;const _=f==="y"?"width":"height",E=["top","left"].includes(_n(o)),C=i.reference[u]-i.floating[_]+(E&&((m=a.offset)==null?void 0:m[u])||0)+(E?0:w.crossAxis),k=i.reference[u]+i.reference[_]+(E?0:((v=a.offset)==null?void 0:v[u])||0)-(E?w.crossAxis:0);yk&&(y=k)}return{[f]:h,[u]:y}}}},D8=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:o,elements:i}=t,{apply:a=()=>{},...l}=xn(e,t),s=await Ni(t,l),c=_n(n),d=Io(n),u=Lo(n)==="y",{width:f,height:h}=r.floating;let y,g;c==="top"||c==="bottom"?(y=c,g=d===(await(o.isRTL==null?void 0:o.isRTL(i.floating))?"start":"end")?"left":"right"):(g=c,y=d==="end"?"top":"bottom");const w=h-s[y],m=f-s[g],v=!t.middlewareData.shift;let _=w,E=m;if(u){const k=f-s.left-s.right;E=d||v?Xn(m,k):k}else{const k=h-s.top-s.bottom;_=d||v?Xn(w,k):k}if(v&&!d){const k=Et(s.left,0),P=Et(s.right,0),A=Et(s.top,0),S=Et(s.bottom,0);u?E=f-2*(k!==0||P!==0?k+P:Et(s.left,s.right)):_=h-2*(A!==0||S!==0?A+S:Et(s.top,s.bottom))}await a({...t,availableWidth:E,availableHeight:_});const C=await o.getDimensions(i.floating);return f!==C.width||h!==C.height?{reset:{rects:!0}}:{}}}};function er(e){return gg(e)?(e.nodeName||"").toLowerCase():"#document"}function Ct(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Pn(e){var t;return(t=(gg(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function gg(e){return e instanceof Node||e instanceof Ct(e).Node}function rt(e){return e instanceof Element||e instanceof Ct(e).Element}function an(e){return e instanceof HTMLElement||e instanceof Ct(e).HTMLElement}function Sc(e){return typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Ct(e).ShadowRoot}function qi(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=Nt(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function N8(e){return["table","td","th"].includes(er(e))}function uf(e){const t=cf(),n=Nt(e);return n.transform!=="none"||n.perspective!=="none"||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||["transform","perspective","filter"].some(r=>(n.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(n.contain||"").includes(r))}function M8(e){let t=Co(e);for(;an(t)&&!Xl(t);){if(uf(t))return t;t=Co(t)}return null}function cf(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function Xl(e){return["html","body","#document"].includes(er(e))}function Nt(e){return Ct(e).getComputedStyle(e)}function Jl(e){return rt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Co(e){if(er(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Sc(e)&&e.host||Pn(e);return Sc(t)?t.host:t}function yg(e){const t=Co(e);return Xl(t)?e.ownerDocument?e.ownerDocument.body:e.body:an(t)&&qi(t)?t:yg(t)}function Mi(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const o=yg(e),i=o===((r=e.ownerDocument)==null?void 0:r.body),a=Ct(o);return i?t.concat(a,a.visualViewport||[],qi(o)?o:[],a.frameElement&&n?Mi(a.frameElement):[]):t.concat(o,Mi(o,[],n))}function xg(e){const t=Nt(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=an(e),i=o?e.offsetWidth:n,a=o?e.offsetHeight:r,l=kl(n)!==i||kl(r)!==a;return l&&(n=i,r=a),{width:n,height:r,$:l}}function df(e){return rt(e)?e:e.contextElement}function fo(e){const t=df(e);if(!an(t))return Jn(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:i}=xg(t);let a=(i?kl(n.width):n.width)/r,l=(i?kl(n.height):n.height)/o;return(!a||!Number.isFinite(a))&&(a=1),(!l||!Number.isFinite(l))&&(l=1),{x:a,y:l}}const j8=Jn(0);function _g(e){const t=Ct(e);return!cf()||!t.visualViewport?j8:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function F8(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==Ct(e)?!1:t}function Cr(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),i=df(e);let a=Jn(1);t&&(r?rt(r)&&(a=fo(r)):a=fo(e));const l=F8(i,n,r)?_g(i):Jn(0);let s=(o.left+l.x)/a.x,c=(o.top+l.y)/a.y,d=o.width/a.x,u=o.height/a.y;if(i){const f=Ct(i),h=r&&rt(r)?Ct(r):r;let y=f,g=y.frameElement;for(;g&&r&&h!==y;){const w=fo(g),m=g.getBoundingClientRect(),v=Nt(g),_=m.left+(g.clientLeft+parseFloat(v.paddingLeft))*w.x,E=m.top+(g.clientTop+parseFloat(v.paddingTop))*w.y;s*=w.x,c*=w.y,d*=w.x,u*=w.y,s+=_,c+=E,y=Ct(g),g=y.frameElement}}return Cl({width:d,height:u,x:s,y:c})}const z8=[":popover-open",":modal"];function wg(e){return z8.some(t=>{try{return e.matches(t)}catch{return!1}})}function U8(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e;const i=o==="fixed",a=Pn(r),l=t?wg(t.floating):!1;if(r===a||l&&i)return n;let s={scrollLeft:0,scrollTop:0},c=Jn(1);const d=Jn(0),u=an(r);if((u||!u&&!i)&&((er(r)!=="body"||qi(a))&&(s=Jl(r)),an(r))){const f=Cr(r);c=fo(r),d.x=f.x+r.clientLeft,d.y=f.y+r.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-s.scrollLeft*c.x+d.x,y:n.y*c.y-s.scrollTop*c.y+d.y}}function V8(e){return Array.from(e.getClientRects())}function Eg(e){return Cr(Pn(e)).left+Jl(e).scrollLeft}function B8(e){const t=Pn(e),n=Jl(e),r=e.ownerDocument.body,o=Et(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),i=Et(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let a=-n.scrollLeft+Eg(e);const l=-n.scrollTop;return Nt(r).direction==="rtl"&&(a+=Et(t.clientWidth,r.clientWidth)-o),{width:o,height:i,x:a,y:l}}function H8(e,t){const n=Ct(e),r=Pn(e),o=n.visualViewport;let i=r.clientWidth,a=r.clientHeight,l=0,s=0;if(o){i=o.width,a=o.height;const c=cf();(!c||c&&t==="fixed")&&(l=o.offsetLeft,s=o.offsetTop)}return{width:i,height:a,x:l,y:s}}function W8(e,t){const n=Cr(e,!0,t==="fixed"),r=n.top+e.clientTop,o=n.left+e.clientLeft,i=an(e)?fo(e):Jn(1),a=e.clientWidth*i.x,l=e.clientHeight*i.y,s=o*i.x,c=r*i.y;return{width:a,height:l,x:s,y:c}}function zh(e,t,n){let r;if(t==="viewport")r=H8(e,n);else if(t==="document")r=B8(Pn(e));else if(rt(t))r=W8(t,n);else{const o=_g(e);r={...t,x:t.x-o.x,y:t.y-o.y}}return Cl(r)}function kg(e,t){const n=Co(e);return n===t||!rt(n)||Xl(n)?!1:Nt(n).position==="fixed"||kg(n,t)}function K8(e,t){const n=t.get(e);if(n)return n;let r=Mi(e,[],!1).filter(l=>rt(l)&&er(l)!=="body"),o=null;const i=Nt(e).position==="fixed";let a=i?Co(e):e;for(;rt(a)&&!Xl(a);){const l=Nt(a),s=uf(a);!s&&l.position==="fixed"&&(o=null),(i?!s&&!o:!s&&l.position==="static"&&!!o&&["absolute","fixed"].includes(o.position)||qi(a)&&!s&&kg(e,a))?r=r.filter(d=>d!==a):o=l,a=Co(a)}return t.set(e,r),r}function G8(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a=[...n==="clippingAncestors"?K8(t,this._c):[].concat(n),r],l=a[0],s=a.reduce((c,d)=>{const u=zh(t,d,o);return c.top=Et(u.top,c.top),c.right=Xn(u.right,c.right),c.bottom=Xn(u.bottom,c.bottom),c.left=Et(u.left,c.left),c},zh(t,l,o));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}}function q8(e){const{width:t,height:n}=xg(e);return{width:t,height:n}}function Y8(e,t,n){const r=an(t),o=Pn(t),i=n==="fixed",a=Cr(e,!0,i,t);let l={scrollLeft:0,scrollTop:0};const s=Jn(0);if(r||!r&&!i)if((er(t)!=="body"||qi(o))&&(l=Jl(t)),r){const u=Cr(t,!0,i,t);s.x=u.x+t.clientLeft,s.y=u.y+t.clientTop}else o&&(s.x=Eg(o));const c=a.left+l.scrollLeft-s.x,d=a.top+l.scrollTop-s.y;return{x:c,y:d,width:a.width,height:a.height}}function Uh(e,t){return!an(e)||Nt(e).position==="fixed"?null:t?t(e):e.offsetParent}function bg(e,t){const n=Ct(e);if(!an(e)||wg(e))return n;let r=Uh(e,t);for(;r&&N8(r)&&Nt(r).position==="static";)r=Uh(r,t);return r&&(er(r)==="html"||er(r)==="body"&&Nt(r).position==="static"&&!uf(r))?n:r||M8(e)||n}const Q8=async function(e){const t=this.getOffsetParent||bg,n=this.getDimensions;return{reference:Y8(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,...await n(e.floating)}}};function Z8(e){return Nt(e).direction==="rtl"}const Cg={convertOffsetParentRelativeRectToViewportRelativeRect:U8,getDocumentElement:Pn,getClippingRect:G8,getOffsetParent:bg,getElementRects:Q8,getClientRects:V8,getDimensions:q8,getScale:fo,isElement:rt,isRTL:Z8};function X8(e,t){let n=null,r;const o=Pn(e);function i(){var l;clearTimeout(r),(l=n)==null||l.disconnect(),n=null}function a(l,s){l===void 0&&(l=!1),s===void 0&&(s=1),i();const{left:c,top:d,width:u,height:f}=e.getBoundingClientRect();if(l||t(),!u||!f)return;const h=Ta(d),y=Ta(o.clientWidth-(c+u)),g=Ta(o.clientHeight-(d+f)),w=Ta(c),v={rootMargin:-h+"px "+-y+"px "+-g+"px "+-w+"px",threshold:Et(0,Xn(1,s))||1};let _=!0;function E(C){const k=C[0].intersectionRatio;if(k!==s){if(!_)return a();k?a(!1,k):r=setTimeout(()=>{a(!1,1e-7)},100)}_=!1}try{n=new IntersectionObserver(E,{...v,root:o.ownerDocument})}catch{n=new IntersectionObserver(E,v)}n.observe(e)}return a(!0),i}function J8(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:i=!0,elementResize:a=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:s=!1}=r,c=df(e),d=o||i?[...c?Mi(c):[],...Mi(t)]:[];d.forEach(m=>{o&&m.addEventListener("scroll",n,{passive:!0}),i&&m.addEventListener("resize",n)});const u=c&&l?X8(c,n):null;let f=-1,h=null;a&&(h=new ResizeObserver(m=>{let[v]=m;v&&v.target===c&&h&&(h.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var _;(_=h)==null||_.observe(t)})),n()}),c&&!s&&h.observe(c),h.observe(t));let y,g=s?Cr(e):null;s&&w();function w(){const m=Cr(e);g&&(m.x!==g.x||m.y!==g.y||m.width!==g.width||m.height!==g.height)&&n(),g=m,y=requestAnimationFrame(w)}return n(),()=>{var m;d.forEach(v=>{o&&v.removeEventListener("scroll",n),i&&v.removeEventListener("resize",n)}),u==null||u(),(m=h)==null||m.disconnect(),h=null,s&&cancelAnimationFrame(y)}}const Pg=I8,e9=R8,t9=D8,n9=$8,Vh=T8,r9=L8,o9=(e,t,n)=>{const r=new Map,o={platform:Cg,...n},i={...o.platform,_c:r};return S8(e,t,{...o,platform:i})},Ag=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:r,padding:o}=typeof e=="function"?e(n):e;return r&&t(r)?r.current!=null?Vh({element:r.current,padding:o}).fn(n):{}:r?Vh({element:r,padding:o}).fn(n):{}}}};var Ka=typeof document<"u"?p.useLayoutEffect:p.useEffect;function Pl(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,r,o;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!Pl(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=n;r--!==0;){const i=o[r];if(!(i==="_owner"&&e.$$typeof)&&!Pl(e[i],t[i]))return!1}return!0}return e!==e&&t!==t}function Sg(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Bh(e,t){const n=Sg(e);return Math.round(t*n)/n}function Hh(e){const t=p.useRef(e);return Ka(()=>{t.current=e}),t}function Tg(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:o,elements:{reference:i,floating:a}={},transform:l=!0,whileElementsMounted:s,open:c}=e,[d,u]=p.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,h]=p.useState(r);Pl(f,r)||h(r);const[y,g]=p.useState(null),[w,m]=p.useState(null),v=p.useCallback(B=>{B!==k.current&&(k.current=B,g(B))},[]),_=p.useCallback(B=>{B!==P.current&&(P.current=B,m(B))},[]),E=i||y,C=a||w,k=p.useRef(null),P=p.useRef(null),A=p.useRef(d),S=s!=null,O=Hh(s),j=Hh(o),N=p.useCallback(()=>{if(!k.current||!P.current)return;const B={placement:t,strategy:n,middleware:f};j.current&&(B.platform=j.current),o9(k.current,P.current,B).then(L=>{const z={...L,isPositioned:!0};F.current&&!Pl(A.current,z)&&(A.current=z,Ro.flushSync(()=>{u(z)}))})},[f,t,n,j]);Ka(()=>{c===!1&&A.current.isPositioned&&(A.current.isPositioned=!1,u(B=>({...B,isPositioned:!1})))},[c]);const F=p.useRef(!1);Ka(()=>(F.current=!0,()=>{F.current=!1}),[]),Ka(()=>{if(E&&(k.current=E),C&&(P.current=C),E&&C){if(O.current)return O.current(E,C,N);N()}},[E,C,N,O,S]);const $=p.useMemo(()=>({reference:k,floating:P,setReference:v,setFloating:_}),[v,_]),U=p.useMemo(()=>({reference:E,floating:C}),[E,C]),W=p.useMemo(()=>{const B={position:n,left:0,top:0};if(!U.floating)return B;const L=Bh(U.floating,d.x),z=Bh(U.floating,d.y);return l?{...B,transform:"translate("+L+"px, "+z+"px)",...Sg(U.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:L,top:z}},[n,l,U.floating,d.x,d.y]);return p.useMemo(()=>({...d,update:N,refs:$,elements:U,floatingStyles:W}),[d,N,$,U,W])}function i9(e){const[t,n]=p.useState(void 0);return yn(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const i=o[0];let a,l;if("borderBoxSize"in i){const s=i.borderBoxSize,c=Array.isArray(s)?s[0]:s;a=c.inlineSize,l=c.blockSize}else a=e.offsetWidth,l=e.offsetHeight;n({width:a,height:l})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else n(void 0)},[e]),t}const Rg="Popper",[$g,Og]=kn(Rg),[a9,Ig]=$g(Rg),l9=e=>{const{__scopePopper:t,children:n}=e,[r,o]=p.useState(null);return p.createElement(a9,{scope:t,anchor:r,onAnchorChange:o},n)},s9="PopperAnchor",u9=p.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:r,...o}=e,i=Ig(s9,n),a=p.useRef(null),l=Ue(t,a);return p.useEffect(()=>{i.onAnchorChange((r==null?void 0:r.current)||a.current)}),r?null:p.createElement(fe.div,q({},o,{ref:l}))}),Lg="PopperContent",[c9,PP]=$g(Lg),d9=p.forwardRef((e,t)=>{var n,r,o,i,a,l,s,c;const{__scopePopper:d,side:u="bottom",sideOffset:f=0,align:h="center",alignOffset:y=0,arrowPadding:g=0,avoidCollisions:w=!0,collisionBoundary:m=[],collisionPadding:v=0,sticky:_="partial",hideWhenDetached:E=!1,updatePositionStrategy:C="optimized",onPlaced:k,...P}=e,A=Ig(Lg,d),[S,O]=p.useState(null),j=Ue(t,xt=>O(xt)),[N,F]=p.useState(null),$=i9(N),U=(n=$==null?void 0:$.width)!==null&&n!==void 0?n:0,W=(r=$==null?void 0:$.height)!==null&&r!==void 0?r:0,B=u+(h!=="center"?"-"+h:""),L=typeof v=="number"?v:{top:0,right:0,bottom:0,left:0,...v},z=Array.isArray(m)?m:[m],G=z.length>0,J={padding:L,boundary:z.filter(f9),altBoundary:G},{refs:ue,floatingStyles:Ve,placement:xe,isPositioned:$e,middlewareData:_e}=Tg({strategy:"fixed",placement:B,whileElementsMounted:(...xt)=>J8(...xt,{animationFrame:C==="always"}),elements:{reference:A.anchor},middleware:[vg({mainAxis:f+W,alignmentAxis:y}),w&&Pg({mainAxis:!0,crossAxis:!1,limiter:_==="partial"?r9():void 0,...J}),w&&e9({...J}),t9({...J,apply:({elements:xt,rects:Qi,availableWidth:ts,availableHeight:ns})=>{const{width:rs,height:os}=Qi.reference,Yt=xt.floating.style;Yt.setProperty("--radix-popper-available-width",`${ts}px`),Yt.setProperty("--radix-popper-available-height",`${ns}px`),Yt.setProperty("--radix-popper-anchor-width",`${rs}px`),Yt.setProperty("--radix-popper-anchor-height",`${os}px`)}}),N&&Ag({element:N,padding:g}),p9({arrowWidth:U,arrowHeight:W}),E&&n9({strategy:"referenceHidden",...J})]}),[Be,we]=Dg(xe),Ce=at(k);yn(()=>{$e&&(Ce==null||Ce())},[$e,Ce]);const Mt=(o=_e.arrow)===null||o===void 0?void 0:o.x,Pe=(i=_e.arrow)===null||i===void 0?void 0:i.y,dt=((a=_e.arrow)===null||a===void 0?void 0:a.centerOffset)!==0,[Yi,es]=p.useState();return yn(()=>{S&&es(window.getComputedStyle(S).zIndex)},[S]),p.createElement("div",{ref:ue.setFloating,"data-radix-popper-content-wrapper":"",style:{...Ve,transform:$e?Ve.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Yi,"--radix-popper-transform-origin":[(l=_e.transformOrigin)===null||l===void 0?void 0:l.x,(s=_e.transformOrigin)===null||s===void 0?void 0:s.y].join(" ")},dir:e.dir},p.createElement(c9,{scope:d,placedSide:Be,onArrowChange:F,arrowX:Mt,arrowY:Pe,shouldHideArrow:dt},p.createElement(fe.div,q({"data-side":Be,"data-align":we},P,{ref:j,style:{...P.style,animation:$e?void 0:"none",opacity:(c=_e.hide)!==null&&c!==void 0&&c.referenceHidden?0:void 0}}))))});function f9(e){return e!==null}const p9=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,i,a;const{placement:l,rects:s,middlewareData:c}=t,u=((n=c.arrow)===null||n===void 0?void 0:n.centerOffset)!==0,f=u?0:e.arrowWidth,h=u?0:e.arrowHeight,[y,g]=Dg(l),w={start:"0%",center:"50%",end:"100%"}[g],m=((r=(o=c.arrow)===null||o===void 0?void 0:o.x)!==null&&r!==void 0?r:0)+f/2,v=((i=(a=c.arrow)===null||a===void 0?void 0:a.y)!==null&&i!==void 0?i:0)+h/2;let _="",E="";return y==="bottom"?(_=u?w:`${m}px`,E=`${-h}px`):y==="top"?(_=u?w:`${m}px`,E=`${s.floating.height+h}px`):y==="right"?(_=`${-h}px`,E=u?w:`${v}px`):y==="left"&&(_=`${s.floating.width+h}px`,E=u?w:`${v}px`),{data:{x:_,y:E}}}});function Dg(e){const[t,n="center"]=e.split("-");return[t,n]}const h9=l9,m9=u9,v9=d9,Ng="Popover",[Mg,AP]=kn(Ng,[Og]),ff=Og(),[g9,Do]=Mg(Ng),y9=e=>{const{__scopePopover:t,children:n,open:r,defaultOpen:o,onOpenChange:i,modal:a=!1}=e,l=ff(t),s=p.useRef(null),[c,d]=p.useState(!1),[u=!1,f]=ar({prop:r,defaultProp:o,onChange:i});return p.createElement(h9,l,p.createElement(g9,{scope:t,contentId:on(),triggerRef:s,open:u,onOpenChange:f,onOpenToggle:p.useCallback(()=>f(h=>!h),[f]),hasCustomAnchor:c,onCustomAnchorAdd:p.useCallback(()=>d(!0),[]),onCustomAnchorRemove:p.useCallback(()=>d(!1),[]),modal:a},n))},x9="PopoverTrigger",_9=p.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,o=Do(x9,n),i=ff(n),a=Ue(t,o.triggerRef),l=p.createElement(fe.button,q({type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":zg(o.open)},r,{ref:a,onClick:le(e.onClick,o.onOpenToggle)}));return o.hasCustomAnchor?l:p.createElement(m9,q({asChild:!0},i),l)}),jg="PopoverPortal",[w9,E9]=Mg(jg,{forceMount:void 0}),k9=e=>{const{__scopePopover:t,forceMount:n,children:r,container:o}=e,i=Do(jg,t);return p.createElement(w9,{scope:t,forceMount:n},p.createElement(bn,{present:n||i.open},p.createElement(s1,{asChild:!0,container:o},r)))},ji="PopoverContent",b9=p.forwardRef((e,t)=>{const n=E9(ji,e.__scopePopover),{forceMount:r=n.forceMount,...o}=e,i=Do(ji,e.__scopePopover);return p.createElement(bn,{present:r||i.open},i.modal?p.createElement(C9,q({},o,{ref:t})):p.createElement(P9,q({},o,{ref:t})))}),C9=p.forwardRef((e,t)=>{const n=Do(ji,e.__scopePopover),r=p.useRef(null),o=Ue(t,r),i=p.useRef(!1);return p.useEffect(()=>{const a=r.current;if(a)return _1(a)},[]),p.createElement(y1,{as:bo,allowPinchZoom:!0},p.createElement(Fg,q({},e,{ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:le(e.onCloseAutoFocus,a=>{var l;a.preventDefault(),i.current||(l=n.triggerRef.current)===null||l===void 0||l.focus()}),onPointerDownOutside:le(e.onPointerDownOutside,a=>{const l=a.detail.originalEvent,s=l.button===0&&l.ctrlKey===!0,c=l.button===2||s;i.current=c},{checkForDefaultPrevented:!1}),onFocusOutside:le(e.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})))}),P9=p.forwardRef((e,t)=>{const n=Do(ji,e.__scopePopover),r=p.useRef(!1),o=p.useRef(!1);return p.createElement(Fg,q({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var a;if((a=e.onCloseAutoFocus)===null||a===void 0||a.call(e,i),!i.defaultPrevented){var l;r.current||(l=n.triggerRef.current)===null||l===void 0||l.focus(),i.preventDefault()}r.current=!1,o.current=!1},onInteractOutside:i=>{var a,l;(a=e.onInteractOutside)===null||a===void 0||a.call(e,i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const s=i.target;((l=n.triggerRef.current)===null||l===void 0?void 0:l.contains(s))&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&o.current&&i.preventDefault()}}))}),Fg=p.forwardRef((e,t)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:i,disableOutsidePointerEvents:a,onEscapeKeyDown:l,onPointerDownOutside:s,onFocusOutside:c,onInteractOutside:d,...u}=e,f=Do(ji,n),h=ff(n);return u1(),p.createElement(a1,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:i},p.createElement(Kd,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:d,onEscapeKeyDown:l,onPointerDownOutside:s,onFocusOutside:c,onDismiss:()=>f.onOpenChange(!1)},p.createElement(v9,q({"data-state":zg(f.open),role:"dialog",id:f.contentId},h,u,{ref:t,style:{...u.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}}))))});function zg(e){return e?"open":"closed"}const A9=y9,S9=_9,T9=k9,R9=b9;var $9="vocs_Popover";Bt.Root=A9;Bt.Trigger=S9;function Bt({children:e,className:t}){return x.jsx(T9,{children:x.jsx(R9,{className:D($9,t),sideOffset:12,children:e})})}var O9="vocs_Sidebar_backLink",I9="vocs_Sidebar_divider",L9="vocs_Sidebar_group",ii="vocs_Sidebar_item",Ug="vocs_Sidebar_items",D9="vocs_Sidebar_level",N9="vocs_Sidebar_levelCollapsed",M9="vocs_Sidebar_levelInset",j9="vocs_Sidebar_logo",F9="vocs_Sidebar_logoWrapper",z9="vocs_Sidebar_navigation",U9="vocs_Sidebar",Vg="vocs_Sidebar_section",V9="vocs_Sidebar_sectionCollapse",B9="vocs_Sidebar_sectionCollapseActive",H9="vocs_Sidebar_sectionHeader",W9="vocs_Sidebar_sectionHeaderActive",Wh="vocs_Sidebar_sectionTitle";function Bg(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 39 69",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Chevron Right"}),x.jsx("path",{d:"M38.8697 34.7461C38.8697 33.6719 38.4791 32.6953 37.649 31.8652L7.47318 1.8848C6.74078 1.1035 5.76418 0.712891 4.64118 0.712891C2.34618 0.712891 0.588379 2.42189 0.588379 4.71679C0.588379 5.79099 1.07668 6.81639 1.76028 7.59769L29.0552 34.7461L1.76028 61.8945C1.07668 62.6758 0.588379 63.6523 0.588379 64.7754C0.588379 67.0703 2.34618 68.7793 4.64118 68.7793C5.76418 68.7793 6.74078 68.3887 7.47318 67.6074L37.649 37.627C38.4791 36.7969 38.8697 35.8203 38.8697 34.7461Z",fill:"currentColor"})]})}function Hg(e){var c;const{className:t,onClickItem:n}=e,{previousPath:r}=$r(),o=p.useRef(null),i=Kl(),[a,l]=p.useState("/");if(p.useEffect(()=>{typeof window>"u"||r&&l(r)},[i.key,i.backLink]),!i)return null;const s=K9(i.items);return x.jsxs("aside",{ref:o,className:D(U9,t),children:[x.jsxs("div",{className:F9,children:[x.jsx("div",{className:j9,children:x.jsx(Zn,{to:"/",style:{alignItems:"center",display:"flex",height:"100%"},children:x.jsx(Qd,{})})}),x.jsx("div",{className:I9})]}),x.jsx("nav",{className:z9,children:x.jsxs("div",{className:L9,children:[i.backLink&&x.jsx("section",{className:Vg,children:x.jsx("div",{className:Ug,children:x.jsxs(Zn,{className:D(ii,O9),to:a,children:["←"," ",typeof history<"u"&&((c=history.state)!=null&&c.key)&&a!=="/"?"Back":"Home"]})})}),s.map((d,u)=>x.jsx(Kg,{depth:0,item:d,onClick:n,sidebarRef:o},`${d.text}${u}`))]})})]},i.key)}function K9(e){const t=[];let n=0;for(const r of e){if(r.items){n=t.push(r);continue}t[n]?t[n].items.push(r):t.push({text:"",items:[r]})}return t}function Wg(e,t){return e.find(n=>Hl(t,n.link??"")||n.link===t?!0:n.items?Wg(n.items,t):!1)}function Kg(e){const{depth:t,item:n,onClick:r,sidebarRef:o}=e,i=p.useRef(null),{pathname:a}=Re(),l=K_(n.link??""),s=p.useMemo(()=>n.items?!!Wg(n.items,a):!1,[n.items,a]),[c,d]=p.useState(()=>l||!n.items||s?!1:!!n.collapsed),u=n.collapsed!==void 0&&n.items!==void 0,f=p.useCallback(g=>{"key"in g&&g.key!=="Enter"||n.link||d(w=>!w)},[n.link]),h=p.useCallback(g=>{"key"in g&&g.key!=="Enter"||n.link&&d(w=>!w)},[n.link]),y=p.useRef(!0);return p.useEffect(()=>{!y.current||(y.current=!1,!Hl(a,n.link??""))||requestAnimationFrame(()=>{var v,_,E;const w=((v=i.current)==null?void 0:v.offsetTop)??0,m=((_=o==null?void 0:o.current)==null?void 0:_.clientHeight)??0;w0&&t<5&&n.items.map((g,w)=>x.jsx(Kg,{depth:t+1,item:g,onClick:r,sidebarRef:o},`${g.text}${w}`))})]}):x.jsx(x.Fragment,{children:n.link?x.jsx(Zn,{ref:i,"data-active":!!l,onClick:r,className:ii,to:n.link,children:n.text}):x.jsx("div",{className:ii,children:n.text})})}function G9(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 69 39",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Chevron Down"}),x.jsx("path",{d:"M34.8677 38.8398C35.9419 38.8398 37.0161 38.4492 37.7485 37.6191L67.729 7.44339C68.4614 6.71089 68.9009 5.73439 68.9009 4.61129C68.9009 2.31639 67.1919 0.558594 64.897 0.558594C63.8227 0.558594 62.7485 1.04689 62.0161 1.73049L32.5727 31.2715H37.1138L7.67042 1.73049C6.93802 1.04689 5.96142 0.558594 4.83842 0.558594C2.54342 0.558594 0.785645 2.31639 0.785645 4.61129C0.785645 5.73439 1.22512 6.71089 1.95752 7.44339L31.9868 37.6191C32.768 38.4492 33.7446 38.8398 34.8677 38.8398Z",fill:"currentColor"})]})}function q9(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 69 40",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Chevron Up"}),x.jsx("path",{d:"M1.95752 32.2441C1.22512 32.9277 0.785645 33.9531 0.785645 35.0762C0.785645 37.3711 2.54342 39.1289 4.83842 39.1289C5.96142 39.1289 6.98682 38.6895 7.67042 37.957L37.1138 8.36716H32.5727L62.0161 37.957C62.6997 38.6895 63.8227 39.1289 64.897 39.1289C67.1919 39.1289 68.9009 37.3711 68.9009 35.0762C68.9009 33.9531 68.4614 32.9277 67.729 32.2441L37.7485 2.06836C37.0161 1.23826 35.9419 0.847656 34.8677 0.847656C33.7446 0.847656 32.7192 1.23826 31.9868 2.06836L1.95752 32.2441Z",fill:"currentColor"})]})}function Y9(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 79 48",fill:"none",children:[x.jsx("title",{children:"Menu"}),x.jsx("path",{fill:"currentColor",d:"M19.528 47.232h40.87c1.952 0 3.515-1.562 3.515-3.564a3.5 3.5 0 0 0-3.516-3.516H19.528a3.501 3.501 0 0 0-3.515 3.516c0 2.002 1.562 3.564 3.515 3.564ZM12.057 27.262h55.81a3.501 3.501 0 0 0 3.516-3.516 3.501 3.501 0 0 0-3.515-3.515h-55.81a3.501 3.501 0 0 0-3.516 3.515 3.501 3.501 0 0 0 3.515 3.516ZM4.391 7.34H75.29c2.002 0 3.515-1.563 3.515-3.516 0-2.002-1.513-3.564-3.515-3.564H4.39C2.438.26.876 1.822.876 3.824A3.501 3.501 0 0 0 4.39 7.34Z"})]})}Tc.Curtain=nk;function Tc(){var n,r;const e=Je(),{showLogo:t}=Or();return x.jsxs("div",{className:u8,children:[x.jsxs("div",{className:Nh,children:[t&&x.jsx("div",{className:Sa,children:x.jsx("div",{className:r8,children:x.jsx(Zn,{to:"/",style:{alignItems:"center",display:"flex",height:"100%"},children:x.jsx(Qd,{})})})}),e.topNav&&x.jsx(x.Fragment,{children:x.jsxs("div",{className:Sa,children:[x.jsx(Q9,{items:e.topNav}),x.jsx(X9,{items:e.topNav})]})})]}),x.jsxs("div",{className:Nh,children:[x.jsx("div",{className:Sa,style:{marginRight:"-8px"},children:x.jsx(q7,{})}),e.socials&&((n=e.socials)==null?void 0:n.length)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:e8}),x.jsx("div",{className:Sa,style:{marginLeft:"-8px"},children:(r=e.socials)==null?void 0:r.map((o,i)=>x.jsx(tk,{...o},i))})]})]})]})}function Q9({items:e}){const{pathname:t}=Re(),n=Ki({pathname:t,items:e});return x.jsx(W1,{className:fg,children:x.jsx(K1,{children:e.map((r,o)=>r!=null&&r.link?x.jsx(Ql,{active:n==null?void 0:n.includes(r.id),href:r.link,children:r.text},o):x.jsxs(G1,{className:n8,children:[x.jsx(q1,{active:n==null?void 0:n.includes(r.id),children:r.text}),x.jsx(Y1,{className:X7,children:x.jsx(Z9,{items:r.items||[]})})]},o))})})}function Z9({items:e}){const{pathname:t}=Re(),n=Ki({pathname:t,items:e});return x.jsx("ul",{children:e==null?void 0:e.map((r,o)=>x.jsx(Ql,{active:n.includes(r.id),href:r.link,children:r.text},o))})}function X9({items:e}){var s;const[t,n]=p.useState(!1),{pathname:r}=Re(),o=Ki({pathname:r,items:e}),i=e.filter(c=>c.id===o[0])[0],{basePath:a}=Je(),l=a;return x.jsx("div",{className:D(fg,l8),children:i?x.jsxs(Bt.Root,{modal:!0,open:t,onOpenChange:n,children:[x.jsxs(Bt.Trigger,{className:D(dg,Xo),children:[i.text,x.jsx(st,{label:"Menu",icon:G9,size:"11px"})]}),x.jsx(Bt,{className:f8,children:x.jsx(B7,{type:"single",collapsible:!0,style:{display:"flex",flexDirection:"column"},children:e.map((c,d)=>{var u;return c!=null&&c.link?x.jsx(rn,{"data-active":o.includes(c.id),className:Xo,href:c.link,onClick:()=>n(!1),variant:"styleless",children:c.text},d):x.jsxs(H7,{value:d.toString(),children:[x.jsx(W7,{className:D(Xo,a8),"data-active":o.includes(c.id),style:qt({[Q7]:`url(${l}/.vocs/icons/chevron-down.svg)`,[Z7]:`url(${l}/.vocs/icons/chevron-up.svg)`}),children:c.text}),x.jsx(K7,{className:i8,children:(u=c.items)==null?void 0:u.map((f,h)=>x.jsx(rn,{className:Xo,href:f.link,onClick:()=>n(!1),variant:"styleless",children:f.text},h))})]},d)})})})]}):(s=e[0])!=null&&s.link?x.jsx(rn,{className:Xo,href:e[0].link,variant:"styleless",children:e[0].text}):null})}const J9={discord:Q1,github:Z1,telegram:X1,warpcast:J1,x:eg},ek={discord:"21px",github:"18px",telegram:"21px",warpcast:"18px",x:"16px"};function tk({icon:e,label:t,link:n,type:r}){return x.jsx("a",{className:Y7,href:n,target:"_blank",rel:"noopener noreferrer",children:x.jsx(st,{className:t8,label:t,icon:J9[e],size:ek[r]||"18px"})})}function nk({enableScrollToTop:e}){const{pathname:t}=Re(),{layout:n,showSidebar:r}=Or(),{frontmatter:o={}}=$r(),i=Kl(),[a,l]=p.useState(!1),[s,c]=p.useState(!1),d=p.useMemo(()=>{if(!i||n==="minimal")return;const h=Gg({sidebarItems:i.items,pathname:t});return h==null?void 0:h.text},[n,t,i]),u=p.useMemo(()=>{var h;if(!(typeof window>"u"))return(h=document.querySelector(".vocs_Content h1"))==null?void 0:h.textContent},[]),f=d||o.title||u;return x.jsxs("div",{className:J7,children:[x.jsx("div",{className:Lh,children:x.jsx("div",{className:ou,children:r?x.jsxs(Bt.Root,{modal:!0,open:s,onOpenChange:c,children:[x.jsxs(Bt.Trigger,{className:dg,children:[x.jsx(st,{label:"Menu",icon:Y9,size:"13px"}),x.jsx("div",{className:o8,children:f})]}),x.jsx(Bt,{className:d8,children:x.jsx(Hg,{onClickItem:()=>c(!1)})})]}):f})}),x.jsxs("div",{className:Lh,children:[e&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:ou,children:x.jsxs("button",{className:Dh,onClick:()=>window.scrollTo({behavior:"smooth",top:0}),type:"button",children:["Top",x.jsx(st,{label:"Scroll to top",icon:q9,size:"10px"})]})}),x.jsx("div",{className:c8})]}),n==="docs"&&x.jsx("div",{className:ou,children:x.jsxs(Bt.Root,{modal:!0,open:a,onOpenChange:l,children:[x.jsxs(Bt.Trigger,{className:Dh,children:["On this page",x.jsx(st,{label:"On this page",icon:Bg,size:"10px"})]}),x.jsx(Bt,{className:s8,children:x.jsx(pg,{onClickItem:()=>l(!1),showTitle:!1})})]})})]})]})}function Gg({sidebarItems:e,pathname:t}){const n=t.replace(/(.+)\/$/,"$1");for(const r of e){if((r==null?void 0:r.link)===n)return r;if(r.items){const o=Gg({sidebarItems:r.items,pathname:n});if(o)return o}}}var rk="vocs_SkipLink";const qg="vocs-content";function ok(){const{pathname:e}=Re();return x.jsx("a",{className:D(rk,r1),href:`${e}#${qg}`,children:"Skip to content"})}var ik="vocs_DocsLayout_content",ak="vocs_DocsLayout_content_withSidebar",lk="vocs_DocsLayout_content_withTopNav",sk="vocs_DocsLayout_gutterLeft",uk="vocs_DocsLayout_gutterRight",ck="vocs_DocsLayout_gutterRight_withSidebar",dk="vocs_DocsLayout_gutterTop",fk="vocs_DocsLayout_gutterTopCurtain",pk="vocs_DocsLayout_gutterTopCurtain_hidden",hk="vocs_DocsLayout_gutterTopCurtain_withSidebar",mk="vocs_DocsLayout_gutterTop_offsetLeftGutter",vk="vocs_DocsLayout_gutterTop_sticky",gk="vocs_DocsLayout",yk="vocs_DocsLayout_sidebar";function Rc({children:e}){const{banner:t,font:n}=Je(),{frontmatter:r={}}=$r(),{content:o}=r,{layout:i,showOutline:a,showSidebar:l,showTopNav:s}=Or(),{ref:c,inView:d}=Yv({initialInView:!0,rootMargin:"100px 0px 0px 0px"}),[u,f]=yc("banner",!0);return x.jsxs("div",{className:gk,"data-layout":i,style:qt({[p3]:u?t==null?void 0:t.height:void 0,[Yw.default]:n!=null&&n.google?`${n.google}, ${qw.default}`:void 0}),children:[x.jsx(ok,{}),u&&x.jsx(D3,{hide:()=>f(!1)}),l&&x.jsx("div",{className:sk,children:x.jsx(Hg,{className:yk})}),s&&x.jsxs(x.Fragment,{children:[x.jsxs("div",{ref:c,className:D(dk,l&&mk,(i==="minimal"||i==="landing")&&vk),children:[x.jsx(bc,{}),x.jsx(Tc,{})]}),x.jsxs("div",{className:D(fk,l&&hk,(i==="minimal"||i==="landing")&&pk),children:[x.jsx(bc.Curtain,{}),x.jsx(Tc.Curtain,{enableScrollToTop:!d})]})]}),a&&x.jsx("div",{className:D(uk,l&&ck),children:x.jsx(pg,{})}),x.jsxs("div",{id:qg,className:D(ik,l&&ak,s&&lk),style:qt({[zs.horizontalPadding]:o==null?void 0:o.horizontalPadding,[zs.width]:o==null?void 0:o.width,[zs.verticalPadding]:o==null?void 0:o.verticalPadding}),children:[x.jsx(e1,{children:e}),x.jsx(v7,{})]}),x.jsx("div",{"data-bottom-observer":!0})]})}const $c={},Yg=Z.createContext($c);function xk(e){const t=Z.useContext(Yg);return Z.useMemo(function(){return typeof e=="function"?e(t):{...t,...e}},[t,e])}function _k(e){let t;return e.disableParentContext?t=typeof e.components=="function"?e.components($c):e.components||$c:t=xk(e.components),Z.createElement(Yg.Provider,{value:t},e.children)}var Qg={exports:{}},wk="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",Ek=wk,kk=Ek;function Zg(){}function Xg(){}Xg.resetWarningCache=Zg;var bk=function(){function e(r,o,i,a,l,s){if(s!==kk){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}e.isRequired=e;function t(){return e}var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:Xg,resetWarningCache:Zg};return n.PropTypes=n,n};Qg.exports=bk();var Ck=Qg.exports;const Ee=tr(Ck);function Pk(e){return e&&typeof e=="object"&&"default"in e?e.default:e}var Jg=p,Ak=Pk(Jg);function Kh(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Sk(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var Tk=!!(typeof window<"u"&&window.document&&window.document.createElement);function Rk(e,t,n){if(typeof e!="function")throw new Error("Expected reducePropsToState to be a function.");if(typeof t!="function")throw new Error("Expected handleStateChangeOnClient to be a function.");if(typeof n<"u"&&typeof n!="function")throw new Error("Expected mapStateOnServer to either be undefined or a function.");function r(o){return o.displayName||o.name||"Component"}return function(i){if(typeof i!="function")throw new Error("Expected WrappedComponent to be a React component.");var a=[],l;function s(){l=e(a.map(function(d){return d.props})),c.canUseDOM?t(l):n&&(l=n(l))}var c=function(d){Sk(u,d);function u(){return d.apply(this,arguments)||this}u.peek=function(){return l},u.rewind=function(){if(u.canUseDOM)throw new Error("You may only call rewind() on the server. Call peek() to read the current state.");var y=l;return l=void 0,a=[],y};var f=u.prototype;return f.UNSAFE_componentWillMount=function(){a.push(this),s()},f.componentDidUpdate=function(){s()},f.componentWillUnmount=function(){var y=a.indexOf(this);a.splice(y,1),s()},f.render=function(){return Ak.createElement(i,this.props)},u}(Jg.PureComponent);return Kh(c,"displayName","SideEffect("+r(i)+")"),Kh(c,"canUseDOM",Tk),c}}var $k=Rk;const Ok=tr($k);var Ik=typeof Element<"u",Lk=typeof Map=="function",Dk=typeof Set=="function",Nk=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function Ga(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var n,r,o;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(!Ga(e[r],t[r]))return!1;return!0}var i;if(Lk&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(i=e.entries();!(r=i.next()).done;)if(!t.has(r.value[0]))return!1;for(i=e.entries();!(r=i.next()).done;)if(!Ga(r.value[1],t.get(r.value[0])))return!1;return!0}if(Dk&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(i=e.entries();!(r=i.next()).done;)if(!t.has(r.value[0]))return!1;return!0}if(Nk&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(e[r]!==t[r])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&typeof e.valueOf=="function"&&typeof t.valueOf=="function")return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString=="function"&&typeof t.toString=="function")return e.toString()===t.toString();if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[r]))return!1;if(Ik&&e instanceof Element)return!1;for(r=n;r--!==0;)if(!((o[r]==="_owner"||o[r]==="__v"||o[r]==="__o")&&e.$$typeof)&&!Ga(e[o[r]],t[o[r]]))return!1;return!0}return e!==e&&t!==t}var Mk=function(t,n){try{return Ga(t,n)}catch(r){if((r.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw r}};const jk=tr(Mk);/* +*****************************************************/(function(e,t){(function(n,r){e.exports=r()})(Ty,function(){var n=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(c){return typeof c}:function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},r=function(c,d){if(!(c instanceof d))throw new TypeError("Cannot call a class as a function")},o=function(){function c(d,u){for(var f=0;f1&&arguments[1]!==void 0?arguments[1]:!0,f=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:5e3;r(this,c),this.ctx=d,this.iframes=u,this.exclude=f,this.iframesTimeout=h}return o(c,[{key:"getContexts",value:function(){var u=void 0,f=[];return typeof this.ctx>"u"||!this.ctx?u=[]:NodeList.prototype.isPrototypeOf(this.ctx)?u=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?u=this.ctx:typeof this.ctx=="string"?u=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):u=[this.ctx],u.forEach(function(h){var y=f.filter(function(g){return g.contains(h)}).length>0;f.indexOf(h)===-1&&!y&&f.push(h)}),f}},{key:"getIframeContents",value:function(u,f){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},y=void 0;try{var g=u.contentWindow;if(y=g.document,!g||!y)throw new Error("iframe inaccessible")}catch{h()}y&&f(y)}},{key:"isIframeBlank",value:function(u){var f="about:blank",h=u.getAttribute("src").trim(),y=u.contentWindow.location.href;return y===f&&h!==f&&h}},{key:"observeIframeLoad",value:function(u,f,h){var y=this,g=!1,w=null,m=function v(){if(!g){g=!0,clearTimeout(w);try{y.isIframeBlank(u)||(u.removeEventListener("load",v),y.getIframeContents(u,f,h))}catch{h()}}};u.addEventListener("load",m),w=setTimeout(m,this.iframesTimeout)}},{key:"onIframeReady",value:function(u,f,h){try{u.contentWindow.document.readyState==="complete"?this.isIframeBlank(u)?this.observeIframeLoad(u,f,h):this.getIframeContents(u,f,h):this.observeIframeLoad(u,f,h)}catch{h()}}},{key:"waitForIframes",value:function(u,f){var h=this,y=0;this.forEachIframe(u,function(){return!0},function(g){y++,h.waitForIframes(g.querySelector("html"),function(){--y||f()})},function(g){g||f()})}},{key:"forEachIframe",value:function(u,f,h){var y=this,g=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},w=u.querySelectorAll("iframe"),m=w.length,v=0;w=Array.prototype.slice.call(w);var _=function(){--m<=0&&g(v)};m||_(),w.forEach(function(E){c.matches(E,y.exclude)?_():y.onIframeReady(E,function(C){f(E)&&(v++,h(C)),_()},_)})}},{key:"createIterator",value:function(u,f,h){return document.createNodeIterator(u,f,h,!1)}},{key:"createInstanceOnIframe",value:function(u){return new c(u.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(u,f,h){var y=u.compareDocumentPosition(h),g=Node.DOCUMENT_POSITION_PRECEDING;if(y&g)if(f!==null){var w=f.compareDocumentPosition(h),m=Node.DOCUMENT_POSITION_FOLLOWING;if(w&m)return!0}else return!0;return!1}},{key:"getIteratorNode",value:function(u){var f=u.previousNode(),h=void 0;return f===null?h=u.nextNode():h=u.nextNode()&&u.nextNode(),{prevNode:f,node:h}}},{key:"checkIframeFilter",value:function(u,f,h,y){var g=!1,w=!1;return y.forEach(function(m,v){m.val===h&&(g=v,w=m.handled)}),this.compareNodeIframe(u,f,h)?(g===!1&&!w?y.push({val:h,handled:!0}):g!==!1&&!w&&(y[g].handled=!0),!0):(g===!1&&y.push({val:h,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(u,f,h,y){var g=this;u.forEach(function(w){w.handled||g.getIframeContents(w.val,function(m){g.createInstanceOnIframe(m).forEachNode(f,h,y)})})}},{key:"iterateThroughNodes",value:function(u,f,h,y,g){for(var w=this,m=this.createIterator(f,u,y),v=[],_=[],E=void 0,C=void 0,k=function(){var A=w.getIteratorNode(m);return C=A.prevNode,E=A.node,E};k();)this.iframes&&this.forEachIframe(f,function(P){return w.checkIframeFilter(E,C,P,v)},function(P){w.createInstanceOnIframe(P).forEachNode(u,function(A){return _.push(A)},y)}),_.push(E);_.forEach(function(P){h(P)}),this.iframes&&this.handleOpenIframes(v,u,h,y),g()}},{key:"forEachNode",value:function(u,f,h){var y=this,g=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},w=this.getContexts(),m=w.length;m||g(),w.forEach(function(v){var _=function(){y.iterateThroughNodes(u,v,f,h,function(){--m<=0&&g()})};y.iframes?y.waitForIframes(v,_):_()})}}],[{key:"matches",value:function(u,f){var h=typeof f=="string"?[f]:f,y=u.matches||u.matchesSelector||u.msMatchesSelector||u.mozMatchesSelector||u.oMatchesSelector||u.webkitMatchesSelector;if(y){var g=!1;return h.every(function(w){return y.call(u,w)?(g=!0,!1):!0}),g}else return!1}}]),c}(),l=function(){function c(d){r(this,c),this.ctx=d,this.ie=!1;var u=window.navigator.userAgent;(u.indexOf("MSIE")>-1||u.indexOf("Trident")>-1)&&(this.ie=!0)}return o(c,[{key:"log",value:function(u){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"debug",h=this.opt.log;this.opt.debug&&(typeof h>"u"?"undefined":n(h))==="object"&&typeof h[f]=="function"&&h[f]("mark.js: "+u)}},{key:"escapeStr",value:function(u){return u.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(u){return this.opt.wildcards!=="disabled"&&(u=this.setupWildcardsRegExp(u)),u=this.escapeStr(u),Object.keys(this.opt.synonyms).length&&(u=this.createSynonymsRegExp(u)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(u=this.setupIgnoreJoinersRegExp(u)),this.opt.diacritics&&(u=this.createDiacriticsRegExp(u)),u=this.createMergedBlanksRegExp(u),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(u=this.createJoinersRegExp(u)),this.opt.wildcards!=="disabled"&&(u=this.createWildcardsRegExp(u)),u=this.createAccuracyRegExp(u),u}},{key:"createSynonymsRegExp",value:function(u){var f=this.opt.synonyms,h=this.opt.caseSensitive?"":"i",y=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var g in f)if(f.hasOwnProperty(g)){var w=f[g],m=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(g):this.escapeStr(g),v=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(w):this.escapeStr(w);m!==""&&v!==""&&(u=u.replace(new RegExp("("+this.escapeStr(m)+"|"+this.escapeStr(v)+")","gm"+h),y+("("+this.processSynomyms(m)+"|")+(this.processSynomyms(v)+")")+y))}return u}},{key:"processSynomyms",value:function(u){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(u=this.setupIgnoreJoinersRegExp(u)),u}},{key:"setupWildcardsRegExp",value:function(u){return u=u.replace(/(?:\\)*\?/g,function(f){return f.charAt(0)==="\\"?"?":""}),u.replace(/(?:\\)*\*/g,function(f){return f.charAt(0)==="\\"?"*":""})}},{key:"createWildcardsRegExp",value:function(u){var f=this.opt.wildcards==="withSpaces";return u.replace(/\u0001/g,f?"[\\S\\s]?":"\\S?").replace(/\u0002/g,f?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(u){return u.replace(/[^(|)\\]/g,function(f,h,y){var g=y.charAt(h+1);return/[(|)\\]/.test(g)||g===""?f:f+"\0"})}},{key:"createJoinersRegExp",value:function(u){var f=[],h=this.opt.ignorePunctuation;return Array.isArray(h)&&h.length&&f.push(this.escapeStr(h.join(""))),this.opt.ignoreJoiners&&f.push("\\u00ad\\u200b\\u200c\\u200d"),f.length?u.split(/\u0000+/).join("["+f.join("")+"]*"):u}},{key:"createDiacriticsRegExp",value:function(u){var f=this.opt.caseSensitive?"":"i",h=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"],y=[];return u.split("").forEach(function(g){h.every(function(w){if(w.indexOf(g)!==-1){if(y.indexOf(w)>-1)return!1;u=u.replace(new RegExp("["+w+"]","gm"+f),"["+w+"]"),y.push(w)}return!0})}),u}},{key:"createMergedBlanksRegExp",value:function(u){return u.replace(/[\s]+/gmi,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(u){var f=this,h="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿",y=this.opt.accuracy,g=typeof y=="string"?y:y.value,w=typeof y=="string"?[]:y.limiters,m="";switch(w.forEach(function(v){m+="|"+f.escapeStr(v)}),g){case"partially":default:return"()("+u+")";case"complementary":return m="\\s"+(m||this.escapeStr(h)),"()([^"+m+"]*"+u+"[^"+m+"]*)";case"exactly":return"(^|\\s"+m+")("+u+")(?=$|\\s"+m+")"}}},{key:"getSeparatedKeywords",value:function(u){var f=this,h=[];return u.forEach(function(y){f.opt.separateWordSearch?y.split(" ").forEach(function(g){g.trim()&&h.indexOf(g)===-1&&h.push(g)}):y.trim()&&h.indexOf(y)===-1&&h.push(y)}),{keywords:h.sort(function(y,g){return g.length-y.length}),length:h.length}}},{key:"isNumeric",value:function(u){return Number(parseFloat(u))==u}},{key:"checkRanges",value:function(u){var f=this;if(!Array.isArray(u)||Object.prototype.toString.call(u[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(u),[];var h=[],y=0;return u.sort(function(g,w){return g.start-w.start}).forEach(function(g){var w=f.callNoMatchOnInvalidRanges(g,y),m=w.start,v=w.end,_=w.valid;_&&(g.start=m,g.length=v-m,h.push(g),y=v)}),h}},{key:"callNoMatchOnInvalidRanges",value:function(u,f){var h=void 0,y=void 0,g=!1;return u&&typeof u.start<"u"?(h=parseInt(u.start,10),y=h+parseInt(u.length,10),this.isNumeric(u.start)&&this.isNumeric(u.length)&&y-f>0&&y-h>0?g=!0:(this.log("Ignoring invalid or overlapping range: "+(""+JSON.stringify(u))),this.opt.noMatch(u))):(this.log("Ignoring invalid range: "+JSON.stringify(u)),this.opt.noMatch(u)),{start:h,end:y,valid:g}}},{key:"checkWhitespaceRanges",value:function(u,f,h){var y=void 0,g=!0,w=h.length,m=f-w,v=parseInt(u.start,10)-m;return v=v>w?w:v,y=v+parseInt(u.length,10),y>w&&(y=w,this.log("End range automatically set to the max value of "+w)),v<0||y-v<0||v>w||y>w?(g=!1,this.log("Invalid range: "+JSON.stringify(u)),this.opt.noMatch(u)):h.substring(v,y).replace(/\s+/g,"")===""&&(g=!1,this.log("Skipping whitespace only range: "+JSON.stringify(u)),this.opt.noMatch(u)),{start:v,end:y,valid:g}}},{key:"getTextNodes",value:function(u){var f=this,h="",y=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,function(g){y.push({start:h.length,end:(h+=g.textContent).length,node:g})},function(g){return f.matchesExclude(g.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},function(){u({value:h,nodes:y})})}},{key:"matchesExclude",value:function(u){return a.matches(u,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(u,f,h){var y=this.opt.element?this.opt.element:"mark",g=u.splitText(f),w=g.splitText(h-f),m=document.createElement(y);return m.setAttribute("data-markjs","true"),this.opt.className&&m.setAttribute("class",this.opt.className),m.textContent=g.textContent,g.parentNode.replaceChild(m,g),w}},{key:"wrapRangeInMappedTextNode",value:function(u,f,h,y,g){var w=this;u.nodes.every(function(m,v){var _=u.nodes[v+1];if(typeof _>"u"||_.start>f){if(!y(m.node))return!1;var E=f-m.start,C=(h>m.end?m.end:h)-m.start,k=u.value.substr(0,m.start),P=u.value.substr(C+m.start);if(m.node=w.wrapRangeInTextNode(m.node,E,C),u.value=k+P,u.nodes.forEach(function(A,S){S>=v&&(u.nodes[S].start>0&&S!==v&&(u.nodes[S].start-=C),u.nodes[S].end-=C)}),h-=C,g(m.node.previousSibling,m.start),h>m.end)f=m.end;else return!1}return!0})}},{key:"wrapMatches",value:function(u,f,h,y,g){var w=this,m=f===0?0:f+1;this.getTextNodes(function(v){v.nodes.forEach(function(_){_=_.node;for(var E=void 0;(E=u.exec(_.textContent))!==null&&E[m]!=="";)if(h(E[m],_)){var C=E.index;if(m!==0)for(var k=1;k{const o=setTimeout(()=>r(e),t||500);return()=>{clearTimeout(o)}},[e,t]),n}function yc(e,t){const[n,r]=p.useState();p.useEffect(()=>{const i=O5(e);r(typeof i>"u"||i===null?typeof t=="function"?t():t:i)},[t,e]);const o=p.useCallback(i=>{r(a=>{let l;typeof i=="function"?l=i(a):l=i;try{localStorage.setItem(e,JSON.stringify(l))}catch{}return l})},[e]);return[n,o]}function O5(e){try{const t=localStorage.getItem(e);return typeof t=="string"?JSON.parse(t):void 0}catch{return}}var I5="vocs_Kbd";function N1(e){return x.jsx("kbd",{...e,className:D(e.className,I5)})}var L5="vocs_KeyboardShortcut_kbdGroup",D5="vocs_KeyboardShortcut";function ro(e){const{description:t,keys:n}=e;return x.jsxs("span",{className:D5,children:[t,x.jsx("span",{className:L5,children:n.map(r=>x.jsx(N1,{children:r},r))})]})}var N5="vocs_SearchDialog_content",wh="vocs_SearchDialog_excerpt",M5="vocs_SearchDialog_overlay",j5="vocs_SearchDialog_result",Eh="vocs_SearchDialog_resultIcon",F5="vocs_SearchDialog_resultSelected",z5="vocs_SearchDialog_results",U5="vocs_SearchDialog",V5="vocs_SearchDialog_searchBox",B5="vocs_SearchDialog_searchInput",Pa="vocs_SearchDialog_searchInputIcon",H5="vocs_SearchDialog_searchInputIconDesktop",W5="vocs_SearchDialog_searchInputIconMobile",K5="vocs_SearchDialog_searchShortcuts",kh="vocs_SearchDialog_title",G5="vocs_SearchDialog_titleIcon",q5="vocs_SearchDialog_titles";function M1(e){const t=Ud(),n=p.useRef(null),r=p.useRef(null),[o,i]=yc("filterText",""),a=$5(o,200),l=L1(),[s,c]=p.useState(-1),[d,u]=p.useState(!1),[f,h]=yc("showDetailView",!0),y=p.useMemo(()=>l?a?(c(0),l.search(a).slice(0,16)):(c(-1),[]):[],[l,a]),g=y.length,w=y[s],m=p.useCallback(()=>{var C,k,P;if(!r.current)return;const v=new Set;for(const A of y)for(const S in A.match)v.add(S);const _=new R5(r.current);_.unmark({done(){_==null||_.markRegExp(Y5(v))}});const E=r.current.querySelectorAll(`.${wh}`);for(const A of E)(C=A.querySelector('mark[data-markjs="true"]'))==null||C.scrollIntoView({block:"center"});(P=(k=r.current)==null?void 0:k.firstElementChild)==null||P.scrollIntoView({block:"start"})},[y]);return p.useEffect(()=>{if(!e.open)return;function v(_){var E;switch(_.key){case"ArrowDown":{_.preventDefault(),c(C=>{var A;let k=C+1;k>=g&&(k=0);const P=(A=r.current)==null?void 0:A.children[k];return P==null||P.scrollIntoView({block:"nearest"}),k}),u(!0);break}case"ArrowUp":{_.preventDefault(),c(C=>{var A;let k=C-1;k<0&&(k=g-1);const P=(A=r.current)==null?void 0:A.children[k];return P==null||P.scrollIntoView({block:"nearest"}),k}),u(!0);break}case"Backspace":{if(!_.metaKey)return;_.preventDefault(),i(""),(E=n.current)==null||E.focus();break}case"Enter":{if(_.target instanceof HTMLButtonElement&&_.target.type!=="submit"||!w)return;_.preventDefault(),t(w.href),e.onClose();break}}}return window.addEventListener("keydown",v),()=>{window.removeEventListener("keydown",v)}},[t,g,i,w,e.open,e.onClose]),p.useEffect(()=>{a!==""&&r.current&&m()},[m,a]),x.jsxs(a5,{children:[x.jsx(l5,{className:M5}),x.jsxs(s5,{onOpenAutoFocus:v=>{n.current&&(v.preventDefault(),n.current.focus()),m()},onCloseAutoFocus:()=>{c(0)},className:U5,"aria-describedby":void 0,children:[x.jsx(u5,{className:r1,children:"Search"}),x.jsxs("form",{className:V5,children:[x.jsx("button",{"aria-label":"Close search dialog",type:"button",onClick:()=>e.onClose(),className:W5,children:x.jsx(kw,{className:Pa,height:20,width:20})}),x.jsx(S5,{htmlFor:"search-input",children:x.jsx(Wd,{"aria-label":"Search",className:D(Pa,H5),height:20,width:20})}),x.jsx("input",{ref:n,tabIndex:0,className:B5,id:"search-input",onChange:v=>i(v.target.value),placeholder:"Search",type:"search",value:o}),x.jsx("button",{"aria-label":"Toggle detail view",type:"button",onClick:()=>h(v=>!v),children:x.jsx($w,{className:Pa,height:20,width:20})}),x.jsx("button",{"aria-label":"Reset search",type:"button",className:Pa,onClick:()=>{var v;i(""),(v=n.current)==null||v.focus()},children:"⌫"})]}),x.jsxs("ul",{className:z5,role:y.length?"listbox":void 0,onMouseMove:()=>u(!1),ref:r,children:[a&&y.length===0&&x.jsxs("li",{children:['No results for "',x.jsx("span",{children:a}),'"']}),y.map((v,_)=>{var E;return x.jsx("li",{role:"option",className:D(j5,_===s&&F5),"aria-selected":_===s,"aria-label":[...v.titles.filter(C=>!!C),v.title].join(" > "),children:x.jsxs(Vv,{to:v.href,onClick:C=>{C.metaKey||e.onClose()},onMouseEnter:()=>!d&&c(_),onFocus:()=>c(_),children:[x.jsxs("div",{className:q5,children:[v.isPage?x.jsx(Tw,{className:Eh}):x.jsx("span",{className:Eh,children:"#"}),v.titles.filter(C=>!!C).map(C=>x.jsxs("span",{className:kh,children:[x.jsx("span",{dangerouslySetInnerHTML:{__html:C}}),x.jsx(Cw,{className:G5})]},C)),x.jsx("span",{className:kh,children:x.jsx("span",{dangerouslySetInnerHTML:{__html:v.title}})})]}),f&&((E=v.text)==null?void 0:E.trim())&&x.jsx("div",{className:wh,children:x.jsx(e1,{className:N5,children:x.jsx("div",{dangerouslySetInnerHTML:{__html:v.html}})})})]})},v.id)})]}),x.jsxs("div",{className:K5,children:[x.jsx(ro,{description:"Navigate",keys:["↑","↓"]}),x.jsx(ro,{description:"Select",keys:["enter"]}),x.jsx(ro,{description:"Close",keys:["esc"]}),x.jsx(ro,{description:"Reset",keys:["⌘","⌫"]})]})]})]})}function Y5(e){return new RegExp([...e].sort((t,n)=>n.length-t.length).map(t=>`(${t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")})`).join("|"),"gi")}function Q5(){L1();const[e,t]=p.useState(!1);return p.useEffect(()=>{function n(r){const o=document.activeElement instanceof HTMLElement&&(["input","select","textarea"].includes(document.activeElement.tagName.toLowerCase())||document.activeElement.isContentEditable);r.key==="/"&&!e&&!o?(r.preventDefault(),t(!0)):r.metaKey===!0&&r.key==="k"&&(r.preventDefault(),t(i=>!i))}return window.addEventListener("keydown",n),()=>{window.removeEventListener("keydown",n)}},[e]),x.jsxs(P1,{open:e,onOpenChange:t,children:[x.jsx(A1,{asChild:!0,children:x.jsxs("button",{className:C5,type:"button",children:[x.jsx(Wd,{style:{marginTop:2}}),"Search",x.jsx("div",{className:P5,children:x.jsx("div",{style:{background:"currentColor",transform:"rotate(45deg)",width:1.5,borderRadius:2,height:"100%"}})})]})}),x.jsx(M1,{open:e,onClose:()=>t(!1)})]})}var j1="vocs_DesktopTopNav_button",Z5="vocs_DesktopTopNav_content",X5="vocs_DesktopTopNav_curtain",bh="vocs_DesktopTopNav_divider",nu="vocs_DesktopTopNav_group",Aa="vocs_DesktopTopNav_hideCompact",xc="vocs_DesktopTopNav_icon",wl="vocs_DesktopTopNav_item",J5="vocs_DesktopTopNav_logo",e7="vocs_DesktopTopNav_logoWrapper",t7="vocs_DesktopTopNav",Ch="vocs_DesktopTopNav_section",n7="vocs_DesktopTopNav_withLogo",r7="vocs_Icon",_c="var(--vocs_Icon_size)";function st({className:e,label:t,icon:n,size:r,style:o}){return x.jsx("div",{"aria-label":t,className:D(r7,e),role:"img",style:{...o,...qt({[_c]:r})},children:x.jsx(n,{height:r,width:r})})}var o7="vocs_Logo_logoDark",i7="vocs_Logo_logoLight",ru="vocs_Logo";function a7({className:e}){const{logoUrl:t}=Je();return t?x.jsx(x.Fragment,{children:typeof t=="string"?x.jsx("img",{alt:"Logo",className:D(e,ru),src:t}):x.jsxs(x.Fragment,{children:[x.jsx("img",{alt:"Logo",className:D(e,ru,o7),src:t.dark}),x.jsx("img",{alt:"Logo",className:D(e,ru,i7),src:t.light})]})}):null}var l7="vocs_NavLogo_logoImage",s7="vocs_NavLogo_title";function Qd(){const e=Je();return e.logoUrl?x.jsx(a7,{className:l7}):x.jsx("div",{className:s7,children:e.title})}const u7=p.createContext(void 0);function ql(e){const t=p.useContext(u7);return e||t||"ltr"}function Yl(e){const t=e+"CollectionProvider",[n,r]=kn(t),[o,i]=n(t,{collectionRef:{current:null},itemMap:new Map}),a=h=>{const{scope:y,children:g}=h,w=Z.useRef(null),m=Z.useRef(new Map).current;return Z.createElement(o,{scope:y,itemMap:m,collectionRef:w},g)},l=e+"CollectionSlot",s=Z.forwardRef((h,y)=>{const{scope:g,children:w}=h,m=i(l,g),v=Ue(y,m.collectionRef);return Z.createElement(bo,{ref:v},w)}),c=e+"CollectionItemSlot",d="data-radix-collection-item",u=Z.forwardRef((h,y)=>{const{scope:g,children:w,...m}=h,v=Z.useRef(null),_=Ue(y,v),E=i(c,g);return Z.useEffect(()=>(E.itemMap.set(v,{ref:v,...m}),()=>void E.itemMap.delete(v))),Z.createElement(bo,{[d]:"",ref:_},w)});function f(h){const y=i(e+"CollectionConsumer",h);return Z.useCallback(()=>{const w=y.collectionRef.current;if(!w)return[];const m=Array.from(w.querySelectorAll(`[${d}]`));return Array.from(y.itemMap.values()).sort((E,C)=>m.indexOf(E.ref.current)-m.indexOf(C.ref.current))},[y.collectionRef,y.itemMap])}return[{Provider:a,Slot:s,ItemSlot:u},f,r]}function c7(e){const t=p.useRef({value:e,previous:e});return p.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}const d7=p.forwardRef((e,t)=>p.createElement(fe.span,q({},e,{ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}}))),f7=d7,Gi="NavigationMenu",[Zd,p7,h7]=Yl(Gi),[wc,m7,v7]=Yl(Gi),[Xd,kP]=kn(Gi,[h7,v7]),[g7,Ir]=Xd(Gi),[y7,bP]=Xd(Gi),x7=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,onValueChange:o,defaultValue:i,delayDuration:a=200,skipDelayDuration:l=300,orientation:s="horizontal",dir:c,...d}=e,[u,f]=p.useState(null),h=Ue(t,S=>f(S)),y=ql(c),g=p.useRef(0),w=p.useRef(0),m=p.useRef(0),[v,_]=p.useState(!0),[E="",C]=ar({prop:r,onChange:S=>{const O=S!=="",j=l>0;O?(window.clearTimeout(m.current),j&&_(!1)):(window.clearTimeout(m.current),m.current=window.setTimeout(()=>_(!0),l)),o==null||o(S)},defaultProp:i}),k=p.useCallback(()=>{window.clearTimeout(w.current),w.current=window.setTimeout(()=>C(""),150)},[C]),P=p.useCallback(S=>{window.clearTimeout(w.current),C(S)},[C]),A=p.useCallback(S=>{E===S?window.clearTimeout(w.current):g.current=window.setTimeout(()=>{window.clearTimeout(w.current),C(S)},a)},[E,C,a]);return p.useEffect(()=>()=>{window.clearTimeout(g.current),window.clearTimeout(w.current),window.clearTimeout(m.current)},[]),p.createElement(_7,{scope:n,isRootMenu:!0,value:E,dir:y,orientation:s,rootNavigationMenu:u,onTriggerEnter:S=>{window.clearTimeout(g.current),v?A(S):P(S)},onTriggerLeave:()=>{window.clearTimeout(g.current),k()},onContentEnter:()=>window.clearTimeout(w.current),onContentLeave:k,onItemSelect:S=>{C(O=>O===S?"":S)},onItemDismiss:()=>C("")},p.createElement(fe.nav,q({"aria-label":"Main","data-orientation":s,dir:y},d,{ref:h})))}),_7=e=>{const{scope:t,isRootMenu:n,rootNavigationMenu:r,dir:o,orientation:i,children:a,value:l,onItemSelect:s,onItemDismiss:c,onTriggerEnter:d,onTriggerLeave:u,onContentEnter:f,onContentLeave:h}=e,[y,g]=p.useState(null),[w,m]=p.useState(new Map),[v,_]=p.useState(null);return p.createElement(g7,{scope:t,isRootMenu:n,rootNavigationMenu:r,value:l,previousValue:c7(l),baseId:on(),dir:o,orientation:i,viewport:y,onViewportChange:g,indicatorTrack:v,onIndicatorTrackChange:_,onTriggerEnter:at(d),onTriggerLeave:at(u),onContentEnter:at(f),onContentLeave:at(h),onItemSelect:at(s),onItemDismiss:at(c),onViewportContentChange:p.useCallback((E,C)=>{m(k=>(k.set(E,C),new Map(k)))},[]),onViewportContentRemove:p.useCallback(E=>{m(C=>C.has(E)?(C.delete(E),new Map(C)):C)},[])},p.createElement(Zd.Provider,{scope:t},p.createElement(y7,{scope:t,items:w},a)))},w7="NavigationMenuList",E7=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=Ir(w7,n),i=p.createElement(fe.ul,q({"data-orientation":o.orientation},r,{ref:t}));return p.createElement(fe.div,{style:{position:"relative"},ref:o.onIndicatorTrackChange},p.createElement(Zd.Slot,{scope:n},o.isRootMenu?p.createElement(z1,{asChild:!0},i):i))}),k7="NavigationMenuItem",[b7,F1]=Xd(k7),C7=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,...o}=e,i=on(),a=r||i||"LEGACY_REACT_AUTO_VALUE",l=p.useRef(null),s=p.useRef(null),c=p.useRef(null),d=p.useRef(()=>{}),u=p.useRef(!1),f=p.useCallback((y="start")=>{if(l.current){d.current();const g=Ec(l.current);g.length&&Jd(y==="start"?g:g.reverse())}},[]),h=p.useCallback(()=>{if(l.current){const y=Ec(l.current);y.length&&(d.current=I7(y))}},[]);return p.createElement(b7,{scope:n,value:a,triggerRef:s,contentRef:l,focusProxyRef:c,wasEscapeCloseRef:u,onEntryKeyDown:f,onFocusProxyEnter:f,onRootContentClose:h,onContentFocusOutside:h},p.createElement(fe.li,q({},o,{ref:t})))}),Ph="NavigationMenuTrigger",P7=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,disabled:r,...o}=e,i=Ir(Ph,e.__scopeNavigationMenu),a=F1(Ph,e.__scopeNavigationMenu),l=p.useRef(null),s=Ue(l,a.triggerRef,t),c=B1(i.baseId,a.value),d=H1(i.baseId,a.value),u=p.useRef(!1),f=p.useRef(!1),h=a.value===i.value;return p.createElement(p.Fragment,null,p.createElement(Zd.ItemSlot,{scope:n,value:a.value},p.createElement(U1,{asChild:!0},p.createElement(fe.button,q({id:c,disabled:r,"data-disabled":r?"":void 0,"data-state":V1(h),"aria-expanded":h,"aria-controls":d},o,{ref:s,onPointerEnter:le(e.onPointerEnter,()=>{f.current=!1,a.wasEscapeCloseRef.current=!1}),onPointerMove:le(e.onPointerMove,kc(()=>{r||f.current||a.wasEscapeCloseRef.current||u.current||(i.onTriggerEnter(a.value),u.current=!0)})),onPointerLeave:le(e.onPointerLeave,kc(()=>{r||(i.onTriggerLeave(),u.current=!1)})),onClick:le(e.onClick,()=>{i.onItemSelect(a.value),f.current=h}),onKeyDown:le(e.onKeyDown,y=>{const w={horizontal:"ArrowDown",vertical:i.dir==="rtl"?"ArrowLeft":"ArrowRight"}[i.orientation];h&&y.key===w&&(a.onEntryKeyDown(),y.preventDefault())})})))),h&&p.createElement(p.Fragment,null,p.createElement(f7,{"aria-hidden":!0,tabIndex:0,ref:a.focusProxyRef,onFocus:y=>{const g=a.contentRef.current,w=y.relatedTarget,m=w===l.current,v=g==null?void 0:g.contains(w);(m||!v)&&a.onFocusProxyEnter(m?"start":"end")}}),i.viewport&&p.createElement("span",{"aria-owns":d})))}),Ah="navigationMenu.linkSelect",A7=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,active:r,onSelect:o,...i}=e;return p.createElement(U1,{asChild:!0},p.createElement(fe.a,q({"data-active":r?"":void 0,"aria-current":r?"page":void 0},i,{ref:t,onClick:le(e.onClick,a=>{const l=a.target,s=new CustomEvent(Ah,{bubbles:!0,cancelable:!0});if(l.addEventListener(Ah,c=>o==null?void 0:o(c),{once:!0}),dc(l,s),!s.defaultPrevented&&!a.metaKey){const c=new CustomEvent(Wa,{bubbles:!0,cancelable:!0});dc(l,c)}},{checkForDefaultPrevented:!1})})))}),El="NavigationMenuContent",S7=p.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Ir(El,e.__scopeNavigationMenu),i=F1(El,e.__scopeNavigationMenu),a=Ue(i.contentRef,t),l=i.value===o.value,s={value:i.value,triggerRef:i.triggerRef,focusProxyRef:i.focusProxyRef,wasEscapeCloseRef:i.wasEscapeCloseRef,onContentFocusOutside:i.onContentFocusOutside,onRootContentClose:i.onRootContentClose,...r};return o.viewport?p.createElement(T7,q({forceMount:n},s,{ref:a})):p.createElement(bn,{present:n||l},p.createElement(R7,q({"data-state":V1(l)},s,{ref:a,onPointerEnter:le(e.onPointerEnter,o.onContentEnter),onPointerLeave:le(e.onPointerLeave,kc(o.onContentLeave)),style:{pointerEvents:!l&&o.isRootMenu?"none":void 0,...s.style}})))}),T7=p.forwardRef((e,t)=>{const n=Ir(El,e.__scopeNavigationMenu),{onViewportContentChange:r,onViewportContentRemove:o}=n;return yn(()=>{r(e.value,{ref:t,...e})},[e,t,r]),yn(()=>()=>o(e.value),[e.value,o]),null}),Wa="navigationMenu.rootContentDismiss",R7=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,triggerRef:o,focusProxyRef:i,wasEscapeCloseRef:a,onRootContentClose:l,onContentFocusOutside:s,...c}=e,d=Ir(El,n),u=p.useRef(null),f=Ue(u,t),h=B1(d.baseId,r),y=H1(d.baseId,r),g=p7(n),w=p.useRef(null),{onItemDismiss:m}=d;p.useEffect(()=>{const _=u.current;if(d.isRootMenu&&_){const E=()=>{var C;m(),l(),_.contains(document.activeElement)&&((C=o.current)===null||C===void 0||C.focus())};return _.addEventListener(Wa,E),()=>_.removeEventListener(Wa,E)}},[d.isRootMenu,e.value,o,m,l]);const v=p.useMemo(()=>{const E=g().map(O=>O.value);d.dir==="rtl"&&E.reverse();const C=E.indexOf(d.value),k=E.indexOf(d.previousValue),P=r===d.value,A=k===E.indexOf(r);if(!P&&!A)return w.current;const S=(()=>{if(C!==k){if(P&&k!==-1)return C>k?"from-end":"from-start";if(A&&C!==-1)return C>k?"to-start":"to-end"}return null})();return w.current=S,S},[d.previousValue,d.value,d.dir,g,r]);return p.createElement(z1,{asChild:!0},p.createElement(Kd,q({id:y,"aria-labelledby":h,"data-motion":v,"data-orientation":d.orientation},c,{ref:f,onDismiss:()=>{var _;const E=new Event(Wa,{bubbles:!0,cancelable:!0});(_=u.current)===null||_===void 0||_.dispatchEvent(E)},onFocusOutside:le(e.onFocusOutside,_=>{var E;s();const C=_.target;(E=d.rootNavigationMenu)!==null&&E!==void 0&&E.contains(C)&&_.preventDefault()}),onPointerDownOutside:le(e.onPointerDownOutside,_=>{var E;const C=_.target,k=g().some(A=>{var S;return(S=A.ref.current)===null||S===void 0?void 0:S.contains(C)}),P=d.isRootMenu&&((E=d.viewport)===null||E===void 0?void 0:E.contains(C));(k||P||!d.isRootMenu)&&_.preventDefault()}),onKeyDown:le(e.onKeyDown,_=>{const E=_.altKey||_.ctrlKey||_.metaKey;if(_.key==="Tab"&&!E){const P=Ec(_.currentTarget),A=document.activeElement,S=P.findIndex(N=>N===A),j=_.shiftKey?P.slice(0,S).reverse():P.slice(S+1,P.length);if(Jd(j))_.preventDefault();else{var k;(k=i.current)===null||k===void 0||k.focus()}}}),onEscapeKeyDown:le(e.onEscapeKeyDown,_=>{a.current=!0})})))}),$7="FocusGroup",z1=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=Ir($7,n);return p.createElement(wc.Provider,{scope:n},p.createElement(wc.Slot,{scope:n},p.createElement(fe.div,q({dir:o.dir},r,{ref:t}))))}),Sh=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"],O7="FocusGroupItem",U1=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=m7(n),i=Ir(O7,n);return p.createElement(wc.ItemSlot,{scope:n},p.createElement(fe.button,q({},r,{ref:t,onKeyDown:le(e.onKeyDown,a=>{if(["Home","End",...Sh].includes(a.key)){let s=o().map(u=>u.ref.current);if([i.dir==="rtl"?"ArrowRight":"ArrowLeft","ArrowUp","End"].includes(a.key)&&s.reverse(),Sh.includes(a.key)){const u=s.indexOf(a.currentTarget);s=s.slice(u+1)}setTimeout(()=>Jd(s)),a.preventDefault()}})})))});function Ec(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const o=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||o?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Jd(e){const t=document.activeElement;return e.some(n=>n===t?!0:(n.focus(),document.activeElement!==t))}function I7(e){return e.forEach(t=>{t.dataset.tabindex=t.getAttribute("tabindex")||"",t.setAttribute("tabindex","-1")}),()=>{e.forEach(t=>{const n=t.dataset.tabindex;t.setAttribute("tabindex",n)})}}function V1(e){return e?"open":"closed"}function B1(e,t){return`${e}-trigger-${t}`}function H1(e,t){return`${e}-content-${t}`}function kc(e){return t=>t.pointerType==="mouse"?e(t):void 0}const L7=x7,D7=E7,N7=C7,M7=P7,j7=A7,F7=S7;var z7="var(--vocs_NavigationMenu_chevronDownIcon)",U7="vocs_NavigationMenu_content",V7="vocs_NavigationMenu_item",B7="vocs_NavigationMenu_link",H7="vocs_NavigationMenu_list",W7="vocs_NavigationMenu",K7="vocs_NavigationMenu_trigger vocs_NavigationMenu_link";const W1=e=>x.jsx(L7,{...e,className:D(e.className,W7)}),K1=e=>x.jsx(D7,{...e,className:D(e.className,H7)}),Ql=({active:e,children:t,className:n,href:r})=>x.jsx(j7,{asChild:!0,children:x.jsx(rn,{"data-active":e,className:D(n,B7),href:r,variant:"styleless",children:t})}),G1=e=>x.jsx(N7,{...e,className:D(e.className,V7)}),q1=({active:e,className:t,...n})=>{const{basePath:r}=Je(),o=r;return x.jsx(M7,{...n,"data-active":e,className:D(t,K7),style:qt({[z7]:`url(${o}/.vocs/icons/chevron-down.svg)`})})},Y1=e=>x.jsx(F7,{...e,className:D(e.className,U7)});function Q1(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 127.14 96.36",children:[x.jsx("title",{children:"Discord"}),x.jsx("g",{id:"图层_2","data-name":"图层 2",children:x.jsx("g",{id:"Discord_Logos","data-name":"Discord Logos",children:x.jsx("g",{id:"Discord_Logo_-_Large_-_White","data-name":"Discord Logo - Large - White",children:x.jsx("path",{d:"M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z",fill:"currentColor"})})})})]})}function Z1(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 98 96",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"GitHub"}),x.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z",fill:"currentColor"})]})}function G7(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 78 82",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Moon"}),x.jsx("path",{d:"M62.8455 45.9668C63.6268 45.9668 64.2127 45.3809 64.3104 44.5508C65.4334 34.3457 66.0682 33.9551 76.4197 32.3438C77.3963 32.1973 77.9334 31.7578 77.9334 30.8789C77.9334 30.0977 77.3963 29.5605 76.6151 29.4629C66.1658 27.4609 65.4334 27.4609 64.3104 17.2559C64.2127 16.377 63.6268 15.8398 62.8455 15.8398C62.0154 15.8398 61.4783 16.377 61.3807 17.207C60.1111 27.6074 59.6229 28.0957 49.0272 29.4629C48.2947 29.5117 47.7088 30.0977 47.7088 30.8789C47.7088 31.709 48.2947 32.1973 49.0272 32.3438C59.6229 34.3457 60.0623 34.4434 61.3807 44.6484C61.4783 45.3809 62.0154 45.9668 62.8455 45.9668ZM44.535 19.5508C45.0233 19.5508 45.3162 19.2578 45.4139 18.7695C46.6834 12.4707 46.5369 12.373 53.1287 11.0547C53.5682 10.957 53.91 10.7129 53.91 10.1758C53.91 9.63868 53.5682 9.39448 53.1287 9.29688C46.5369 7.97848 46.6834 7.88089 45.4139 1.58199C45.3162 1.09379 45.0233 0.800781 44.535 0.800781C43.9979 0.800781 43.7049 1.09379 43.6072 1.58199C42.3377 7.88089 42.4842 7.97848 35.9412 9.29688C35.4529 9.39448 35.1111 9.63868 35.1111 10.1758C35.1111 10.7129 35.4529 10.957 35.9412 11.0547C42.4842 12.373 42.3865 12.4707 43.6072 18.7695C43.7049 19.2578 43.9979 19.5508 44.535 19.5508Z",fill:"currentColor"}),x.jsx("path",{d:"M34.3298 81.2696C48.49 81.2696 59.9157 74.043 65.0915 61.7872C65.8239 59.9806 65.5798 58.6134 64.7497 57.7833C64.0173 57.0509 62.7478 56.9044 61.3318 57.4903C58.4509 58.6134 54.9353 59.2481 50.6384 59.2481C33.695 59.2481 22.7575 48.6036 22.7575 32.2462C22.7575 27.4122 23.6853 22.6759 24.7595 20.5763C25.5407 18.9161 25.4919 17.5001 24.8083 16.67C24.0271 15.7423 22.6599 15.4005 20.7068 16.1329C8.64624 20.7716 0.345459 33.4181 0.345459 47.8712C0.345459 66.8165 14.5056 81.2696 34.3298 81.2696ZM34.4275 74.5801C18.4607 74.5801 7.03494 62.9591 7.03494 47.3341C7.03494 38.2521 10.9411 30.0489 17.6306 24.629C16.8005 27.0704 16.361 30.6837 16.361 34.1505C16.361 52.8517 29.5446 65.6935 48.8806 65.6935C52.0544 65.6935 54.9841 65.3517 56.4001 64.9122C51.615 70.918 43.4607 74.5801 34.4275 74.5801Z",fill:"currentColor"})]})}function q7(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 84 84",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Sun"}),x.jsx("path",{d:"M41.8675 15.5254C43.9183 15.5254 45.6273 13.7676 45.6273 11.7168V3.80658C45.6273 1.75588 43.9183 0.046875 41.8675 0.046875C39.7679 0.046875 38.0589 1.75588 38.0589 3.80658V11.7168C38.0589 13.7676 39.7679 15.5254 41.8675 15.5254ZM60.3246 23.2402C61.7895 24.7051 64.2309 24.7539 65.7446 23.2402L71.3598 17.6738C72.7758 16.209 72.7758 13.7188 71.3598 12.2539C69.8949 10.7891 67.4535 10.7891 65.9887 12.2539L60.3246 17.918C58.9086 19.3828 58.9086 21.7754 60.3246 23.2402ZM67.9906 41.7461C67.9906 43.7969 69.7485 45.5547 71.7992 45.5547H79.6117C81.7113 45.5547 83.4202 43.7969 83.4202 41.7461C83.4202 39.6953 81.7113 37.9375 79.6117 37.9375H71.7992C69.7485 37.9375 67.9906 39.6953 67.9906 41.7461ZM60.3246 60.3008C58.9086 61.7656 58.9086 64.1582 60.3246 65.623L65.9887 71.2871C67.4535 72.7519 69.8949 72.7031 71.3598 71.2383C72.7758 69.7734 72.7758 67.332 71.3598 65.8672L65.6957 60.3008C64.2309 58.8359 61.7895 58.8359 60.3246 60.3008ZM41.8675 67.9668C39.7679 67.9668 38.0589 69.7246 38.0589 71.7754V79.6855C38.0589 81.7363 39.7679 83.4453 41.8675 83.4453C43.9183 83.4453 45.6273 81.7363 45.6273 79.6855V71.7754C45.6273 69.7246 43.9183 67.9668 41.8675 67.9668ZM23.3617 60.3008C21.8969 58.8359 19.4067 58.8359 17.9418 60.3008L12.3754 65.8184C10.9106 67.2832 10.9106 69.7246 12.3266 71.1894C13.7914 72.6543 16.2328 72.7031 17.6977 71.2383L23.3129 65.623C24.7778 64.1582 24.7778 61.7656 23.3617 60.3008ZM15.6957 41.7461C15.6957 39.6953 13.9867 37.9375 11.8871 37.9375H4.07455C1.97497 37.9375 0.265991 39.6953 0.265991 41.7461C0.265991 43.7969 1.97497 45.5547 4.07455 45.5547H11.8871C13.9867 45.5547 15.6957 43.7969 15.6957 41.7461ZM23.3129 23.2402C24.7778 21.8242 24.7778 19.334 23.3617 17.918L17.7465 12.2539C16.3305 10.8379 13.8403 10.7891 12.4242 12.2539C10.9594 13.7188 10.9594 16.209 12.3754 17.625L17.9418 23.2402C19.4067 24.7051 21.8481 24.7051 23.3129 23.2402Z",fill:"currentColor"}),x.jsx("path",{d:"M41.8675 61.668C52.7073 61.668 61.7405 52.6836 61.7405 41.7461C61.7405 30.8086 52.7073 21.8242 41.8675 21.8242C30.9788 21.8242 21.9456 30.8086 21.9456 41.7461C21.9456 52.6836 30.9788 61.668 41.8675 61.668ZM41.8675 55.0273C34.5921 55.0273 28.5862 48.9727 28.5862 41.7461C28.5862 34.5195 34.5921 28.4648 41.8675 28.4648C49.0941 28.4648 55.0999 34.5195 55.0999 41.7461C55.0999 48.9727 49.0941 55.0273 41.8675 55.0273Z",fill:"currentColor"})]})}function X1(){return x.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%",viewBox:"0 0 50 50",children:[x.jsx("title",{children:"Telegram"}),x.jsx("path",{d:"M25 2c12.703 0 23 10.297 23 23S37.703 48 25 48 2 37.703 2 25 12.297 2 25 2zm7.934 32.375c.423-1.298 2.405-14.234 2.65-16.783.074-.772-.17-1.285-.648-1.514-.578-.278-1.434-.139-2.427.219-1.362.491-18.774 7.884-19.78 8.312-.954.405-1.856.847-1.856 1.487 0 .45.267.703 1.003.966.766.273 2.695.858 3.834 1.172 1.097.303 2.346.04 3.046-.395.742-.461 9.305-6.191 9.92-6.693.614-.502 1.104.141.602.644-.502.502-6.38 6.207-7.155 6.997-.941.959-.273 1.953.358 2.351.721.454 5.906 3.932 6.687 4.49.781.558 1.573.811 2.298.811.725 0 1.107-.955 1.468-2.064z",fill:"currentColor"})]})}function J1(){return x.jsxs("svg",{width:"32",height:"32",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Warpcast"}),x.jsx("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M7.92028 31.9901H24.0698C28.4371 31.9901 31.9901 28.4373 31.9901 24.0699V7.92053C31.9901 3.55319 28.4371 0.000137329 24.0698 0.000137329H7.92028C3.55304 0.000137329 0 3.55319 0 7.92053V24.0699C0 28.4373 3.55304 31.9901 7.92028 31.9901ZM19.4134 16.048L20.9908 10.124H25.1383L21.2924 23.2218H17.7062L15.9951 17.1397L14.284 23.2218H10.7055L6.85115 10.124H10.999L12.5915 16.0916L14.1891 10.124H17.8309L19.4134 16.048Z",fill:"currentColor"})]})}function eg(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 1200 1227",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"X"}),x.jsx("path",{d:"M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z",fill:"currentColor"})]})}bc.Curtain=Y7;function bc(){var r,o,i,a;const e=Je(),{showLogo:t,showSidebar:n}=Or();return x.jsxs("div",{className:D(t7,t&&!n&&n7),children:[x.jsx(Q5,{}),t&&x.jsx("div",{className:e7,children:x.jsx("div",{className:J5,children:x.jsx(Zn,{to:"/",style:{alignItems:"center",display:"flex",height:"56px",marginTop:"4px"},children:x.jsx(Qd,{})})})}),x.jsx("div",{className:Ch}),x.jsxs("div",{className:Ch,children:[(((r=e.topNav)==null?void 0:r.length)||0)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:nu,children:x.jsx(Q7,{})}),x.jsx("div",{className:D(bh,Aa)})]}),e.socials&&((o=e.socials)==null?void 0:o.length)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:D(nu,Aa),style:{marginLeft:"-8px",marginRight:"-8px"},children:e.socials.map((l,s)=>x.jsx("div",{className:wl,children:x.jsx(t8,{...l})},s))}),!((i=e.theme)!=null&&i.colorScheme)&&x.jsx("div",{className:D(bh,Aa)})]}),!((a=e.theme)!=null&&a.colorScheme)&&x.jsx("div",{className:D(nu,Aa),style:{marginLeft:"-8px",marginRight:"-8px"},children:x.jsx("div",{className:wl,children:x.jsx(X7,{})})})]})]})}function Y7(){return x.jsx("div",{className:X5})}function Q7(){const{topNav:e}=Je();if(!e)return null;const{pathname:t}=Re(),n=Ki({pathname:t,items:e});return x.jsx(W1,{delayDuration:0,children:x.jsx(K1,{children:e.map((r,o)=>r.link?x.jsx(Ql,{active:n.includes(r.id),className:wl,href:r.link,children:r.text},o):r.items?x.jsxs(G1,{className:wl,children:[x.jsx(q1,{active:n.includes(r.id),children:r.text}),x.jsx(Y1,{className:Z5,children:x.jsx(Z7,{items:r.items})})]},o):null)})})}function Z7({items:e}){const{pathname:t}=Re(),n=Ki({pathname:t,items:e});return x.jsx("ul",{children:e==null?void 0:e.map((r,o)=>x.jsx(Ql,{active:n.includes(r.id),href:r.link,children:r.text},o))})}function X7(){const{toggle:e}=Mw();return x.jsxs("button",{className:j1,onClick:e,type:"button",children:[x.jsx(st,{className:D(xc,jw),size:"20px",label:"Light",icon:q7}),x.jsx(st,{className:D(xc,Fw),size:"20px",label:"Dark",icon:G7,style:{marginTop:"-2px"}})]})}const J7={discord:Q1,github:Z1,telegram:X1,warpcast:J1,x:eg},e8={discord:"23px",github:"20px",telegram:"21px",warpcast:"20px",x:"18px"};function t8({icon:e,label:t,link:n}){return x.jsx("a",{className:j1,href:n,target:"_blank",rel:"noopener noreferrer",children:x.jsx(st,{className:xc,label:t,icon:J7[e],size:e8[e]||"20px"})})}function n8(){return x.jsx("div",{})}const r8=({children:e})=>e;function o8(){const e=$r(),t=Je();return p.useMemo(()=>{const{pattern:n="",text:r="Edit page"}=t.editLink??{};let o="";return typeof n=="function"?o="":e.filePath&&(o=n.replace(/:path/g,e.filePath)),{url:o,text:r}},[t.editLink,e.filePath])}function tg(){const[e,t]=p.useState(!1);return p.useEffect(()=>{t(!0)},[]),e}var i8="vocs_Footer_container",a8="vocs_Footer_editLink",l8="vocs_Footer_lastUpdated",s8="vocs_Footer_navigation",Th="vocs_Footer_navigationIcon",u8="vocs_Footer_navigationIcon_left",c8="vocs_Footer_navigationIcon_right",Rh="vocs_Footer_navigationItem",d8="vocs_Footer_navigationItem_left",f8="vocs_Footer_navigationItem_right",$h="vocs_Footer_navigationText",Oh="vocs_Footer_navigationTextInner",p8="vocs_Footer";function h8(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 72 60",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Arrow Left"}),x.jsx("path",{d:"M0.325684 29.7461C0.325684 30.8203 0.813963 31.8457 1.69286 32.6758L26.8882 57.8223C27.7671 58.6524 28.7437 59.043 29.7691 59.043C31.9175 59.043 33.5777 57.4317 33.5777 55.2344C33.5777 54.209 33.2359 53.1836 32.5035 52.5L25.7652 45.5176L9.26126 30.6738L8.38236 32.7734L21.3706 33.7012H67.4644C69.7593 33.7012 71.3706 32.041 71.3706 29.7461C71.3706 27.4512 69.7593 25.791 67.4644 25.791H21.3706L8.38236 26.7188L9.26126 28.8672L25.7652 13.9746L32.5035 6.99221C33.2359 6.30861 33.5777 5.28322 33.5777 4.25782C33.5777 2.06052 31.9175 0.449219 29.7691 0.449219C28.7437 0.449219 27.7671 0.839814 26.8882 1.66991L1.69286 26.8164C0.813963 27.6465 0.325684 28.6719 0.325684 29.7461Z",fill:"currentColor"})]})}function m8(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 72 60",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Arrow Right"}),x.jsx("path",{d:"M71.3706 29.7461C71.3706 28.6719 70.8824 27.6465 70.0035 26.8164L44.8081 1.66991C43.9292 0.839814 42.9527 0.449219 41.9273 0.449219C39.7789 0.449219 38.1187 2.06052 38.1187 4.25782C38.1187 5.28322 38.4605 6.30861 39.1929 6.99221L45.9312 13.9746L62.4351 28.8672L63.314 26.7188L50.3257 25.791H4.23196C1.93706 25.791 0.325684 27.4512 0.325684 29.7461C0.325684 32.041 1.93706 33.7012 4.23196 33.7012H50.3257L63.314 32.7734L62.4351 30.6738L45.9312 45.5176L39.1929 52.5C38.4605 53.1836 38.1187 54.209 38.1187 55.2344C38.1187 57.4317 39.7789 59.043 41.9273 59.043C42.9527 59.043 43.9292 58.6524 44.8081 57.8223L70.0035 32.6758C70.8824 31.8457 71.3706 30.8203 71.3706 29.7461Z",fill:"currentColor"})]})}function v8(){const{layout:e}=Or(),t=tg(),n=$r(),r=p.useMemo(()=>n.lastUpdatedAt?new Date(n.lastUpdatedAt):void 0,[n.lastUpdatedAt]),o=p.useMemo(()=>r==null?void 0:r.toISOString(),[r]);return x.jsxs("footer",{className:p8,children:[e==="docs"&&x.jsxs(x.Fragment,{children:[x.jsxs("div",{className:i8,children:[x.jsx(g8,{}),t&&n.lastUpdatedAt&&x.jsxs("div",{className:l8,children:["Last updated:"," ",x.jsx("time",{dateTime:o,children:new Intl.DateTimeFormat(void 0,{dateStyle:"short",timeStyle:"short"}).format(r)})]})]}),x.jsx(y8,{})]}),x.jsx(n8,{})]})}function g8(){const e=o8();return e.url?x.jsx("div",{children:x.jsxs(rn,{className:a8,href:e.url,children:[x.jsx(Lw,{})," ",e.text]})}):null}function y8(){const e=tg(),t=Kl(),{pathname:n}=Re(),r=p.useMemo(()=>ng(t.items||[]).filter(s=>s.link),[t]),o=p.useMemo(()=>r.findIndex(s=>s.link===n),[r,n]),[i,a]=p.useMemo(()=>o<0?[]:o===0?[null,r[o+1]]:o===r.length-1?[r[o-1],null]:[r[o-1],r[o+1]],[o,r]),l=Ud();return p.useEffect(()=>{let s=o,c=!1;const d=f=>{if(f.code==="ShiftLeft"&&(c=!0),c){const h=r[s+1],y=r[s-1];f.code==="ArrowRight"&&(h!=null&&h.link)&&(l(h.link),s++),f.code==="ArrowLeft"&&(y!=null&&y.link)&&(l(y.link),s--)}},u=f=>{f.code==="ShiftLeft"&&(c=!1)};return window.addEventListener("keydown",d),window.addEventListener("keyup",u),()=>{window.removeEventListener("keydown",d),window.removeEventListener("keyup",u)}},[]),e?x.jsxs("div",{className:s8,children:[i?x.jsxs(rn,{className:D(Rh,d8),href:i.link,variant:"styleless",children:[x.jsxs("div",{className:$h,children:[x.jsx("div",{className:D(Th,u8),style:qt({[_c]:"0.75em"}),children:x.jsx(st,{label:"Previous",icon:h8})}),x.jsx("div",{className:Oh,children:i.text})]}),x.jsx(ro,{description:"Previous",keys:["shift","←"]})]}):x.jsx("div",{}),a?x.jsxs(rn,{className:D(Rh,f8),href:a.link,variant:"styleless",children:[x.jsxs("div",{className:$h,children:[x.jsx("div",{className:Oh,style:{textAlign:"right"},children:a.text}),x.jsx("div",{className:D(Th,c8),style:qt({[_c]:"0.75em"}),children:x.jsx(st,{label:"Next",icon:m8})})]}),x.jsx(ro,{description:"Next",keys:["shift","→"]})]}):x.jsx("div",{})]}):null}function ng(e){const t=[];for(const n of e){if(n.items){t.push(...ng(n.items));continue}t.push(n)}return t}const rg="Collapsible",[x8,og]=kn(rg),[_8,ef]=x8(rg),w8=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,open:r,defaultOpen:o,disabled:i,onOpenChange:a,...l}=e,[s=!1,c]=ar({prop:r,defaultProp:o,onChange:a});return p.createElement(_8,{scope:n,disabled:i,contentId:on(),open:s,onOpenToggle:p.useCallback(()=>c(d=>!d),[c])},p.createElement(fe.div,q({"data-state":tf(s),"data-disabled":i?"":void 0},l,{ref:t})))}),E8="CollapsibleTrigger",k8=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,...r}=e,o=ef(E8,n);return p.createElement(fe.button,q({type:"button","aria-controls":o.contentId,"aria-expanded":o.open||!1,"data-state":tf(o.open),"data-disabled":o.disabled?"":void 0,disabled:o.disabled},r,{ref:t,onClick:le(e.onClick,o.onOpenToggle)}))}),ig="CollapsibleContent",b8=p.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=ef(ig,e.__scopeCollapsible);return p.createElement(bn,{present:n||o.open},({present:i})=>p.createElement(C8,q({},r,{ref:t,present:i})))}),C8=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,present:r,children:o,...i}=e,a=ef(ig,n),[l,s]=p.useState(r),c=p.useRef(null),d=Ue(t,c),u=p.useRef(0),f=u.current,h=p.useRef(0),y=h.current,g=a.open||l,w=p.useRef(g),m=p.useRef();return p.useEffect(()=>{const v=requestAnimationFrame(()=>w.current=!1);return()=>cancelAnimationFrame(v)},[]),yn(()=>{const v=c.current;if(v){m.current=m.current||{transitionDuration:v.style.transitionDuration,animationName:v.style.animationName},v.style.transitionDuration="0s",v.style.animationName="none";const _=v.getBoundingClientRect();u.current=_.height,h.current=_.width,w.current||(v.style.transitionDuration=m.current.transitionDuration,v.style.animationName=m.current.animationName),s(r)}},[a.open,r]),p.createElement(fe.div,q({"data-state":tf(a.open),"data-disabled":a.disabled?"":void 0,id:a.contentId,hidden:!g},i,{ref:d,style:{"--radix-collapsible-content-height":f?`${f}px`:void 0,"--radix-collapsible-content-width":y?`${y}px`:void 0,...e.style}}),g&&o)});function tf(e){return e?"open":"closed"}const P8=w8,A8=k8,S8=b8,Lr="Accordion",T8=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[nf,R8,$8]=Yl(Lr),[Zl,CP]=kn(Lr,[$8,og]),rf=og(),ag=Z.forwardRef((e,t)=>{const{type:n,...r}=e,o=r,i=r;return Z.createElement(nf.Provider,{scope:e.__scopeAccordion},n==="multiple"?Z.createElement(D8,q({},i,{ref:t})):Z.createElement(L8,q({},o,{ref:t})))});ag.propTypes={type(e){const t=e.value||e.defaultValue;return e.type&&!["single","multiple"].includes(e.type)?new Error("Invalid prop `type` supplied to `Accordion`. Expected one of `single | multiple`."):e.type==="multiple"&&typeof t=="string"?new Error("Invalid prop `type` supplied to `Accordion`. Expected `single` when `defaultValue` or `value` is type `string`."):e.type==="single"&&Array.isArray(t)?new Error("Invalid prop `type` supplied to `Accordion`. Expected `multiple` when `defaultValue` or `value` is type `string[]`."):null}};const[lg,O8]=Zl(Lr),[sg,I8]=Zl(Lr,{collapsible:!1}),L8=Z.forwardRef((e,t)=>{const{value:n,defaultValue:r,onValueChange:o=()=>{},collapsible:i=!1,...a}=e,[l,s]=ar({prop:n,defaultProp:r,onChange:o});return Z.createElement(lg,{scope:e.__scopeAccordion,value:l?[l]:[],onItemOpen:s,onItemClose:Z.useCallback(()=>i&&s(""),[i,s])},Z.createElement(sg,{scope:e.__scopeAccordion,collapsible:i},Z.createElement(ug,q({},a,{ref:t}))))}),D8=Z.forwardRef((e,t)=>{const{value:n,defaultValue:r,onValueChange:o=()=>{},...i}=e,[a=[],l]=ar({prop:n,defaultProp:r,onChange:o}),s=Z.useCallback(d=>l((u=[])=>[...u,d]),[l]),c=Z.useCallback(d=>l((u=[])=>u.filter(f=>f!==d)),[l]);return Z.createElement(lg,{scope:e.__scopeAccordion,value:a,onItemOpen:s,onItemClose:c},Z.createElement(sg,{scope:e.__scopeAccordion,collapsible:!0},Z.createElement(ug,q({},i,{ref:t}))))}),[N8,of]=Zl(Lr),ug=Z.forwardRef((e,t)=>{const{__scopeAccordion:n,disabled:r,dir:o,orientation:i="vertical",...a}=e,l=Z.useRef(null),s=Ue(l,t),c=R8(n),u=ql(o)==="ltr",f=le(e.onKeyDown,h=>{var y;if(!T8.includes(h.key))return;const g=h.target,w=c().filter(S=>{var O;return!((O=S.ref.current)!==null&&O!==void 0&&O.disabled)}),m=w.findIndex(S=>S.ref.current===g),v=w.length;if(m===-1)return;h.preventDefault();let _=m;const E=0,C=v-1,k=()=>{_=m+1,_>C&&(_=E)},P=()=>{_=m-1,_{const{__scopeAccordion:n,value:r,...o}=e,i=of(Cc,n),a=O8(Cc,n),l=rf(n),s=on(),c=r&&a.value.includes(r)||!1,d=i.disabled||e.disabled;return Z.createElement(M8,{scope:n,open:c,disabled:d,triggerId:s},Z.createElement(P8,q({"data-orientation":i.orientation,"data-state":V8(c)},l,o,{ref:t,disabled:d,open:c,onOpenChange:u=>{u?a.onItemOpen(r):a.onItemClose(r)}})))}),Ih="AccordionTrigger",F8=Z.forwardRef((e,t)=>{const{__scopeAccordion:n,...r}=e,o=of(Lr,n),i=cg(Ih,n),a=I8(Ih,n),l=rf(n);return Z.createElement(nf.ItemSlot,{scope:n},Z.createElement(A8,q({"aria-disabled":i.open&&!a.collapsible||void 0,"data-orientation":o.orientation,id:i.triggerId},l,r,{ref:t})))}),z8="AccordionContent",U8=Z.forwardRef((e,t)=>{const{__scopeAccordion:n,...r}=e,o=of(Lr,n),i=cg(z8,n),a=rf(n);return Z.createElement(S8,q({role:"region","aria-labelledby":i.triggerId,"data-orientation":o.orientation},a,r,{ref:t,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}}))});function V8(e){return e?"open":"closed"}const B8=ag,H8=j8,W8=F8,K8=U8;var G8="vocs_MobileSearch_searchButton";function q8(){const[e,t]=p.useState(!1);return x.jsxs(P1,{open:e,onOpenChange:t,children:[x.jsx(A1,{asChild:!0,children:x.jsx("button",{className:G8,type:"button","aria-label":"Search",children:x.jsx(Wd,{height:21,width:21})})}),x.jsx(M1,{open:e,onClose:()=>t(!1)})]})}var Y8="vocs_MobileTopNav_button",Q8="var(--vocs_MobileTopNav_chevronDownIcon)",Z8="var(--vocs_MobileTopNav_chevronUpIcon)",X8="vocs_MobileTopNav_content",J8="vocs_MobileTopNav_curtain",Lh="vocs_MobileTopNav_curtainGroup",ou="vocs_MobileTopNav_curtainItem",e9="vocs_MobileTopNav_divider",Sa="vocs_MobileTopNav_group",t9="vocs_MobileTopNav_icon",n9="vocs_MobileTopNav_item",r9="vocs_MobileTopNav_logo",o9="vocs_MobileTopNav_menuTitle",dg="vocs_MobileTopNav_menuTrigger",fg="vocs_MobileTopNav_navigation",i9="vocs_MobileTopNav_navigationContent",Xo="vocs_MobileTopNav_navigationItem",a9="vocs_MobileTopNav_trigger",l9="vocs_MobileTopNav_navigation_compact",s9="vocs_MobileTopNav_outlinePopover",Dh="vocs_MobileTopNav_outlineTrigger",u9="vocs_MobileTopNav",Nh="vocs_MobileTopNav_section",c9="vocs_MobileTopNav_separator",d9="vocs_MobileTopNav_sidebarPopover",f9="vocs_MobileTopNav_topNavPopover";function p9(e,t){let n=!1;return()=>{n=!0,setTimeout(()=>{n&&e(),n=!1},t)}}var h9="vocs_Outline_heading",m9="vocs_Outline_item",v9="vocs_Outline_items",g9="vocs_Outline_link",y9="vocs_Outline_nav",x9="vocs_Outline";function pg({minLevel:e=2,maxLevel:t=3,highlightActive:n=!0,onClickItem:r,showTitle:o=!0}={}){const{outlineFooter:i}=Je(),{showOutline:a}=Or(),l=typeof a=="number"?e+a-1:t,s=p.useRef(!0),{pathname:c,hash:d}=Re(),[u,f]=p.useState([]);p.useEffect(()=>{if(typeof window>"u")return;const m=Array.from(document.querySelectorAll(`.${Qv}`));f(m)},[c]);const h=p.useMemo(()=>u?u.map(m=>{const v=m.querySelector(`.${Zv}`);if(!v)return null;const _=v.getBoundingClientRect(),E=v.id,C=Number(m.tagName[1]),k=m.textContent,P=window.scrollY+_.top;return Cl?null:{id:E,level:C,slugTargetElement:v,text:k,topOffset:P}}).filter(Boolean):[],[u,l,e]),[y,g]=p.useState(d.replace("#",""));if(p.useEffect(()=>{if(typeof window>"u")return;const m=new IntersectionObserver(([v])=>{var E;if(!s.current)return;const _=v.target.id;if(v.isIntersecting)g(_);else{if(!(v.target.getBoundingClientRect().top>0))return;const P=h.findIndex(S=>S.id===y),A=(E=h[P-1])==null?void 0:E.id;g(A)}},{rootMargin:"0px 0px -95% 0px"});for(const v of h)m.observe(v.slugTargetElement);return()=>m.disconnect()},[y,h]),p.useEffect(()=>{if(typeof window>"u")return;const m=new IntersectionObserver(([v])=>{var E;if(!s.current)return;const _=(E=h[h.length-1])==null?void 0:E.id;v.isIntersecting?g(_):y===_&&g(h[h.length-2].id)});return m.observe(document.querySelector("[data-bottom-observer]")),()=>m.disconnect()},[y,h]),p.useEffect(()=>{if(typeof window>"u")return;const m=p9(()=>{var v,_,E;if(s.current){if(window.scrollY===0){g((v=h[0])==null?void 0:v.id);return}if(window.scrollY+document.documentElement.clientHeight>=document.documentElement.scrollHeight){g((_=h[h.length-1])==null?void 0:_.id);return}for(let C=0;Cwindow.removeEventListener("scroll",m)},[h]),h.length===0)return null;const w=h.filter(m=>m.level===e);return x.jsxs("aside",{className:x9,children:[x.jsxs("nav",{className:y9,children:[o&&x.jsx("h2",{className:h9,children:"On this page"}),x.jsx(hg,{activeId:n?y:null,items:h,onClickItem:()=>{r==null||r(),s.current=!1,setTimeout(()=>{s.current=!0},500)},levelItems:w,setActiveId:g})]}),xl(i)]})}function hg({activeId:e,items:t,levelItems:n,onClickItem:r,setActiveId:o}){const{pathname:i}=Re();return x.jsx("ul",{className:v9,children:n.map(({id:a,level:l,text:s})=>{const c=`#${a}`,d=e===a,u=(()=>{var w;const h=t.findIndex(m=>m.id===a)+1,y=(w=t[h])==null?void 0:w.level;if(y<=l)return null;const g=[];for(let m=h;m{r==null||r(),o(a)},className:g9,children:s})}),u&&x.jsx(hg,{activeId:e,levelItems:u,items:t,onClickItem:r,setActiveId:o})]},a)})})}const _9=["top","right","bottom","left"],Xn=Math.min,Et=Math.max,kl=Math.round,Ta=Math.floor,Jn=e=>({x:e,y:e}),w9={left:"right",right:"left",bottom:"top",top:"bottom"},E9={start:"end",end:"start"};function Pc(e,t,n){return Et(e,Xn(t,n))}function xn(e,t){return typeof e=="function"?e(t):e}function _n(e){return e.split("-")[0]}function Io(e){return e.split("-")[1]}function af(e){return e==="x"?"y":"x"}function lf(e){return e==="y"?"height":"width"}function Lo(e){return["top","bottom"].includes(_n(e))?"y":"x"}function sf(e){return af(Lo(e))}function k9(e,t,n){n===void 0&&(n=!1);const r=Io(e),o=sf(e),i=lf(o);let a=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=bl(a)),[a,bl(a)]}function b9(e){const t=bl(e);return[Ac(e),t,Ac(t)]}function Ac(e){return e.replace(/start|end/g,t=>E9[t])}function C9(e,t,n){const r=["left","right"],o=["right","left"],i=["top","bottom"],a=["bottom","top"];switch(e){case"top":case"bottom":return n?t?o:r:t?r:o;case"left":case"right":return t?i:a;default:return[]}}function P9(e,t,n,r){const o=Io(e);let i=C9(_n(e),n==="start",r);return o&&(i=i.map(a=>a+"-"+o),t&&(i=i.concat(i.map(Ac)))),i}function bl(e){return e.replace(/left|right|bottom|top/g,t=>w9[t])}function A9(e){return{top:0,right:0,bottom:0,left:0,...e}}function mg(e){return typeof e!="number"?A9(e):{top:e,right:e,bottom:e,left:e}}function Cl(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function Mh(e,t,n){let{reference:r,floating:o}=e;const i=Lo(t),a=sf(t),l=lf(a),s=_n(t),c=i==="y",d=r.x+r.width/2-o.width/2,u=r.y+r.height/2-o.height/2,f=r[l]/2-o[l]/2;let h;switch(s){case"top":h={x:d,y:r.y-o.height};break;case"bottom":h={x:d,y:r.y+r.height};break;case"right":h={x:r.x+r.width,y:u};break;case"left":h={x:r.x-o.width,y:u};break;default:h={x:r.x,y:r.y}}switch(Io(t)){case"start":h[a]-=f*(n&&c?-1:1);break;case"end":h[a]+=f*(n&&c?-1:1);break}return h}const S9=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:i=[],platform:a}=n,l=i.filter(Boolean),s=await(a.isRTL==null?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:o}),{x:d,y:u}=Mh(c,r,s),f=r,h={},y=0;for(let g=0;g({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:i,platform:a,elements:l,middlewareData:s}=t,{element:c,padding:d=0}=xn(e,t)||{};if(c==null)return{};const u=mg(d),f={x:n,y:r},h=sf(o),y=lf(h),g=await a.getDimensions(c),w=h==="y",m=w?"top":"left",v=w?"bottom":"right",_=w?"clientHeight":"clientWidth",E=i.reference[y]+i.reference[h]-f[h]-i.floating[y],C=f[h]-i.reference[h],k=await(a.getOffsetParent==null?void 0:a.getOffsetParent(c));let P=k?k[_]:0;(!P||!await(a.isElement==null?void 0:a.isElement(k)))&&(P=l.floating[_]||i.floating[y]);const A=E/2-C/2,S=P/2-g[y]/2-1,O=Xn(u[m],S),j=Xn(u[v],S),N=O,F=P-g[y]-j,$=P/2-g[y]/2+A,U=Pc(N,$,F),W=!s.arrow&&Io(o)!=null&&$!==U&&i.reference[y]/2-($N<=0)){var S,O;const N=(((S=i.flip)==null?void 0:S.index)||0)+1,F=C[N];if(F)return{data:{index:N,overflows:A},reset:{placement:F}};let $=(O=A.filter(U=>U.overflows[0]<=0).sort((U,W)=>U.overflows[1]-W.overflows[1])[0])==null?void 0:O.placement;if(!$)switch(h){case"bestFit":{var j;const U=(j=A.map(W=>[W.placement,W.overflows.filter(B=>B>0).reduce((B,L)=>B+L,0)]).sort((W,B)=>W[1]-B[1])[0])==null?void 0:j[0];U&&($=U);break}case"initialPlacement":$=l;break}if(o!==$)return{reset:{placement:$}}}return{}}}};function jh(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Fh(e){return _9.some(t=>e[t]>=0)}const $9=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...o}=xn(e,t);switch(r){case"referenceHidden":{const i=await Ni(t,{...o,elementContext:"reference"}),a=jh(i,n.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:Fh(a)}}}case"escaped":{const i=await Ni(t,{...o,altBoundary:!0}),a=jh(i,n.floating);return{data:{escapedOffsets:a,escaped:Fh(a)}}}default:return{}}}}};async function O9(e,t){const{placement:n,platform:r,elements:o}=e,i=await(r.isRTL==null?void 0:r.isRTL(o.floating)),a=_n(n),l=Io(n),s=Lo(n)==="y",c=["left","top"].includes(a)?-1:1,d=i&&s?-1:1,u=xn(t,e);let{mainAxis:f,crossAxis:h,alignmentAxis:y}=typeof u=="number"?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...u};return l&&typeof y=="number"&&(h=l==="end"?y*-1:y),s?{x:h*d,y:f*c}:{x:f*c,y:h*d}}const vg=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:o,y:i,placement:a,middlewareData:l}=t,s=await O9(t,e);return a===((n=l.offset)==null?void 0:n.placement)&&(r=l.arrow)!=null&&r.alignmentOffset?{}:{x:o+s.x,y:i+s.y,data:{...s,placement:a}}}}},I9=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:l={fn:w=>{let{x:m,y:v}=w;return{x:m,y:v}}},...s}=xn(e,t),c={x:n,y:r},d=await Ni(t,s),u=Lo(_n(o)),f=af(u);let h=c[f],y=c[u];if(i){const w=f==="y"?"top":"left",m=f==="y"?"bottom":"right",v=h+d[w],_=h-d[m];h=Pc(v,h,_)}if(a){const w=u==="y"?"top":"left",m=u==="y"?"bottom":"right",v=y+d[w],_=y-d[m];y=Pc(v,y,_)}const g=l.fn({...t,[f]:h,[u]:y});return{...g,data:{x:g.x-n,y:g.y-r}}}}},L9=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:i,middlewareData:a}=t,{offset:l=0,mainAxis:s=!0,crossAxis:c=!0}=xn(e,t),d={x:n,y:r},u=Lo(o),f=af(u);let h=d[f],y=d[u];const g=xn(l,t),w=typeof g=="number"?{mainAxis:g,crossAxis:0}:{mainAxis:0,crossAxis:0,...g};if(s){const _=f==="y"?"height":"width",E=i.reference[f]-i.floating[_]+w.mainAxis,C=i.reference[f]+i.reference[_]-w.mainAxis;hC&&(h=C)}if(c){var m,v;const _=f==="y"?"width":"height",E=["top","left"].includes(_n(o)),C=i.reference[u]-i.floating[_]+(E&&((m=a.offset)==null?void 0:m[u])||0)+(E?0:w.crossAxis),k=i.reference[u]+i.reference[_]+(E?0:((v=a.offset)==null?void 0:v[u])||0)-(E?w.crossAxis:0);yk&&(y=k)}return{[f]:h,[u]:y}}}},D9=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:o,elements:i}=t,{apply:a=()=>{},...l}=xn(e,t),s=await Ni(t,l),c=_n(n),d=Io(n),u=Lo(n)==="y",{width:f,height:h}=r.floating;let y,g;c==="top"||c==="bottom"?(y=c,g=d===(await(o.isRTL==null?void 0:o.isRTL(i.floating))?"start":"end")?"left":"right"):(g=c,y=d==="end"?"top":"bottom");const w=h-s[y],m=f-s[g],v=!t.middlewareData.shift;let _=w,E=m;if(u){const k=f-s.left-s.right;E=d||v?Xn(m,k):k}else{const k=h-s.top-s.bottom;_=d||v?Xn(w,k):k}if(v&&!d){const k=Et(s.left,0),P=Et(s.right,0),A=Et(s.top,0),S=Et(s.bottom,0);u?E=f-2*(k!==0||P!==0?k+P:Et(s.left,s.right)):_=h-2*(A!==0||S!==0?A+S:Et(s.top,s.bottom))}await a({...t,availableWidth:E,availableHeight:_});const C=await o.getDimensions(i.floating);return f!==C.width||h!==C.height?{reset:{rects:!0}}:{}}}};function er(e){return gg(e)?(e.nodeName||"").toLowerCase():"#document"}function Ct(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Pn(e){var t;return(t=(gg(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function gg(e){return e instanceof Node||e instanceof Ct(e).Node}function rt(e){return e instanceof Element||e instanceof Ct(e).Element}function an(e){return e instanceof HTMLElement||e instanceof Ct(e).HTMLElement}function Sc(e){return typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Ct(e).ShadowRoot}function qi(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=Nt(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function N9(e){return["table","td","th"].includes(er(e))}function uf(e){const t=cf(),n=Nt(e);return n.transform!=="none"||n.perspective!=="none"||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||["transform","perspective","filter"].some(r=>(n.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(n.contain||"").includes(r))}function M9(e){let t=Co(e);for(;an(t)&&!Xl(t);){if(uf(t))return t;t=Co(t)}return null}function cf(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function Xl(e){return["html","body","#document"].includes(er(e))}function Nt(e){return Ct(e).getComputedStyle(e)}function Jl(e){return rt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Co(e){if(er(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Sc(e)&&e.host||Pn(e);return Sc(t)?t.host:t}function yg(e){const t=Co(e);return Xl(t)?e.ownerDocument?e.ownerDocument.body:e.body:an(t)&&qi(t)?t:yg(t)}function Mi(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const o=yg(e),i=o===((r=e.ownerDocument)==null?void 0:r.body),a=Ct(o);return i?t.concat(a,a.visualViewport||[],qi(o)?o:[],a.frameElement&&n?Mi(a.frameElement):[]):t.concat(o,Mi(o,[],n))}function xg(e){const t=Nt(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=an(e),i=o?e.offsetWidth:n,a=o?e.offsetHeight:r,l=kl(n)!==i||kl(r)!==a;return l&&(n=i,r=a),{width:n,height:r,$:l}}function df(e){return rt(e)?e:e.contextElement}function fo(e){const t=df(e);if(!an(t))return Jn(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:i}=xg(t);let a=(i?kl(n.width):n.width)/r,l=(i?kl(n.height):n.height)/o;return(!a||!Number.isFinite(a))&&(a=1),(!l||!Number.isFinite(l))&&(l=1),{x:a,y:l}}const j9=Jn(0);function _g(e){const t=Ct(e);return!cf()||!t.visualViewport?j9:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function F9(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==Ct(e)?!1:t}function Cr(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),i=df(e);let a=Jn(1);t&&(r?rt(r)&&(a=fo(r)):a=fo(e));const l=F9(i,n,r)?_g(i):Jn(0);let s=(o.left+l.x)/a.x,c=(o.top+l.y)/a.y,d=o.width/a.x,u=o.height/a.y;if(i){const f=Ct(i),h=r&&rt(r)?Ct(r):r;let y=f,g=y.frameElement;for(;g&&r&&h!==y;){const w=fo(g),m=g.getBoundingClientRect(),v=Nt(g),_=m.left+(g.clientLeft+parseFloat(v.paddingLeft))*w.x,E=m.top+(g.clientTop+parseFloat(v.paddingTop))*w.y;s*=w.x,c*=w.y,d*=w.x,u*=w.y,s+=_,c+=E,y=Ct(g),g=y.frameElement}}return Cl({width:d,height:u,x:s,y:c})}const z9=[":popover-open",":modal"];function wg(e){return z9.some(t=>{try{return e.matches(t)}catch{return!1}})}function U9(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e;const i=o==="fixed",a=Pn(r),l=t?wg(t.floating):!1;if(r===a||l&&i)return n;let s={scrollLeft:0,scrollTop:0},c=Jn(1);const d=Jn(0),u=an(r);if((u||!u&&!i)&&((er(r)!=="body"||qi(a))&&(s=Jl(r)),an(r))){const f=Cr(r);c=fo(r),d.x=f.x+r.clientLeft,d.y=f.y+r.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-s.scrollLeft*c.x+d.x,y:n.y*c.y-s.scrollTop*c.y+d.y}}function V9(e){return Array.from(e.getClientRects())}function Eg(e){return Cr(Pn(e)).left+Jl(e).scrollLeft}function B9(e){const t=Pn(e),n=Jl(e),r=e.ownerDocument.body,o=Et(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),i=Et(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let a=-n.scrollLeft+Eg(e);const l=-n.scrollTop;return Nt(r).direction==="rtl"&&(a+=Et(t.clientWidth,r.clientWidth)-o),{width:o,height:i,x:a,y:l}}function H9(e,t){const n=Ct(e),r=Pn(e),o=n.visualViewport;let i=r.clientWidth,a=r.clientHeight,l=0,s=0;if(o){i=o.width,a=o.height;const c=cf();(!c||c&&t==="fixed")&&(l=o.offsetLeft,s=o.offsetTop)}return{width:i,height:a,x:l,y:s}}function W9(e,t){const n=Cr(e,!0,t==="fixed"),r=n.top+e.clientTop,o=n.left+e.clientLeft,i=an(e)?fo(e):Jn(1),a=e.clientWidth*i.x,l=e.clientHeight*i.y,s=o*i.x,c=r*i.y;return{width:a,height:l,x:s,y:c}}function zh(e,t,n){let r;if(t==="viewport")r=H9(e,n);else if(t==="document")r=B9(Pn(e));else if(rt(t))r=W9(t,n);else{const o=_g(e);r={...t,x:t.x-o.x,y:t.y-o.y}}return Cl(r)}function kg(e,t){const n=Co(e);return n===t||!rt(n)||Xl(n)?!1:Nt(n).position==="fixed"||kg(n,t)}function K9(e,t){const n=t.get(e);if(n)return n;let r=Mi(e,[],!1).filter(l=>rt(l)&&er(l)!=="body"),o=null;const i=Nt(e).position==="fixed";let a=i?Co(e):e;for(;rt(a)&&!Xl(a);){const l=Nt(a),s=uf(a);!s&&l.position==="fixed"&&(o=null),(i?!s&&!o:!s&&l.position==="static"&&!!o&&["absolute","fixed"].includes(o.position)||qi(a)&&!s&&kg(e,a))?r=r.filter(d=>d!==a):o=l,a=Co(a)}return t.set(e,r),r}function G9(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a=[...n==="clippingAncestors"?K9(t,this._c):[].concat(n),r],l=a[0],s=a.reduce((c,d)=>{const u=zh(t,d,o);return c.top=Et(u.top,c.top),c.right=Xn(u.right,c.right),c.bottom=Xn(u.bottom,c.bottom),c.left=Et(u.left,c.left),c},zh(t,l,o));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}}function q9(e){const{width:t,height:n}=xg(e);return{width:t,height:n}}function Y9(e,t,n){const r=an(t),o=Pn(t),i=n==="fixed",a=Cr(e,!0,i,t);let l={scrollLeft:0,scrollTop:0};const s=Jn(0);if(r||!r&&!i)if((er(t)!=="body"||qi(o))&&(l=Jl(t)),r){const u=Cr(t,!0,i,t);s.x=u.x+t.clientLeft,s.y=u.y+t.clientTop}else o&&(s.x=Eg(o));const c=a.left+l.scrollLeft-s.x,d=a.top+l.scrollTop-s.y;return{x:c,y:d,width:a.width,height:a.height}}function Uh(e,t){return!an(e)||Nt(e).position==="fixed"?null:t?t(e):e.offsetParent}function bg(e,t){const n=Ct(e);if(!an(e)||wg(e))return n;let r=Uh(e,t);for(;r&&N9(r)&&Nt(r).position==="static";)r=Uh(r,t);return r&&(er(r)==="html"||er(r)==="body"&&Nt(r).position==="static"&&!uf(r))?n:r||M9(e)||n}const Q9=async function(e){const t=this.getOffsetParent||bg,n=this.getDimensions;return{reference:Y9(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,...await n(e.floating)}}};function Z9(e){return Nt(e).direction==="rtl"}const Cg={convertOffsetParentRelativeRectToViewportRelativeRect:U9,getDocumentElement:Pn,getClippingRect:G9,getOffsetParent:bg,getElementRects:Q9,getClientRects:V9,getDimensions:q9,getScale:fo,isElement:rt,isRTL:Z9};function X9(e,t){let n=null,r;const o=Pn(e);function i(){var l;clearTimeout(r),(l=n)==null||l.disconnect(),n=null}function a(l,s){l===void 0&&(l=!1),s===void 0&&(s=1),i();const{left:c,top:d,width:u,height:f}=e.getBoundingClientRect();if(l||t(),!u||!f)return;const h=Ta(d),y=Ta(o.clientWidth-(c+u)),g=Ta(o.clientHeight-(d+f)),w=Ta(c),v={rootMargin:-h+"px "+-y+"px "+-g+"px "+-w+"px",threshold:Et(0,Xn(1,s))||1};let _=!0;function E(C){const k=C[0].intersectionRatio;if(k!==s){if(!_)return a();k?a(!1,k):r=setTimeout(()=>{a(!1,1e-7)},100)}_=!1}try{n=new IntersectionObserver(E,{...v,root:o.ownerDocument})}catch{n=new IntersectionObserver(E,v)}n.observe(e)}return a(!0),i}function J9(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:i=!0,elementResize:a=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:s=!1}=r,c=df(e),d=o||i?[...c?Mi(c):[],...Mi(t)]:[];d.forEach(m=>{o&&m.addEventListener("scroll",n,{passive:!0}),i&&m.addEventListener("resize",n)});const u=c&&l?X9(c,n):null;let f=-1,h=null;a&&(h=new ResizeObserver(m=>{let[v]=m;v&&v.target===c&&h&&(h.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var _;(_=h)==null||_.observe(t)})),n()}),c&&!s&&h.observe(c),h.observe(t));let y,g=s?Cr(e):null;s&&w();function w(){const m=Cr(e);g&&(m.x!==g.x||m.y!==g.y||m.width!==g.width||m.height!==g.height)&&n(),g=m,y=requestAnimationFrame(w)}return n(),()=>{var m;d.forEach(v=>{o&&v.removeEventListener("scroll",n),i&&v.removeEventListener("resize",n)}),u==null||u(),(m=h)==null||m.disconnect(),h=null,s&&cancelAnimationFrame(y)}}const Pg=I9,e4=R9,t4=D9,n4=$9,Vh=T9,r4=L9,o4=(e,t,n)=>{const r=new Map,o={platform:Cg,...n},i={...o.platform,_c:r};return S9(e,t,{...o,platform:i})},Ag=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:r,padding:o}=typeof e=="function"?e(n):e;return r&&t(r)?r.current!=null?Vh({element:r.current,padding:o}).fn(n):{}:r?Vh({element:r,padding:o}).fn(n):{}}}};var Ka=typeof document<"u"?p.useLayoutEffect:p.useEffect;function Pl(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,r,o;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!Pl(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=n;r--!==0;){const i=o[r];if(!(i==="_owner"&&e.$$typeof)&&!Pl(e[i],t[i]))return!1}return!0}return e!==e&&t!==t}function Sg(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Bh(e,t){const n=Sg(e);return Math.round(t*n)/n}function Hh(e){const t=p.useRef(e);return Ka(()=>{t.current=e}),t}function Tg(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:o,elements:{reference:i,floating:a}={},transform:l=!0,whileElementsMounted:s,open:c}=e,[d,u]=p.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,h]=p.useState(r);Pl(f,r)||h(r);const[y,g]=p.useState(null),[w,m]=p.useState(null),v=p.useCallback(B=>{B!==k.current&&(k.current=B,g(B))},[]),_=p.useCallback(B=>{B!==P.current&&(P.current=B,m(B))},[]),E=i||y,C=a||w,k=p.useRef(null),P=p.useRef(null),A=p.useRef(d),S=s!=null,O=Hh(s),j=Hh(o),N=p.useCallback(()=>{if(!k.current||!P.current)return;const B={placement:t,strategy:n,middleware:f};j.current&&(B.platform=j.current),o4(k.current,P.current,B).then(L=>{const z={...L,isPositioned:!0};F.current&&!Pl(A.current,z)&&(A.current=z,Ro.flushSync(()=>{u(z)}))})},[f,t,n,j]);Ka(()=>{c===!1&&A.current.isPositioned&&(A.current.isPositioned=!1,u(B=>({...B,isPositioned:!1})))},[c]);const F=p.useRef(!1);Ka(()=>(F.current=!0,()=>{F.current=!1}),[]),Ka(()=>{if(E&&(k.current=E),C&&(P.current=C),E&&C){if(O.current)return O.current(E,C,N);N()}},[E,C,N,O,S]);const $=p.useMemo(()=>({reference:k,floating:P,setReference:v,setFloating:_}),[v,_]),U=p.useMemo(()=>({reference:E,floating:C}),[E,C]),W=p.useMemo(()=>{const B={position:n,left:0,top:0};if(!U.floating)return B;const L=Bh(U.floating,d.x),z=Bh(U.floating,d.y);return l?{...B,transform:"translate("+L+"px, "+z+"px)",...Sg(U.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:L,top:z}},[n,l,U.floating,d.x,d.y]);return p.useMemo(()=>({...d,update:N,refs:$,elements:U,floatingStyles:W}),[d,N,$,U,W])}function i4(e){const[t,n]=p.useState(void 0);return yn(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const i=o[0];let a,l;if("borderBoxSize"in i){const s=i.borderBoxSize,c=Array.isArray(s)?s[0]:s;a=c.inlineSize,l=c.blockSize}else a=e.offsetWidth,l=e.offsetHeight;n({width:a,height:l})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else n(void 0)},[e]),t}const Rg="Popper",[$g,Og]=kn(Rg),[a4,Ig]=$g(Rg),l4=e=>{const{__scopePopper:t,children:n}=e,[r,o]=p.useState(null);return p.createElement(a4,{scope:t,anchor:r,onAnchorChange:o},n)},s4="PopperAnchor",u4=p.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:r,...o}=e,i=Ig(s4,n),a=p.useRef(null),l=Ue(t,a);return p.useEffect(()=>{i.onAnchorChange((r==null?void 0:r.current)||a.current)}),r?null:p.createElement(fe.div,q({},o,{ref:l}))}),Lg="PopperContent",[c4,PP]=$g(Lg),d4=p.forwardRef((e,t)=>{var n,r,o,i,a,l,s,c;const{__scopePopper:d,side:u="bottom",sideOffset:f=0,align:h="center",alignOffset:y=0,arrowPadding:g=0,avoidCollisions:w=!0,collisionBoundary:m=[],collisionPadding:v=0,sticky:_="partial",hideWhenDetached:E=!1,updatePositionStrategy:C="optimized",onPlaced:k,...P}=e,A=Ig(Lg,d),[S,O]=p.useState(null),j=Ue(t,xt=>O(xt)),[N,F]=p.useState(null),$=i4(N),U=(n=$==null?void 0:$.width)!==null&&n!==void 0?n:0,W=(r=$==null?void 0:$.height)!==null&&r!==void 0?r:0,B=u+(h!=="center"?"-"+h:""),L=typeof v=="number"?v:{top:0,right:0,bottom:0,left:0,...v},z=Array.isArray(m)?m:[m],G=z.length>0,J={padding:L,boundary:z.filter(f4),altBoundary:G},{refs:ue,floatingStyles:Ve,placement:xe,isPositioned:$e,middlewareData:_e}=Tg({strategy:"fixed",placement:B,whileElementsMounted:(...xt)=>J9(...xt,{animationFrame:C==="always"}),elements:{reference:A.anchor},middleware:[vg({mainAxis:f+W,alignmentAxis:y}),w&&Pg({mainAxis:!0,crossAxis:!1,limiter:_==="partial"?r4():void 0,...J}),w&&e4({...J}),t4({...J,apply:({elements:xt,rects:Qi,availableWidth:ts,availableHeight:ns})=>{const{width:rs,height:os}=Qi.reference,Yt=xt.floating.style;Yt.setProperty("--radix-popper-available-width",`${ts}px`),Yt.setProperty("--radix-popper-available-height",`${ns}px`),Yt.setProperty("--radix-popper-anchor-width",`${rs}px`),Yt.setProperty("--radix-popper-anchor-height",`${os}px`)}}),N&&Ag({element:N,padding:g}),p4({arrowWidth:U,arrowHeight:W}),E&&n4({strategy:"referenceHidden",...J})]}),[Be,we]=Dg(xe),Ce=at(k);yn(()=>{$e&&(Ce==null||Ce())},[$e,Ce]);const Mt=(o=_e.arrow)===null||o===void 0?void 0:o.x,Pe=(i=_e.arrow)===null||i===void 0?void 0:i.y,dt=((a=_e.arrow)===null||a===void 0?void 0:a.centerOffset)!==0,[Yi,es]=p.useState();return yn(()=>{S&&es(window.getComputedStyle(S).zIndex)},[S]),p.createElement("div",{ref:ue.setFloating,"data-radix-popper-content-wrapper":"",style:{...Ve,transform:$e?Ve.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Yi,"--radix-popper-transform-origin":[(l=_e.transformOrigin)===null||l===void 0?void 0:l.x,(s=_e.transformOrigin)===null||s===void 0?void 0:s.y].join(" ")},dir:e.dir},p.createElement(c4,{scope:d,placedSide:Be,onArrowChange:F,arrowX:Mt,arrowY:Pe,shouldHideArrow:dt},p.createElement(fe.div,q({"data-side":Be,"data-align":we},P,{ref:j,style:{...P.style,animation:$e?void 0:"none",opacity:(c=_e.hide)!==null&&c!==void 0&&c.referenceHidden?0:void 0}}))))});function f4(e){return e!==null}const p4=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,i,a;const{placement:l,rects:s,middlewareData:c}=t,u=((n=c.arrow)===null||n===void 0?void 0:n.centerOffset)!==0,f=u?0:e.arrowWidth,h=u?0:e.arrowHeight,[y,g]=Dg(l),w={start:"0%",center:"50%",end:"100%"}[g],m=((r=(o=c.arrow)===null||o===void 0?void 0:o.x)!==null&&r!==void 0?r:0)+f/2,v=((i=(a=c.arrow)===null||a===void 0?void 0:a.y)!==null&&i!==void 0?i:0)+h/2;let _="",E="";return y==="bottom"?(_=u?w:`${m}px`,E=`${-h}px`):y==="top"?(_=u?w:`${m}px`,E=`${s.floating.height+h}px`):y==="right"?(_=`${-h}px`,E=u?w:`${v}px`):y==="left"&&(_=`${s.floating.width+h}px`,E=u?w:`${v}px`),{data:{x:_,y:E}}}});function Dg(e){const[t,n="center"]=e.split("-");return[t,n]}const h4=l4,m4=u4,v4=d4,Ng="Popover",[Mg,AP]=kn(Ng,[Og]),ff=Og(),[g4,Do]=Mg(Ng),y4=e=>{const{__scopePopover:t,children:n,open:r,defaultOpen:o,onOpenChange:i,modal:a=!1}=e,l=ff(t),s=p.useRef(null),[c,d]=p.useState(!1),[u=!1,f]=ar({prop:r,defaultProp:o,onChange:i});return p.createElement(h4,l,p.createElement(g4,{scope:t,contentId:on(),triggerRef:s,open:u,onOpenChange:f,onOpenToggle:p.useCallback(()=>f(h=>!h),[f]),hasCustomAnchor:c,onCustomAnchorAdd:p.useCallback(()=>d(!0),[]),onCustomAnchorRemove:p.useCallback(()=>d(!1),[]),modal:a},n))},x4="PopoverTrigger",_4=p.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,o=Do(x4,n),i=ff(n),a=Ue(t,o.triggerRef),l=p.createElement(fe.button,q({type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":zg(o.open)},r,{ref:a,onClick:le(e.onClick,o.onOpenToggle)}));return o.hasCustomAnchor?l:p.createElement(m4,q({asChild:!0},i),l)}),jg="PopoverPortal",[w4,E4]=Mg(jg,{forceMount:void 0}),k4=e=>{const{__scopePopover:t,forceMount:n,children:r,container:o}=e,i=Do(jg,t);return p.createElement(w4,{scope:t,forceMount:n},p.createElement(bn,{present:n||i.open},p.createElement(s1,{asChild:!0,container:o},r)))},ji="PopoverContent",b4=p.forwardRef((e,t)=>{const n=E4(ji,e.__scopePopover),{forceMount:r=n.forceMount,...o}=e,i=Do(ji,e.__scopePopover);return p.createElement(bn,{present:r||i.open},i.modal?p.createElement(C4,q({},o,{ref:t})):p.createElement(P4,q({},o,{ref:t})))}),C4=p.forwardRef((e,t)=>{const n=Do(ji,e.__scopePopover),r=p.useRef(null),o=Ue(t,r),i=p.useRef(!1);return p.useEffect(()=>{const a=r.current;if(a)return _1(a)},[]),p.createElement(y1,{as:bo,allowPinchZoom:!0},p.createElement(Fg,q({},e,{ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:le(e.onCloseAutoFocus,a=>{var l;a.preventDefault(),i.current||(l=n.triggerRef.current)===null||l===void 0||l.focus()}),onPointerDownOutside:le(e.onPointerDownOutside,a=>{const l=a.detail.originalEvent,s=l.button===0&&l.ctrlKey===!0,c=l.button===2||s;i.current=c},{checkForDefaultPrevented:!1}),onFocusOutside:le(e.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})))}),P4=p.forwardRef((e,t)=>{const n=Do(ji,e.__scopePopover),r=p.useRef(!1),o=p.useRef(!1);return p.createElement(Fg,q({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var a;if((a=e.onCloseAutoFocus)===null||a===void 0||a.call(e,i),!i.defaultPrevented){var l;r.current||(l=n.triggerRef.current)===null||l===void 0||l.focus(),i.preventDefault()}r.current=!1,o.current=!1},onInteractOutside:i=>{var a,l;(a=e.onInteractOutside)===null||a===void 0||a.call(e,i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const s=i.target;((l=n.triggerRef.current)===null||l===void 0?void 0:l.contains(s))&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&o.current&&i.preventDefault()}}))}),Fg=p.forwardRef((e,t)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:i,disableOutsidePointerEvents:a,onEscapeKeyDown:l,onPointerDownOutside:s,onFocusOutside:c,onInteractOutside:d,...u}=e,f=Do(ji,n),h=ff(n);return u1(),p.createElement(a1,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:i},p.createElement(Kd,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:d,onEscapeKeyDown:l,onPointerDownOutside:s,onFocusOutside:c,onDismiss:()=>f.onOpenChange(!1)},p.createElement(v4,q({"data-state":zg(f.open),role:"dialog",id:f.contentId},h,u,{ref:t,style:{...u.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}}))))});function zg(e){return e?"open":"closed"}const A4=y4,S4=_4,T4=k4,R4=b4;var $4="vocs_Popover";Bt.Root=A4;Bt.Trigger=S4;function Bt({children:e,className:t}){return x.jsx(T4,{children:x.jsx(R4,{className:D($4,t),sideOffset:12,children:e})})}var O4="vocs_Sidebar_backLink",I4="vocs_Sidebar_divider",L4="vocs_Sidebar_group",ii="vocs_Sidebar_item",Ug="vocs_Sidebar_items",D4="vocs_Sidebar_level",N4="vocs_Sidebar_levelCollapsed",M4="vocs_Sidebar_levelInset",j4="vocs_Sidebar_logo",F4="vocs_Sidebar_logoWrapper",z4="vocs_Sidebar_navigation",U4="vocs_Sidebar",Vg="vocs_Sidebar_section",V4="vocs_Sidebar_sectionCollapse",B4="vocs_Sidebar_sectionCollapseActive",H4="vocs_Sidebar_sectionHeader",W4="vocs_Sidebar_sectionHeaderActive",Wh="vocs_Sidebar_sectionTitle";function Bg(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 39 69",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Chevron Right"}),x.jsx("path",{d:"M38.8697 34.7461C38.8697 33.6719 38.4791 32.6953 37.649 31.8652L7.47318 1.8848C6.74078 1.1035 5.76418 0.712891 4.64118 0.712891C2.34618 0.712891 0.588379 2.42189 0.588379 4.71679C0.588379 5.79099 1.07668 6.81639 1.76028 7.59769L29.0552 34.7461L1.76028 61.8945C1.07668 62.6758 0.588379 63.6523 0.588379 64.7754C0.588379 67.0703 2.34618 68.7793 4.64118 68.7793C5.76418 68.7793 6.74078 68.3887 7.47318 67.6074L37.649 37.627C38.4791 36.7969 38.8697 35.8203 38.8697 34.7461Z",fill:"currentColor"})]})}function Hg(e){var c;const{className:t,onClickItem:n}=e,{previousPath:r}=$r(),o=p.useRef(null),i=Kl(),[a,l]=p.useState("/");if(p.useEffect(()=>{typeof window>"u"||r&&l(r)},[i.key,i.backLink]),!i)return null;const s=K4(i.items);return x.jsxs("aside",{ref:o,className:D(U4,t),children:[x.jsxs("div",{className:F4,children:[x.jsx("div",{className:j4,children:x.jsx(Zn,{to:"/",style:{alignItems:"center",display:"flex",height:"100%"},children:x.jsx(Qd,{})})}),x.jsx("div",{className:I4})]}),x.jsx("nav",{className:z4,children:x.jsxs("div",{className:L4,children:[i.backLink&&x.jsx("section",{className:Vg,children:x.jsx("div",{className:Ug,children:x.jsxs(Zn,{className:D(ii,O4),to:a,children:["←"," ",typeof history<"u"&&((c=history.state)!=null&&c.key)&&a!=="/"?"Back":"Home"]})})}),s.map((d,u)=>x.jsx(Kg,{depth:0,item:d,onClick:n,sidebarRef:o},`${d.text}${u}`))]})})]},i.key)}function K4(e){const t=[];let n=0;for(const r of e){if(r.items){n=t.push(r);continue}t[n]?t[n].items.push(r):t.push({text:"",items:[r]})}return t}function Wg(e,t){return e.find(n=>Hl(t,n.link??"")||n.link===t?!0:n.items?Wg(n.items,t):!1)}function Kg(e){const{depth:t,item:n,onClick:r,sidebarRef:o}=e,i=p.useRef(null),{pathname:a}=Re(),l=K_(n.link??""),s=p.useMemo(()=>n.items?!!Wg(n.items,a):!1,[n.items,a]),[c,d]=p.useState(()=>l||!n.items||s?!1:!!n.collapsed),u=n.collapsed!==void 0&&n.items!==void 0,f=p.useCallback(g=>{"key"in g&&g.key!=="Enter"||n.link||d(w=>!w)},[n.link]),h=p.useCallback(g=>{"key"in g&&g.key!=="Enter"||n.link&&d(w=>!w)},[n.link]),y=p.useRef(!0);return p.useEffect(()=>{!y.current||(y.current=!1,!Hl(a,n.link??""))||requestAnimationFrame(()=>{var v,_,E;const w=((v=i.current)==null?void 0:v.offsetTop)??0,m=((_=o==null?void 0:o.current)==null?void 0:_.clientHeight)??0;w0&&t<5&&n.items.map((g,w)=>x.jsx(Kg,{depth:t+1,item:g,onClick:r,sidebarRef:o},`${g.text}${w}`))})]}):x.jsx(x.Fragment,{children:n.link?x.jsx(Zn,{ref:i,"data-active":!!l,onClick:r,className:ii,to:n.link,children:n.text}):x.jsx("div",{className:ii,children:n.text})})}function G4(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 69 39",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Chevron Down"}),x.jsx("path",{d:"M34.8677 38.8398C35.9419 38.8398 37.0161 38.4492 37.7485 37.6191L67.729 7.44339C68.4614 6.71089 68.9009 5.73439 68.9009 4.61129C68.9009 2.31639 67.1919 0.558594 64.897 0.558594C63.8227 0.558594 62.7485 1.04689 62.0161 1.73049L32.5727 31.2715H37.1138L7.67042 1.73049C6.93802 1.04689 5.96142 0.558594 4.83842 0.558594C2.54342 0.558594 0.785645 2.31639 0.785645 4.61129C0.785645 5.73439 1.22512 6.71089 1.95752 7.44339L31.9868 37.6191C32.768 38.4492 33.7446 38.8398 34.8677 38.8398Z",fill:"currentColor"})]})}function q4(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 69 40",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Chevron Up"}),x.jsx("path",{d:"M1.95752 32.2441C1.22512 32.9277 0.785645 33.9531 0.785645 35.0762C0.785645 37.3711 2.54342 39.1289 4.83842 39.1289C5.96142 39.1289 6.98682 38.6895 7.67042 37.957L37.1138 8.36716H32.5727L62.0161 37.957C62.6997 38.6895 63.8227 39.1289 64.897 39.1289C67.1919 39.1289 68.9009 37.3711 68.9009 35.0762C68.9009 33.9531 68.4614 32.9277 67.729 32.2441L37.7485 2.06836C37.0161 1.23826 35.9419 0.847656 34.8677 0.847656C33.7446 0.847656 32.7192 1.23826 31.9868 2.06836L1.95752 32.2441Z",fill:"currentColor"})]})}function Y4(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 79 48",fill:"none",children:[x.jsx("title",{children:"Menu"}),x.jsx("path",{fill:"currentColor",d:"M19.528 47.232h40.87c1.952 0 3.515-1.562 3.515-3.564a3.5 3.5 0 0 0-3.516-3.516H19.528a3.501 3.501 0 0 0-3.515 3.516c0 2.002 1.562 3.564 3.515 3.564ZM12.057 27.262h55.81a3.501 3.501 0 0 0 3.516-3.516 3.501 3.501 0 0 0-3.515-3.515h-55.81a3.501 3.501 0 0 0-3.516 3.515 3.501 3.501 0 0 0 3.515 3.516ZM4.391 7.34H75.29c2.002 0 3.515-1.563 3.515-3.516 0-2.002-1.513-3.564-3.515-3.564H4.39C2.438.26.876 1.822.876 3.824A3.501 3.501 0 0 0 4.39 7.34Z"})]})}Tc.Curtain=nk;function Tc(){var n,r;const e=Je(),{showLogo:t}=Or();return x.jsxs("div",{className:u9,children:[x.jsxs("div",{className:Nh,children:[t&&x.jsx("div",{className:Sa,children:x.jsx("div",{className:r9,children:x.jsx(Zn,{to:"/",style:{alignItems:"center",display:"flex",height:"100%"},children:x.jsx(Qd,{})})})}),e.topNav&&x.jsx(x.Fragment,{children:x.jsxs("div",{className:Sa,children:[x.jsx(Q4,{items:e.topNav}),x.jsx(X4,{items:e.topNav})]})})]}),x.jsxs("div",{className:Nh,children:[x.jsx("div",{className:Sa,style:{marginRight:"-8px"},children:x.jsx(q8,{})}),e.socials&&((n=e.socials)==null?void 0:n.length)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:e9}),x.jsx("div",{className:Sa,style:{marginLeft:"-8px"},children:(r=e.socials)==null?void 0:r.map((o,i)=>x.jsx(tk,{...o},i))})]})]})]})}function Q4({items:e}){const{pathname:t}=Re(),n=Ki({pathname:t,items:e});return x.jsx(W1,{className:fg,children:x.jsx(K1,{children:e.map((r,o)=>r!=null&&r.link?x.jsx(Ql,{active:n==null?void 0:n.includes(r.id),href:r.link,children:r.text},o):x.jsxs(G1,{className:n9,children:[x.jsx(q1,{active:n==null?void 0:n.includes(r.id),children:r.text}),x.jsx(Y1,{className:X8,children:x.jsx(Z4,{items:r.items||[]})})]},o))})})}function Z4({items:e}){const{pathname:t}=Re(),n=Ki({pathname:t,items:e});return x.jsx("ul",{children:e==null?void 0:e.map((r,o)=>x.jsx(Ql,{active:n.includes(r.id),href:r.link,children:r.text},o))})}function X4({items:e}){var s;const[t,n]=p.useState(!1),{pathname:r}=Re(),o=Ki({pathname:r,items:e}),i=e.filter(c=>c.id===o[0])[0],{basePath:a}=Je(),l=a;return x.jsx("div",{className:D(fg,l9),children:i?x.jsxs(Bt.Root,{modal:!0,open:t,onOpenChange:n,children:[x.jsxs(Bt.Trigger,{className:D(dg,Xo),children:[i.text,x.jsx(st,{label:"Menu",icon:G4,size:"11px"})]}),x.jsx(Bt,{className:f9,children:x.jsx(B8,{type:"single",collapsible:!0,style:{display:"flex",flexDirection:"column"},children:e.map((c,d)=>{var u;return c!=null&&c.link?x.jsx(rn,{"data-active":o.includes(c.id),className:Xo,href:c.link,onClick:()=>n(!1),variant:"styleless",children:c.text},d):x.jsxs(H8,{value:d.toString(),children:[x.jsx(W8,{className:D(Xo,a9),"data-active":o.includes(c.id),style:qt({[Q8]:`url(${l}/.vocs/icons/chevron-down.svg)`,[Z8]:`url(${l}/.vocs/icons/chevron-up.svg)`}),children:c.text}),x.jsx(K8,{className:i9,children:(u=c.items)==null?void 0:u.map((f,h)=>x.jsx(rn,{className:Xo,href:f.link,onClick:()=>n(!1),variant:"styleless",children:f.text},h))})]},d)})})})]}):(s=e[0])!=null&&s.link?x.jsx(rn,{className:Xo,href:e[0].link,variant:"styleless",children:e[0].text}):null})}const J4={discord:Q1,github:Z1,telegram:X1,warpcast:J1,x:eg},ek={discord:"21px",github:"18px",telegram:"21px",warpcast:"18px",x:"16px"};function tk({icon:e,label:t,link:n,type:r}){return x.jsx("a",{className:Y8,href:n,target:"_blank",rel:"noopener noreferrer",children:x.jsx(st,{className:t9,label:t,icon:J4[e],size:ek[r]||"18px"})})}function nk({enableScrollToTop:e}){const{pathname:t}=Re(),{layout:n,showSidebar:r}=Or(),{frontmatter:o={}}=$r(),i=Kl(),[a,l]=p.useState(!1),[s,c]=p.useState(!1),d=p.useMemo(()=>{if(!i||n==="minimal")return;const h=Gg({sidebarItems:i.items,pathname:t});return h==null?void 0:h.text},[n,t,i]),u=p.useMemo(()=>{var h;if(!(typeof window>"u"))return(h=document.querySelector(".vocs_Content h1"))==null?void 0:h.textContent},[]),f=d||o.title||u;return x.jsxs("div",{className:J8,children:[x.jsx("div",{className:Lh,children:x.jsx("div",{className:ou,children:r?x.jsxs(Bt.Root,{modal:!0,open:s,onOpenChange:c,children:[x.jsxs(Bt.Trigger,{className:dg,children:[x.jsx(st,{label:"Menu",icon:Y4,size:"13px"}),x.jsx("div",{className:o9,children:f})]}),x.jsx(Bt,{className:d9,children:x.jsx(Hg,{onClickItem:()=>c(!1)})})]}):f})}),x.jsxs("div",{className:Lh,children:[e&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:ou,children:x.jsxs("button",{className:Dh,onClick:()=>window.scrollTo({behavior:"smooth",top:0}),type:"button",children:["Top",x.jsx(st,{label:"Scroll to top",icon:q4,size:"10px"})]})}),x.jsx("div",{className:c9})]}),n==="docs"&&x.jsx("div",{className:ou,children:x.jsxs(Bt.Root,{modal:!0,open:a,onOpenChange:l,children:[x.jsxs(Bt.Trigger,{className:Dh,children:["On this page",x.jsx(st,{label:"On this page",icon:Bg,size:"10px"})]}),x.jsx(Bt,{className:s9,children:x.jsx(pg,{onClickItem:()=>l(!1),showTitle:!1})})]})})]})]})}function Gg({sidebarItems:e,pathname:t}){const n=t.replace(/(.+)\/$/,"$1");for(const r of e){if((r==null?void 0:r.link)===n)return r;if(r.items){const o=Gg({sidebarItems:r.items,pathname:n});if(o)return o}}}var rk="vocs_SkipLink";const qg="vocs-content";function ok(){const{pathname:e}=Re();return x.jsx("a",{className:D(rk,r1),href:`${e}#${qg}`,children:"Skip to content"})}var ik="vocs_DocsLayout_content",ak="vocs_DocsLayout_content_withSidebar",lk="vocs_DocsLayout_content_withTopNav",sk="vocs_DocsLayout_gutterLeft",uk="vocs_DocsLayout_gutterRight",ck="vocs_DocsLayout_gutterRight_withSidebar",dk="vocs_DocsLayout_gutterTop",fk="vocs_DocsLayout_gutterTopCurtain",pk="vocs_DocsLayout_gutterTopCurtain_hidden",hk="vocs_DocsLayout_gutterTopCurtain_withSidebar",mk="vocs_DocsLayout_gutterTop_offsetLeftGutter",vk="vocs_DocsLayout_gutterTop_sticky",gk="vocs_DocsLayout",yk="vocs_DocsLayout_sidebar";function Rc({children:e}){const{banner:t,font:n}=Je(),{frontmatter:r={}}=$r(),{content:o}=r,{layout:i,showOutline:a,showSidebar:l,showTopNav:s}=Or(),{ref:c,inView:d}=Yv({initialInView:!0,rootMargin:"100px 0px 0px 0px"}),[u,f]=yc("banner",!0);return x.jsxs("div",{className:gk,"data-layout":i,style:qt({[pw]:u?t==null?void 0:t.height:void 0,[Y3.default]:n!=null&&n.google?`${n.google}, ${q3.default}`:void 0}),children:[x.jsx(ok,{}),u&&x.jsx(Dw,{hide:()=>f(!1)}),l&&x.jsx("div",{className:sk,children:x.jsx(Hg,{className:yk})}),s&&x.jsxs(x.Fragment,{children:[x.jsxs("div",{ref:c,className:D(dk,l&&mk,(i==="minimal"||i==="landing")&&vk),children:[x.jsx(bc,{}),x.jsx(Tc,{})]}),x.jsxs("div",{className:D(fk,l&&hk,(i==="minimal"||i==="landing")&&pk),children:[x.jsx(bc.Curtain,{}),x.jsx(Tc.Curtain,{enableScrollToTop:!d})]})]}),a&&x.jsx("div",{className:D(uk,l&&ck),children:x.jsx(pg,{})}),x.jsxs("div",{id:qg,className:D(ik,l&&ak,s&&lk),style:qt({[zs.horizontalPadding]:o==null?void 0:o.horizontalPadding,[zs.width]:o==null?void 0:o.width,[zs.verticalPadding]:o==null?void 0:o.verticalPadding}),children:[x.jsx(e1,{children:e}),x.jsx(v8,{})]}),x.jsx("div",{"data-bottom-observer":!0})]})}const $c={},Yg=Z.createContext($c);function xk(e){const t=Z.useContext(Yg);return Z.useMemo(function(){return typeof e=="function"?e(t):{...t,...e}},[t,e])}function _k(e){let t;return e.disableParentContext?t=typeof e.components=="function"?e.components($c):e.components||$c:t=xk(e.components),Z.createElement(Yg.Provider,{value:t},e.children)}var Qg={exports:{}},wk="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",Ek=wk,kk=Ek;function Zg(){}function Xg(){}Xg.resetWarningCache=Zg;var bk=function(){function e(r,o,i,a,l,s){if(s!==kk){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}e.isRequired=e;function t(){return e}var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:Xg,resetWarningCache:Zg};return n.PropTypes=n,n};Qg.exports=bk();var Ck=Qg.exports;const Ee=tr(Ck);function Pk(e){return e&&typeof e=="object"&&"default"in e?e.default:e}var Jg=p,Ak=Pk(Jg);function Kh(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Sk(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var Tk=!!(typeof window<"u"&&window.document&&window.document.createElement);function Rk(e,t,n){if(typeof e!="function")throw new Error("Expected reducePropsToState to be a function.");if(typeof t!="function")throw new Error("Expected handleStateChangeOnClient to be a function.");if(typeof n<"u"&&typeof n!="function")throw new Error("Expected mapStateOnServer to either be undefined or a function.");function r(o){return o.displayName||o.name||"Component"}return function(i){if(typeof i!="function")throw new Error("Expected WrappedComponent to be a React component.");var a=[],l;function s(){l=e(a.map(function(d){return d.props})),c.canUseDOM?t(l):n&&(l=n(l))}var c=function(d){Sk(u,d);function u(){return d.apply(this,arguments)||this}u.peek=function(){return l},u.rewind=function(){if(u.canUseDOM)throw new Error("You may only call rewind() on the server. Call peek() to read the current state.");var y=l;return l=void 0,a=[],y};var f=u.prototype;return f.UNSAFE_componentWillMount=function(){a.push(this),s()},f.componentDidUpdate=function(){s()},f.componentWillUnmount=function(){var y=a.indexOf(this);a.splice(y,1),s()},f.render=function(){return Ak.createElement(i,this.props)},u}(Jg.PureComponent);return Kh(c,"displayName","SideEffect("+r(i)+")"),Kh(c,"canUseDOM",Tk),c}}var $k=Rk;const Ok=tr($k);var Ik=typeof Element<"u",Lk=typeof Map=="function",Dk=typeof Set=="function",Nk=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function Ga(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var n,r,o;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(!Ga(e[r],t[r]))return!1;return!0}var i;if(Lk&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(i=e.entries();!(r=i.next()).done;)if(!t.has(r.value[0]))return!1;for(i=e.entries();!(r=i.next()).done;)if(!Ga(r.value[1],t.get(r.value[0])))return!1;return!0}if(Dk&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(i=e.entries();!(r=i.next()).done;)if(!t.has(r.value[0]))return!1;return!0}if(Nk&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(e[r]!==t[r])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&typeof e.valueOf=="function"&&typeof t.valueOf=="function")return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString=="function"&&typeof t.toString=="function")return e.toString()===t.toString();if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[r]))return!1;if(Ik&&e instanceof Element)return!1;for(r=n;r--!==0;)if(!((o[r]==="_owner"||o[r]==="__v"||o[r]==="__o")&&e.$$typeof)&&!Ga(e[o[r]],t[o[r]]))return!1;return!0}return e!==e&&t!==t}var Mk=function(t,n){try{return Ga(t,n)}catch(r){if((r.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw r}};const jk=tr(Mk);/* object-assign (c) Sindre Sorhus @license MIT -*/var Gh=Object.getOwnPropertySymbols,Fk=Object.prototype.hasOwnProperty,zk=Object.prototype.propertyIsEnumerable;function Uk(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function Vk(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(t).map(function(i){return t[i]});if(r.join("")!=="0123456789")return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach(function(i){o[i]=i}),Object.keys(Object.assign({},o)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}var Bk=Vk()?Object.assign:function(e,t){for(var n,r=Uk(e),o,i=1;i=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},Zk=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t&&(typeof t=="object"||typeof t=="function")?t:e},Oc=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return n===!1?String(t):String(t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},Xk=function(t){var n=po(t,ee.TITLE),r=po(t,Fi.TITLE_TEMPLATE);if(r&&n)return r.replace(/%s/g,function(){return Array.isArray(n)?n.join(""):n});var o=po(t,Fi.DEFAULT_TITLE);return n||o||void 0},Jk=function(t){return po(t,Fi.ON_CHANGE_CLIENT_STATE)||function(){}},iu=function(t,n){return n.filter(function(r){return typeof r[t]<"u"}).map(function(r){return r[t]}).reduce(function(r,o){return pt({},r,o)},{})},e6=function(t,n){return n.filter(function(r){return typeof r[ee.BASE]<"u"}).map(function(r){return r[ee.BASE]}).reverse().reduce(function(r,o){if(!r.length)for(var i=Object.keys(o),a=0;a=0;r--){var o=t[r];if(o.hasOwnProperty(n))return o[n]}return null},t6=function(t){return{baseTag:e6([ke.HREF,ke.TARGET],t),bodyAttributes:iu(yr.BODY,t),defer:po(t,Fi.DEFER),encode:po(t,Fi.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:iu(yr.HTML,t),linkTags:Jo(ee.LINK,[ke.REL,ke.HREF],t),metaTags:Jo(ee.META,[ke.NAME,ke.CHARSET,ke.HTTPEQUIV,ke.PROPERTY,ke.ITEM_PROP],t),noscriptTags:Jo(ee.NOSCRIPT,[ke.INNER_HTML],t),onChangeClientState:Jk(t),scriptTags:Jo(ee.SCRIPT,[ke.SRC,ke.INNER_HTML],t),styleTags:Jo(ee.STYLE,[ke.CSS_TEXT],t),title:Xk(t),titleAttributes:iu(yr.TITLE,t)}},Ic=function(){var e=Date.now();return function(t){var n=Date.now();n-e>16?(e=n,t(n)):setTimeout(function(){Ic(t)},0)}}(),Yh=function(t){return clearTimeout(t)},n6=typeof window<"u"?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||Ic:global.requestAnimationFrame||Ic,r6=typeof window<"u"?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||Yh:global.cancelAnimationFrame||Yh,o6=function(t){return console&&typeof console.warn=="function"&&console.warn(t)},ei=null,i6=function(t){ei&&r6(ei),t.defer?ei=n6(function(){Qh(t,function(){ei=null})}):(Qh(t),ei=null)},Qh=function(t,n){var r=t.baseTag,o=t.bodyAttributes,i=t.htmlAttributes,a=t.linkTags,l=t.metaTags,s=t.noscriptTags,c=t.onChangeClientState,d=t.scriptTags,u=t.styleTags,f=t.title,h=t.titleAttributes;Lc(ee.BODY,o),Lc(ee.HTML,i),a6(f,h);var y={baseTag:Br(ee.BASE,r),linkTags:Br(ee.LINK,a),metaTags:Br(ee.META,l),noscriptTags:Br(ee.NOSCRIPT,s),scriptTags:Br(ee.SCRIPT,d),styleTags:Br(ee.STYLE,u)},g={},w={};Object.keys(y).forEach(function(m){var v=y[m],_=v.newTags,E=v.oldTags;_.length&&(g[m]=_),E.length&&(w[m]=y[m].oldTags)}),n&&n(),c(t,g,w)},ey=function(t){return Array.isArray(t)?t.join(""):t},a6=function(t,n){typeof t<"u"&&document.title!==t&&(document.title=ey(t)),Lc(ee.TITLE,n)},Lc=function(t,n){var r=document.getElementsByTagName(t)[0];if(r){for(var o=r.getAttribute(Ht),i=o?o.split(","):[],a=[].concat(i),l=Object.keys(n),s=0;s=0;f--)r.removeAttribute(a[f]);i.length===a.length?r.removeAttribute(Ht):r.getAttribute(Ht)!==l.join(",")&&r.setAttribute(Ht,l.join(","))}},Br=function(t,n){var r=document.head||document.querySelector(ee.HEAD),o=r.querySelectorAll(t+"["+Ht+"]"),i=Array.prototype.slice.call(o),a=[],l=void 0;return n&&n.length&&n.forEach(function(s){var c=document.createElement(t);for(var d in s)if(s.hasOwnProperty(d))if(d===ke.INNER_HTML)c.innerHTML=s.innerHTML;else if(d===ke.CSS_TEXT)c.styleSheet?c.styleSheet.cssText=s.cssText:c.appendChild(document.createTextNode(s.cssText));else{var u=typeof s[d]>"u"?"":s[d];c.setAttribute(d,u)}c.setAttribute(Ht,"true"),i.some(function(f,h){return l=h,c.isEqualNode(f)})?i.splice(l,1):a.push(c)}),i.forEach(function(s){return s.parentNode.removeChild(s)}),a.forEach(function(s){return r.appendChild(s)}),{oldTags:i,newTags:a}},ty=function(t){return Object.keys(t).reduce(function(n,r){var o=typeof t[r]<"u"?r+'="'+t[r]+'"':""+r;return n?n+" "+o:o},"")},l6=function(t,n,r,o){var i=ty(r),a=ey(n);return i?"<"+t+" "+Ht+'="true" '+i+">"+Oc(a,o)+"":"<"+t+" "+Ht+'="true">'+Oc(a,o)+""},s6=function(t,n,r){return n.reduce(function(o,i){var a=Object.keys(i).filter(function(c){return!(c===ke.INNER_HTML||c===ke.CSS_TEXT)}).reduce(function(c,d){var u=typeof i[d]>"u"?d:d+'="'+Oc(i[d],r)+'"';return c?c+" "+u:u},""),l=i.innerHTML||i.cssText||"",s=Kk.indexOf(t)===-1;return o+"<"+t+" "+Ht+'="true" '+a+(s?"/>":">"+l+"")},"")},ny=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(t).reduce(function(r,o){return r[Al[o]||o]=t[o],r},n)},u6=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(t).reduce(function(r,o){return r[Wk[o]||o]=t[o],r},n)},c6=function(t,n,r){var o,i=(o={key:n},o[Ht]=!0,o),a=ny(r,i);return[Z.createElement(ee.TITLE,a,n)]},d6=function(t,n){return n.map(function(r,o){var i,a=(i={key:o},i[Ht]=!0,i);return Object.keys(r).forEach(function(l){var s=Al[l]||l;if(s===ke.INNER_HTML||s===ke.CSS_TEXT){var c=r.innerHTML||r.cssText;a.dangerouslySetInnerHTML={__html:c}}else a[s]=r[l]}),Z.createElement(t,a)})},ln=function(t,n,r){switch(t){case ee.TITLE:return{toComponent:function(){return c6(t,n.title,n.titleAttributes)},toString:function(){return l6(t,n.title,n.titleAttributes,r)}};case yr.BODY:case yr.HTML:return{toComponent:function(){return ny(n)},toString:function(){return ty(n)}};default:return{toComponent:function(){return d6(t,n)},toString:function(){return s6(t,n,r)}}}},ry=function(t){var n=t.baseTag,r=t.bodyAttributes,o=t.encode,i=t.htmlAttributes,a=t.linkTags,l=t.metaTags,s=t.noscriptTags,c=t.scriptTags,d=t.styleTags,u=t.title,f=u===void 0?"":u,h=t.titleAttributes;return{base:ln(ee.BASE,n,o),bodyAttributes:ln(yr.BODY,r,o),htmlAttributes:ln(yr.HTML,i,o),link:ln(ee.LINK,a,o),meta:ln(ee.META,l,o),noscript:ln(ee.NOSCRIPT,s,o),script:ln(ee.SCRIPT,c,o),style:ln(ee.STYLE,d,o),title:ln(ee.TITLE,{title:f,titleAttributes:h},o)}},f6=function(t){var n,r;return r=n=function(o){Qk(i,o);function i(){return qk(this,i),Zk(this,o.apply(this,arguments))}return i.prototype.shouldComponentUpdate=function(l){return!jk(this.props,l)},i.prototype.mapNestedChildrenToProps=function(l,s){if(!s)return null;switch(l.type){case ee.SCRIPT:case ee.NOSCRIPT:return{innerHTML:s};case ee.STYLE:return{cssText:s}}throw new Error("<"+l.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},i.prototype.flattenArrayTypeChildren=function(l){var s,c=l.child,d=l.arrayTypeChildren,u=l.newChildProps,f=l.nestedChildren;return pt({},d,(s={},s[c.type]=[].concat(d[c.type]||[],[pt({},u,this.mapNestedChildrenToProps(c,f))]),s))},i.prototype.mapObjectTypeChildren=function(l){var s,c,d=l.child,u=l.newProps,f=l.newChildProps,h=l.nestedChildren;switch(d.type){case ee.TITLE:return pt({},u,(s={},s[d.type]=h,s.titleAttributes=pt({},f),s));case ee.BODY:return pt({},u,{bodyAttributes:pt({},f)});case ee.HTML:return pt({},u,{htmlAttributes:pt({},f)})}return pt({},u,(c={},c[d.type]=pt({},f),c))},i.prototype.mapArrayTypeChildrenToProps=function(l,s){var c=pt({},s);return Object.keys(l).forEach(function(d){var u;c=pt({},c,(u={},u[d]=l[d],u))}),c},i.prototype.warnOnInvalidChildren=function(l,s){return!0},i.prototype.mapChildrenToProps=function(l,s){var c=this,d={};return Z.Children.forEach(l,function(u){if(!(!u||!u.props)){var f=u.props,h=f.children,y=qh(f,["children"]),g=u6(y);switch(c.warnOnInvalidChildren(u,h),u.type){case ee.LINK:case ee.META:case ee.NOSCRIPT:case ee.SCRIPT:case ee.STYLE:d=c.flattenArrayTypeChildren({child:u,arrayTypeChildren:d,newChildProps:g,nestedChildren:h});break;default:s=c.mapObjectTypeChildren({child:u,newProps:s,newChildProps:g,nestedChildren:h});break}}}),s=this.mapArrayTypeChildrenToProps(d,s),s},i.prototype.render=function(){var l=this.props,s=l.children,c=qh(l,["children"]),d=pt({},c);return s&&(d=this.mapChildrenToProps(s,d)),Z.createElement(t,d)},Yk(i,null,[{key:"canUseDOM",set:function(l){t.canUseDOM=l}}]),i}(Z.Component),n.propTypes={base:Ee.object,bodyAttributes:Ee.object,children:Ee.oneOfType([Ee.arrayOf(Ee.node),Ee.node]),defaultTitle:Ee.string,defer:Ee.bool,encodeSpecialCharacters:Ee.bool,htmlAttributes:Ee.object,link:Ee.arrayOf(Ee.object),meta:Ee.arrayOf(Ee.object),noscript:Ee.arrayOf(Ee.object),onChangeClientState:Ee.func,script:Ee.arrayOf(Ee.object),style:Ee.arrayOf(Ee.object),title:Ee.string,titleAttributes:Ee.object,titleTemplate:Ee.string},n.defaultProps={defer:!0,encodeSpecialCharacters:!0},n.peek=t.peek,n.rewind=function(){var o=t.rewind();return o||(o=ry({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),o},r},p6=function(){return null},h6=Ok(t6,i6,ry)(p6),Dc=f6(h6);Dc.renderStatic=Dc.rewind;var au="vocs_Anchor",m6="vocs_Autolink";function v6(e){const{pathname:t}=Re();return x.jsx("a",{...e,className:D(e.className,m6),href:`${t}${e.href}`})}function g6(e){const{children:t,href:n}=e,{pathname:r}=Re();return t&&typeof t=="object"&&"props"in t&&t.props["data-autolink-icon"]?x.jsx(v6,{className:D(e.className,au),...e}):n!=null&&n.match(/^#/)?x.jsx("a",{className:D(e.className,au),...e,href:`${r}${n}`}):x.jsx(rn,{className:D(e.className,au),...e})}var y6="vocs_Callout_danger",x6="vocs_Callout_info",_6="vocs_Callout_note",oy="vocs_Callout",w6="vocs_Callout_success",E6="vocs_Callout_tip",k6="vocs_Callout_warning";const b6=Object.freeze(Object.defineProperty({__proto__:null,danger:y6,info:x6,note:_6,root:oy,success:w6,tip:E6,warning:k6},Symbol.toStringTag,{value:"Module"}));function C6({className:e,children:t,type:n}){return x.jsx("aside",{className:D(e,oy,b6[n]),children:t})}var P6="vocs_Aside";function A6(e){const t=D(e.className,P6);return"data-callout"in e?x.jsx(C6,{className:t,type:e["data-callout"],children:e.children}):x.jsx("aside",{...e,className:t})}var S6="vocs_Blockquote";function T6(e){return x.jsx("blockquote",{...e,className:D(e.className,S6)})}var R6="vocs_Code";function $6(e){const t=O6(e.children);return x.jsx("code",{...e,className:D(e.className,R6),children:t})}function O6(e){return Array.isArray(e)?e.map((t,n)=>{var r,o,i;return t.props&&"data-line"in t.props&&typeof t.props.children=="string"&&t.props.children.trim()===""&&((i=(o=(r=e[n+1])==null?void 0:r.props)==null?void 0:o.className)!=null&&i.includes("twoslash-tag-line"))?null:t}).filter(Boolean):e}var I6="vocs_Details";function L6(e){return x.jsx("details",{...e,className:D(e.className,I6)})}var D6="vocs_Authors_authors",N6="vocs_Authors_link",M6="vocs_Authors",Zh="vocs_Authors_separator";function iy(e){const{frontmatter:t}=$r(),{authors:n=t==null?void 0:t.authors,date:r=t==null?void 0:t.date}=e,o=p.useMemo(()=>{if(n)return Array.isArray(n)?n:n.split(",").map(a=>a.trim())},[n]),i=p.useMemo(()=>r?new Date(r).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"}):null,[r]);return x.jsxs("div",{className:M6,children:[i,o&&(i?" by ":"By "),x.jsx("span",{className:D6,children:o==null?void 0:o.map((a,l)=>{const{text:s,url:c}=j6(a);return x.jsxs(p.Fragment,{children:[c?x.jsx("a",{className:N6,href:c,target:"_blank",rel:"noopener noreferrer",children:s}):s,lx.jsxs(p.Fragment,{children:[x.jsx("div",{className:U6,children:x.jsxs(Zn,{to:e.path,children:[x.jsx("h2",{className:H6,children:e.title}),x.jsx(iy,{authors:e.authors,date:e.date}),x.jsxs("p",{className:F6,children:[e.description," ",x.jsx("span",{className:V6,children:"[→]"})]})]})}),tx.jsxs(p.Fragment,{children:[x.jsx("div",{className:J6,children:t.name}),t.items.map((r,o)=>{var i;return x.jsx("div",{className:Z6,style:qt({[G6]:r.length.toString(),[q6]:`${((i=t.height)==null?void 0:i.toString())??"40"}px`}),children:r.map((a,l)=>x.jsx(rn,{className:D(K6,a?X6:void 0),hideExternalIcon:!0,href:a==null?void 0:a.link,variant:"styleless",children:x.jsx("img",{className:Y6,src:a==null?void 0:a.image,alt:a==null?void 0:a.name})},l))},o)})]},n))})}var tb="var(--vocs_AutolinkIcon_iconUrl)",nb="vocs_AutolinkIcon";function rb(e){const{basePath:t}=Je(),n=t;return x.jsx("div",{...e,className:D(e.className,nb),style:qt({[tb]:`url(${n}/.vocs/icons/link.svg)`})})}const lu="rovingFocusGroup.onEntryFocus",ob={bubbles:!1,cancelable:!0},pf="RovingFocusGroup",[Nc,ay,ib]=Yl(pf),[ab,ly]=kn(pf,[ib]),[lb,sb]=ab(pf),ub=p.forwardRef((e,t)=>p.createElement(Nc.Provider,{scope:e.__scopeRovingFocusGroup},p.createElement(Nc.Slot,{scope:e.__scopeRovingFocusGroup},p.createElement(cb,q({},e,{ref:t}))))),cb=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:o=!1,dir:i,currentTabStopId:a,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:s,onEntryFocus:c,...d}=e,u=p.useRef(null),f=Ue(t,u),h=ql(i),[y=null,g]=ar({prop:a,defaultProp:l,onChange:s}),[w,m]=p.useState(!1),v=at(c),_=ay(n),E=p.useRef(!1),[C,k]=p.useState(0);return p.useEffect(()=>{const P=u.current;if(P)return P.addEventListener(lu,v),()=>P.removeEventListener(lu,v)},[v]),p.createElement(lb,{scope:n,orientation:r,dir:h,loop:o,currentTabStopId:y,onItemFocus:p.useCallback(P=>g(P),[g]),onItemShiftTab:p.useCallback(()=>m(!0),[]),onFocusableItemAdd:p.useCallback(()=>k(P=>P+1),[]),onFocusableItemRemove:p.useCallback(()=>k(P=>P-1),[])},p.createElement(fe.div,q({tabIndex:w||C===0?-1:0,"data-orientation":r},d,{ref:f,style:{outline:"none",...e.style},onMouseDown:le(e.onMouseDown,()=>{E.current=!0}),onFocus:le(e.onFocus,P=>{const A=!E.current;if(P.target===P.currentTarget&&A&&!w){const S=new CustomEvent(lu,ob);if(P.currentTarget.dispatchEvent(S),!S.defaultPrevented){const O=_().filter(U=>U.focusable),j=O.find(U=>U.active),N=O.find(U=>U.id===y),$=[j,N,...O].filter(Boolean).map(U=>U.ref.current);sy($)}}E.current=!1}),onBlur:le(e.onBlur,()=>m(!1))})))}),db="RovingFocusGroupItem",fb=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:o=!1,tabStopId:i,...a}=e,l=on(),s=i||l,c=sb(db,n),d=c.currentTabStopId===s,u=ay(n),{onFocusableItemAdd:f,onFocusableItemRemove:h}=c;return p.useEffect(()=>{if(r)return f(),()=>h()},[r,f,h]),p.createElement(Nc.ItemSlot,{scope:n,id:s,focusable:r,active:o},p.createElement(fe.span,q({tabIndex:d?0:-1,"data-orientation":c.orientation},a,{ref:t,onMouseDown:le(e.onMouseDown,y=>{r?c.onItemFocus(s):y.preventDefault()}),onFocus:le(e.onFocus,()=>c.onItemFocus(s)),onKeyDown:le(e.onKeyDown,y=>{if(y.key==="Tab"&&y.shiftKey){c.onItemShiftTab();return}if(y.target!==y.currentTarget)return;const g=mb(y,c.orientation,c.dir);if(g!==void 0){y.preventDefault();let m=u().filter(v=>v.focusable).map(v=>v.ref.current);if(g==="last")m.reverse();else if(g==="prev"||g==="next"){g==="prev"&&m.reverse();const v=m.indexOf(y.currentTarget);m=c.loop?vb(m,v+1):m.slice(v+1)}setTimeout(()=>sy(m))}})})))}),pb={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function hb(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function mb(e,t,n){const r=hb(e.key,n);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return pb[r]}function sy(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function vb(e,t){return e.map((n,r)=>e[(t+r)%e.length])}const gb=ub,yb=fb,uy="Tabs",[xb,SP]=kn(uy,[ly]),cy=ly(),[_b,hf]=xb(uy),wb=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,onValueChange:o,defaultValue:i,orientation:a="horizontal",dir:l,activationMode:s="automatic",...c}=e,d=ql(l),[u,f]=ar({prop:r,onChange:o,defaultProp:i});return p.createElement(_b,{scope:n,baseId:on(),value:u,onValueChange:f,orientation:a,dir:d,activationMode:s},p.createElement(fe.div,q({dir:d,"data-orientation":a},c,{ref:t})))}),Eb="TabsList",kb=p.forwardRef((e,t)=>{const{__scopeTabs:n,loop:r=!0,...o}=e,i=hf(Eb,n),a=cy(n);return p.createElement(gb,q({asChild:!0},a,{orientation:i.orientation,dir:i.dir,loop:r}),p.createElement(fe.div,q({role:"tablist","aria-orientation":i.orientation},o,{ref:t})))}),bb="TabsTrigger",Cb=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,disabled:o=!1,...i}=e,a=hf(bb,n),l=cy(n),s=dy(a.baseId,r),c=fy(a.baseId,r),d=r===a.value;return p.createElement(yb,q({asChild:!0},l,{focusable:!o,active:d}),p.createElement(fe.button,q({type:"button",role:"tab","aria-selected":d,"aria-controls":c,"data-state":d?"active":"inactive","data-disabled":o?"":void 0,disabled:o,id:s},i,{ref:t,onMouseDown:le(e.onMouseDown,u=>{!o&&u.button===0&&u.ctrlKey===!1?a.onValueChange(r):u.preventDefault()}),onKeyDown:le(e.onKeyDown,u=>{[" ","Enter"].includes(u.key)&&a.onValueChange(r)}),onFocus:le(e.onFocus,()=>{const u=a.activationMode!=="manual";!d&&!o&&u&&a.onValueChange(r)})})))}),Pb="TabsContent",Ab=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,forceMount:o,children:i,...a}=e,l=hf(Pb,n),s=dy(l.baseId,r),c=fy(l.baseId,r),d=r===l.value,u=p.useRef(d);return p.useEffect(()=>{const f=requestAnimationFrame(()=>u.current=!1);return()=>cancelAnimationFrame(f)},[]),p.createElement(bn,{present:o||d},({present:f})=>p.createElement(fe.div,q({"data-state":d?"active":"inactive","data-orientation":l.orientation,role:"tabpanel","aria-labelledby":s,hidden:!f,id:c,tabIndex:0},a,{ref:t,style:{...e.style,animationDuration:u.current?"0s":void 0}}),f&&i))});function dy(e,t){return`${e}-trigger-${t}`}function fy(e,t){return`${e}-content-${t}`}const Sb=wb,Tb=kb,Rb=Cb,$b=Ab;var Ob="vocs_Tabs_content",Ib="vocs_Tabs_list",Lb="vocs_Tabs",Db="vocs_Tabs_trigger";function Nb(e){return x.jsx(Sb,{...e,className:D(e.className,Lb)})}function Mb(e){return x.jsx(Tb,{...e,className:D(e.className,Ib)})}function jb(e){return x.jsx(Rb,{...e,className:D(e.className,Db)})}function Fb(e){return x.jsx($b,{...e,className:D(e.className,Ob)})}var zb="vocs_CodeGroup";function Ub({children:e}){if(!Array.isArray(e))return null;const t=e.map(n=>{const r=n.props["data-title"]?n:n.props.children,{props:o}=r,i=o["data-title"],a=o.children;return{title:i,content:a}});return x.jsxs(Nb,{className:zb,defaultValue:t[0].title,children:[x.jsx(Mb,{"aria-label":"Code group",children:t.map(({title:n},r)=>x.jsx(jb,{value:n||r.toString(),children:n},n||r.toString()))}),t.map(({title:n,content:r},o)=>{var a,l;const i=(l=(a=r.props)==null?void 0:a.className)==null?void 0:l.includes("shiki");return x.jsx(Fb,{"data-shiki":i,value:n||o.toString(),children:r},n||o.toString())})]})}var Vb="vocs_Div",Bb="vocs_Step_content",Hb="vocs_Step",py="vocs_Step_title",Wb="vocs_H2";function hy(e){return x.jsx(Oo,{...e,className:D(e.className,Wb),level:2})}var Kb="vocs_H3";function my(e){return x.jsx(Oo,{...e,className:D(e.className,Kb),level:3})}var Gb="vocs_H4";function vy(e){return x.jsx(Oo,{...e,className:D(e.className,Gb),level:4})}var qb="vocs_H5";function gy(e){return x.jsx(Oo,{...e,className:D(e.className,qb),level:5})}var Yb="vocs_H6";function yy(e){return x.jsx(Oo,{...e,className:D(e.className,Yb),level:6})}function Qb({children:e,className:t,title:n,titleLevel:r=2}){const o=(()=>{if(r===2)return hy;if(r===3)return my;if(r===4)return vy;if(r===5)return gy;if(r===6)return yy;throw new Error("Invalid.")})();return x.jsxs("div",{className:D(t,Hb),children:[typeof n=="string"?x.jsx(o,{className:py,children:n}):n,x.jsx("div",{className:Bb,children:e})]})}var Zb="vocs_Steps";function Xb({children:e,className:t}){return x.jsx("div",{className:D(t,Zb),children:e})}function Jb({children:e}){return Array.isArray(e)?x.jsx(Xb,{children:e.map(({props:t},n)=>{const[r,...o]=Array.isArray(t.children)?t.children:[t.children];return x.jsx(Qb,{title:p.cloneElement(r,{className:py}),children:o},n)})}):null}var eC="vocs_Subtitle";function tC({children:e}){return x.jsx("div",{className:eC,role:"doc-subtitle",children:e})}function nC(e){const{layout:t}=Or(),n=D(e.className,Vb);return e.className==="code-group"?x.jsx(Ub,{...e,className:n}):"data-authors"in e?x.jsx(iy,{}):"data-blog-posts"in e?x.jsx(W6,{}):"data-sponsors"in e?x.jsx(eb,{}):"data-autolink-icon"in e&&t==="docs"?x.jsx(rb,{...e,className:n}):"data-vocs-steps"in e?x.jsx(Jb,{...e,className:n}):e.role==="doc-subtitle"?x.jsx(tC,{...e}):x.jsx("div",{...e,className:n})}var rC="vocs_Figcaption";function oC(e){const t=D(e.className,rC);return x.jsx("figcaption",{...e,className:t})}var iC="vocs_Figure";function aC(e){const t=D(e.className,iC);return x.jsx("figure",{...e,className:t})}var lC="vocs_Header";function sC(e){return x.jsx("header",{...e,className:D(e.className,lC)})}var uC="vocs_HorizontalRule";function cC(e){return x.jsx("hr",{...e,className:D(e.className,uC)})}var dC="vocs_List_ordered",fC="vocs_List",pC="vocs_List_unordered";function Jh({ordered:e,...t}){const n=e?"ol":"ul";return x.jsx(n,{...t,className:D(t.className,fC,e?dC:pC)})}var hC="vocs_ListItem";function mC(e){return x.jsx("li",{...e,className:D(e.className,hC)})}function vC(){const e=p.useRef(null),[t,n]=p.useState(!1);p.useEffect(()=>{if(!t)return;const o=setTimeout(()=>n(!1),1e3);return()=>clearTimeout(o)},[t]);function r(){var a;n(!0);const o=(a=e.current)==null?void 0:a.cloneNode(!0),i=o==null?void 0:o.querySelectorAll("button,.line.diff.remove,.twoslash-popup-info-hover,.twoslash-popup-info,.twoslash-meta-line,.twoslash-tag-line");for(const l of i??[])l.remove();navigator.clipboard.writeText(o==null?void 0:o.textContent)}return{copied:t,copy:r,ref:e}}var gC="vocs_CopyButton";function yC(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 68 67",children:[x.jsx("title",{children:"Checkmark"}),x.jsx("path",{fill:"currentColor",d:"M26.175 66.121c1.904 0 3.418-.83 4.492-2.49L66.263 7.332c.83-1.27 1.123-2.295 1.123-3.32 0-2.393-1.563-4.004-4.004-4.004-1.758 0-2.734.586-3.809 2.295L25.98 56.209 8.304 32.381c-1.123-1.514-2.198-2.149-3.809-2.149-2.441 0-4.2 1.71-4.2 4.15 0 1.026.44 2.15 1.27 3.224l19.971 25.927c1.367 1.758 2.734 2.588 4.639 2.588Z"})]})}function xC(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 82 82",children:[x.jsx("title",{children:"Copy"}),x.jsx("path",{fill:"currentColor",d:"M12.451 63.281h38.38c8.3 0 12.45-4.053 12.45-12.256v-38.77C63.281 4.054 59.131 0 50.831 0H12.45C4.101 0 0 4.053 0 12.256v38.77C0 59.227 4.102 63.28 12.451 63.28Zm.098-7.031c-3.516 0-5.518-1.904-5.518-5.615V12.647c0-3.711 2.002-5.616 5.518-5.616h38.183c3.516 0 5.518 1.905 5.518 5.615v37.989c0 3.71-2.002 5.615-5.518 5.615H12.55Z"}),x.jsx("path",{stroke:"currentColor",strokeWidth:"6.75px",d:"M69.385 78.266h-38.38c-3.679 0-5.782-.894-6.987-2.081-1.196-1.178-2.088-3.219-2.088-6.8v-38.77c0-3.581.892-5.622 2.088-6.8 1.205-1.187 3.308-2.08 6.988-2.08h38.379c3.65 0 5.758.89 6.973 2.084 1.203 1.182 2.103 3.225 2.103 6.796v38.77c0 3.57-.9 5.614-2.103 6.796-1.215 1.193-3.323 2.085-6.973 2.085Z"})]})}function _C({copy:e,copied:t}){return x.jsx("button",{className:gC,onClick:e,type:"button",children:t?x.jsx(st,{label:"Copied",size:"14px",icon:yC}):x.jsx(st,{label:"Copy",size:"18px",icon:xC})})}var wC="vocs_CodeBlock";function EC(e){return x.jsx("div",{...e,className:D(e.className,wC)})}function kC(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 94 99",fill:"none",children:[x.jsx("title",{children:"File"}),x.jsx("rect",{width:"77px",height:"89px",x:"8px",y:"3px",stroke:"currentColor",strokeWidth:"6px",rx:"7px"}),x.jsx("path",{stroke:"currentColor",strokeLinecap:"round",strokeWidth:"6px",d:"M25 22h43M25 35h43M25 48h22"})]})}function bC(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 79 95",fill:"none",children:[x.jsx("title",{children:"Terminal"}),x.jsx("path",{fill:"currentColor",d:"M38.281 34.033c0-1.074-.39-2.05-1.22-2.88L6.885 1.171C6.152.39 5.175 0 4.053 0 1.758 0 0 1.709 0 4.004c0 1.074.488 2.1 1.172 2.88l27.295 27.15L1.172 61.181C.488 61.962 0 62.939 0 64.062c0 2.295 1.758 4.004 4.053 4.004 1.123 0 2.1-.39 2.832-1.172l30.176-29.98c.83-.83 1.22-1.807 1.22-2.88Z"}),x.jsx("path",{stroke:"currentColor",strokeLinecap:"round",strokeWidth:"8px",d:"M36 75h55"})]})}var CC="vocs_CodeTitle";function PC({children:e,className:t,language:n,...r}){return x.jsxs("div",{...r,className:D(t,CC),children:[n==="bash"?x.jsx(st,{label:"Terminal",size:"14px",icon:bC,style:{marginTop:3}}):e.match(/\.(.*)$/)?x.jsx(st,{label:"File",size:"14px",icon:kC,style:{marginTop:1}}):null,e]})}var AC="vocs_Pre",SC="vocs_Pre_wrapper";function TC({children:e,className:t,...n}){const{copied:r,copy:o,ref:i}=vC();function a(c){return!c||typeof c!="object"?c:"props"in c?{...c,props:{...c.props,children:Array.isArray(c.props.children)?c.props.children.map(a):a(c.props.children)}}:c}const l=p.useMemo(()=>a(e),[e]);return(c=>t!=null&&t.includes("shiki")?x.jsxs(EC,{children:[n["data-title"]&&x.jsx(PC,{language:n["data-lang"],children:n["data-title"]}),c]}):c)(x.jsx("div",{className:D(SC),children:x.jsxs("pre",{ref:i,...n,className:D(t,AC),children:["data-language"in n&&x.jsx(_C,{copied:r,copy:o}),l]})}))}var RC="vocs_Footnotes";function $C(e){return x.jsx("section",{...e,className:D(e.className,RC)})}var em="vocs_Section";function OC(e){return"data-footnotes"in e?x.jsx($C,{...e,className:D(e.className,em)}):x.jsx("section",{...e,className:D(e.className,em)})}var tm="vocs_Span";function qa(e,t){if(!e||!t)return!1;const n=t.getRootNode==null?void 0:t.getRootNode();if(e.contains(t))return!0;if(n&&Sc(n)){let r=t;for(;r;){if(e===r)return!0;r=r.parentNode||r.host}}return!1}function Mc(e,t){const n=["mouse","pen"];return t||n.push("",void 0),n.includes(e)}function Ra(e){return(e==null?void 0:e.ownerDocument)||document}function IC(e){return"composedPath"in e?e.composedPath()[0]:e.target}const xy={...Wc},LC=xy.useInsertionEffect,DC=LC||(e=>e());function NC(e){const t=p.useRef(()=>{});return DC(()=>{t.current=e}),p.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;o"floating-ui-"+Math.random().toString(36).slice(2,6)+MC++;function jC(){const[e,t]=p.useState(()=>nm?rm():void 0);return Po(()=>{e==null&&t(rm())},[]),p.useEffect(()=>{nm=!0},[]),e}const FC=xy.useId,_y=FC||jC,zC=p.forwardRef(function(t,n){const{context:{placement:r,elements:{floating:o},middlewareData:{arrow:i}},width:a=14,height:l=7,tipRadius:s=0,strokeWidth:c=0,staticOffset:d,stroke:u,d:f,style:{transform:h,...y}={},...g}=t,w=_y();if(!o)return null;const m=c*2,v=m/2,_=a/2*(s/-8+1),E=l/2*s/4,[C,k]=r.split("-"),P=Cg.isRTL(o),A=!!f,S=C==="top"||C==="bottom",O=d&&k==="end"?"bottom":"top";let j=d&&k==="end"?"right":"left";d&&P&&(j=k==="end"?"left":"right");const N=(i==null?void 0:i.x)!=null?d||i.x:"",F=(i==null?void 0:i.y)!=null?d||i.y:"",$=f||"M0,0"+(" H"+a)+(" L"+(a-_)+","+(l-E))+(" Q"+a/2+","+l+" "+_+","+(l-E))+" Z",U={top:A?"rotate(180deg)":"",left:A?"rotate(90deg)":"rotate(-90deg)",bottom:A?"":"rotate(180deg)",right:A?"rotate(-90deg)":"rotate(90deg)"}[C];return p.createElement("svg",jc({},g,{"aria-hidden":!0,ref:n,width:A?a:a+m,height:a,viewBox:"0 0 "+a+" "+(l>a?l:a),style:{position:"absolute",pointerEvents:"none",[j]:N,[O]:F,[C]:S||A?"100%":"calc(100% - "+m/2+"px)",transform:""+U+(h??""),...y}}),m>0&&p.createElement("path",{clipPath:"url(#"+w+")",fill:"none",stroke:u,strokeWidth:m+(f?0:1),d:$}),p.createElement("path",{stroke:m&&!f?g.fill:"none",d:$}),p.createElement("clipPath",{id:w},p.createElement("rect",{x:-v,y:v*(A?-1:1),width:a+m,height:a})))});function UC(){const e=new Map;return{emit(t,n){var r;(r=e.get(t))==null||r.forEach(o=>o(n))},on(t,n){e.set(t,[...e.get(t)||[],n])},off(t,n){var r;e.set(t,((r=e.get(t))==null?void 0:r.filter(o=>o!==n))||[])}}}const VC=p.createContext(null),BC=p.createContext(null),wy=()=>{var e;return((e=p.useContext(VC))==null?void 0:e.id)||null},Ey=()=>p.useContext(BC);function HC(e){return"data-floating-ui-"+e}function om(e){const t=p.useRef(e);return Po(()=>{t.current=e}),t}const im=HC("safe-polygon");function su(e,t,n){return n&&!Mc(n)?0:typeof e=="number"?e:e==null?void 0:e[t]}function WC(e,t){t===void 0&&(t={});const{open:n,onOpenChange:r,dataRef:o,events:i,elements:{domReference:a,floating:l},refs:s}=e,{enabled:c=!0,delay:d=0,handleClose:u=null,mouseOnly:f=!1,restMs:h=0,move:y=!0}=t,g=Ey(),w=wy(),m=om(u),v=om(d),_=p.useRef(),E=p.useRef(),C=p.useRef(),k=p.useRef(),P=p.useRef(!0),A=p.useRef(!1),S=p.useRef(()=>{}),O=p.useCallback(()=>{var $;const U=($=o.current.openEvent)==null?void 0:$.type;return(U==null?void 0:U.includes("mouse"))&&U!=="mousedown"},[o]);p.useEffect(()=>{if(!c)return;function $(U){let{open:W}=U;W||(clearTimeout(E.current),clearTimeout(k.current),P.current=!0)}return i.on("openchange",$),()=>{i.off("openchange",$)}},[c,i]),p.useEffect(()=>{if(!c||!m.current||!n)return;function $(W){O()&&r(!1,W,"hover")}const U=Ra(l).documentElement;return U.addEventListener("mouseleave",$),()=>{U.removeEventListener("mouseleave",$)}},[l,n,r,c,m,O]);const j=p.useCallback(function($,U,W){U===void 0&&(U=!0),W===void 0&&(W="hover");const B=su(v.current,"close",_.current);B&&!C.current?(clearTimeout(E.current),E.current=setTimeout(()=>r(!1,$,W),B)):U&&(clearTimeout(E.current),r(!1,$,W))},[v,r]),N=p.useCallback(()=>{S.current(),C.current=void 0},[]),F=p.useCallback(()=>{if(A.current){const $=Ra(s.floating.current).body;$.style.pointerEvents="",$.removeAttribute(im),A.current=!1}},[s]);return p.useEffect(()=>{if(!c)return;function $(){return o.current.openEvent?["click","mousedown"].includes(o.current.openEvent.type):!1}function U(L){if(clearTimeout(E.current),P.current=!1,f&&!Mc(_.current)||h>0&&su(v.current,"open")===0)return;const z=su(v.current,"open",_.current);z?E.current=setTimeout(()=>{r(!0,L,"hover")},z):r(!0,L,"hover")}function W(L){if($())return;S.current();const z=Ra(l);if(clearTimeout(k.current),m.current){n||clearTimeout(E.current),C.current=m.current({...e,tree:g,x:L.clientX,y:L.clientY,onClose(){F(),N(),j(L,!0,"safe-polygon")}});const J=C.current;z.addEventListener("mousemove",J),S.current=()=>{z.removeEventListener("mousemove",J)};return}(_.current==="touch"?!qa(l,L.relatedTarget):!0)&&j(L)}function B(L){$()||m.current==null||m.current({...e,tree:g,x:L.clientX,y:L.clientY,onClose(){F(),N(),j(L)}})(L)}if(rt(a)){const L=a;return n&&L.addEventListener("mouseleave",B),l==null||l.addEventListener("mouseleave",B),y&&L.addEventListener("mousemove",U,{once:!0}),L.addEventListener("mouseenter",U),L.addEventListener("mouseleave",W),()=>{n&&L.removeEventListener("mouseleave",B),l==null||l.removeEventListener("mouseleave",B),y&&L.removeEventListener("mousemove",U),L.removeEventListener("mouseenter",U),L.removeEventListener("mouseleave",W)}}},[a,l,c,e,f,h,y,j,N,F,r,n,g,v,m,o]),Po(()=>{var $;if(c&&n&&($=m.current)!=null&&$.__options.blockPointerEvents&&O()){const W=Ra(l).body;if(W.setAttribute(im,""),W.style.pointerEvents="none",A.current=!0,rt(a)&&l){var U;const B=a,L=g==null||(U=g.nodesRef.current.find(z=>z.id===w))==null||(U=U.context)==null?void 0:U.elements.floating;return L&&(L.style.pointerEvents=""),B.style.pointerEvents="auto",l.style.pointerEvents="auto",()=>{B.style.pointerEvents="",l.style.pointerEvents=""}}}},[c,n,w,l,a,g,m,O]),Po(()=>{n||(_.current=void 0,N(),F())},[n,N,F]),p.useEffect(()=>()=>{N(),clearTimeout(E.current),clearTimeout(k.current),F()},[c,a,N,F]),p.useMemo(()=>{if(!c)return{};function $(U){_.current=U.pointerType}return{reference:{onPointerDown:$,onPointerEnter:$,onMouseMove(U){function W(){P.current||r(!0,U.nativeEvent,"hover")}f&&!Mc(_.current)||n||h===0||(clearTimeout(k.current),_.current==="touch"?W():k.current=setTimeout(W,h))}},floating:{onMouseEnter(){clearTimeout(E.current)},onMouseLeave(U){j(U.nativeEvent,!1)}}}},[c,f,n,h,r,j])}function KC(e,t){let n=e.filter(o=>{var i;return o.parentId===t&&((i=o.context)==null?void 0:i.open)}),r=n;for(;r.length;)r=e.filter(o=>{var i;return(i=r)==null?void 0:i.some(a=>{var l;return o.parentId===a.id&&((l=o.context)==null?void 0:l.open)})}),n=n.concat(r);return n}function GC(e){var t;e===void 0&&(e={});const{open:n=!1,onOpenChange:r,nodeId:o}=e,[i,a]=p.useState(null),[l,s]=p.useState(null),d=((t=e.elements)==null?void 0:t.reference)||i;Po(()=>{d&&(g.current=d)},[d]);const u=Tg({...e,elements:{...e.elements,...l&&{reference:l}}}),f=Ey(),h=wy()!=null,y=NC((A,S,O)=>{w.current.openEvent=A?S:void 0,m.emit("openchange",{open:A,event:S,reason:O,nested:h}),r==null||r(A,S,O)}),g=p.useRef(null),w=p.useRef({}),m=p.useState(()=>UC())[0],v=_y(),_=p.useCallback(A=>{const S=rt(A)?{getBoundingClientRect:()=>A.getBoundingClientRect(),contextElement:A}:A;s(S),u.refs.setReference(S)},[u.refs]),E=p.useCallback(A=>{(rt(A)||A===null)&&(g.current=A,a(A)),(rt(u.refs.reference.current)||u.refs.reference.current===null||A!==null&&!rt(A))&&u.refs.setReference(A)},[u.refs]),C=p.useMemo(()=>({...u.refs,setReference:E,setPositionReference:_,domReference:g}),[u.refs,E,_]),k=p.useMemo(()=>({...u.elements,domReference:d}),[u.elements,d]),P=p.useMemo(()=>({...u,refs:C,elements:k,dataRef:w,nodeId:o,floatingId:v,events:m,open:n,onOpenChange:y}),[u,o,v,m,n,y,C,k]);return Po(()=>{const A=f==null?void 0:f.nodesRef.current.find(S=>S.id===o);A&&(A.context=P)}),p.useMemo(()=>({...u,context:P,refs:C,elements:k}),[u,C,k,P])}const am="active",lm="selected";function uu(e,t,n){const r=new Map,o=n==="item";let i=e;if(o&&e){const{[am]:a,[lm]:l,...s}=e;i=s}return{...n==="floating"&&{tabIndex:-1},...i,...t.map(a=>{const l=a?a[n]:null;return typeof l=="function"?e?l(e):null:l}).concat(e).reduce((a,l)=>(l&&Object.entries(l).forEach(s=>{let[c,d]=s;if(!(o&&[am,lm].includes(c)))if(c.indexOf("on")===0){if(r.has(c)||r.set(c,[]),typeof d=="function"){var u;(u=r.get(c))==null||u.push(d),a[c]=function(){for(var f,h=arguments.length,y=new Array(h),g=0;gw(...y)).find(w=>w!==void 0)}}}else a[c]=d}),a),{})}}function qC(e){e===void 0&&(e=[]);const t=e,n=p.useCallback(i=>uu(i,e,"reference"),t),r=p.useCallback(i=>uu(i,e,"floating"),t),o=p.useCallback(i=>uu(i,e,"item"),e.map(i=>i==null?void 0:i.item));return p.useMemo(()=>({getReferenceProps:n,getFloatingProps:r,getItemProps:o}),[n,r,o])}function sm(e,t){const[n,r]=e;let o=!1;const i=t.length;for(let a=0,l=i-1;a=r!=u>=r&&n<=(d-s)*(r-c)/(u-c)+s&&(o=!o)}return o}function YC(e,t){return e[0]>=t.x&&e[0]<=t.x+t.width&&e[1]>=t.y&&e[1]<=t.y+t.height}function QC(e){e===void 0&&(e={});const{buffer:t=.5,blockPointerEvents:n=!1,requireIntent:r=!0}=e;let o,i=!1,a=null,l=null,s=performance.now();function c(u,f){const h=performance.now(),y=h-s;if(a===null||l===null||y===0)return a=u,l=f,s=h,null;const g=u-a,w=f-l,v=Math.sqrt(g*g+w*w)/y;return a=u,l=f,s=h,v}const d=u=>{let{x:f,y:h,placement:y,elements:g,onClose:w,nodeId:m,tree:v}=u;return function(E){function C(){clearTimeout(o),w()}if(clearTimeout(o),!g.domReference||!g.floating||y==null||f==null||h==null)return;const{clientX:k,clientY:P}=E,A=[k,P],S=IC(E),O=E.type==="mouseleave",j=qa(g.floating,S),N=qa(g.domReference,S),F=g.domReference.getBoundingClientRect(),$=g.floating.getBoundingClientRect(),U=y.split("-")[0],W=f>$.right-$.width/2,B=h>$.bottom-$.height/2,L=YC(A,F),z=$.width>F.width,G=$.height>F.height,J=(z?F:$).left,ue=(z?F:$).right,Ve=(G?F:$).top,xe=(G?F:$).bottom;if(j&&(i=!0,!O))return;if(N&&(i=!1),N&&!O){i=!0;return}if(O&&rt(E.relatedTarget)&&qa(g.floating,E.relatedTarget)||v&&KC(v.nodesRef.current,m).some(Be=>{let{context:we}=Be;return we==null?void 0:we.open}))return;if(U==="top"&&h>=F.bottom-1||U==="bottom"&&h<=F.top+1||U==="left"&&f>=F.right-1||U==="right"&&f<=F.left+1)return C();let $e=[];switch(U){case"top":$e=[[J,F.top+1],[J,$.bottom-1],[ue,$.bottom-1],[ue,F.top+1]];break;case"bottom":$e=[[J,$.top+1],[J,F.bottom-1],[ue,F.bottom-1],[ue,$.top+1]];break;case"left":$e=[[$.right-1,xe],[$.right-1,Ve],[F.left+1,Ve],[F.left+1,xe]];break;case"right":$e=[[F.right-1,xe],[F.right-1,Ve],[$.left+1,Ve],[$.left+1,xe]];break}function _e(Be){let[we,Ce]=Be;switch(U){case"top":{const Mt=[z?we+t/2:W?we+t*4:we-t*4,Ce+t+1],Pe=[z?we-t/2:W?we+t*4:we-t*4,Ce+t+1],dt=[[$.left,W||z?$.bottom-t:$.top],[$.right,W?z?$.bottom-t:$.top:$.bottom-t]];return[Mt,Pe,...dt]}case"bottom":{const Mt=[z?we+t/2:W?we+t*4:we-t*4,Ce-t],Pe=[z?we-t/2:W?we+t*4:we-t*4,Ce-t],dt=[[$.left,W||z?$.top+t:$.bottom],[$.right,W?z?$.top+t:$.bottom:$.top+t]];return[Mt,Pe,...dt]}case"left":{const Mt=[we+t+1,G?Ce+t/2:B?Ce+t*4:Ce-t*4],Pe=[we+t+1,G?Ce-t/2:B?Ce+t*4:Ce-t*4];return[...[[B||G?$.right-t:$.left,$.top],[B?G?$.right-t:$.left:$.right-t,$.bottom]],Mt,Pe]}case"right":{const Mt=[we-t,G?Ce+t/2:B?Ce+t*4:Ce-t*4],Pe=[we-t,G?Ce-t/2:B?Ce+t*4:Ce-t*4],dt=[[B||G?$.left+t:$.right,$.top],[B?G?$.left+t:$.right:$.left+t,$.bottom]];return[Mt,Pe,...dt]}}}if(!sm([k,P],$e)){if(i&&!L)return C();if(!O&&r){const Be=c(E.clientX,E.clientY);if(Be!==null&&Be<.1)return C()}sm([k,P],_e([f,h]))?!i&&r&&(o=window.setTimeout(C,40)):C()}}};return d.__options={blockPointerEvents:n},d}function ZC({children:e,...t}){const[n,r]=e,o=p.useRef(null),[i,a]=p.useState(!1),{context:l,refs:s,floatingStyles:c}=GC({middleware:[Ag({element:o}),vg(8),Pg()],open:i,onOpenChange:a,placement:"bottom-start"}),d=WC(l,{handleClose:QC()}),{getReferenceProps:u,getFloatingProps:f}=qC([d]),h=r.props.children,y=n.props.children;return x.jsxs("span",{...t,children:[x.jsx("span",{className:"twoslash-target",ref:s.setReference,...u(),children:h}),i&&x.jsxs("div",{className:"twoslash-popup-info-hover",ref:s.setFloating,style:c,...f(),children:[x.jsx(zC,{ref:o,context:l,fill:Jp.background5,height:3,stroke:Jp.border2,strokeWidth:1,width:7}),x.jsx("div",{className:"twoslash-popup-scroll-container",children:y})]})]})}function XC(e){var n;const t=D(e.className,tm);return(n=e.className)!=null&&n.includes("twoslash-hover")?x.jsx(ZC,{...e,className:t}):x.jsx("span",{...e,className:D(e.className,tm)})}var JC="vocs_CalloutTitle";function eP({className:e,children:t}){return x.jsx("strong",{className:D(e,JC),children:t})}var um="vocs_Strong";function tP(e){return"data-callout-title"in e&&typeof e.children=="string"?x.jsx(eP,{...e,className:D(e.className,um),children:e.children}):x.jsx("strong",{...e,className:D(e.className,um)})}var nP="vocs_Summary";function rP(e){return x.jsx("summary",{...e,className:D(e.className,nP)})}var oP="vocs_Table";function iP(e){return x.jsx("table",{...e,className:D(e.className,oP)})}var aP="vocs_TableCell";function lP(e){return x.jsx("td",{...e,className:D(e.className,aP)})}var sP="vocs_TableHeader";function uP(e){return x.jsx("th",{...e,className:D(e.className,sP)})}var cP="vocs_TableRow";function dP(e){return x.jsx("tr",{...e,className:D(e.className,cP)})}const fP={a:g6,aside:A6,blockquote:T6,code:$6,details:L6,div:nC,pre:TC,header:sC,figcaption:oC,figure:aC,h1:Xv,h2:hy,h3:my,h4:vy,h5:gy,h6:yy,hr:cC,kd:N1,li:mC,ol:e=>x.jsx(Jh,{ordered:!0,...e}),p:Jv,section:OC,span:XC,strong:tP,summary:rP,table:iP,td:lP,th:uP,tr:dP,ul:e=>x.jsx(Jh,{ordered:!1,...e})};function pP(){const{pathname:e}=Re(),t=Je(),{ogImageUrl:n}=t;if(!n)return;if(typeof n=="string")return n;const r=p.useMemo(()=>{const o=Object.keys(n).filter(i=>e.startsWith(i));return o[o.length-1]},[n,e]);if(r)return n[r]}function Fc(e){const{children:t,filePath:n,frontmatter:r,lastUpdatedAt:o,path:i}=e,{pathname:a}=Re(),l=p.useRef();return p.useEffect(()=>{l.current=a}),x.jsxs(x.Fragment,{children:[x.jsx(hP,{frontmatter:r}),typeof window<"u"&&x.jsx(Aw,{}),x.jsx(_k,{components:fP,children:x.jsx(r7,{frontmatter:r,path:i,children:x.jsx(n1.Provider,{value:{filePath:n,frontmatter:r,lastUpdatedAt:o,previousPath:l.current},children:t})})})]})}function hP({frontmatter:e}){const t=Je(),n=pP(),{baseUrl:r,font:o,iconUrl:i,logoUrl:a}=t,l=(e==null?void 0:e.title)??t.title,s=(e==null?void 0:e.description)??t.description,c=t.title&&!l.includes(t.title),d=typeof window<"u"&&window.location.hostname==="localhost";return x.jsxs(Dc,{defaultTitle:t.title,titleTemplate:c?t.titleTemplate:void 0,children:[l&&x.jsx("title",{children:l}),r&&!0&&!d&&x.jsx("base",{href:r}),s!=="undefined"&&x.jsx("meta",{name:"description",content:s}),i&&typeof i=="string"&&x.jsx("link",{rel:"icon",href:i,type:cu(i)}),i&&typeof i!="string"&&x.jsx("link",{rel:"icon",href:i.light,type:cu(i.light)}),i&&typeof i!="string"&&x.jsx("link",{rel:"icon",href:i.dark,type:cu(i.dark),media:"(prefers-color-scheme: dark)"}),x.jsx("meta",{property:"og:type",content:"website"}),x.jsx("meta",{property:"og:title",content:l||t.title}),r&&x.jsx("meta",{property:"og:url",content:r}),s!=="undefined"&&x.jsx("meta",{property:"og:description",content:s}),n&&x.jsx("meta",{property:"og:image",content:n.replace("%logo",`${r||""}${typeof a=="string"?a:(a==null?void 0:a.dark)||""}`).replace("%title",l||"").replace("%description",(s!=="undefined"?s:"")||"")}),(o==null?void 0:o.google)&&x.jsx("link",{rel:"preconnect",href:"https://fonts.googleapis.com"}),(o==null?void 0:o.google)&&x.jsx("link",{rel:"preconnect",href:"https://fonts.gstatic.com",crossOrigin:""}),(o==null?void 0:o.google)&&x.jsx("link",{href:`https://fonts.googleapis.com/css2?family=${o.google}:wght@300;400;500&display=swap`,rel:"stylesheet"}),x.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),n&&x.jsx("meta",{property:"twitter:image",content:n.replace("%logo",`${r||""}${typeof a=="string"?a:(a==null?void 0:a.dark)||""}`).replace("%title",l||"").replace("%description",(s!=="undefined"?s:"")||"")})]})}function cu(e){if(e.endsWith(".svg"))return"image/svg+xml";if(e.endsWith(".png"))return"image/png";if(e.endsWith(".jpg"))return"image/jpeg";if(e.endsWith(".ico"))return"image/x-icon";if(e.endsWith(".webp"))return"image/webp"}const mP=(()=>{const e=Hd.find(({path:t})=>t==="*");return e?{path:e.path,lazy:async()=>{const{frontmatter:t,...n}=await e.lazy();return{...n,element:x.jsx(Fc,{frontmatter:t,path:e.path,children:x.jsx(Rc,{children:x.jsx(n.default,{})})})}}}:{path:"*",lazy:void 0,element:x.jsx(Fc,{frontmatter:{layout:"minimal"},path:"*",children:x.jsx(Rc,{children:x.jsx(d3,{})})})}})(),cm=[...Hd.filter(({path:e})=>e!=="*").map(e=>({path:e.path,lazy:async()=>{const{frontmatter:t,...n}=await e.lazy();return{...n,element:x.jsx(Fc,{filePath:e.filePath,frontmatter:t,lastUpdatedAt:e.lastUpdatedAt,path:e.path,children:x.jsx(Rc,{children:x.jsx(n.default,{})})})}}})),mP];async function vP(e,t){var r;const n=(r=pr(e,window.location,t))==null?void 0:r.filter(o=>o.route.lazy);n&&(n==null?void 0:n.length)>0&&await Promise.all(n.map(async o=>{const i=await o.route.lazy();Object.assign(o.route,{...i,lazy:void 0})}))}function gP(){const e=document.querySelectorAll('style[data-vocs-temp-style="true"]');for(const t of e)t.remove()}yP();async function yP(){const e=Kv().basePath;await vP(cm,e),gP();const t=hw(cm,{basename:e});Cv(document.getElementById("app"),x.jsx(Ww,{children:x.jsx(kw,{router:t})}))}export{Fb as C,rn as L,Nb as R,jb as T,a5 as a,Mb as b,D as c,xk as d,C6 as e,Ty as f,xP as g,tr as h,_P as i,x as j,p as r,wP as s,Je as u}; +*/var Gh=Object.getOwnPropertySymbols,Fk=Object.prototype.hasOwnProperty,zk=Object.prototype.propertyIsEnumerable;function Uk(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function Vk(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(t).map(function(i){return t[i]});if(r.join("")!=="0123456789")return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach(function(i){o[i]=i}),Object.keys(Object.assign({},o)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}var Bk=Vk()?Object.assign:function(e,t){for(var n,r=Uk(e),o,i=1;i=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},Zk=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t&&(typeof t=="object"||typeof t=="function")?t:e},Oc=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return n===!1?String(t):String(t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},Xk=function(t){var n=po(t,ee.TITLE),r=po(t,Fi.TITLE_TEMPLATE);if(r&&n)return r.replace(/%s/g,function(){return Array.isArray(n)?n.join(""):n});var o=po(t,Fi.DEFAULT_TITLE);return n||o||void 0},Jk=function(t){return po(t,Fi.ON_CHANGE_CLIENT_STATE)||function(){}},iu=function(t,n){return n.filter(function(r){return typeof r[t]<"u"}).map(function(r){return r[t]}).reduce(function(r,o){return pt({},r,o)},{})},e6=function(t,n){return n.filter(function(r){return typeof r[ee.BASE]<"u"}).map(function(r){return r[ee.BASE]}).reverse().reduce(function(r,o){if(!r.length)for(var i=Object.keys(o),a=0;a=0;r--){var o=t[r];if(o.hasOwnProperty(n))return o[n]}return null},t6=function(t){return{baseTag:e6([ke.HREF,ke.TARGET],t),bodyAttributes:iu(yr.BODY,t),defer:po(t,Fi.DEFER),encode:po(t,Fi.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:iu(yr.HTML,t),linkTags:Jo(ee.LINK,[ke.REL,ke.HREF],t),metaTags:Jo(ee.META,[ke.NAME,ke.CHARSET,ke.HTTPEQUIV,ke.PROPERTY,ke.ITEM_PROP],t),noscriptTags:Jo(ee.NOSCRIPT,[ke.INNER_HTML],t),onChangeClientState:Jk(t),scriptTags:Jo(ee.SCRIPT,[ke.SRC,ke.INNER_HTML],t),styleTags:Jo(ee.STYLE,[ke.CSS_TEXT],t),title:Xk(t),titleAttributes:iu(yr.TITLE,t)}},Ic=function(){var e=Date.now();return function(t){var n=Date.now();n-e>16?(e=n,t(n)):setTimeout(function(){Ic(t)},0)}}(),Yh=function(t){return clearTimeout(t)},n6=typeof window<"u"?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||Ic:global.requestAnimationFrame||Ic,r6=typeof window<"u"?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||Yh:global.cancelAnimationFrame||Yh,o6=function(t){return console&&typeof console.warn=="function"&&console.warn(t)},ei=null,i6=function(t){ei&&r6(ei),t.defer?ei=n6(function(){Qh(t,function(){ei=null})}):(Qh(t),ei=null)},Qh=function(t,n){var r=t.baseTag,o=t.bodyAttributes,i=t.htmlAttributes,a=t.linkTags,l=t.metaTags,s=t.noscriptTags,c=t.onChangeClientState,d=t.scriptTags,u=t.styleTags,f=t.title,h=t.titleAttributes;Lc(ee.BODY,o),Lc(ee.HTML,i),a6(f,h);var y={baseTag:Br(ee.BASE,r),linkTags:Br(ee.LINK,a),metaTags:Br(ee.META,l),noscriptTags:Br(ee.NOSCRIPT,s),scriptTags:Br(ee.SCRIPT,d),styleTags:Br(ee.STYLE,u)},g={},w={};Object.keys(y).forEach(function(m){var v=y[m],_=v.newTags,E=v.oldTags;_.length&&(g[m]=_),E.length&&(w[m]=y[m].oldTags)}),n&&n(),c(t,g,w)},ey=function(t){return Array.isArray(t)?t.join(""):t},a6=function(t,n){typeof t<"u"&&document.title!==t&&(document.title=ey(t)),Lc(ee.TITLE,n)},Lc=function(t,n){var r=document.getElementsByTagName(t)[0];if(r){for(var o=r.getAttribute(Ht),i=o?o.split(","):[],a=[].concat(i),l=Object.keys(n),s=0;s=0;f--)r.removeAttribute(a[f]);i.length===a.length?r.removeAttribute(Ht):r.getAttribute(Ht)!==l.join(",")&&r.setAttribute(Ht,l.join(","))}},Br=function(t,n){var r=document.head||document.querySelector(ee.HEAD),o=r.querySelectorAll(t+"["+Ht+"]"),i=Array.prototype.slice.call(o),a=[],l=void 0;return n&&n.length&&n.forEach(function(s){var c=document.createElement(t);for(var d in s)if(s.hasOwnProperty(d))if(d===ke.INNER_HTML)c.innerHTML=s.innerHTML;else if(d===ke.CSS_TEXT)c.styleSheet?c.styleSheet.cssText=s.cssText:c.appendChild(document.createTextNode(s.cssText));else{var u=typeof s[d]>"u"?"":s[d];c.setAttribute(d,u)}c.setAttribute(Ht,"true"),i.some(function(f,h){return l=h,c.isEqualNode(f)})?i.splice(l,1):a.push(c)}),i.forEach(function(s){return s.parentNode.removeChild(s)}),a.forEach(function(s){return r.appendChild(s)}),{oldTags:i,newTags:a}},ty=function(t){return Object.keys(t).reduce(function(n,r){var o=typeof t[r]<"u"?r+'="'+t[r]+'"':""+r;return n?n+" "+o:o},"")},l6=function(t,n,r,o){var i=ty(r),a=ey(n);return i?"<"+t+" "+Ht+'="true" '+i+">"+Oc(a,o)+"":"<"+t+" "+Ht+'="true">'+Oc(a,o)+""},s6=function(t,n,r){return n.reduce(function(o,i){var a=Object.keys(i).filter(function(c){return!(c===ke.INNER_HTML||c===ke.CSS_TEXT)}).reduce(function(c,d){var u=typeof i[d]>"u"?d:d+'="'+Oc(i[d],r)+'"';return c?c+" "+u:u},""),l=i.innerHTML||i.cssText||"",s=Kk.indexOf(t)===-1;return o+"<"+t+" "+Ht+'="true" '+a+(s?"/>":">"+l+"")},"")},ny=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(t).reduce(function(r,o){return r[Al[o]||o]=t[o],r},n)},u6=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(t).reduce(function(r,o){return r[Wk[o]||o]=t[o],r},n)},c6=function(t,n,r){var o,i=(o={key:n},o[Ht]=!0,o),a=ny(r,i);return[Z.createElement(ee.TITLE,a,n)]},d6=function(t,n){return n.map(function(r,o){var i,a=(i={key:o},i[Ht]=!0,i);return Object.keys(r).forEach(function(l){var s=Al[l]||l;if(s===ke.INNER_HTML||s===ke.CSS_TEXT){var c=r.innerHTML||r.cssText;a.dangerouslySetInnerHTML={__html:c}}else a[s]=r[l]}),Z.createElement(t,a)})},ln=function(t,n,r){switch(t){case ee.TITLE:return{toComponent:function(){return c6(t,n.title,n.titleAttributes)},toString:function(){return l6(t,n.title,n.titleAttributes,r)}};case yr.BODY:case yr.HTML:return{toComponent:function(){return ny(n)},toString:function(){return ty(n)}};default:return{toComponent:function(){return d6(t,n)},toString:function(){return s6(t,n,r)}}}},ry=function(t){var n=t.baseTag,r=t.bodyAttributes,o=t.encode,i=t.htmlAttributes,a=t.linkTags,l=t.metaTags,s=t.noscriptTags,c=t.scriptTags,d=t.styleTags,u=t.title,f=u===void 0?"":u,h=t.titleAttributes;return{base:ln(ee.BASE,n,o),bodyAttributes:ln(yr.BODY,r,o),htmlAttributes:ln(yr.HTML,i,o),link:ln(ee.LINK,a,o),meta:ln(ee.META,l,o),noscript:ln(ee.NOSCRIPT,s,o),script:ln(ee.SCRIPT,c,o),style:ln(ee.STYLE,d,o),title:ln(ee.TITLE,{title:f,titleAttributes:h},o)}},f6=function(t){var n,r;return r=n=function(o){Qk(i,o);function i(){return qk(this,i),Zk(this,o.apply(this,arguments))}return i.prototype.shouldComponentUpdate=function(l){return!jk(this.props,l)},i.prototype.mapNestedChildrenToProps=function(l,s){if(!s)return null;switch(l.type){case ee.SCRIPT:case ee.NOSCRIPT:return{innerHTML:s};case ee.STYLE:return{cssText:s}}throw new Error("<"+l.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},i.prototype.flattenArrayTypeChildren=function(l){var s,c=l.child,d=l.arrayTypeChildren,u=l.newChildProps,f=l.nestedChildren;return pt({},d,(s={},s[c.type]=[].concat(d[c.type]||[],[pt({},u,this.mapNestedChildrenToProps(c,f))]),s))},i.prototype.mapObjectTypeChildren=function(l){var s,c,d=l.child,u=l.newProps,f=l.newChildProps,h=l.nestedChildren;switch(d.type){case ee.TITLE:return pt({},u,(s={},s[d.type]=h,s.titleAttributes=pt({},f),s));case ee.BODY:return pt({},u,{bodyAttributes:pt({},f)});case ee.HTML:return pt({},u,{htmlAttributes:pt({},f)})}return pt({},u,(c={},c[d.type]=pt({},f),c))},i.prototype.mapArrayTypeChildrenToProps=function(l,s){var c=pt({},s);return Object.keys(l).forEach(function(d){var u;c=pt({},c,(u={},u[d]=l[d],u))}),c},i.prototype.warnOnInvalidChildren=function(l,s){return!0},i.prototype.mapChildrenToProps=function(l,s){var c=this,d={};return Z.Children.forEach(l,function(u){if(!(!u||!u.props)){var f=u.props,h=f.children,y=qh(f,["children"]),g=u6(y);switch(c.warnOnInvalidChildren(u,h),u.type){case ee.LINK:case ee.META:case ee.NOSCRIPT:case ee.SCRIPT:case ee.STYLE:d=c.flattenArrayTypeChildren({child:u,arrayTypeChildren:d,newChildProps:g,nestedChildren:h});break;default:s=c.mapObjectTypeChildren({child:u,newProps:s,newChildProps:g,nestedChildren:h});break}}}),s=this.mapArrayTypeChildrenToProps(d,s),s},i.prototype.render=function(){var l=this.props,s=l.children,c=qh(l,["children"]),d=pt({},c);return s&&(d=this.mapChildrenToProps(s,d)),Z.createElement(t,d)},Yk(i,null,[{key:"canUseDOM",set:function(l){t.canUseDOM=l}}]),i}(Z.Component),n.propTypes={base:Ee.object,bodyAttributes:Ee.object,children:Ee.oneOfType([Ee.arrayOf(Ee.node),Ee.node]),defaultTitle:Ee.string,defer:Ee.bool,encodeSpecialCharacters:Ee.bool,htmlAttributes:Ee.object,link:Ee.arrayOf(Ee.object),meta:Ee.arrayOf(Ee.object),noscript:Ee.arrayOf(Ee.object),onChangeClientState:Ee.func,script:Ee.arrayOf(Ee.object),style:Ee.arrayOf(Ee.object),title:Ee.string,titleAttributes:Ee.object,titleTemplate:Ee.string},n.defaultProps={defer:!0,encodeSpecialCharacters:!0},n.peek=t.peek,n.rewind=function(){var o=t.rewind();return o||(o=ry({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),o},r},p6=function(){return null},h6=Ok(t6,i6,ry)(p6),Dc=f6(h6);Dc.renderStatic=Dc.rewind;var au="vocs_Anchor",m6="vocs_Autolink";function v6(e){const{pathname:t}=Re();return x.jsx("a",{...e,className:D(e.className,m6),href:`${t}${e.href}`})}function g6(e){const{children:t,href:n}=e,{pathname:r}=Re();return t&&typeof t=="object"&&"props"in t&&t.props["data-autolink-icon"]?x.jsx(v6,{className:D(e.className,au),...e}):n!=null&&n.match(/^#/)?x.jsx("a",{className:D(e.className,au),...e,href:`${r}${n}`}):x.jsx(rn,{className:D(e.className,au),...e})}var y6="vocs_Callout_danger",x6="vocs_Callout_info",_6="vocs_Callout_note",oy="vocs_Callout",w6="vocs_Callout_success",E6="vocs_Callout_tip",k6="vocs_Callout_warning";const b6=Object.freeze(Object.defineProperty({__proto__:null,danger:y6,info:x6,note:_6,root:oy,success:w6,tip:E6,warning:k6},Symbol.toStringTag,{value:"Module"}));function C6({className:e,children:t,type:n}){return x.jsx("aside",{className:D(e,oy,b6[n]),children:t})}var P6="vocs_Aside";function A6(e){const t=D(e.className,P6);return"data-callout"in e?x.jsx(C6,{className:t,type:e["data-callout"],children:e.children}):x.jsx("aside",{...e,className:t})}var S6="vocs_Blockquote";function T6(e){return x.jsx("blockquote",{...e,className:D(e.className,S6)})}var R6="vocs_Code";function $6(e){const t=O6(e.children);return x.jsx("code",{...e,className:D(e.className,R6),children:t})}function O6(e){return Array.isArray(e)?e.map((t,n)=>{var r,o,i;return t.props&&"data-line"in t.props&&typeof t.props.children=="string"&&t.props.children.trim()===""&&((i=(o=(r=e[n+1])==null?void 0:r.props)==null?void 0:o.className)!=null&&i.includes("twoslash-tag-line"))?null:t}).filter(Boolean):e}var I6="vocs_Details";function L6(e){return x.jsx("details",{...e,className:D(e.className,I6)})}var D6="vocs_Authors_authors",N6="vocs_Authors_link",M6="vocs_Authors",Zh="vocs_Authors_separator";function iy(e){const{frontmatter:t}=$r(),{authors:n=t==null?void 0:t.authors,date:r=t==null?void 0:t.date}=e,o=p.useMemo(()=>{if(n)return Array.isArray(n)?n:n.split(",").map(a=>a.trim())},[n]),i=p.useMemo(()=>r?new Date(r).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"}):null,[r]);return x.jsxs("div",{className:M6,children:[i,o&&(i?" by ":"By "),x.jsx("span",{className:D6,children:o==null?void 0:o.map((a,l)=>{const{text:s,url:c}=j6(a);return x.jsxs(p.Fragment,{children:[c?x.jsx("a",{className:N6,href:c,target:"_blank",rel:"noopener noreferrer",children:s}):s,lx.jsxs(p.Fragment,{children:[x.jsx("div",{className:U6,children:x.jsxs(Zn,{to:e.path,children:[x.jsx("h2",{className:H6,children:e.title}),x.jsx(iy,{authors:e.authors,date:e.date}),x.jsxs("p",{className:F6,children:[e.description," ",x.jsx("span",{className:V6,children:"[→]"})]})]})}),tx.jsxs(p.Fragment,{children:[x.jsx("div",{className:J6,children:t.name}),t.items.map((r,o)=>{var i;return x.jsx("div",{className:Z6,style:qt({[G6]:r.length.toString(),[q6]:`${((i=t.height)==null?void 0:i.toString())??"40"}px`}),children:r.map((a,l)=>x.jsx(rn,{className:D(K6,a?X6:void 0),hideExternalIcon:!0,href:a==null?void 0:a.link,variant:"styleless",children:x.jsx("img",{className:Y6,src:a==null?void 0:a.image,alt:a==null?void 0:a.name})},l))},o)})]},n))})}var tb="var(--vocs_AutolinkIcon_iconUrl)",nb="vocs_AutolinkIcon";function rb(e){const{basePath:t}=Je(),n=t;return x.jsx("div",{...e,className:D(e.className,nb),style:qt({[tb]:`url(${n}/.vocs/icons/link.svg)`})})}const lu="rovingFocusGroup.onEntryFocus",ob={bubbles:!1,cancelable:!0},pf="RovingFocusGroup",[Nc,ay,ib]=Yl(pf),[ab,ly]=kn(pf,[ib]),[lb,sb]=ab(pf),ub=p.forwardRef((e,t)=>p.createElement(Nc.Provider,{scope:e.__scopeRovingFocusGroup},p.createElement(Nc.Slot,{scope:e.__scopeRovingFocusGroup},p.createElement(cb,q({},e,{ref:t}))))),cb=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:o=!1,dir:i,currentTabStopId:a,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:s,onEntryFocus:c,...d}=e,u=p.useRef(null),f=Ue(t,u),h=ql(i),[y=null,g]=ar({prop:a,defaultProp:l,onChange:s}),[w,m]=p.useState(!1),v=at(c),_=ay(n),E=p.useRef(!1),[C,k]=p.useState(0);return p.useEffect(()=>{const P=u.current;if(P)return P.addEventListener(lu,v),()=>P.removeEventListener(lu,v)},[v]),p.createElement(lb,{scope:n,orientation:r,dir:h,loop:o,currentTabStopId:y,onItemFocus:p.useCallback(P=>g(P),[g]),onItemShiftTab:p.useCallback(()=>m(!0),[]),onFocusableItemAdd:p.useCallback(()=>k(P=>P+1),[]),onFocusableItemRemove:p.useCallback(()=>k(P=>P-1),[])},p.createElement(fe.div,q({tabIndex:w||C===0?-1:0,"data-orientation":r},d,{ref:f,style:{outline:"none",...e.style},onMouseDown:le(e.onMouseDown,()=>{E.current=!0}),onFocus:le(e.onFocus,P=>{const A=!E.current;if(P.target===P.currentTarget&&A&&!w){const S=new CustomEvent(lu,ob);if(P.currentTarget.dispatchEvent(S),!S.defaultPrevented){const O=_().filter(U=>U.focusable),j=O.find(U=>U.active),N=O.find(U=>U.id===y),$=[j,N,...O].filter(Boolean).map(U=>U.ref.current);sy($)}}E.current=!1}),onBlur:le(e.onBlur,()=>m(!1))})))}),db="RovingFocusGroupItem",fb=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:o=!1,tabStopId:i,...a}=e,l=on(),s=i||l,c=sb(db,n),d=c.currentTabStopId===s,u=ay(n),{onFocusableItemAdd:f,onFocusableItemRemove:h}=c;return p.useEffect(()=>{if(r)return f(),()=>h()},[r,f,h]),p.createElement(Nc.ItemSlot,{scope:n,id:s,focusable:r,active:o},p.createElement(fe.span,q({tabIndex:d?0:-1,"data-orientation":c.orientation},a,{ref:t,onMouseDown:le(e.onMouseDown,y=>{r?c.onItemFocus(s):y.preventDefault()}),onFocus:le(e.onFocus,()=>c.onItemFocus(s)),onKeyDown:le(e.onKeyDown,y=>{if(y.key==="Tab"&&y.shiftKey){c.onItemShiftTab();return}if(y.target!==y.currentTarget)return;const g=mb(y,c.orientation,c.dir);if(g!==void 0){y.preventDefault();let m=u().filter(v=>v.focusable).map(v=>v.ref.current);if(g==="last")m.reverse();else if(g==="prev"||g==="next"){g==="prev"&&m.reverse();const v=m.indexOf(y.currentTarget);m=c.loop?vb(m,v+1):m.slice(v+1)}setTimeout(()=>sy(m))}})})))}),pb={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function hb(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function mb(e,t,n){const r=hb(e.key,n);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return pb[r]}function sy(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function vb(e,t){return e.map((n,r)=>e[(t+r)%e.length])}const gb=ub,yb=fb,uy="Tabs",[xb,SP]=kn(uy,[ly]),cy=ly(),[_b,hf]=xb(uy),wb=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,onValueChange:o,defaultValue:i,orientation:a="horizontal",dir:l,activationMode:s="automatic",...c}=e,d=ql(l),[u,f]=ar({prop:r,onChange:o,defaultProp:i});return p.createElement(_b,{scope:n,baseId:on(),value:u,onValueChange:f,orientation:a,dir:d,activationMode:s},p.createElement(fe.div,q({dir:d,"data-orientation":a},c,{ref:t})))}),Eb="TabsList",kb=p.forwardRef((e,t)=>{const{__scopeTabs:n,loop:r=!0,...o}=e,i=hf(Eb,n),a=cy(n);return p.createElement(gb,q({asChild:!0},a,{orientation:i.orientation,dir:i.dir,loop:r}),p.createElement(fe.div,q({role:"tablist","aria-orientation":i.orientation},o,{ref:t})))}),bb="TabsTrigger",Cb=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,disabled:o=!1,...i}=e,a=hf(bb,n),l=cy(n),s=dy(a.baseId,r),c=fy(a.baseId,r),d=r===a.value;return p.createElement(yb,q({asChild:!0},l,{focusable:!o,active:d}),p.createElement(fe.button,q({type:"button",role:"tab","aria-selected":d,"aria-controls":c,"data-state":d?"active":"inactive","data-disabled":o?"":void 0,disabled:o,id:s},i,{ref:t,onMouseDown:le(e.onMouseDown,u=>{!o&&u.button===0&&u.ctrlKey===!1?a.onValueChange(r):u.preventDefault()}),onKeyDown:le(e.onKeyDown,u=>{[" ","Enter"].includes(u.key)&&a.onValueChange(r)}),onFocus:le(e.onFocus,()=>{const u=a.activationMode!=="manual";!d&&!o&&u&&a.onValueChange(r)})})))}),Pb="TabsContent",Ab=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,forceMount:o,children:i,...a}=e,l=hf(Pb,n),s=dy(l.baseId,r),c=fy(l.baseId,r),d=r===l.value,u=p.useRef(d);return p.useEffect(()=>{const f=requestAnimationFrame(()=>u.current=!1);return()=>cancelAnimationFrame(f)},[]),p.createElement(bn,{present:o||d},({present:f})=>p.createElement(fe.div,q({"data-state":d?"active":"inactive","data-orientation":l.orientation,role:"tabpanel","aria-labelledby":s,hidden:!f,id:c,tabIndex:0},a,{ref:t,style:{...e.style,animationDuration:u.current?"0s":void 0}}),f&&i))});function dy(e,t){return`${e}-trigger-${t}`}function fy(e,t){return`${e}-content-${t}`}const Sb=wb,Tb=kb,Rb=Cb,$b=Ab;var Ob="vocs_Tabs_content",Ib="vocs_Tabs_list",Lb="vocs_Tabs",Db="vocs_Tabs_trigger";function Nb(e){return x.jsx(Sb,{...e,className:D(e.className,Lb)})}function Mb(e){return x.jsx(Tb,{...e,className:D(e.className,Ib)})}function jb(e){return x.jsx(Rb,{...e,className:D(e.className,Db)})}function Fb(e){return x.jsx($b,{...e,className:D(e.className,Ob)})}var zb="vocs_CodeGroup";function Ub({children:e}){if(!Array.isArray(e))return null;const t=e.map(n=>{const r=n.props["data-title"]?n:n.props.children,{props:o}=r,i=o["data-title"],a=o.children;return{title:i,content:a}});return x.jsxs(Nb,{className:zb,defaultValue:t[0].title,children:[x.jsx(Mb,{"aria-label":"Code group",children:t.map(({title:n},r)=>x.jsx(jb,{value:n||r.toString(),children:n},n||r.toString()))}),t.map(({title:n,content:r},o)=>{var a,l;const i=(l=(a=r.props)==null?void 0:a.className)==null?void 0:l.includes("shiki");return x.jsx(Fb,{"data-shiki":i,value:n||o.toString(),children:r},n||o.toString())})]})}var Vb="vocs_Div",Bb="vocs_Step_content",Hb="vocs_Step",py="vocs_Step_title",Wb="vocs_H2";function hy(e){return x.jsx(Oo,{...e,className:D(e.className,Wb),level:2})}var Kb="vocs_H3";function my(e){return x.jsx(Oo,{...e,className:D(e.className,Kb),level:3})}var Gb="vocs_H4";function vy(e){return x.jsx(Oo,{...e,className:D(e.className,Gb),level:4})}var qb="vocs_H5";function gy(e){return x.jsx(Oo,{...e,className:D(e.className,qb),level:5})}var Yb="vocs_H6";function yy(e){return x.jsx(Oo,{...e,className:D(e.className,Yb),level:6})}function Qb({children:e,className:t,title:n,titleLevel:r=2}){const o=(()=>{if(r===2)return hy;if(r===3)return my;if(r===4)return vy;if(r===5)return gy;if(r===6)return yy;throw new Error("Invalid.")})();return x.jsxs("div",{className:D(t,Hb),children:[typeof n=="string"?x.jsx(o,{className:py,children:n}):n,x.jsx("div",{className:Bb,children:e})]})}var Zb="vocs_Steps";function Xb({children:e,className:t}){return x.jsx("div",{className:D(t,Zb),children:e})}function Jb({children:e}){return Array.isArray(e)?x.jsx(Xb,{children:e.map(({props:t},n)=>{const[r,...o]=Array.isArray(t.children)?t.children:[t.children];return x.jsx(Qb,{title:p.cloneElement(r,{className:py}),children:o},n)})}):null}var eC="vocs_Subtitle";function tC({children:e}){return x.jsx("div",{className:eC,role:"doc-subtitle",children:e})}function nC(e){const{layout:t}=Or(),n=D(e.className,Vb);return e.className==="code-group"?x.jsx(Ub,{...e,className:n}):"data-authors"in e?x.jsx(iy,{}):"data-blog-posts"in e?x.jsx(W6,{}):"data-sponsors"in e?x.jsx(eb,{}):"data-autolink-icon"in e&&t==="docs"?x.jsx(rb,{...e,className:n}):"data-vocs-steps"in e?x.jsx(Jb,{...e,className:n}):e.role==="doc-subtitle"?x.jsx(tC,{...e}):x.jsx("div",{...e,className:n})}var rC="vocs_Figcaption";function oC(e){const t=D(e.className,rC);return x.jsx("figcaption",{...e,className:t})}var iC="vocs_Figure";function aC(e){const t=D(e.className,iC);return x.jsx("figure",{...e,className:t})}var lC="vocs_Header";function sC(e){return x.jsx("header",{...e,className:D(e.className,lC)})}var uC="vocs_HorizontalRule";function cC(e){return x.jsx("hr",{...e,className:D(e.className,uC)})}var dC="vocs_List_ordered",fC="vocs_List",pC="vocs_List_unordered";function Jh({ordered:e,...t}){const n=e?"ol":"ul";return x.jsx(n,{...t,className:D(t.className,fC,e?dC:pC)})}var hC="vocs_ListItem";function mC(e){return x.jsx("li",{...e,className:D(e.className,hC)})}function vC(){const e=p.useRef(null),[t,n]=p.useState(!1);p.useEffect(()=>{if(!t)return;const o=setTimeout(()=>n(!1),1e3);return()=>clearTimeout(o)},[t]);function r(){var a;n(!0);const o=(a=e.current)==null?void 0:a.cloneNode(!0),i=o==null?void 0:o.querySelectorAll("button,.line.diff.remove,.twoslash-popup-info-hover,.twoslash-popup-info,.twoslash-meta-line,.twoslash-tag-line");for(const l of i??[])l.remove();navigator.clipboard.writeText(o==null?void 0:o.textContent)}return{copied:t,copy:r,ref:e}}var gC="vocs_CopyButton";function yC(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 68 67",children:[x.jsx("title",{children:"Checkmark"}),x.jsx("path",{fill:"currentColor",d:"M26.175 66.121c1.904 0 3.418-.83 4.492-2.49L66.263 7.332c.83-1.27 1.123-2.295 1.123-3.32 0-2.393-1.563-4.004-4.004-4.004-1.758 0-2.734.586-3.809 2.295L25.98 56.209 8.304 32.381c-1.123-1.514-2.198-2.149-3.809-2.149-2.441 0-4.2 1.71-4.2 4.15 0 1.026.44 2.15 1.27 3.224l19.971 25.927c1.367 1.758 2.734 2.588 4.639 2.588Z"})]})}function xC(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 82 82",children:[x.jsx("title",{children:"Copy"}),x.jsx("path",{fill:"currentColor",d:"M12.451 63.281h38.38c8.3 0 12.45-4.053 12.45-12.256v-38.77C63.281 4.054 59.131 0 50.831 0H12.45C4.101 0 0 4.053 0 12.256v38.77C0 59.227 4.102 63.28 12.451 63.28Zm.098-7.031c-3.516 0-5.518-1.904-5.518-5.615V12.647c0-3.711 2.002-5.616 5.518-5.616h38.183c3.516 0 5.518 1.905 5.518 5.615v37.989c0 3.71-2.002 5.615-5.518 5.615H12.55Z"}),x.jsx("path",{stroke:"currentColor",strokeWidth:"6.75px",d:"M69.385 78.266h-38.38c-3.679 0-5.782-.894-6.987-2.081-1.196-1.178-2.088-3.219-2.088-6.8v-38.77c0-3.581.892-5.622 2.088-6.8 1.205-1.187 3.308-2.08 6.988-2.08h38.379c3.65 0 5.758.89 6.973 2.084 1.203 1.182 2.103 3.225 2.103 6.796v38.77c0 3.57-.9 5.614-2.103 6.796-1.215 1.193-3.323 2.085-6.973 2.085Z"})]})}function _C({copy:e,copied:t}){return x.jsx("button",{className:gC,onClick:e,type:"button",children:t?x.jsx(st,{label:"Copied",size:"14px",icon:yC}):x.jsx(st,{label:"Copy",size:"18px",icon:xC})})}var wC="vocs_CodeBlock";function EC(e){return x.jsx("div",{...e,className:D(e.className,wC)})}function kC(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 94 99",fill:"none",children:[x.jsx("title",{children:"File"}),x.jsx("rect",{width:"77px",height:"89px",x:"8px",y:"3px",stroke:"currentColor",strokeWidth:"6px",rx:"7px"}),x.jsx("path",{stroke:"currentColor",strokeLinecap:"round",strokeWidth:"6px",d:"M25 22h43M25 35h43M25 48h22"})]})}function bC(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 79 95",fill:"none",children:[x.jsx("title",{children:"Terminal"}),x.jsx("path",{fill:"currentColor",d:"M38.281 34.033c0-1.074-.39-2.05-1.22-2.88L6.885 1.171C6.152.39 5.175 0 4.053 0 1.758 0 0 1.709 0 4.004c0 1.074.488 2.1 1.172 2.88l27.295 27.15L1.172 61.181C.488 61.962 0 62.939 0 64.062c0 2.295 1.758 4.004 4.053 4.004 1.123 0 2.1-.39 2.832-1.172l30.176-29.98c.83-.83 1.22-1.807 1.22-2.88Z"}),x.jsx("path",{stroke:"currentColor",strokeLinecap:"round",strokeWidth:"8px",d:"M36 75h55"})]})}var CC="vocs_CodeTitle";function PC({children:e,className:t,language:n,...r}){return x.jsxs("div",{...r,className:D(t,CC),children:[n==="bash"?x.jsx(st,{label:"Terminal",size:"14px",icon:bC,style:{marginTop:3}}):e.match(/\.(.*)$/)?x.jsx(st,{label:"File",size:"14px",icon:kC,style:{marginTop:1}}):null,e]})}var AC="vocs_Pre",SC="vocs_Pre_wrapper";function TC({children:e,className:t,...n}){const{copied:r,copy:o,ref:i}=vC();function a(c){return!c||typeof c!="object"?c:"props"in c?{...c,props:{...c.props,children:Array.isArray(c.props.children)?c.props.children.map(a):a(c.props.children)}}:c}const l=p.useMemo(()=>a(e),[e]);return(c=>t!=null&&t.includes("shiki")?x.jsxs(EC,{children:[n["data-title"]&&x.jsx(PC,{language:n["data-lang"],children:n["data-title"]}),c]}):c)(x.jsx("div",{className:D(SC),children:x.jsxs("pre",{ref:i,...n,className:D(t,AC),children:["data-language"in n&&x.jsx(_C,{copied:r,copy:o}),l]})}))}var RC="vocs_Footnotes";function $C(e){return x.jsx("section",{...e,className:D(e.className,RC)})}var em="vocs_Section";function OC(e){return"data-footnotes"in e?x.jsx($C,{...e,className:D(e.className,em)}):x.jsx("section",{...e,className:D(e.className,em)})}var tm="vocs_Span";function qa(e,t){if(!e||!t)return!1;const n=t.getRootNode==null?void 0:t.getRootNode();if(e.contains(t))return!0;if(n&&Sc(n)){let r=t;for(;r;){if(e===r)return!0;r=r.parentNode||r.host}}return!1}function Mc(e,t){const n=["mouse","pen"];return t||n.push("",void 0),n.includes(e)}function Ra(e){return(e==null?void 0:e.ownerDocument)||document}function IC(e){return"composedPath"in e?e.composedPath()[0]:e.target}const xy={...Wc},LC=xy.useInsertionEffect,DC=LC||(e=>e());function NC(e){const t=p.useRef(()=>{});return DC(()=>{t.current=e}),p.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;o"floating-ui-"+Math.random().toString(36).slice(2,6)+MC++;function jC(){const[e,t]=p.useState(()=>nm?rm():void 0);return Po(()=>{e==null&&t(rm())},[]),p.useEffect(()=>{nm=!0},[]),e}const FC=xy.useId,_y=FC||jC,zC=p.forwardRef(function(t,n){const{context:{placement:r,elements:{floating:o},middlewareData:{arrow:i}},width:a=14,height:l=7,tipRadius:s=0,strokeWidth:c=0,staticOffset:d,stroke:u,d:f,style:{transform:h,...y}={},...g}=t,w=_y();if(!o)return null;const m=c*2,v=m/2,_=a/2*(s/-8+1),E=l/2*s/4,[C,k]=r.split("-"),P=Cg.isRTL(o),A=!!f,S=C==="top"||C==="bottom",O=d&&k==="end"?"bottom":"top";let j=d&&k==="end"?"right":"left";d&&P&&(j=k==="end"?"left":"right");const N=(i==null?void 0:i.x)!=null?d||i.x:"",F=(i==null?void 0:i.y)!=null?d||i.y:"",$=f||"M0,0"+(" H"+a)+(" L"+(a-_)+","+(l-E))+(" Q"+a/2+","+l+" "+_+","+(l-E))+" Z",U={top:A?"rotate(180deg)":"",left:A?"rotate(90deg)":"rotate(-90deg)",bottom:A?"":"rotate(180deg)",right:A?"rotate(-90deg)":"rotate(90deg)"}[C];return p.createElement("svg",jc({},g,{"aria-hidden":!0,ref:n,width:A?a:a+m,height:a,viewBox:"0 0 "+a+" "+(l>a?l:a),style:{position:"absolute",pointerEvents:"none",[j]:N,[O]:F,[C]:S||A?"100%":"calc(100% - "+m/2+"px)",transform:""+U+(h??""),...y}}),m>0&&p.createElement("path",{clipPath:"url(#"+w+")",fill:"none",stroke:u,strokeWidth:m+(f?0:1),d:$}),p.createElement("path",{stroke:m&&!f?g.fill:"none",d:$}),p.createElement("clipPath",{id:w},p.createElement("rect",{x:-v,y:v*(A?-1:1),width:a+m,height:a})))});function UC(){const e=new Map;return{emit(t,n){var r;(r=e.get(t))==null||r.forEach(o=>o(n))},on(t,n){e.set(t,[...e.get(t)||[],n])},off(t,n){var r;e.set(t,((r=e.get(t))==null?void 0:r.filter(o=>o!==n))||[])}}}const VC=p.createContext(null),BC=p.createContext(null),wy=()=>{var e;return((e=p.useContext(VC))==null?void 0:e.id)||null},Ey=()=>p.useContext(BC);function HC(e){return"data-floating-ui-"+e}function om(e){const t=p.useRef(e);return Po(()=>{t.current=e}),t}const im=HC("safe-polygon");function su(e,t,n){return n&&!Mc(n)?0:typeof e=="number"?e:e==null?void 0:e[t]}function WC(e,t){t===void 0&&(t={});const{open:n,onOpenChange:r,dataRef:o,events:i,elements:{domReference:a,floating:l},refs:s}=e,{enabled:c=!0,delay:d=0,handleClose:u=null,mouseOnly:f=!1,restMs:h=0,move:y=!0}=t,g=Ey(),w=wy(),m=om(u),v=om(d),_=p.useRef(),E=p.useRef(),C=p.useRef(),k=p.useRef(),P=p.useRef(!0),A=p.useRef(!1),S=p.useRef(()=>{}),O=p.useCallback(()=>{var $;const U=($=o.current.openEvent)==null?void 0:$.type;return(U==null?void 0:U.includes("mouse"))&&U!=="mousedown"},[o]);p.useEffect(()=>{if(!c)return;function $(U){let{open:W}=U;W||(clearTimeout(E.current),clearTimeout(k.current),P.current=!0)}return i.on("openchange",$),()=>{i.off("openchange",$)}},[c,i]),p.useEffect(()=>{if(!c||!m.current||!n)return;function $(W){O()&&r(!1,W,"hover")}const U=Ra(l).documentElement;return U.addEventListener("mouseleave",$),()=>{U.removeEventListener("mouseleave",$)}},[l,n,r,c,m,O]);const j=p.useCallback(function($,U,W){U===void 0&&(U=!0),W===void 0&&(W="hover");const B=su(v.current,"close",_.current);B&&!C.current?(clearTimeout(E.current),E.current=setTimeout(()=>r(!1,$,W),B)):U&&(clearTimeout(E.current),r(!1,$,W))},[v,r]),N=p.useCallback(()=>{S.current(),C.current=void 0},[]),F=p.useCallback(()=>{if(A.current){const $=Ra(s.floating.current).body;$.style.pointerEvents="",$.removeAttribute(im),A.current=!1}},[s]);return p.useEffect(()=>{if(!c)return;function $(){return o.current.openEvent?["click","mousedown"].includes(o.current.openEvent.type):!1}function U(L){if(clearTimeout(E.current),P.current=!1,f&&!Mc(_.current)||h>0&&su(v.current,"open")===0)return;const z=su(v.current,"open",_.current);z?E.current=setTimeout(()=>{r(!0,L,"hover")},z):r(!0,L,"hover")}function W(L){if($())return;S.current();const z=Ra(l);if(clearTimeout(k.current),m.current){n||clearTimeout(E.current),C.current=m.current({...e,tree:g,x:L.clientX,y:L.clientY,onClose(){F(),N(),j(L,!0,"safe-polygon")}});const J=C.current;z.addEventListener("mousemove",J),S.current=()=>{z.removeEventListener("mousemove",J)};return}(_.current==="touch"?!qa(l,L.relatedTarget):!0)&&j(L)}function B(L){$()||m.current==null||m.current({...e,tree:g,x:L.clientX,y:L.clientY,onClose(){F(),N(),j(L)}})(L)}if(rt(a)){const L=a;return n&&L.addEventListener("mouseleave",B),l==null||l.addEventListener("mouseleave",B),y&&L.addEventListener("mousemove",U,{once:!0}),L.addEventListener("mouseenter",U),L.addEventListener("mouseleave",W),()=>{n&&L.removeEventListener("mouseleave",B),l==null||l.removeEventListener("mouseleave",B),y&&L.removeEventListener("mousemove",U),L.removeEventListener("mouseenter",U),L.removeEventListener("mouseleave",W)}}},[a,l,c,e,f,h,y,j,N,F,r,n,g,v,m,o]),Po(()=>{var $;if(c&&n&&($=m.current)!=null&&$.__options.blockPointerEvents&&O()){const W=Ra(l).body;if(W.setAttribute(im,""),W.style.pointerEvents="none",A.current=!0,rt(a)&&l){var U;const B=a,L=g==null||(U=g.nodesRef.current.find(z=>z.id===w))==null||(U=U.context)==null?void 0:U.elements.floating;return L&&(L.style.pointerEvents=""),B.style.pointerEvents="auto",l.style.pointerEvents="auto",()=>{B.style.pointerEvents="",l.style.pointerEvents=""}}}},[c,n,w,l,a,g,m,O]),Po(()=>{n||(_.current=void 0,N(),F())},[n,N,F]),p.useEffect(()=>()=>{N(),clearTimeout(E.current),clearTimeout(k.current),F()},[c,a,N,F]),p.useMemo(()=>{if(!c)return{};function $(U){_.current=U.pointerType}return{reference:{onPointerDown:$,onPointerEnter:$,onMouseMove(U){function W(){P.current||r(!0,U.nativeEvent,"hover")}f&&!Mc(_.current)||n||h===0||(clearTimeout(k.current),_.current==="touch"?W():k.current=setTimeout(W,h))}},floating:{onMouseEnter(){clearTimeout(E.current)},onMouseLeave(U){j(U.nativeEvent,!1)}}}},[c,f,n,h,r,j])}function KC(e,t){let n=e.filter(o=>{var i;return o.parentId===t&&((i=o.context)==null?void 0:i.open)}),r=n;for(;r.length;)r=e.filter(o=>{var i;return(i=r)==null?void 0:i.some(a=>{var l;return o.parentId===a.id&&((l=o.context)==null?void 0:l.open)})}),n=n.concat(r);return n}function GC(e){var t;e===void 0&&(e={});const{open:n=!1,onOpenChange:r,nodeId:o}=e,[i,a]=p.useState(null),[l,s]=p.useState(null),d=((t=e.elements)==null?void 0:t.reference)||i;Po(()=>{d&&(g.current=d)},[d]);const u=Tg({...e,elements:{...e.elements,...l&&{reference:l}}}),f=Ey(),h=wy()!=null,y=NC((A,S,O)=>{w.current.openEvent=A?S:void 0,m.emit("openchange",{open:A,event:S,reason:O,nested:h}),r==null||r(A,S,O)}),g=p.useRef(null),w=p.useRef({}),m=p.useState(()=>UC())[0],v=_y(),_=p.useCallback(A=>{const S=rt(A)?{getBoundingClientRect:()=>A.getBoundingClientRect(),contextElement:A}:A;s(S),u.refs.setReference(S)},[u.refs]),E=p.useCallback(A=>{(rt(A)||A===null)&&(g.current=A,a(A)),(rt(u.refs.reference.current)||u.refs.reference.current===null||A!==null&&!rt(A))&&u.refs.setReference(A)},[u.refs]),C=p.useMemo(()=>({...u.refs,setReference:E,setPositionReference:_,domReference:g}),[u.refs,E,_]),k=p.useMemo(()=>({...u.elements,domReference:d}),[u.elements,d]),P=p.useMemo(()=>({...u,refs:C,elements:k,dataRef:w,nodeId:o,floatingId:v,events:m,open:n,onOpenChange:y}),[u,o,v,m,n,y,C,k]);return Po(()=>{const A=f==null?void 0:f.nodesRef.current.find(S=>S.id===o);A&&(A.context=P)}),p.useMemo(()=>({...u,context:P,refs:C,elements:k}),[u,C,k,P])}const am="active",lm="selected";function uu(e,t,n){const r=new Map,o=n==="item";let i=e;if(o&&e){const{[am]:a,[lm]:l,...s}=e;i=s}return{...n==="floating"&&{tabIndex:-1},...i,...t.map(a=>{const l=a?a[n]:null;return typeof l=="function"?e?l(e):null:l}).concat(e).reduce((a,l)=>(l&&Object.entries(l).forEach(s=>{let[c,d]=s;if(!(o&&[am,lm].includes(c)))if(c.indexOf("on")===0){if(r.has(c)||r.set(c,[]),typeof d=="function"){var u;(u=r.get(c))==null||u.push(d),a[c]=function(){for(var f,h=arguments.length,y=new Array(h),g=0;gw(...y)).find(w=>w!==void 0)}}}else a[c]=d}),a),{})}}function qC(e){e===void 0&&(e=[]);const t=e,n=p.useCallback(i=>uu(i,e,"reference"),t),r=p.useCallback(i=>uu(i,e,"floating"),t),o=p.useCallback(i=>uu(i,e,"item"),e.map(i=>i==null?void 0:i.item));return p.useMemo(()=>({getReferenceProps:n,getFloatingProps:r,getItemProps:o}),[n,r,o])}function sm(e,t){const[n,r]=e;let o=!1;const i=t.length;for(let a=0,l=i-1;a=r!=u>=r&&n<=(d-s)*(r-c)/(u-c)+s&&(o=!o)}return o}function YC(e,t){return e[0]>=t.x&&e[0]<=t.x+t.width&&e[1]>=t.y&&e[1]<=t.y+t.height}function QC(e){e===void 0&&(e={});const{buffer:t=.5,blockPointerEvents:n=!1,requireIntent:r=!0}=e;let o,i=!1,a=null,l=null,s=performance.now();function c(u,f){const h=performance.now(),y=h-s;if(a===null||l===null||y===0)return a=u,l=f,s=h,null;const g=u-a,w=f-l,v=Math.sqrt(g*g+w*w)/y;return a=u,l=f,s=h,v}const d=u=>{let{x:f,y:h,placement:y,elements:g,onClose:w,nodeId:m,tree:v}=u;return function(E){function C(){clearTimeout(o),w()}if(clearTimeout(o),!g.domReference||!g.floating||y==null||f==null||h==null)return;const{clientX:k,clientY:P}=E,A=[k,P],S=IC(E),O=E.type==="mouseleave",j=qa(g.floating,S),N=qa(g.domReference,S),F=g.domReference.getBoundingClientRect(),$=g.floating.getBoundingClientRect(),U=y.split("-")[0],W=f>$.right-$.width/2,B=h>$.bottom-$.height/2,L=YC(A,F),z=$.width>F.width,G=$.height>F.height,J=(z?F:$).left,ue=(z?F:$).right,Ve=(G?F:$).top,xe=(G?F:$).bottom;if(j&&(i=!0,!O))return;if(N&&(i=!1),N&&!O){i=!0;return}if(O&&rt(E.relatedTarget)&&qa(g.floating,E.relatedTarget)||v&&KC(v.nodesRef.current,m).some(Be=>{let{context:we}=Be;return we==null?void 0:we.open}))return;if(U==="top"&&h>=F.bottom-1||U==="bottom"&&h<=F.top+1||U==="left"&&f>=F.right-1||U==="right"&&f<=F.left+1)return C();let $e=[];switch(U){case"top":$e=[[J,F.top+1],[J,$.bottom-1],[ue,$.bottom-1],[ue,F.top+1]];break;case"bottom":$e=[[J,$.top+1],[J,F.bottom-1],[ue,F.bottom-1],[ue,$.top+1]];break;case"left":$e=[[$.right-1,xe],[$.right-1,Ve],[F.left+1,Ve],[F.left+1,xe]];break;case"right":$e=[[F.right-1,xe],[F.right-1,Ve],[$.left+1,Ve],[$.left+1,xe]];break}function _e(Be){let[we,Ce]=Be;switch(U){case"top":{const Mt=[z?we+t/2:W?we+t*4:we-t*4,Ce+t+1],Pe=[z?we-t/2:W?we+t*4:we-t*4,Ce+t+1],dt=[[$.left,W||z?$.bottom-t:$.top],[$.right,W?z?$.bottom-t:$.top:$.bottom-t]];return[Mt,Pe,...dt]}case"bottom":{const Mt=[z?we+t/2:W?we+t*4:we-t*4,Ce-t],Pe=[z?we-t/2:W?we+t*4:we-t*4,Ce-t],dt=[[$.left,W||z?$.top+t:$.bottom],[$.right,W?z?$.top+t:$.bottom:$.top+t]];return[Mt,Pe,...dt]}case"left":{const Mt=[we+t+1,G?Ce+t/2:B?Ce+t*4:Ce-t*4],Pe=[we+t+1,G?Ce-t/2:B?Ce+t*4:Ce-t*4];return[...[[B||G?$.right-t:$.left,$.top],[B?G?$.right-t:$.left:$.right-t,$.bottom]],Mt,Pe]}case"right":{const Mt=[we-t,G?Ce+t/2:B?Ce+t*4:Ce-t*4],Pe=[we-t,G?Ce-t/2:B?Ce+t*4:Ce-t*4],dt=[[B||G?$.left+t:$.right,$.top],[B?G?$.left+t:$.right:$.left+t,$.bottom]];return[Mt,Pe,...dt]}}}if(!sm([k,P],$e)){if(i&&!L)return C();if(!O&&r){const Be=c(E.clientX,E.clientY);if(Be!==null&&Be<.1)return C()}sm([k,P],_e([f,h]))?!i&&r&&(o=window.setTimeout(C,40)):C()}}};return d.__options={blockPointerEvents:n},d}function ZC({children:e,...t}){const[n,r]=e,o=p.useRef(null),[i,a]=p.useState(!1),{context:l,refs:s,floatingStyles:c}=GC({middleware:[Ag({element:o}),vg(8),Pg()],open:i,onOpenChange:a,placement:"bottom-start"}),d=WC(l,{handleClose:QC()}),{getReferenceProps:u,getFloatingProps:f}=qC([d]),h=r.props.children,y=n.props.children;return x.jsxs("span",{...t,children:[x.jsx("span",{className:"twoslash-target",ref:s.setReference,...u(),children:h}),i&&x.jsxs("div",{className:"twoslash-popup-info-hover",ref:s.setFloating,style:c,...f(),children:[x.jsx(zC,{ref:o,context:l,fill:Jp.background5,height:3,stroke:Jp.border2,strokeWidth:1,width:7}),x.jsx("div",{className:"twoslash-popup-scroll-container",children:y})]})]})}function XC(e){var n;const t=D(e.className,tm);return(n=e.className)!=null&&n.includes("twoslash-hover")?x.jsx(ZC,{...e,className:t}):x.jsx("span",{...e,className:D(e.className,tm)})}var JC="vocs_CalloutTitle";function eP({className:e,children:t}){return x.jsx("strong",{className:D(e,JC),children:t})}var um="vocs_Strong";function tP(e){return"data-callout-title"in e&&typeof e.children=="string"?x.jsx(eP,{...e,className:D(e.className,um),children:e.children}):x.jsx("strong",{...e,className:D(e.className,um)})}var nP="vocs_Summary";function rP(e){return x.jsx("summary",{...e,className:D(e.className,nP)})}var oP="vocs_Table";function iP(e){return x.jsx("table",{...e,className:D(e.className,oP)})}var aP="vocs_TableCell";function lP(e){return x.jsx("td",{...e,className:D(e.className,aP)})}var sP="vocs_TableHeader";function uP(e){return x.jsx("th",{...e,className:D(e.className,sP)})}var cP="vocs_TableRow";function dP(e){return x.jsx("tr",{...e,className:D(e.className,cP)})}const fP={a:g6,aside:A6,blockquote:T6,code:$6,details:L6,div:nC,pre:TC,header:sC,figcaption:oC,figure:aC,h1:Xv,h2:hy,h3:my,h4:vy,h5:gy,h6:yy,hr:cC,kd:N1,li:mC,ol:e=>x.jsx(Jh,{ordered:!0,...e}),p:Jv,section:OC,span:XC,strong:tP,summary:rP,table:iP,td:lP,th:uP,tr:dP,ul:e=>x.jsx(Jh,{ordered:!1,...e})};function pP(){const{pathname:e}=Re(),t=Je(),{ogImageUrl:n}=t;if(!n)return;if(typeof n=="string")return n;const r=p.useMemo(()=>{const o=Object.keys(n).filter(i=>e.startsWith(i));return o[o.length-1]},[n,e]);if(r)return n[r]}function Fc(e){const{children:t,filePath:n,frontmatter:r,lastUpdatedAt:o,path:i}=e,{pathname:a}=Re(),l=p.useRef();return p.useEffect(()=>{l.current=a}),x.jsxs(x.Fragment,{children:[x.jsx(hP,{frontmatter:r}),typeof window<"u"&&x.jsx(A3,{}),x.jsx(_k,{components:fP,children:x.jsx(r8,{frontmatter:r,path:i,children:x.jsx(n1.Provider,{value:{filePath:n,frontmatter:r,lastUpdatedAt:o,previousPath:l.current},children:t})})})]})}function hP({frontmatter:e}){const t=Je(),n=pP(),{baseUrl:r,font:o,iconUrl:i,logoUrl:a}=t,l=(e==null?void 0:e.title)??t.title,s=(e==null?void 0:e.description)??t.description,c=t.title&&!l.includes(t.title),d=typeof window<"u"&&window.location.hostname==="localhost";return x.jsxs(Dc,{defaultTitle:t.title,titleTemplate:c?t.titleTemplate:void 0,children:[l&&x.jsx("title",{children:l}),r&&!0&&!d&&x.jsx("base",{href:r}),s!=="undefined"&&x.jsx("meta",{name:"description",content:s}),i&&typeof i=="string"&&x.jsx("link",{rel:"icon",href:i,type:cu(i)}),i&&typeof i!="string"&&x.jsx("link",{rel:"icon",href:i.light,type:cu(i.light)}),i&&typeof i!="string"&&x.jsx("link",{rel:"icon",href:i.dark,type:cu(i.dark),media:"(prefers-color-scheme: dark)"}),x.jsx("meta",{property:"og:type",content:"website"}),x.jsx("meta",{property:"og:title",content:l||t.title}),r&&x.jsx("meta",{property:"og:url",content:r}),s!=="undefined"&&x.jsx("meta",{property:"og:description",content:s}),n&&x.jsx("meta",{property:"og:image",content:n.replace("%logo",`${r||""}${typeof a=="string"?a:(a==null?void 0:a.dark)||""}`).replace("%title",l||"").replace("%description",(s!=="undefined"?s:"")||"")}),(o==null?void 0:o.google)&&x.jsx("link",{rel:"preconnect",href:"https://fonts.googleapis.com"}),(o==null?void 0:o.google)&&x.jsx("link",{rel:"preconnect",href:"https://fonts.gstatic.com",crossOrigin:""}),(o==null?void 0:o.google)&&x.jsx("link",{href:`https://fonts.googleapis.com/css2?family=${o.google}:wght@300;400;500&display=swap`,rel:"stylesheet"}),x.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),n&&x.jsx("meta",{property:"twitter:image",content:n.replace("%logo",`${r||""}${typeof a=="string"?a:(a==null?void 0:a.dark)||""}`).replace("%title",l||"").replace("%description",(s!=="undefined"?s:"")||"")})]})}function cu(e){if(e.endsWith(".svg"))return"image/svg+xml";if(e.endsWith(".png"))return"image/png";if(e.endsWith(".jpg"))return"image/jpeg";if(e.endsWith(".ico"))return"image/x-icon";if(e.endsWith(".webp"))return"image/webp"}const mP=(()=>{const e=Hd.find(({path:t})=>t==="*");return e?{path:e.path,lazy:async()=>{const{frontmatter:t,...n}=await e.lazy();return{...n,element:x.jsx(Fc,{frontmatter:t,path:e.path,children:x.jsx(Rc,{children:x.jsx(n.default,{})})})}}}:{path:"*",lazy:void 0,element:x.jsx(Fc,{frontmatter:{layout:"minimal"},path:"*",children:x.jsx(Rc,{children:x.jsx(dw,{})})})}})(),cm=[...Hd.filter(({path:e})=>e!=="*").map(e=>({path:e.path,lazy:async()=>{const{frontmatter:t,...n}=await e.lazy();return{...n,element:x.jsx(Fc,{filePath:e.filePath,frontmatter:t,lastUpdatedAt:e.lastUpdatedAt,path:e.path,children:x.jsx(Rc,{children:x.jsx(n.default,{})})})}}})),mP];async function vP(e,t){var r;const n=(r=pr(e,window.location,t))==null?void 0:r.filter(o=>o.route.lazy);n&&(n==null?void 0:n.length)>0&&await Promise.all(n.map(async o=>{const i=await o.route.lazy();Object.assign(o.route,{...i,lazy:void 0})}))}function gP(){const e=document.querySelectorAll('style[data-vocs-temp-style="true"]');for(const t of e)t.remove()}yP();async function yP(){const e=Kv().basePath;await vP(cm,e),gP();const t=h3(cm,{basename:e});Cv(document.getElementById("app"),x.jsx(W3,{children:x.jsx(k3,{router:t})}))}export{Fb as C,rn as L,Nb as R,jb as T,a7 as a,Mb as b,D as c,xk as d,C6 as e,Ty as f,xP as g,tr as h,_P as i,x as j,p as r,wP as s,Je as u}; diff --git a/assets/index-eiT-MmI_.js b/assets/index-MK2InkVl.js similarity index 99% rename from assets/index-eiT-MmI_.js rename to assets/index-MK2InkVl.js index 60c562f6224..29dfff55355 100644 --- a/assets/index-eiT-MmI_.js +++ b/assets/index-MK2InkVl.js @@ -1 +1 @@ -import{j as e,L,c as a,u as Z,a as V,R as I,b as S,T as u,C as p,r as h,d as R}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";var q="vocs_Button_button",_="vocs_Button_button_accent";function P({children:t,className:l,href:s,variant:o}){return e.jsx(L,{className:a(l,q,o==="accent"&&_),href:s,variant:"styleless",children:t})}var z="vocs_HomePage_button",B="vocs_HomePage_buttons",A="vocs_HomePage_description",E="vocs_HomePage_logo",f="vocs_HomePage_packageManager",T="vocs_HomePage",W="vocs_HomePage_tabs",g="vocs_HomePage_tabsContent",G="vocs_HomePage_tabsList",U="vocs_HomePage_tagline",O="vocs_HomePage_title";function D({children:t,className:l}){return e.jsx("div",{className:a(l,T),children:t})}function m({className:t}){const{logoUrl:l,title:s}=Z();return l?e.jsx("div",{className:a(t,E),children:e.jsx(V,{})}):e.jsx("h1",{className:a(t,O),children:s})}function F({children:t,className:l}){return e.jsx("div",{className:a(l,U),children:t})}function $({children:t,className:l}){return e.jsx("div",{className:a(l,A),children:t})}function K({children:t,className:l}){return e.jsx("div",{className:a(l,B),children:t})}function J(t){return e.jsx(P,{...t,className:a(z,t.className)})}function X({name:t,type:l="install"}){return e.jsxs(I,{className:W,defaultValue:"npm",children:[e.jsxs(S,{className:G,children:[e.jsx(u,{value:"npm",children:"npm"}),e.jsx(u,{value:"pnpm",children:"pnpm"}),e.jsx(u,{value:"yarn",children:"yarn"})]}),e.jsxs(p,{className:g,value:"npm",children:[e.jsx("span",{className:f,children:"npm"})," ",l==="init"?"init":"install"," ",t]}),e.jsxs(p,{className:g,value:"pnpm",children:[e.jsx("span",{className:f,children:"pnpm"})," ",l==="init"?"create":"install"," ",t]}),e.jsxs(p,{className:g,value:"yarn",children:[e.jsx("span",{className:f,children:"yarn"})," ",l==="init"?"create":"install"," ",t]})]})}const Q=Object.freeze(Object.defineProperty({__proto__:null,Button:J,Buttons:K,Description:$,InstallPackage:X,Logo:m,Root:D,Tagline:F},Symbol.toStringTag,{value:"Module"}));function Y({children:t,className:l}){return e.jsxs("div",{className:a("relative",l),children:[e.jsx("div",{className:"absolute inset-0 z-0 flex items-center dark:bg-matrix-dark bg-matrix-light mix-blend-normal dark:mix-blend-multiply",children:e.jsx("div",{style:{height:"100%",width:"100%",maxHeight:"465px"}})}),e.jsx("div",{className:"relative z-10",children:t})]})}const e1=({logo:t})=>e.jsx(Y,{className:"pt-20 pb-40 -mb-10 px-5 z-0",children:e.jsxs("section",{className:"flex flex-col items-center gap-4 max-w-screen-lg mx-auto",children:[t,e.jsx("h2",{className:"text-xl font-bold text-themed-primary max-w-3xl text-center text-wrap",children:"Welcome to Sequence docs. Here you can learn about the modular Sequence products that empower game developers to build engaging web3 games on any Ethereum-compatible chain."})]})}),t1=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M17.333 7.86186L15.553 3.41174H5.11305L3.33301 7.86186V7.94115C3.33301 8.28156 3.43174 8.78299 3.74002 9.21116C3.85255 9.36746 3.99075 9.51049 4.15654 9.63056V16.5882H16.5095V9.63056C16.6753 9.51049 16.8135 9.36746 16.926 9.21116C17.2343 8.78299 17.333 8.28156 17.333 7.94115V7.86186ZM15.6859 9.96693C15.5572 9.98849 15.4201 9.99998 15.2742 9.99998C14.485 9.99998 13.951 9.66363 13.6271 9.21773C13.3032 9.66363 12.7692 9.99998 11.9801 9.99998C11.1909 9.99998 10.6569 9.66363 10.333 9.21773C10.0091 9.66363 9.47511 9.99998 8.68595 9.99998C7.89679 9.99998 7.36277 9.66363 7.03889 9.21773C6.71501 9.66363 6.18099 9.99998 5.39183 9.99998C5.24595 9.99998 5.10879 9.98849 4.98007 9.96693V13.3985H15.6859V9.96693ZM14.0389 7.94115C14.0389 8.14977 14.1049 8.47187 14.2907 8.72997C14.4614 8.96708 14.7496 9.17645 15.2742 9.17645C15.7988 9.17645 16.087 8.96708 16.2577 8.72997C16.423 8.50039 16.4934 8.22017 16.507 8.01423L16.4778 7.94115H14.0389ZM14.9954 4.23527L16.1483 7.11763H13.9575L13.317 4.23527H14.9954ZM13.1139 7.11763L12.4733 4.23527H10.7448V7.11763H13.1139ZM7.55225 7.11763L8.19277 4.23527H9.92124V7.11763H7.55225ZM7.34915 4.23527L6.70863 7.11763H4.51767L5.67061 4.23527H7.34915ZM4.15903 8.01423L4.18826 7.94115H6.62713C6.62713 8.14977 6.56115 8.47187 6.37532 8.72997C6.2046 8.96708 5.91645 9.17645 5.39183 9.17645C4.86721 9.17645 4.57906 8.96708 4.40835 8.72997C4.24304 8.50039 4.17258 8.22017 4.15903 8.01423ZM9.66944 8.72997C9.85527 8.47187 9.92124 8.14977 9.92124 7.94115H7.45065C7.45065 8.14977 7.51663 8.47187 7.70246 8.72997C7.87318 8.96708 8.16133 9.17645 8.68595 9.17645C9.21057 9.17645 9.49872 8.96708 9.66944 8.72997ZM12.9636 8.72997C13.1494 8.47187 13.2154 8.14977 13.2154 7.94115H10.7448C10.7448 8.14977 10.8107 8.47187 10.9966 8.72997C11.1673 8.96708 11.4554 9.17645 11.9801 9.17645C12.5047 9.17645 12.7928 8.96708 12.9636 8.72997Z",fill:"currentColor"})}),l1=()=>e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10 1.59937C6.19712 1.59937 3.11426 4.68223 3.11426 8.48515C3.11419 8.54272 3.13215 8.6008 3.16933 8.65041L7.24573 14.081V18.4007H12.7544V14.081L16.8307 8.65041C16.8679 8.6008 16.8859 8.54272 16.8858 8.48515C16.8858 4.68223 13.803 1.59937 10 1.59937ZM10 6.55713C8.93523 6.55713 8.07202 7.42033 8.07202 8.48515H8.07747C8.42243 10.2099 9.17381 13.9938 9.17381 13.9938H10.8263C10.8263 13.9938 11.5777 10.2099 11.9226 8.48515H11.9281C11.9281 7.42033 11.0648 6.55713 10 6.55713ZM7.86545 13.9938L3.66512 8.38616C3.66512 7.32135 4.52833 6.55713 5.59314 6.55713C6.65795 6.55713 7.52116 7.42033 7.52116 8.48515C7.52116 8.48515 8.27248 12.269 8.61744 13.9938H7.86545ZM12.1346 13.9938L16.335 8.38616C16.335 7.32135 15.4717 6.55713 14.4069 6.55713C13.3421 6.55713 12.4789 7.42033 12.4789 8.48515C12.4789 8.48515 11.7276 12.269 11.3826 13.9938H12.1346Z",fill:"currentColor"})}),s1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("rect",{x:"8.75781",y:"7.84082",width:"3.81818",height:"9.33333",rx:"1",fill:"currentColor"}),e.jsx("rect",{x:"13.8486",y:"2.75",width:"3.81818",height:"14.4242",rx:"1",fill:"currentColor"}),e.jsx("rect",{width:"3.81818",height:"5.93939",rx:"1",transform:"matrix(-1 0 0 1 7.48535 11.235)",fill:"currentColor"})]}),n1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4.41883 3.25H1.83301V2.25H5.24719L7.24719 12.8085H15.833V13.8085H6.41883L4.41883 3.25Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.8473 5.25H5.24609V4.25H18.0566L16.7467 11.1018H6.33324V10.1018H15.9198L16.8473 5.25Z",fill:"currentColor"}),e.jsx("path",{d:"M8.63434 15.9743C8.63434 16.6488 8.08752 17.1956 7.41299 17.1956C6.73846 17.1956 6.19165 16.6488 6.19165 15.9743C6.19165 15.2997 6.73846 14.7529 7.41299 14.7529C8.08752 14.7529 8.63434 15.2997 8.63434 15.9743Z",fill:"currentColor"}),e.jsx("path",{d:"M15.8331 15.9743C15.8331 16.6488 15.2863 17.1956 14.6117 17.1956C13.9372 17.1956 13.3904 16.6488 13.3904 15.9743C13.3904 15.2997 13.9372 14.7529 14.6117 14.7529C15.2863 14.7529 15.8331 15.2997 15.8331 15.9743Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5.8418 7.17578H16.8556V8.17578H5.8418V7.17578Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M14.8617 4.95987L14.2679 10.4599L13.2737 10.3525L13.8674 4.85254L14.8617 4.95987Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7.7421 4.95987L8.33585 10.4599L9.33008 10.3525L8.73633 4.85254L7.7421 4.95987Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M11.8018 5.03125V10.4688H10.8018V5.03125H11.8018Z",fill:"currentColor"})]}),o1=()=>e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M6.37207 13.3255V6.12305H13.5745V7.86233H8.11067V13.3255H6.37207Z",fill:"currentColor"}),e.jsx("path",{d:"M3 9.95198V2.74951H10.2025V4.4888H4.7386V9.95198H3Z",fill:"currentColor"}),e.jsx("path",{d:"M9.79883 16.7503V9.54785H17.0013V16.7503H9.79883Z",fill:"currentColor"})]}),y=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M15.5263 5.46622C14.6201 5.04221 13.6511 4.73406 12.638 4.55859C12.5136 4.78353 12.3682 5.08608 12.268 5.32676C11.1911 5.1648 10.1241 5.1648 9.067 5.32676C8.9668 5.08608 8.81815 4.78353 8.69262 4.55859C7.67846 4.73406 6.70835 5.04334 5.8021 5.46847C3.9742 8.23067 3.47869 10.9243 3.72644 13.5796C4.93881 14.485 6.11373 15.035 7.26883 15.3948C7.55403 15.0023 7.80839 14.5851 8.02751 14.1453C7.61018 13.9868 7.21047 13.7911 6.83279 13.5639C6.93298 13.4896 7.03099 13.412 7.12568 13.3322C9.42927 14.4096 11.9322 14.4096 14.2083 13.3322C14.3041 13.412 14.402 13.4896 14.5012 13.5639C14.1224 13.7922 13.7215 13.9879 13.3042 14.1465C13.5233 14.5851 13.7766 15.0035 14.0629 15.396C15.2191 15.0361 16.3951 14.4861 17.6075 13.5796C17.8982 10.5014 17.1109 7.83253 15.5263 5.46622ZM8.34134 11.9466C7.64983 11.9466 7.08273 11.301 7.08273 10.5149C7.08273 9.72873 7.63772 9.08205 8.34134 9.08205C9.04499 9.08205 9.61207 9.7276 9.59996 10.5149C9.60105 11.301 9.04499 11.9466 8.34134 11.9466ZM12.9926 11.9466C12.3011 11.9466 11.734 11.301 11.734 10.5149C11.734 9.72873 12.2889 9.08205 12.9926 9.08205C13.6962 9.08205 14.2633 9.7276 14.2512 10.5149C14.2512 11.301 13.6962 11.9466 12.9926 11.9466Z",fill:"currentColor"})}),a1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("rect",{x:"4.0293",y:"5.14441",width:"5.21037",height:"8.17765",transform:"rotate(-30 4.0293 5.14441)",fill:"currentColor"}),e.jsx("path",{d:"M10.5859 6.08032L17.9184 1.84689",stroke:"currentColor",strokeWidth:"1.5"}),e.jsx("path",{d:"M4.64405 15.3871L2.66699 13.41H16.2818L15.5595 15.3871H14.2129C13.8833 15.3871 13.2243 15.5848 13.2243 16.3756C13.2243 17.1664 13.8833 17.3642 14.2129 17.3642H14.8101V18.847H5.98069V17.3642H7.07656C7.86739 17.3642 8.06509 16.7051 8.06509 16.3756C8.06509 16.0461 7.86739 15.3871 7.07656 15.3871H4.64405Z",fill:"currentColor"})]}),r1=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.33301 6.01534V14.1745C1.33301 15.8398 2.70302 17.1898 4.39301 17.1898H16.273C17.963 17.1898 19.333 15.8398 19.333 14.1745V6.01534C19.333 4.35001 17.963 3 16.273 3H4.39301C2.70302 3 1.33301 4.35001 1.33301 6.01534ZM5.833 6.54745C5.833 6.05765 5.43006 5.66059 4.933 5.66059C4.43595 5.66059 4.033 6.05765 4.033 6.54745C4.033 7.03725 4.43595 7.43431 4.933 7.43431C5.43006 7.43431 5.833 7.03725 5.833 6.54745ZM4.933 12.7498C5.43006 12.7498 5.833 13.1469 5.833 13.6367C5.833 14.1265 5.43006 14.5236 4.933 14.5236C4.43595 14.5236 4.033 14.1265 4.033 13.6367C4.033 13.1469 4.43595 12.7498 4.933 12.7498ZM16.633 10.0949C16.633 9.6051 16.2301 9.20804 15.733 9.20804C15.236 9.20804 14.833 9.6051 14.833 10.0949C14.833 10.5847 15.236 10.9818 15.733 10.9818C16.2301 10.9818 16.633 10.5847 16.633 10.0949ZM8.53301 5.66059H15.733C16.2301 5.66059 16.633 6.05765 16.633 6.54745C16.633 7.03725 16.2301 7.43431 15.733 7.43431H8.53301C8.03596 7.43431 7.63301 7.03725 7.63301 6.54745C7.63301 6.05765 8.03596 5.66059 8.53301 5.66059ZM15.733 12.7498H8.53301C8.03596 12.7498 7.63301 13.1469 7.63301 13.6367C7.63301 14.1265 8.03596 14.5236 8.53301 14.5236H15.733C16.2301 14.5236 16.633 14.1265 16.633 13.6367C16.633 13.1469 16.2301 12.7498 15.733 12.7498ZM4.93301 9.20804H12.133C12.6301 9.20804 13.033 9.6051 13.033 10.0949C13.033 10.5847 12.6301 10.9818 12.133 10.9818H4.93301C4.43595 10.9818 4.03301 10.5847 4.03301 10.0949C4.03301 9.6051 4.43595 9.20804 4.93301 9.20804Z",fill:"currentColor"})}),i1=()=>e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5 6.04947C5 6.49261 5.38931 6.85185 5.86954 6.85185H16C16.5523 6.85185 17 7.29957 17 7.85185V15C17 15.5523 16.5523 16 16 16H5.49505C4.11707 16 3 14.9692 3 13.6977V6.30233C3 5.03079 4.11707 4 5.49505 4H13.8765C14.2208 4 14.5 4.27917 14.5 4.62355C14.5 4.96792 14.2208 5.24709 13.8765 5.24709H5.86955C5.38931 5.24709 5 5.60633 5 6.04947ZM12 11.5C12 10.6716 12.6716 10 13.5 10C14.3284 10 15 10.6716 15 11.5C15 12.3284 14.3284 13 13.5 13C12.6716 13 12 12.3284 12 11.5Z",fill:"currentColor"})}),c1=()=>e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.9486 8.39806L15.2266 2L8.80794 3.71482L7.88709 5.33059L6.02143 5.3169L1.31886 9.99999L6.01969 14.6831L7.88536 14.6694L8.80621 16.2852L15.2266 18L16.9486 11.602L16.0039 10L16.9486 8.39806ZM4.8953 9.11821L8.15888 5.79769L12.6743 4.64239L10.0825 9.11821H4.8953ZM14.205 14.4763L11.6129 10L14.205 5.52369L15.4579 10L14.205 14.4763ZM8.15888 14.2006L4.8953 10.8801H10.0825L12.6743 15.3559L8.15888 14.2006Z",fill:"currentColor"})}),d1=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M10.715 1C5.78414 1 1.79095 5.02806 1.79095 10C1.79095 14.9719 5.78414 19 10.715 19C15.6425 19 19.6391 14.9719 19.6391 10C19.6391 5.02806 15.6431 1 10.7122 1H10.715ZM10.715 1.39544C12.9915 1.39544 15.1357 2.29206 16.7473 3.91488C18.3555 5.53206 19.2521 7.72075 19.2465 10C19.2465 12.2967 18.3588 14.4589 16.7473 16.0851C15.1565 17.6995 12.9825 18.6074 10.715 18.6046C8.44758 18.6074 6.27352 17.6995 4.68277 16.0851C3.07458 14.4679 2.17514 12.2793 2.18077 10C2.18077 7.70331 3.0712 5.54106 4.67995 3.91488C6.2707 2.29769 8.44758 1.38925 10.715 1.39544ZM10.2667 4.56231C8.81377 4.95213 7.46883 5.69913 5.67614 7.75563C3.88345 9.81213 4.2232 11.5114 4.2232 11.5114C4.2232 11.5114 4.7182 10.3426 5.90789 9.11181C6.4732 8.52906 6.89227 8.33275 7.18252 8.33275C7.44014 8.31813 7.65727 8.52625 7.65727 8.78388V12.9588C7.65727 13.3716 7.39064 13.4628 7.14483 13.4566C6.9367 13.4538 6.7432 13.3806 6.7432 13.3806C7.96495 15.1559 10.8888 15.4051 10.8888 15.4051L12.1719 14.0337L12.2011 14.0601L13.3762 15.0619C15.5266 13.7845 16.5639 11.4175 16.5639 11.4175C15.6031 12.4311 14.9934 12.6685 14.63 12.6685C14.3077 12.6657 14.1817 12.4778 14.1817 12.4778C14.1643 12.3901 14.135 11.1182 14.1232 9.847C14.1114 8.53131 14.1232 7.21338 14.1879 7.21C14.5597 6.5125 15.7438 5.10625 15.7438 5.10625C13.532 5.54275 12.3277 6.99288 12.3277 6.99288C11.9705 6.71163 11.2438 6.75831 11.2438 6.75831C11.5835 6.94563 11.9233 7.49069 11.9233 7.94181V12.3833C11.9233 12.3833 11.1819 13.0364 10.611 13.0364C10.2712 13.0364 10.0631 12.8519 9.94889 12.6994C9.90502 12.6409 9.86677 12.5763 9.83752 12.5059V7.02156C9.7582 7.08006 9.66145 7.11212 9.56527 7.1155C9.44208 7.1155 9.31608 7.05419 9.23114 6.87531C9.16645 6.74031 9.12539 6.53838 9.12539 6.2425C9.12539 5.23169 10.2678 4.56063 10.2678 4.56063L10.2667 4.56231Z",fill:"currentColor"})}),C1=()=>e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M1.9022 8.56378C1.87595 8.59003 1.9022 8.61628 1.92845 8.61628L5.26238 8.59003C5.31488 8.59003 5.34113 8.56378 5.36738 8.53753L5.52489 8.30126C5.55114 8.27501 5.52489 8.24876 5.49864 8.24876H2.19096C2.13846 8.24876 2.11221 8.27501 2.08596 8.30126L1.9022 8.56378Z",fill:"currentColor"}),e.jsx("path",{d:"M0.510874 9.40382C0.484622 9.43007 0.510874 9.45633 0.537125 9.45633H4.92111C4.94736 9.45633 4.99986 9.43007 4.99986 9.40382L5.07862 9.14131C5.07862 9.11506 5.05237 9.08881 5.02611 9.08881H0.799639C0.747136 9.08881 0.720885 9.11506 0.694634 9.14131L0.510874 9.40382Z",fill:"currentColor"}),e.jsx("path",{d:"M2.74224 10.2701C2.71599 10.2964 2.74224 10.3226 2.76849 10.3226L4.78985 10.2964C4.8161 10.2964 4.84235 10.2701 4.84235 10.2439L4.86861 10.0339C4.86861 10.0076 4.84235 9.98135 4.8161 9.98135H2.9785C2.926 9.98135 2.89975 10.0076 2.8735 10.0339L2.74224 10.2701Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10.8277 8.82629L12.3765 8.43252C12.4815 8.40627 12.5078 8.38002 12.4815 8.27501C12.2452 7.72373 11.904 7.27746 11.4052 6.96244C10.6702 6.46367 9.83012 6.35866 8.96382 6.51617C7.88752 6.69993 7.02122 7.25121 6.36494 8.1175C5.76115 8.90505 5.44614 9.82384 5.57739 10.8214C5.6824 11.6614 6.07617 12.344 6.75871 12.869C7.49375 13.4203 8.33379 13.604 9.25259 13.4728C10.3551 13.3153 11.2214 12.764 11.8777 11.8977C12.0213 11.7182 12.1434 11.5265 12.2462 11.3256C12.4014 11.8749 12.7121 12.3504 13.164 12.7377C13.8203 13.289 14.5816 13.5253 15.4217 13.5515C15.5058 13.5422 15.5933 13.5362 15.6842 13.5299C15.8483 13.5186 16.0233 13.5066 16.2092 13.4728C17.0493 13.289 17.8105 12.9215 18.4143 12.2915C19.2544 11.4252 19.6219 10.4276 19.4644 9.16756C19.3331 8.27501 18.8869 7.59247 18.1518 7.0937C17.3643 6.54242 16.4717 6.46366 15.5267 6.62117C14.4241 6.83118 13.6103 7.27746 12.9278 8.17C12.6465 8.53332 12.4333 8.91756 12.2974 9.32507H9.33134C9.20009 9.32507 9.12133 9.43007 9.09508 9.48258C8.98155 9.68694 8.80909 10.0681 8.67965 10.3541C8.65944 10.3988 8.64028 10.4411 8.62256 10.4801C8.57005 10.6376 8.62256 10.7689 8.80632 10.7689H10.5914C10.4864 10.9001 10.4077 11.0051 10.3289 11.1101L10.3289 11.1102C9.90887 11.5827 9.38385 11.7927 8.75381 11.7139C8.01877 11.6089 7.49375 11.0052 7.49375 10.2701C7.49375 9.50883 7.80876 8.90505 8.4388 8.51127C8.96382 8.17001 9.54136 8.09125 10.1189 8.38002C10.3289 8.45877 10.4339 8.56378 10.5652 8.72129C10.6594 8.8627 10.6902 8.85599 10.7905 8.83414C10.8019 8.83166 10.8143 8.82897 10.8277 8.82629ZM17.6268 9.82381V9.82384C17.5743 10.6114 17.1805 11.2152 16.4192 11.5827C15.9467 11.8189 15.4217 11.8452 14.9229 11.6352C14.2666 11.3202 13.9253 10.5851 14.0828 9.87635C14.2929 9.01005 14.8441 8.45877 15.7104 8.27501C16.603 8.065 17.443 8.59003 17.6005 9.50883C17.6268 9.61382 17.6268 9.69257 17.6268 9.82381Z",fill:"currentColor"})]}),x1=()=>e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M10.0032 19.25C9.75546 19.25 9.50941 19.185 9.29221 19.06L7.02908 17.7201C6.69106 17.5311 6.856 17.4642 6.96749 17.4257C7.41818 17.2679 7.50964 17.2322 7.9907 16.959C8.04127 16.9302 8.10745 16.9404 8.1592 16.9709L9.89783 18.0026C9.96061 18.0366 10.0497 18.0366 10.1079 18.0026L16.8869 14.0896C16.9497 14.054 16.9905 13.981 16.9905 13.9063V6.08372C16.9905 6.00567 16.9497 5.9361 16.8856 5.89707L10.1093 1.98745C10.0465 1.95012 9.96333 1.95012 9.90055 1.98745L3.12557 5.89707C3.0599 5.9344 3.01816 6.00736 3.01816 6.08203V13.9047C3.01816 13.9793 3.05889 14.0506 3.12337 14.0862L4.97976 15.1586C5.9877 15.6626 6.60367 15.0687 6.60367 14.4714V6.7506C6.60367 6.6403 6.69021 6.55546 6.80051 6.55546H7.65913C7.76604 6.55546 7.85428 6.6403 7.85428 6.7506V14.4748C7.85428 15.8187 7.12122 16.5908 5.84686 16.5908C5.45488 16.5908 5.14605 16.5908 4.28403 16.1666L2.5057 15.1417C2.06621 14.8871 1.79471 14.412 1.79471 13.9047V6.08203C1.79471 5.57296 2.06621 5.09783 2.5057 4.8467L9.29153 0.931991C9.72085 0.689336 10.291 0.689336 10.7169 0.931991L17.4943 4.84839C17.9321 5.10123 18.2053 5.57466 18.2053 6.08372V13.9063C18.2053 14.4137 17.9321 14.8871 17.4943 15.1417L10.7169 19.0564C10.4997 19.182 10.2537 19.2464 10.0025 19.2464",fill:"currentColor"}),e.jsx("path",{d:"M12.0972 13.8597C9.13101 13.8597 8.5091 12.4981 8.5091 11.3561C8.5091 11.2475 8.59666 11.161 8.70543 11.161H9.58102C9.67774 11.161 9.7592 11.2314 9.77447 11.3269C9.90682 12.2191 10.3005 12.6692 12.0941 12.6692C13.5229 12.6692 14.1304 12.3464 14.1304 11.5887C14.1304 11.1526 13.9573 10.8285 11.7378 10.6113C9.88137 10.4281 8.73428 10.0191 8.73428 8.53436C8.73428 7.16667 9.88816 6.35217 11.8209 6.35217C13.9912 6.35217 15.067 7.10558 15.2028 8.72441C15.2079 8.78041 15.1875 8.83471 15.1502 8.87543C15.1129 8.91446 15.0603 8.93822 15.006 8.93822H14.1253C14.0336 8.93822 13.9539 8.87374 13.9352 8.7855C13.7231 7.84712 13.2107 7.54677 11.8175 7.54677C10.2581 7.54677 10.0765 8.08978 10.0765 8.49703C10.0765 8.99082 10.2903 9.13506 12.3945 9.41334C14.4782 9.68994 15.4675 10.0802 15.4675 11.5446C15.4675 13.0209 14.2356 13.8677 12.0873 13.8677",fill:"currentColor"})]}),h1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M14.1875 10.4387C14.1714 8.66751 15.6353 7.8165 15.7013 7.77467C14.8776 6.56974 13.5971 6.40565 13.1402 6.38635C12.0511 6.27535 11.0135 7.02823 10.4601 7.02823C9.90665 7.02823 9.05402 6.40243 8.14992 6.42013C6.96106 6.43783 5.86552 7.11027 5.25259 8.17524C4.01869 10.3148 4.93728 13.4888 6.14061 15.2279C6.72941 16.0773 7.42921 17.0344 8.35101 16.999C9.23903 16.9637 9.57364 16.4247 10.6451 16.4247C11.7165 16.4247 12.0189 16.999 12.9552 16.9814C13.9092 16.962 14.5141 16.1126 15.098 15.26C15.7721 14.2739 16.0504 13.3183 16.0665 13.2684C16.0456 13.2604 14.2068 12.5558 14.1875 10.4387Z",fill:"currentColor"}),e.jsx("path",{d:"M12.4259 5.23612C12.915 4.64411 13.2448 3.82045 13.1547 3C12.4501 3.02896 11.5974 3.46975 11.0923 4.06175C10.6402 4.58459 10.2429 5.42273 10.3507 6.22708C11.1341 6.28822 11.9369 5.82651 12.4259 5.23612Z",fill:"currentColor"})]}),m1=()=>e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5.26508 1.01587C5.32169 0.983195 5.39406 1.00259 5.42674 1.05919L6.34966 2.6578C7.14861 1.93639 8.22788 1.4513 9.43534 1.33485H10.5645C11.772 1.45134 12.8513 1.93649 13.6503 2.65793L14.5733 1.05919C14.606 1.00259 14.6784 0.983196 14.735 1.01588C14.7916 1.04855 14.811 1.12093 14.7783 1.17753L13.8267 2.82567C14.5865 3.58625 15.0512 4.5756 15.0663 5.65919H4.93349C4.94859 4.57551 5.41337 3.58612 6.1732 2.82554L5.22177 1.17753C5.18909 1.12093 5.20848 1.04855 5.26508 1.01587ZM8.49066 3.64912C8.49161 3.96265 8.23213 4.21755 7.91103 4.21842C7.59009 4.21921 7.32911 3.9658 7.32816 3.65228V3.64912C7.32729 3.33552 7.58677 3.08069 7.90779 3.07982C8.22873 3.07896 8.48972 3.33229 8.49066 3.64597V3.64912ZM12.8295 3.64912C12.8305 3.96265 12.571 4.21755 12.2499 4.21842C11.9289 4.21921 11.668 3.9658 11.667 3.65228V3.64912C11.6661 3.33552 11.9256 3.08069 12.2466 3.07982C12.5676 3.07896 12.8286 3.33229 12.8295 3.64597V3.64912Z",fill:"currentColor"}),e.jsx("path",{d:"M4.89373 6.26809C4.89373 6.22454 4.89696 6.18146 4.90067 6.13886H15.101C15.1046 6.18131 15.1062 6.22454 15.1062 6.26809V13.5703C15.1062 14.3555 14.4846 14.9882 13.7128 14.9882H13.6579V17.8765C13.6579 18.4971 13.1549 19 12.5344 19C11.914 19 11.4109 18.4971 11.4109 17.8765V14.9882H8.58912V17.8765C8.58912 18.497 8.0861 19 7.46559 19C6.84517 19 6.34214 18.497 6.34214 17.8765V14.9882H6.287C5.51533 14.9882 4.89373 14.3556 4.89373 13.5703V6.26809Z",fill:"currentColor"}),e.jsx("path",{d:"M3.08856 6.78871C3.70898 6.78871 4.21201 7.29174 4.21201 7.91224V12.7319C4.21201 13.3524 3.70898 13.8554 3.08856 13.8554C2.46805 13.8554 1.96503 13.3524 1.96503 12.732V7.91232C1.96495 7.29182 2.46798 6.78871 3.08856 6.78871Z",fill:"currentColor"}),e.jsx("path",{d:"M16.9115 6.78871C17.5319 6.78871 18.0349 7.29174 18.0349 7.91224V12.7319C18.0349 13.3524 17.5319 13.8554 16.9115 13.8554C16.291 13.8554 15.788 13.3524 15.788 12.732V7.91232C15.788 7.29182 16.291 6.78871 16.9115 6.78871Z",fill:"currentColor"})]}),u1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M12.2161 9.99981C12.2161 10.8859 11.4978 11.6042 10.6118 11.6042C9.72572 11.6042 9.00743 10.8859 9.00743 9.99981C9.00743 9.11375 9.72572 8.39546 10.6118 8.39546C11.4978 8.39546 12.2161 9.11375 12.2161 9.99981Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.82782 3.26238C10.0868 3.47284 10.3488 3.70689 10.6119 3.96264C10.8749 3.70695 11.1369 3.47295 11.3958 3.26254C12.0645 2.71903 12.729 2.31926 13.3494 2.11854C13.9698 1.91785 14.5895 1.90424 15.1118 2.20581C15.6341 2.50738 15.9322 3.05082 16.0686 3.68844C16.205 4.32611 16.191 5.10144 16.0547 5.95233C16.0019 6.28176 15.9302 6.62569 15.8403 6.98129C16.1933 7.08121 16.527 7.19114 16.8387 7.31016C17.6437 7.61754 18.3222 7.9931 18.8062 8.43006C19.2902 8.86697 19.6118 9.39682 19.6118 9.99995C19.6118 10.6031 19.2902 11.1329 18.8062 11.5698C18.3222 12.0068 17.6437 12.3824 16.8387 12.6897C16.527 12.8088 16.1933 12.9187 15.8403 13.0186C15.9302 13.3742 16.0019 13.7182 16.0547 14.0476C16.191 14.8985 16.205 15.6738 16.0686 16.3115C15.9322 16.9491 15.6341 17.4925 15.1118 17.7941C14.5895 18.0957 13.9698 18.0821 13.3494 17.8814C12.729 17.6807 12.0645 17.2809 11.3958 16.7374C11.1369 16.527 10.8749 16.293 10.6119 16.0373C10.3488 16.293 10.0868 16.5271 9.82782 16.7375C9.15909 17.281 8.49462 17.6808 7.87418 17.8815C7.25381 18.0822 6.63414 18.0958 6.11181 17.7943C5.58948 17.4927 5.29143 16.9493 5.15505 16.3116C5.01866 15.674 5.03264 14.8986 5.16896 14.0477C5.22175 13.7183 5.2934 13.3743 5.38336 13.0186C5.03039 12.9187 4.69668 12.8088 4.38497 12.6897C3.57992 12.3824 2.90147 12.0068 2.41743 11.5698C1.93343 11.1329 1.61182 10.6031 1.61182 9.99995C1.61182 9.39682 1.93343 8.86697 2.41743 8.43006C2.90147 7.9931 3.57992 7.61754 4.38497 7.31016C4.69668 7.19114 5.03039 7.08121 5.38336 6.98129C5.2934 6.62563 5.22175 6.28165 5.16896 5.95217C5.03264 5.10128 5.01866 4.32595 5.15505 3.68828C5.29143 3.05067 5.58948 2.50722 6.11181 2.20566C6.63414 1.90409 7.25381 1.91769 7.87418 2.11839C8.49462 2.31911 9.15909 2.71888 9.82782 3.26238ZM6.50312 2.88342C6.76685 2.73115 7.13693 2.70243 7.6333 2.86301C8.12961 3.02357 8.70889 3.36147 9.33422 3.8697C9.5745 4.06499 9.81914 4.28342 10.0659 4.52332C9.55055 5.08073 9.0373 5.71622 8.54244 6.41558C7.68933 6.49446 6.88233 6.62119 6.14191 6.78878C6.05754 6.45515 5.99069 6.13409 5.94171 5.82837C5.81423 5.03269 5.81124 4.36208 5.92035 3.85198C6.02947 3.34182 6.23938 3.03568 6.50312 2.88342ZM9.56361 6.3454C9.90985 5.88844 10.2614 5.46697 10.6119 5.08568C10.9624 5.46697 11.3139 5.88845 11.6601 6.34541C11.316 6.32973 10.9662 6.32169 10.6118 6.32169C10.2575 6.32169 9.90766 6.32973 9.56361 6.3454ZM6.35594 7.54281C6.86142 7.42988 7.4022 7.33621 7.97108 7.26484C7.78545 7.55501 7.60355 7.85398 7.42634 8.16091C7.24917 8.46778 7.08123 8.77474 6.92278 9.08053C6.70015 8.55219 6.51088 8.03703 6.35594 7.54281ZM8.1041 8.55221C7.8236 9.03805 7.56802 9.52241 7.338 9.99996C7.56802 10.4775 7.8236 10.9619 8.1041 11.4477C8.38463 11.9336 8.67634 12.3972 8.97493 12.8352C9.50353 12.8748 10.0508 12.8956 10.6118 12.8956C11.1729 12.8956 11.7202 12.8748 12.2488 12.8352C12.5474 12.3972 12.839 11.9337 13.1195 11.4479C13.4 10.962 13.6557 10.4776 13.8857 9.99996C13.6557 9.52236 13.4 9.03795 13.1195 8.55206C12.839 8.06622 12.5473 7.60269 12.2488 7.16472C11.7202 7.12514 11.1729 7.1043 10.6118 7.1043C10.0508 7.1043 9.50354 7.12513 8.97495 7.16471C8.67635 7.60273 8.38463 8.06632 8.1041 8.55221ZM5.59592 7.73447C5.821 8.45948 6.11473 9.22172 6.47298 9.99996C6.11474 10.7782 5.821 11.5404 5.59593 12.2654C5.26483 12.1717 4.95337 12.0691 4.66413 11.9586C3.91132 11.6712 3.32905 11.3385 2.94184 10.9889C2.55459 10.6393 2.39443 10.3045 2.39443 9.99995C2.39443 9.69541 2.55459 9.36056 2.94184 9.01098C3.32905 8.66144 3.91132 8.32872 4.66413 8.04128C4.95337 7.93085 5.26482 7.82821 5.59592 7.73447ZM6.92278 10.9194C6.70016 11.4477 6.51089 11.9629 6.35594 12.4571C6.86142 12.57 7.4022 12.6637 7.97106 12.7351C7.78544 12.4449 7.60354 12.1459 7.42634 11.839C7.24917 11.5321 7.08123 11.2252 6.92278 10.9194ZM5.94171 14.1716C5.9907 13.8658 6.05755 13.5448 6.14192 13.2111C6.88233 13.3787 7.68932 13.5054 8.54243 13.5843C9.03729 14.2837 9.55055 14.9192 10.0659 15.4766C9.81913 15.7165 9.5745 15.9349 9.33422 16.1302C8.70889 16.6385 8.12961 16.9764 7.6333 17.1369C7.13693 17.2975 6.76685 17.2688 6.50312 17.1165C6.23938 16.9642 6.02947 16.6581 5.92035 16.1479C5.81124 15.6378 5.81423 14.9672 5.94171 14.1716ZM11.8894 16.1301C11.6492 15.9348 11.4046 15.7164 11.1579 15.4766C11.6732 14.9192 12.1865 14.2837 12.6813 13.5843C13.5344 13.5054 14.3413 13.3787 15.0817 13.2111C15.1661 13.5447 15.2329 13.8657 15.2819 14.1714C15.4094 14.9671 15.4124 15.6377 15.3033 16.1478C15.1942 16.6579 14.9842 16.9641 14.7205 17.1164C14.4568 17.2686 14.0867 17.2973 13.5903 17.1368C13.094 16.9762 12.5147 16.6383 11.8894 16.1301ZM10.6119 14.9142C10.9624 14.5329 11.3139 14.1115 11.6602 13.6545C11.3161 13.6702 10.9662 13.6782 10.6118 13.6782C10.2575 13.6782 9.90765 13.6702 9.56359 13.6545C9.90983 14.1115 10.2613 14.533 10.6119 14.9142ZM14.8677 12.4571C14.3623 12.57 13.8215 12.6637 13.2527 12.735C13.4383 12.4449 13.6201 12.146 13.7973 11.8392C13.9745 11.5322 14.1424 11.2252 14.3009 10.9194C14.5235 11.4477 14.7128 11.9629 14.8677 12.4571ZM15.6277 12.2654C15.4027 11.5404 15.1089 10.7782 14.7507 9.99996C15.1089 9.22172 15.4027 8.45948 15.6277 7.73448C15.9588 7.82822 16.2703 7.93085 16.5595 8.04128C17.3123 8.32872 17.8946 8.66144 18.2818 9.01098C18.669 9.36056 18.8292 9.69541 18.8292 9.99995C18.8292 10.3045 18.669 10.6393 18.2818 10.9889C17.8946 11.3385 17.3123 11.6712 16.5595 11.9586C16.2703 12.069 15.9588 12.1717 15.6277 12.2654ZM12.6813 6.41559C13.5344 6.49447 14.3413 6.6212 15.0817 6.78879C15.1661 6.45521 15.2329 6.1342 15.2819 5.82852C15.4094 5.03285 15.4124 4.36223 15.3033 3.85213C15.1942 3.34197 14.9842 3.03584 14.7205 2.88357C14.4568 2.7313 14.0867 2.70258 13.5903 2.86316C13.094 3.02372 12.5147 3.36162 11.8894 3.86986C11.6492 4.06511 11.4046 4.28349 11.1579 4.52333C11.6732 5.08074 12.1864 5.71623 12.6813 6.41559ZM14.3009 9.08051C14.5235 8.55218 14.7128 8.03703 14.8677 7.54281C14.3623 7.42989 13.8215 7.33622 13.2526 7.26485C13.4382 7.55497 13.6201 7.85388 13.7973 8.16075C13.9745 8.46767 14.1424 8.77467 14.3009 9.08051Z",fill:"currentColor"})]}),p1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.66699 6.57143V2H7.23843V6.57143H2.66699ZM3.66699 3H6.23843V5.57143H3.66699V3Z",fill:"currentColor"}),e.jsx("path",{d:"M8.38135 2V6.57143H12.9528V2H8.38135Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M14.0959 6.57143V2H18.6674V6.57143H14.0959ZM15.0959 3H17.6674V5.57143H15.0959V3Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.66699 7.71436V12.2858H7.23843V7.71436H2.66699ZM6.23843 8.71436H3.66699V11.2858H6.23843V8.71436Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8.38135 12.2858V7.71436H12.9528V12.2858H8.38135ZM9.38135 8.71436H11.9528V11.2858H9.38135V8.71436Z",fill:"currentColor"}),e.jsx("path",{d:"M14.0959 7.71436V12.2858H18.6674V7.71436H14.0959Z",fill:"currentColor"}),e.jsx("path",{d:"M2.66699 17.9999V13.4285H7.23843V17.9999H2.66699Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8.3811 13.4285V17.9999H12.9525V13.4285H8.3811ZM11.9525 14.4285H9.3811V16.9999H11.9525V14.4285Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M14.0957 17.9999V13.4285H18.6671V17.9999H14.0957ZM15.0957 14.4285H17.6671V16.9999H15.0957V14.4285Z",fill:"currentColor"})]}),f1=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M16.333 6.5L10.333 3L4.33301 6.5M16.333 6.5V13.5L10.333 17M16.333 6.5L10.333 10M10.333 17L4.33301 13.5V6.5M10.333 17L10.333 10M4.33301 6.5L10.333 10",stroke:"currentColor",strokeWidth:"1.5"})}),k=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M10.6127 3.44091C12.6754 3.44091 12.9196 3.45028 13.7308 3.48779C14.4847 3.52217 14.8918 3.65345 15.1632 3.76284C15.5221 3.90662 15.7814 4.08166 16.0498 4.35984C16.3212 4.64114 16.4871 4.90682 16.6258 5.27877C16.7313 5.56007 16.858 5.98515 16.8911 6.76343C16.9273 7.60735 16.9364 7.86052 16.9364 9.99531C16.9364 12.1332 16.9273 12.3864 16.8911 13.2272C16.858 14.0086 16.7313 14.4306 16.6258 14.7119C16.4871 15.0838 16.3182 15.3526 16.0498 15.6308C15.7784 15.9121 15.5221 16.084 15.1632 16.2278C14.8918 16.3372 14.4817 16.4685 13.7308 16.5028C12.9166 16.5403 12.6724 16.5497 10.6127 16.5497C8.5501 16.5497 8.30584 16.5403 7.49466 16.5028C6.74077 16.4685 6.33367 16.3372 6.06227 16.2278C5.70341 16.084 5.44408 15.909 5.17569 15.6308C4.90429 15.3495 4.73844 15.0838 4.59972 14.7119C4.49418 14.4306 4.36752 14.0055 4.33435 13.2272C4.29816 12.3833 4.28912 12.1301 4.28912 9.99531C4.28912 7.85739 4.29816 7.60422 4.33435 6.76343C4.36752 5.98203 4.49418 5.56007 4.59972 5.27877C4.73844 4.90682 4.90731 4.63802 5.17569 4.35984C5.44709 4.07853 5.70341 3.90662 6.06227 3.76284C6.33367 3.65345 6.74378 3.52217 7.49466 3.48779C8.30584 3.45028 8.5501 3.44091 10.6127 3.44091ZM10.6127 2C8.51693 2 8.25458 2.00938 7.43133 2.04688C6.6111 2.08439 6.04719 2.22192 5.55867 2.41883C5.04904 2.62512 4.61781 2.89705 4.1896 3.34401C3.75838 3.78785 3.49603 4.23481 3.297 4.75991C3.10702 5.26939 2.97433 5.85075 2.93815 6.70092C2.90196 7.55734 2.89291 7.82926 2.89291 10.0016C2.89291 12.1739 2.90196 12.4458 2.93815 13.2991C2.97433 14.1492 3.10702 14.7337 3.297 15.2401C3.49603 15.7683 3.75838 16.2153 4.1896 16.6591C4.61781 17.103 5.04904 17.378 5.55565 17.5812C6.04719 17.7781 6.60808 17.9156 7.42831 17.9531C8.25156 17.9906 8.51392 18 10.6097 18C12.7055 18 12.9679 17.9906 13.7911 17.9531C14.6114 17.9156 15.1753 17.7781 15.6638 17.5812C16.1704 17.378 16.6016 17.103 17.0299 16.6591C17.4581 16.2153 17.7234 15.7683 17.9194 15.2432C18.1094 14.7337 18.2421 14.1524 18.2783 13.3022C18.3145 12.4489 18.3235 12.177 18.3235 10.0047C18.3235 7.83239 18.3145 7.56046 18.2783 6.70717C18.2421 5.857 18.1094 5.27251 17.9194 4.76617C17.7295 4.23481 17.4671 3.78785 17.0359 3.34401C16.6077 2.90018 16.1765 2.62512 15.6698 2.42196C15.1783 2.22504 14.6174 2.08752 13.7972 2.05001C12.9709 2.00938 12.7086 2 10.6127 2Z",fill:"currentColor"}),e.jsx("path",{d:"M10.6131 5.89154C8.42377 5.89154 6.64761 7.73252 6.64761 10.0017C6.64761 12.2709 8.42377 14.1119 10.6131 14.1119C12.8024 14.1119 14.5785 12.2709 14.5785 10.0017C14.5785 7.73252 12.8024 5.89154 10.6131 5.89154ZM10.6131 12.6679C9.19274 12.6679 8.0408 11.4739 8.0408 10.0017C8.0408 8.52955 9.19274 7.33557 10.6131 7.33557C12.0334 7.33557 13.1853 8.52955 13.1853 10.0017C13.1853 11.4739 12.0334 12.6679 10.6131 12.6679Z",fill:"currentColor"}),e.jsx("path",{d:"M15.6614 5.72876C15.6614 6.26011 15.2452 6.68832 14.7356 6.68832C14.2229 6.68832 13.8098 6.25699 13.8098 5.72876C13.8098 5.1974 14.2259 4.76919 14.7356 4.76919C15.2452 4.76919 15.6614 5.20053 15.6614 5.72876Z",fill:"currentColor"})]}),N=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M7.64165 16.5455C13.6779 16.5455 16.9804 11.5085 16.9804 7.14179C16.9804 7.00019 16.9773 6.85544 16.971 6.71383C17.6135 6.246 18.1679 5.66653 18.6082 5.00264C18.0099 5.27069 17.3746 5.44575 16.7242 5.52185C17.4091 5.10844 17.9219 4.459 18.1676 3.69391C17.5233 4.07843 16.8186 4.34967 16.0838 4.49601C15.5888 3.96632 14.9342 3.6156 14.2213 3.49808C13.5085 3.38056 12.777 3.50278 12.14 3.84585C11.5031 4.18891 10.9961 4.73372 10.6974 5.39603C10.3988 6.05834 10.3252 6.80127 10.4879 7.50996C9.18321 7.44403 7.90684 7.10275 6.74154 6.50824C5.57623 5.91373 4.54801 5.07926 3.72353 4.05893C3.30448 4.78644 3.17625 5.64732 3.3649 6.46661C3.55355 7.2859 4.04492 8.00212 4.73915 8.46971C4.21797 8.45305 3.7082 8.31175 3.25197 8.05749V8.0984C3.2515 8.86186 3.51361 9.60193 3.99376 10.1928C4.4739 10.7837 5.14243 11.1889 5.88572 11.3395C5.40292 11.4726 4.8962 11.4919 4.40478 11.3962C4.61452 12.0528 5.0226 12.627 5.57206 13.0388C6.12153 13.4506 6.78496 13.6794 7.46978 13.6933C6.30716 14.6129 4.871 15.1117 3.39259 15.1093C3.13041 15.1089 2.86848 15.0927 2.60822 15.0609C4.11012 16.0311 5.85724 16.5464 7.64165 16.5455Z",fill:"currentColor"})}),v=Object.freeze(Object.defineProperty({__proto__:null,AirdropperIcon:l1,AnalyticsIcon:s1,AndroidIcon:m1,CartIcon:n1,CollectiblesIcon:o1,DiscordIcon:y,GolangIcon:C1,IOSIcon:h1,IndexerIcon:p1,InstagramIcon:k,MarketplaceIcon:t1,MinterIcon:a1,NodeGatewayIcon:f1,NodeJSIcon:x1,ReactIcon:u1,SequenceIcon:r1,TwitterIcon:N,UnityIcon:c1,UnrealIcon:d1,WalletIcon:i1},Symbol.toStringTag,{value:"Module"})),g1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"Solutions"}),e.jsx("p",{className:"text-md leading-6 font-medium max-w-xl dark:text-white-80 text-black-80",children:"Follow our solution guides to boost your game's acquisition, monetization and retention with the power of web3."})]}),e.jsxs("div",{className:"flex gap-4",children:[e.jsx(w,{theme:"purple",heading:"Acquire players",items:[{icon:"WalletIcon",title:"Universal Wallet",body:"Easily onboard web3-native players with a complete Universal Wallet.",link:"/solutions/wallets/universal-wallet/01-overview"},{icon:"WalletIcon",title:"Embedded Wallet",body:"Gasless Transactions. No popups. Deliver a seamless experience for both web2 and web3 players with Sequence Wallet-as-a-Service embedded into your game or app.",link:"/solutions/wallets/embedded-wallet/01-overview"},{icon:"CollectiblesIcon",title:"Collectibles",body:"Manage contracts and collections with our no-code Builder.",link:"/solutions/collectibles/contracts/01-deploy-an-item-collection"}]}),e.jsx(w,{theme:"green",heading:"Earn more revenue",items:[{icon:"MarketplaceIcon",title:"Marketplace",body:"Launch an in-game collectibles marketplace within minutes.",link:"/solutions/marketplaces/white-label-marketplace"},{icon:"SequenceIcon",title:"Orderbook API",body:"Integrate custom in-game marketplaces with our APIs.",link:"/solutions/marketplaces/orderbook/01-overview"},{icon:"CartIcon",title:"NFT Checkout",body:"Offer easy purchases with credit card, crypto, IAP support.",link:"/"},{icon:"SequenceIcon",title:"Onramps",body:"Allow players to convert from fiat to any crypto globally.",link:"/solutions/payments/onramps/01-fiat-on-ramps"}]}),e.jsx(w,{theme:"yellow",heading:"Retain and grow",items:[{icon:"MinterIcon",title:"Minter",body:"Securely mint achievement tokens tied to your game.",link:"/guides/webgl-guide#deploy-a-remote-minter"},{icon:"AnalyticsIcon",title:"Analytics",body:"Track every aspect of web3 activity within your games.",link:"/"}]})]})]}),w=({heading:t,items:l,theme:s})=>e.jsx("div",{className:"flex-1 h-fit shrink-0 rounded-xl dark:bg-white-10 bg-white overflow-hidden",children:e.jsxs("div",{className:"flex flex-col gap-3 p-4 relative",children:[e.jsx("div",{className:a("absolute inset-0 opacity-20 z-0 pointer-events-none",{"dark:bg-gradient-to-b from-[#3400A0] to-transparent":s==="purple","dark:bg-gradient-to-b from-[#0A3F16] to-transparent":s==="green","dark:bg-gradient-to-b from-[#897031] to-transparent":s==="yellow"})}),e.jsx("p",{className:"px-4 font-bold text-themed-primary z-10",children:t}),l.map((o,r)=>{const i=v[o.icon];return e.jsxs("a",{href:o.link,className:"hover-fade p-4 rounded-md z-10 dark:bg-white-10 bg-black-7",children:[e.jsx("div",{className:"flex gap-2",children:e.jsxs("p",{className:"flex items-center gap-2 text-xl leading-7 font-bold text-themed-primary",children:[e.jsx(i,{}),o.title]})}),e.jsx("p",{className:"text-themed-secondary text-sm font-medium",children:o.body})]},r)})]})}),n=({href:t,...l})=>t!=null&&t.startsWith("/")?e.jsx("a",{href:t,...l}):e.jsx("a",{href:t,target:"_blank",rel:"noopener noreferrer",...l}),w1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"Guides"}),e.jsx("p",{className:"text-md leading-6 font-medium dark:text-white-80 text-black-80",children:"Follow our step-by-step guides and open source code templates to accelerate your time to market."})]}),e.jsxs("div",{className:"flex flex-wrap gap-4",children:[e.jsx(C,{title:"Build a web3 game with WebGL",body:"Follow a step by step guide to build a web-based game demo that leverages Sequence Embedded Wallet with custom in-game achievement tokens.",link:"/guides/webgl-guide/#integrate-sequencekit-with-waas"}),e.jsx(C,{title:"Build a web3 game with Unity",body:"Learn how to build an engaging iOS and Android game that uses Sequence Embedded Wallets under the hood for an integrated marketplace and in-game currency.",link:"/guides/webgl-guide/#integrate-sequencekit-with-waas"}),e.jsx(C,{title:"Create web3 lootboxes",body:"With this tutorial, build a web-based maze where lootbox items are generated using AI and dynamically minted into the player's universal wallet.",link:"/guides/webgl-guide/#integrate-sequencekit-with-waas"}),e.jsx(C,{title:"Orderbook Marketplace",body:"Build an API-driven marketplace where players can mint, then sell or buy items using a custom web-based interface leveraging Sequence Orderbook APIs.",link:"/solutions/marketplaces/orderbook/01-overview"})]})]}),C=({title:t,body:l,link:s})=>e.jsxs("div",{className:"flex flex-col gap-4 p-4 dark:bg-white-10 bg-white rounded-xl w-[calc(50%-8px)]",children:[e.jsx("div",{className:"rounded-md overflow-hidden w-full aspect-[2]",children:e.jsx("img",{src:"https://unsplash.it/500/300",className:"object-cover w-full h-full"})}),e.jsx("p",{className:"text-xl leading-7 text-themed-primary font-bold",children:t}),e.jsx("p",{className:"text-themed-secondary text-md font-medium leading-6",children:l}),e.jsx(n,{href:s,className:"hover-fade rounded-md dark:bg-white-15 bg-black-7 px-4 py-3 text-themed-primary text-sm font-bold w-fit",children:"Read guide"})]}),v1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"SDKs"}),e.jsx("p",{className:"text-md leading-6 font-medium max-w-xl dark:text-white-80 text-black-80",children:"Leverage our open source SDKs to easily integrate from any popular game development framework or language."})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(d,{icon:"UnityIcon",title:"Unity",body:"Integrate Sequence with our native Unity library.",link:"/sdk/unity/01-overview"}),e.jsx(d,{icon:"UnrealIcon",title:"Unreal Engine",body:"Integrate Sequence with our native Unreal Engine library.",link:"/sdk/unreal/01-overview"}),e.jsx(d,{icon:"GolangIcon",title:"Go",body:"Leverage Sequence APIs easily from your Go backend.",link:"/sdk/go/overview"}),e.jsx(d,{icon:"NodeJSIcon",title:"Node.js",body:"Integrate Sequence APIs with our TypeScript SDK.",link:"/"}),e.jsx(d,{icon:"SequenceIcon",title:"Sequence Kit",body:"Add web onboarding for any web3 wallet.",link:"/"})]})]}),d=({title:t,body:l,icon:s,link:o})=>{const r=v[s];return e.jsxs(n,{href:o,className:"hover-fade p-4 dark:bg-white-10 bg-white rounded-xl w-[calc(33%-(16px/3))]",children:[e.jsxs("p",{className:"font-bold text-themed-primary text-xl leading-7 flex items-center gap-2",children:[e.jsx(r,{}),t]}),e.jsx("p",{className:"text-sm font-medium text-themed-secondary",children:l})]})},b1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"APIs"}),e.jsx("p",{className:"text-md leading-6 font-medium max-w-xl dark:text-white-80 text-black-80",children:"Use our modular APIs for more advanced integrations and for accessing on-chain data through easy-to-use interfaces."})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(c,{title:"Marketplace API",icon:"MarketplaceIcon",body:"Integrate sell and buy operations through our orderbook interface.",link:"/api/marketplace"}),e.jsx(c,{title:"Indexer API",icon:"IndexerIcon",body:"Query wallets and contracts on Ethereum-compatible chains.",link:"/api/indexer/01-overview"}),e.jsx(c,{title:"Metadata API",icon:"SequenceIcon",body:"Fetch token details on any collection and collectible.",link:"/api/metadata"}),e.jsx(c,{title:"Transactions API",icon:"SequenceIcon",body:"Send and optimize transactions on any chain through our performant Sequence Relayer.",link:"/api/relayer"}),e.jsx(c,{title:"Embedded Wallets API",icon:"WalletIcon",body:"Easily onboard web3-native players with a complete Universal Wallet.",link:"/"}),e.jsx(c,{title:"Node Gateway",icon:"NodeGatewayIcon",body:"Leverage Sequence's auto-scaling node service.",link:"/solutions/builder/node-gateway"})]})]}),c=({title:t,body:l,icon:s,link:o})=>{const r=v[s];return e.jsxs(n,{href:o,className:"hover-fade p-4 dark:bg-white-10 bg-white rounded-xl w-[calc(33%-(16px/3))]",children:[e.jsxs("p",{className:"font-bold text-themed-primary text-xl leading-7 flex items-center gap-2",children:[e.jsx(r,{}),t]}),e.jsx("p",{className:"text-sm font-medium text-themed-secondary",children:l})]})},j1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"Support"}),e.jsx("p",{className:"text-md leading-6 font-medium max-w-xl dark:text-white-80 text-black-80",children:"Follow our solution guides to boost your game's acquisition, monetization and retention with the power of web3."})]}),e.jsxs("div",{className:"flex flex-wrap gap-x-10 gap-y-5",children:[e.jsx(x,{link:"/support",title:"Chat Support",body:"Chat with our support team on specific questions."}),e.jsx(x,{link:"https://discord.gg/sequence",title:"Community",body:"Join our Discord community to learn from others building on Sequence."}),e.jsx(x,{link:"https://go.crisp.chat/chat/embed/?website_id=9ef4395b-6bb1-4645-8e02-6071d89290a1",title:"Contact our team",body:"Reach out to our integration team to discuss how you can partner with Sequence."}),e.jsx(x,{link:"https://support.sequence.xyz",title:"Knowledge Base",body:"Browse FAQs and answers to common support requests."})]})]}),x=({title:t,body:l,link:s})=>e.jsxs("div",{className:"w-[calc(50%-20px)] border-t dark:border-white-10 border-black-10 flex flex-col gap-3 py-5",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-themed-primary font-bold text-xl leading-7",children:t}),e.jsx("p",{className:"text-themed-secondary font-medium text-sm leading-5",children:l})]}),e.jsx(n,{href:s,className:"hover-fade px-5 py-3 dark:bg-white-15 bg-black-7 rounded-full w-fit text-sm leading-5 font-bold text-themed-primary",children:"Contact us"})]});function y1({children:t,className:l}){return e.jsxs("div",{className:a("relative",l),children:[e.jsx("div",{className:"absolute inset-0 z-0 flex items-center",children:e.jsx("div",{className:"w-full h-full max-h-[600px] dark:bg-gradient-dark bg-gradient-light"})}),e.jsx("div",{className:"relative z-10",children:t})]})}const k1=({logo:t})=>{const[l,s]=H1(),[o,r]=h.useState("");return e.jsx("footer",{className:"border-t border-black-10 px-5 pt-15",children:e.jsxs("div",{className:"w-full max-w-screen-lg mx-auto flex flex-col gap-10",children:[e.jsxs("div",{className:"flex flex-col gap-5",children:[e.jsx(n,{href:"https://sequence.xyz",className:"hover-fade w-fit",children:t}),e.jsxs("div",{className:"flex items-start gap-10",children:[e.jsx("div",{className:"flex-1",children:e.jsx("form",{onSubmit:i=>{i.preventDefault(),s(o)},children:e.jsxs("div",{className:"flex items-center rounded-lg border dark:border-white-25 border-black-10 p-3 md:max-w-[378px]",children:[e.jsx("input",{className:a("pl-1 pr-4 w-full outline-none bg-transparent text-sm","dark:text-white-80 text-black-80","dark:placeholder:text-white-50 placeholder:text-black-50"),placeholder:"Stay up to date",type:"text",value:l==="invalid"?"Please enter a valid email address!":l==="success"?"Thanks for joining!":o,disabled:l!=="initial",onChange:i=>r(i.target.value)}),e.jsx("button",{type:"submit",disabled:l!=="initial",className:"hover-fade px-3 py-1 rounded text-themed-primary dark:bg-white-15 bg-black-7 font-bold text-[0.625rem] leading-[1rem] disabled:pointer-events-none","aria-label":"Join",children:e.jsx("div",{className:"flex justify-center w-[22px]",children:l==="loading"?e.jsx("div",{className:"py-0.5",children:e.jsx("div",{className:a("w-3 h-3 border-2 rounded-full border border-l-transparent animate-spin","dark:border-t-white border-t-black-80","dark:border-r-white border-r-black-80","dark:border-b-white border-b-black-80")})}):"Join"})})]})})}),e.jsxs("div",{className:"flex-1 flex gap-2 text-xs font-medium text-themed-secondary",children:[e.jsxs("div",{className:"flex gap-2 flex-1",children:[e.jsxs("div",{className:"flex flex-col gap-3 flex-1",children:[e.jsx(n,{href:"https://sequence.xyz",className:"hover-fade w-fit",children:"Home"}),e.jsx(n,{href:"https://sequence.xyz/pricing",className:"hover-fade w-fit",children:"Pricing"}),e.jsx(n,{href:"https://sequence.xyz/blog",className:"hover-fade w-fit",children:"Blog"})]}),e.jsxs("div",{className:"flex flex-col gap-3 flex-1",children:[e.jsx(n,{href:"https://sequence.xyz/terms",className:"hover-fade w-fit",children:"Terms"}),e.jsx(n,{href:"https://sequence.xyz/privacy",className:"hover-fade w-fit",children:"Privacy"})]})]}),e.jsxs("div",{className:"flex gap-2 flex-1",children:[e.jsxs("div",{className:"flex flex-col gap-3 flex-1",children:[e.jsx(n,{href:"https://sequence.xyz/contact",className:"hover-fade w-fit",children:"Contact"}),e.jsx(n,{href:"https://40061393.fs1.hubspotusercontent-na1.net/hubfs/40061393/Sequence%20Media%20Kit%202024.pdf",className:"hover-fade w-fit",children:"Media kit"}),e.jsx(n,{href:"/",className:"hover-fade w-fit",children:"Docs"})]}),e.jsxs("div",{className:"flex flex-col gap-3 flex-1",children:[e.jsx(n,{href:"https://sequence.build",className:"hover-fade w-fit",children:"Sequence Builder"}),e.jsx(n,{href:"https://sequence.app",className:"hover-fade w-fit",children:"Sequence Wallet"})]})]})]})]})]}),e.jsxs("div",{className:"border-t dark:border-white-10 border-black-10 flex items-center justify-between py-7",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(n,{href:"https://twitter.com/0xsequence",className:"text-themed-secondary hover-fade",children:e.jsx(N,{})}),e.jsx(n,{href:"https://discord.gg/sequence",className:"text-themed-secondary hover-fade",children:e.jsx(y,{})}),e.jsx(n,{href:"https://www.instagram.com/0xsequence",className:"text-themed-secondary hover-fade",children:e.jsx(k,{})})]}),e.jsx(n,{href:"https://horizon.io",className:"hover-fade",children:e.jsx("img",{src:"/img/horizon-logo.png",className:"max-w-24 dark:invert-0 invert"})})]})]})})},N1=/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/,M1="65e38f6a-690c-4318-80db-be3b97a34448",H1=()=>{const[t,l]=h.useState("initial"),s=h.useRef(void 0);return h.useEffect(()=>()=>{clearTimeout(s.current),s.current=void 0},[]),[t,async r=>{if(!N1.test(r)){l("invalid"),clearTimeout(s.current),s.current=setTimeout(()=>l("initial"),1500);return}l("loading");const M=await fetch(`https://sequence-contentful.vercel.app/api/forms/${M1}`,{method:"POST",body:JSON.stringify({fields:[{name:"email",value:r}],context:{pageUri:window.location.href,pageName:"Sequence docs footer"},skipValidation:"false"})}),{result:H}=await M.json();if(H==="error"){l("error"),clearTimeout(s.current),s.current=setTimeout(()=>l("initial"),1500);return}l("success")}]},V1={title:"Sequence - Web3 Gaming Platform",layout:"landing",showLogo:!1,content:{horizontalPadding:"0px",width:"100%",verticalPadding:"0px"}};function b(t){return Q||j("HomePage",!1),m||j("HomePage.Logo",!0),e.jsxs("div",{className:"flex flex-col",children:[e.jsx(e1,{logo:e.jsx(m,{className:"w-52"})}),e.jsx("div",{className:"px-5 z-10",children:e.jsx("div",{className:"w-full max-w-screen-lg mx-auto",children:e.jsx(g1,{})})}),e.jsx(y1,{className:"px-5 mt-30",children:e.jsx("div",{className:"w-full max-w-screen-lg mx-auto",children:e.jsx(w1,{})})}),e.jsx("div",{className:"px-5 my-30",children:e.jsxs("div",{className:"w-full max-w-screen-lg mx-auto flex flex-col gap-30",children:[e.jsx(v1,{}),e.jsx(b1,{}),e.jsx(j1,{})]})}),e.jsx(k1,{logo:e.jsx(m,{className:"w-32"})})]})}function I1(t={}){const{wrapper:l}={...R(),...t.components};return l?e.jsx(l,{...t,children:e.jsx(b,{...t})}):b()}function j(t,l){throw new Error("Expected "+(l?"component":"object")+" `"+t+"` to be defined: you likely forgot to import, pass, or provide it.")}export{I1 as default,V1 as frontmatter}; +import{j as e,L,c as a,u as Z,a as V,R as I,b as S,T as u,C as p,r as h,d as R}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";var q="vocs_Button_button",_="vocs_Button_button_accent";function P({children:t,className:l,href:s,variant:o}){return e.jsx(L,{className:a(l,q,o==="accent"&&_),href:s,variant:"styleless",children:t})}var z="vocs_HomePage_button",B="vocs_HomePage_buttons",A="vocs_HomePage_description",E="vocs_HomePage_logo",f="vocs_HomePage_packageManager",T="vocs_HomePage",W="vocs_HomePage_tabs",g="vocs_HomePage_tabsContent",G="vocs_HomePage_tabsList",U="vocs_HomePage_tagline",O="vocs_HomePage_title";function D({children:t,className:l}){return e.jsx("div",{className:a(l,T),children:t})}function m({className:t}){const{logoUrl:l,title:s}=Z();return l?e.jsx("div",{className:a(t,E),children:e.jsx(V,{})}):e.jsx("h1",{className:a(t,O),children:s})}function F({children:t,className:l}){return e.jsx("div",{className:a(l,U),children:t})}function $({children:t,className:l}){return e.jsx("div",{className:a(l,A),children:t})}function K({children:t,className:l}){return e.jsx("div",{className:a(l,B),children:t})}function J(t){return e.jsx(P,{...t,className:a(z,t.className)})}function X({name:t,type:l="install"}){return e.jsxs(I,{className:W,defaultValue:"npm",children:[e.jsxs(S,{className:G,children:[e.jsx(u,{value:"npm",children:"npm"}),e.jsx(u,{value:"pnpm",children:"pnpm"}),e.jsx(u,{value:"yarn",children:"yarn"})]}),e.jsxs(p,{className:g,value:"npm",children:[e.jsx("span",{className:f,children:"npm"})," ",l==="init"?"init":"install"," ",t]}),e.jsxs(p,{className:g,value:"pnpm",children:[e.jsx("span",{className:f,children:"pnpm"})," ",l==="init"?"create":"install"," ",t]}),e.jsxs(p,{className:g,value:"yarn",children:[e.jsx("span",{className:f,children:"yarn"})," ",l==="init"?"create":"install"," ",t]})]})}const Q=Object.freeze(Object.defineProperty({__proto__:null,Button:J,Buttons:K,Description:$,InstallPackage:X,Logo:m,Root:D,Tagline:F},Symbol.toStringTag,{value:"Module"}));function Y({children:t,className:l}){return e.jsxs("div",{className:a("relative",l),children:[e.jsx("div",{className:"absolute inset-0 z-0 flex items-center dark:bg-matrix-dark bg-matrix-light mix-blend-normal dark:mix-blend-multiply",children:e.jsx("div",{style:{height:"100%",width:"100%",maxHeight:"465px"}})}),e.jsx("div",{className:"relative z-10",children:t})]})}const e1=({logo:t})=>e.jsx(Y,{className:"pt-20 pb-40 -mb-10 px-5 z-0",children:e.jsxs("section",{className:"flex flex-col items-center gap-4 max-w-screen-lg mx-auto",children:[t,e.jsx("h2",{className:"text-xl font-bold text-themed-primary max-w-3xl text-center text-wrap",children:"Welcome to Sequence docs. Here you can learn about the modular Sequence products that empower game developers to build engaging web3 games on any Ethereum-compatible chain."})]})}),t1=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M17.333 7.86186L15.553 3.41174H5.11305L3.33301 7.86186V7.94115C3.33301 8.28156 3.43174 8.78299 3.74002 9.21116C3.85255 9.36746 3.99075 9.51049 4.15654 9.63056V16.5882H16.5095V9.63056C16.6753 9.51049 16.8135 9.36746 16.926 9.21116C17.2343 8.78299 17.333 8.28156 17.333 7.94115V7.86186ZM15.6859 9.96693C15.5572 9.98849 15.4201 9.99998 15.2742 9.99998C14.485 9.99998 13.951 9.66363 13.6271 9.21773C13.3032 9.66363 12.7692 9.99998 11.9801 9.99998C11.1909 9.99998 10.6569 9.66363 10.333 9.21773C10.0091 9.66363 9.47511 9.99998 8.68595 9.99998C7.89679 9.99998 7.36277 9.66363 7.03889 9.21773C6.71501 9.66363 6.18099 9.99998 5.39183 9.99998C5.24595 9.99998 5.10879 9.98849 4.98007 9.96693V13.3985H15.6859V9.96693ZM14.0389 7.94115C14.0389 8.14977 14.1049 8.47187 14.2907 8.72997C14.4614 8.96708 14.7496 9.17645 15.2742 9.17645C15.7988 9.17645 16.087 8.96708 16.2577 8.72997C16.423 8.50039 16.4934 8.22017 16.507 8.01423L16.4778 7.94115H14.0389ZM14.9954 4.23527L16.1483 7.11763H13.9575L13.317 4.23527H14.9954ZM13.1139 7.11763L12.4733 4.23527H10.7448V7.11763H13.1139ZM7.55225 7.11763L8.19277 4.23527H9.92124V7.11763H7.55225ZM7.34915 4.23527L6.70863 7.11763H4.51767L5.67061 4.23527H7.34915ZM4.15903 8.01423L4.18826 7.94115H6.62713C6.62713 8.14977 6.56115 8.47187 6.37532 8.72997C6.2046 8.96708 5.91645 9.17645 5.39183 9.17645C4.86721 9.17645 4.57906 8.96708 4.40835 8.72997C4.24304 8.50039 4.17258 8.22017 4.15903 8.01423ZM9.66944 8.72997C9.85527 8.47187 9.92124 8.14977 9.92124 7.94115H7.45065C7.45065 8.14977 7.51663 8.47187 7.70246 8.72997C7.87318 8.96708 8.16133 9.17645 8.68595 9.17645C9.21057 9.17645 9.49872 8.96708 9.66944 8.72997ZM12.9636 8.72997C13.1494 8.47187 13.2154 8.14977 13.2154 7.94115H10.7448C10.7448 8.14977 10.8107 8.47187 10.9966 8.72997C11.1673 8.96708 11.4554 9.17645 11.9801 9.17645C12.5047 9.17645 12.7928 8.96708 12.9636 8.72997Z",fill:"currentColor"})}),l1=()=>e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10 1.59937C6.19712 1.59937 3.11426 4.68223 3.11426 8.48515C3.11419 8.54272 3.13215 8.6008 3.16933 8.65041L7.24573 14.081V18.4007H12.7544V14.081L16.8307 8.65041C16.8679 8.6008 16.8859 8.54272 16.8858 8.48515C16.8858 4.68223 13.803 1.59937 10 1.59937ZM10 6.55713C8.93523 6.55713 8.07202 7.42033 8.07202 8.48515H8.07747C8.42243 10.2099 9.17381 13.9938 9.17381 13.9938H10.8263C10.8263 13.9938 11.5777 10.2099 11.9226 8.48515H11.9281C11.9281 7.42033 11.0648 6.55713 10 6.55713ZM7.86545 13.9938L3.66512 8.38616C3.66512 7.32135 4.52833 6.55713 5.59314 6.55713C6.65795 6.55713 7.52116 7.42033 7.52116 8.48515C7.52116 8.48515 8.27248 12.269 8.61744 13.9938H7.86545ZM12.1346 13.9938L16.335 8.38616C16.335 7.32135 15.4717 6.55713 14.4069 6.55713C13.3421 6.55713 12.4789 7.42033 12.4789 8.48515C12.4789 8.48515 11.7276 12.269 11.3826 13.9938H12.1346Z",fill:"currentColor"})}),s1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("rect",{x:"8.75781",y:"7.84082",width:"3.81818",height:"9.33333",rx:"1",fill:"currentColor"}),e.jsx("rect",{x:"13.8486",y:"2.75",width:"3.81818",height:"14.4242",rx:"1",fill:"currentColor"}),e.jsx("rect",{width:"3.81818",height:"5.93939",rx:"1",transform:"matrix(-1 0 0 1 7.48535 11.235)",fill:"currentColor"})]}),n1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4.41883 3.25H1.83301V2.25H5.24719L7.24719 12.8085H15.833V13.8085H6.41883L4.41883 3.25Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.8473 5.25H5.24609V4.25H18.0566L16.7467 11.1018H6.33324V10.1018H15.9198L16.8473 5.25Z",fill:"currentColor"}),e.jsx("path",{d:"M8.63434 15.9743C8.63434 16.6488 8.08752 17.1956 7.41299 17.1956C6.73846 17.1956 6.19165 16.6488 6.19165 15.9743C6.19165 15.2997 6.73846 14.7529 7.41299 14.7529C8.08752 14.7529 8.63434 15.2997 8.63434 15.9743Z",fill:"currentColor"}),e.jsx("path",{d:"M15.8331 15.9743C15.8331 16.6488 15.2863 17.1956 14.6117 17.1956C13.9372 17.1956 13.3904 16.6488 13.3904 15.9743C13.3904 15.2997 13.9372 14.7529 14.6117 14.7529C15.2863 14.7529 15.8331 15.2997 15.8331 15.9743Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5.8418 7.17578H16.8556V8.17578H5.8418V7.17578Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M14.8617 4.95987L14.2679 10.4599L13.2737 10.3525L13.8674 4.85254L14.8617 4.95987Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7.7421 4.95987L8.33585 10.4599L9.33008 10.3525L8.73633 4.85254L7.7421 4.95987Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M11.8018 5.03125V10.4688H10.8018V5.03125H11.8018Z",fill:"currentColor"})]}),o1=()=>e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M6.37207 13.3255V6.12305H13.5745V7.86233H8.11067V13.3255H6.37207Z",fill:"currentColor"}),e.jsx("path",{d:"M3 9.95198V2.74951H10.2025V4.4888H4.7386V9.95198H3Z",fill:"currentColor"}),e.jsx("path",{d:"M9.79883 16.7503V9.54785H17.0013V16.7503H9.79883Z",fill:"currentColor"})]}),y=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M15.5263 5.46622C14.6201 5.04221 13.6511 4.73406 12.638 4.55859C12.5136 4.78353 12.3682 5.08608 12.268 5.32676C11.1911 5.1648 10.1241 5.1648 9.067 5.32676C8.9668 5.08608 8.81815 4.78353 8.69262 4.55859C7.67846 4.73406 6.70835 5.04334 5.8021 5.46847C3.9742 8.23067 3.47869 10.9243 3.72644 13.5796C4.93881 14.485 6.11373 15.035 7.26883 15.3948C7.55403 15.0023 7.80839 14.5851 8.02751 14.1453C7.61018 13.9868 7.21047 13.7911 6.83279 13.5639C6.93298 13.4896 7.03099 13.412 7.12568 13.3322C9.42927 14.4096 11.9322 14.4096 14.2083 13.3322C14.3041 13.412 14.402 13.4896 14.5012 13.5639C14.1224 13.7922 13.7215 13.9879 13.3042 14.1465C13.5233 14.5851 13.7766 15.0035 14.0629 15.396C15.2191 15.0361 16.3951 14.4861 17.6075 13.5796C17.8982 10.5014 17.1109 7.83253 15.5263 5.46622ZM8.34134 11.9466C7.64983 11.9466 7.08273 11.301 7.08273 10.5149C7.08273 9.72873 7.63772 9.08205 8.34134 9.08205C9.04499 9.08205 9.61207 9.7276 9.59996 10.5149C9.60105 11.301 9.04499 11.9466 8.34134 11.9466ZM12.9926 11.9466C12.3011 11.9466 11.734 11.301 11.734 10.5149C11.734 9.72873 12.2889 9.08205 12.9926 9.08205C13.6962 9.08205 14.2633 9.7276 14.2512 10.5149C14.2512 11.301 13.6962 11.9466 12.9926 11.9466Z",fill:"currentColor"})}),a1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("rect",{x:"4.0293",y:"5.14441",width:"5.21037",height:"8.17765",transform:"rotate(-30 4.0293 5.14441)",fill:"currentColor"}),e.jsx("path",{d:"M10.5859 6.08032L17.9184 1.84689",stroke:"currentColor",strokeWidth:"1.5"}),e.jsx("path",{d:"M4.64405 15.3871L2.66699 13.41H16.2818L15.5595 15.3871H14.2129C13.8833 15.3871 13.2243 15.5848 13.2243 16.3756C13.2243 17.1664 13.8833 17.3642 14.2129 17.3642H14.8101V18.847H5.98069V17.3642H7.07656C7.86739 17.3642 8.06509 16.7051 8.06509 16.3756C8.06509 16.0461 7.86739 15.3871 7.07656 15.3871H4.64405Z",fill:"currentColor"})]}),r1=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.33301 6.01534V14.1745C1.33301 15.8398 2.70302 17.1898 4.39301 17.1898H16.273C17.963 17.1898 19.333 15.8398 19.333 14.1745V6.01534C19.333 4.35001 17.963 3 16.273 3H4.39301C2.70302 3 1.33301 4.35001 1.33301 6.01534ZM5.833 6.54745C5.833 6.05765 5.43006 5.66059 4.933 5.66059C4.43595 5.66059 4.033 6.05765 4.033 6.54745C4.033 7.03725 4.43595 7.43431 4.933 7.43431C5.43006 7.43431 5.833 7.03725 5.833 6.54745ZM4.933 12.7498C5.43006 12.7498 5.833 13.1469 5.833 13.6367C5.833 14.1265 5.43006 14.5236 4.933 14.5236C4.43595 14.5236 4.033 14.1265 4.033 13.6367C4.033 13.1469 4.43595 12.7498 4.933 12.7498ZM16.633 10.0949C16.633 9.6051 16.2301 9.20804 15.733 9.20804C15.236 9.20804 14.833 9.6051 14.833 10.0949C14.833 10.5847 15.236 10.9818 15.733 10.9818C16.2301 10.9818 16.633 10.5847 16.633 10.0949ZM8.53301 5.66059H15.733C16.2301 5.66059 16.633 6.05765 16.633 6.54745C16.633 7.03725 16.2301 7.43431 15.733 7.43431H8.53301C8.03596 7.43431 7.63301 7.03725 7.63301 6.54745C7.63301 6.05765 8.03596 5.66059 8.53301 5.66059ZM15.733 12.7498H8.53301C8.03596 12.7498 7.63301 13.1469 7.63301 13.6367C7.63301 14.1265 8.03596 14.5236 8.53301 14.5236H15.733C16.2301 14.5236 16.633 14.1265 16.633 13.6367C16.633 13.1469 16.2301 12.7498 15.733 12.7498ZM4.93301 9.20804H12.133C12.6301 9.20804 13.033 9.6051 13.033 10.0949C13.033 10.5847 12.6301 10.9818 12.133 10.9818H4.93301C4.43595 10.9818 4.03301 10.5847 4.03301 10.0949C4.03301 9.6051 4.43595 9.20804 4.93301 9.20804Z",fill:"currentColor"})}),i1=()=>e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5 6.04947C5 6.49261 5.38931 6.85185 5.86954 6.85185H16C16.5523 6.85185 17 7.29957 17 7.85185V15C17 15.5523 16.5523 16 16 16H5.49505C4.11707 16 3 14.9692 3 13.6977V6.30233C3 5.03079 4.11707 4 5.49505 4H13.8765C14.2208 4 14.5 4.27917 14.5 4.62355C14.5 4.96792 14.2208 5.24709 13.8765 5.24709H5.86955C5.38931 5.24709 5 5.60633 5 6.04947ZM12 11.5C12 10.6716 12.6716 10 13.5 10C14.3284 10 15 10.6716 15 11.5C15 12.3284 14.3284 13 13.5 13C12.6716 13 12 12.3284 12 11.5Z",fill:"currentColor"})}),c1=()=>e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.9486 8.39806L15.2266 2L8.80794 3.71482L7.88709 5.33059L6.02143 5.3169L1.31886 9.99999L6.01969 14.6831L7.88536 14.6694L8.80621 16.2852L15.2266 18L16.9486 11.602L16.0039 10L16.9486 8.39806ZM4.8953 9.11821L8.15888 5.79769L12.6743 4.64239L10.0825 9.11821H4.8953ZM14.205 14.4763L11.6129 10L14.205 5.52369L15.4579 10L14.205 14.4763ZM8.15888 14.2006L4.8953 10.8801H10.0825L12.6743 15.3559L8.15888 14.2006Z",fill:"currentColor"})}),d1=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M10.715 1C5.78414 1 1.79095 5.02806 1.79095 10C1.79095 14.9719 5.78414 19 10.715 19C15.6425 19 19.6391 14.9719 19.6391 10C19.6391 5.02806 15.6431 1 10.7122 1H10.715ZM10.715 1.39544C12.9915 1.39544 15.1357 2.29206 16.7473 3.91488C18.3555 5.53206 19.2521 7.72075 19.2465 10C19.2465 12.2967 18.3588 14.4589 16.7473 16.0851C15.1565 17.6995 12.9825 18.6074 10.715 18.6046C8.44758 18.6074 6.27352 17.6995 4.68277 16.0851C3.07458 14.4679 2.17514 12.2793 2.18077 10C2.18077 7.70331 3.0712 5.54106 4.67995 3.91488C6.2707 2.29769 8.44758 1.38925 10.715 1.39544ZM10.2667 4.56231C8.81377 4.95213 7.46883 5.69913 5.67614 7.75563C3.88345 9.81213 4.2232 11.5114 4.2232 11.5114C4.2232 11.5114 4.7182 10.3426 5.90789 9.11181C6.4732 8.52906 6.89227 8.33275 7.18252 8.33275C7.44014 8.31813 7.65727 8.52625 7.65727 8.78388V12.9588C7.65727 13.3716 7.39064 13.4628 7.14483 13.4566C6.9367 13.4538 6.7432 13.3806 6.7432 13.3806C7.96495 15.1559 10.8888 15.4051 10.8888 15.4051L12.1719 14.0337L12.2011 14.0601L13.3762 15.0619C15.5266 13.7845 16.5639 11.4175 16.5639 11.4175C15.6031 12.4311 14.9934 12.6685 14.63 12.6685C14.3077 12.6657 14.1817 12.4778 14.1817 12.4778C14.1643 12.3901 14.135 11.1182 14.1232 9.847C14.1114 8.53131 14.1232 7.21338 14.1879 7.21C14.5597 6.5125 15.7438 5.10625 15.7438 5.10625C13.532 5.54275 12.3277 6.99288 12.3277 6.99288C11.9705 6.71163 11.2438 6.75831 11.2438 6.75831C11.5835 6.94563 11.9233 7.49069 11.9233 7.94181V12.3833C11.9233 12.3833 11.1819 13.0364 10.611 13.0364C10.2712 13.0364 10.0631 12.8519 9.94889 12.6994C9.90502 12.6409 9.86677 12.5763 9.83752 12.5059V7.02156C9.7582 7.08006 9.66145 7.11212 9.56527 7.1155C9.44208 7.1155 9.31608 7.05419 9.23114 6.87531C9.16645 6.74031 9.12539 6.53838 9.12539 6.2425C9.12539 5.23169 10.2678 4.56063 10.2678 4.56063L10.2667 4.56231Z",fill:"currentColor"})}),C1=()=>e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M1.9022 8.56378C1.87595 8.59003 1.9022 8.61628 1.92845 8.61628L5.26238 8.59003C5.31488 8.59003 5.34113 8.56378 5.36738 8.53753L5.52489 8.30126C5.55114 8.27501 5.52489 8.24876 5.49864 8.24876H2.19096C2.13846 8.24876 2.11221 8.27501 2.08596 8.30126L1.9022 8.56378Z",fill:"currentColor"}),e.jsx("path",{d:"M0.510874 9.40382C0.484622 9.43007 0.510874 9.45633 0.537125 9.45633H4.92111C4.94736 9.45633 4.99986 9.43007 4.99986 9.40382L5.07862 9.14131C5.07862 9.11506 5.05237 9.08881 5.02611 9.08881H0.799639C0.747136 9.08881 0.720885 9.11506 0.694634 9.14131L0.510874 9.40382Z",fill:"currentColor"}),e.jsx("path",{d:"M2.74224 10.2701C2.71599 10.2964 2.74224 10.3226 2.76849 10.3226L4.78985 10.2964C4.8161 10.2964 4.84235 10.2701 4.84235 10.2439L4.86861 10.0339C4.86861 10.0076 4.84235 9.98135 4.8161 9.98135H2.9785C2.926 9.98135 2.89975 10.0076 2.8735 10.0339L2.74224 10.2701Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10.8277 8.82629L12.3765 8.43252C12.4815 8.40627 12.5078 8.38002 12.4815 8.27501C12.2452 7.72373 11.904 7.27746 11.4052 6.96244C10.6702 6.46367 9.83012 6.35866 8.96382 6.51617C7.88752 6.69993 7.02122 7.25121 6.36494 8.1175C5.76115 8.90505 5.44614 9.82384 5.57739 10.8214C5.6824 11.6614 6.07617 12.344 6.75871 12.869C7.49375 13.4203 8.33379 13.604 9.25259 13.4728C10.3551 13.3153 11.2214 12.764 11.8777 11.8977C12.0213 11.7182 12.1434 11.5265 12.2462 11.3256C12.4014 11.8749 12.7121 12.3504 13.164 12.7377C13.8203 13.289 14.5816 13.5253 15.4217 13.5515C15.5058 13.5422 15.5933 13.5362 15.6842 13.5299C15.8483 13.5186 16.0233 13.5066 16.2092 13.4728C17.0493 13.289 17.8105 12.9215 18.4143 12.2915C19.2544 11.4252 19.6219 10.4276 19.4644 9.16756C19.3331 8.27501 18.8869 7.59247 18.1518 7.0937C17.3643 6.54242 16.4717 6.46366 15.5267 6.62117C14.4241 6.83118 13.6103 7.27746 12.9278 8.17C12.6465 8.53332 12.4333 8.91756 12.2974 9.32507H9.33134C9.20009 9.32507 9.12133 9.43007 9.09508 9.48258C8.98155 9.68694 8.80909 10.0681 8.67965 10.3541C8.65944 10.3988 8.64028 10.4411 8.62256 10.4801C8.57005 10.6376 8.62256 10.7689 8.80632 10.7689H10.5914C10.4864 10.9001 10.4077 11.0051 10.3289 11.1101L10.3289 11.1102C9.90887 11.5827 9.38385 11.7927 8.75381 11.7139C8.01877 11.6089 7.49375 11.0052 7.49375 10.2701C7.49375 9.50883 7.80876 8.90505 8.4388 8.51127C8.96382 8.17001 9.54136 8.09125 10.1189 8.38002C10.3289 8.45877 10.4339 8.56378 10.5652 8.72129C10.6594 8.8627 10.6902 8.85599 10.7905 8.83414C10.8019 8.83166 10.8143 8.82897 10.8277 8.82629ZM17.6268 9.82381V9.82384C17.5743 10.6114 17.1805 11.2152 16.4192 11.5827C15.9467 11.8189 15.4217 11.8452 14.9229 11.6352C14.2666 11.3202 13.9253 10.5851 14.0828 9.87635C14.2929 9.01005 14.8441 8.45877 15.7104 8.27501C16.603 8.065 17.443 8.59003 17.6005 9.50883C17.6268 9.61382 17.6268 9.69257 17.6268 9.82381Z",fill:"currentColor"})]}),x1=()=>e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M10.0032 19.25C9.75546 19.25 9.50941 19.185 9.29221 19.06L7.02908 17.7201C6.69106 17.5311 6.856 17.4642 6.96749 17.4257C7.41818 17.2679 7.50964 17.2322 7.9907 16.959C8.04127 16.9302 8.10745 16.9404 8.1592 16.9709L9.89783 18.0026C9.96061 18.0366 10.0497 18.0366 10.1079 18.0026L16.8869 14.0896C16.9497 14.054 16.9905 13.981 16.9905 13.9063V6.08372C16.9905 6.00567 16.9497 5.9361 16.8856 5.89707L10.1093 1.98745C10.0465 1.95012 9.96333 1.95012 9.90055 1.98745L3.12557 5.89707C3.0599 5.9344 3.01816 6.00736 3.01816 6.08203V13.9047C3.01816 13.9793 3.05889 14.0506 3.12337 14.0862L4.97976 15.1586C5.9877 15.6626 6.60367 15.0687 6.60367 14.4714V6.7506C6.60367 6.6403 6.69021 6.55546 6.80051 6.55546H7.65913C7.76604 6.55546 7.85428 6.6403 7.85428 6.7506V14.4748C7.85428 15.8187 7.12122 16.5908 5.84686 16.5908C5.45488 16.5908 5.14605 16.5908 4.28403 16.1666L2.5057 15.1417C2.06621 14.8871 1.79471 14.412 1.79471 13.9047V6.08203C1.79471 5.57296 2.06621 5.09783 2.5057 4.8467L9.29153 0.931991C9.72085 0.689336 10.291 0.689336 10.7169 0.931991L17.4943 4.84839C17.9321 5.10123 18.2053 5.57466 18.2053 6.08372V13.9063C18.2053 14.4137 17.9321 14.8871 17.4943 15.1417L10.7169 19.0564C10.4997 19.182 10.2537 19.2464 10.0025 19.2464",fill:"currentColor"}),e.jsx("path",{d:"M12.0972 13.8597C9.13101 13.8597 8.5091 12.4981 8.5091 11.3561C8.5091 11.2475 8.59666 11.161 8.70543 11.161H9.58102C9.67774 11.161 9.7592 11.2314 9.77447 11.3269C9.90682 12.2191 10.3005 12.6692 12.0941 12.6692C13.5229 12.6692 14.1304 12.3464 14.1304 11.5887C14.1304 11.1526 13.9573 10.8285 11.7378 10.6113C9.88137 10.4281 8.73428 10.0191 8.73428 8.53436C8.73428 7.16667 9.88816 6.35217 11.8209 6.35217C13.9912 6.35217 15.067 7.10558 15.2028 8.72441C15.2079 8.78041 15.1875 8.83471 15.1502 8.87543C15.1129 8.91446 15.0603 8.93822 15.006 8.93822H14.1253C14.0336 8.93822 13.9539 8.87374 13.9352 8.7855C13.7231 7.84712 13.2107 7.54677 11.8175 7.54677C10.2581 7.54677 10.0765 8.08978 10.0765 8.49703C10.0765 8.99082 10.2903 9.13506 12.3945 9.41334C14.4782 9.68994 15.4675 10.0802 15.4675 11.5446C15.4675 13.0209 14.2356 13.8677 12.0873 13.8677",fill:"currentColor"})]}),h1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M14.1875 10.4387C14.1714 8.66751 15.6353 7.8165 15.7013 7.77467C14.8776 6.56974 13.5971 6.40565 13.1402 6.38635C12.0511 6.27535 11.0135 7.02823 10.4601 7.02823C9.90665 7.02823 9.05402 6.40243 8.14992 6.42013C6.96106 6.43783 5.86552 7.11027 5.25259 8.17524C4.01869 10.3148 4.93728 13.4888 6.14061 15.2279C6.72941 16.0773 7.42921 17.0344 8.35101 16.999C9.23903 16.9637 9.57364 16.4247 10.6451 16.4247C11.7165 16.4247 12.0189 16.999 12.9552 16.9814C13.9092 16.962 14.5141 16.1126 15.098 15.26C15.7721 14.2739 16.0504 13.3183 16.0665 13.2684C16.0456 13.2604 14.2068 12.5558 14.1875 10.4387Z",fill:"currentColor"}),e.jsx("path",{d:"M12.4259 5.23612C12.915 4.64411 13.2448 3.82045 13.1547 3C12.4501 3.02896 11.5974 3.46975 11.0923 4.06175C10.6402 4.58459 10.2429 5.42273 10.3507 6.22708C11.1341 6.28822 11.9369 5.82651 12.4259 5.23612Z",fill:"currentColor"})]}),m1=()=>e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5.26508 1.01587C5.32169 0.983195 5.39406 1.00259 5.42674 1.05919L6.34966 2.6578C7.14861 1.93639 8.22788 1.4513 9.43534 1.33485H10.5645C11.772 1.45134 12.8513 1.93649 13.6503 2.65793L14.5733 1.05919C14.606 1.00259 14.6784 0.983196 14.735 1.01588C14.7916 1.04855 14.811 1.12093 14.7783 1.17753L13.8267 2.82567C14.5865 3.58625 15.0512 4.5756 15.0663 5.65919H4.93349C4.94859 4.57551 5.41337 3.58612 6.1732 2.82554L5.22177 1.17753C5.18909 1.12093 5.20848 1.04855 5.26508 1.01587ZM8.49066 3.64912C8.49161 3.96265 8.23213 4.21755 7.91103 4.21842C7.59009 4.21921 7.32911 3.9658 7.32816 3.65228V3.64912C7.32729 3.33552 7.58677 3.08069 7.90779 3.07982C8.22873 3.07896 8.48972 3.33229 8.49066 3.64597V3.64912ZM12.8295 3.64912C12.8305 3.96265 12.571 4.21755 12.2499 4.21842C11.9289 4.21921 11.668 3.9658 11.667 3.65228V3.64912C11.6661 3.33552 11.9256 3.08069 12.2466 3.07982C12.5676 3.07896 12.8286 3.33229 12.8295 3.64597V3.64912Z",fill:"currentColor"}),e.jsx("path",{d:"M4.89373 6.26809C4.89373 6.22454 4.89696 6.18146 4.90067 6.13886H15.101C15.1046 6.18131 15.1062 6.22454 15.1062 6.26809V13.5703C15.1062 14.3555 14.4846 14.9882 13.7128 14.9882H13.6579V17.8765C13.6579 18.4971 13.1549 19 12.5344 19C11.914 19 11.4109 18.4971 11.4109 17.8765V14.9882H8.58912V17.8765C8.58912 18.497 8.0861 19 7.46559 19C6.84517 19 6.34214 18.497 6.34214 17.8765V14.9882H6.287C5.51533 14.9882 4.89373 14.3556 4.89373 13.5703V6.26809Z",fill:"currentColor"}),e.jsx("path",{d:"M3.08856 6.78871C3.70898 6.78871 4.21201 7.29174 4.21201 7.91224V12.7319C4.21201 13.3524 3.70898 13.8554 3.08856 13.8554C2.46805 13.8554 1.96503 13.3524 1.96503 12.732V7.91232C1.96495 7.29182 2.46798 6.78871 3.08856 6.78871Z",fill:"currentColor"}),e.jsx("path",{d:"M16.9115 6.78871C17.5319 6.78871 18.0349 7.29174 18.0349 7.91224V12.7319C18.0349 13.3524 17.5319 13.8554 16.9115 13.8554C16.291 13.8554 15.788 13.3524 15.788 12.732V7.91232C15.788 7.29182 16.291 6.78871 16.9115 6.78871Z",fill:"currentColor"})]}),u1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M12.2161 9.99981C12.2161 10.8859 11.4978 11.6042 10.6118 11.6042C9.72572 11.6042 9.00743 10.8859 9.00743 9.99981C9.00743 9.11375 9.72572 8.39546 10.6118 8.39546C11.4978 8.39546 12.2161 9.11375 12.2161 9.99981Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.82782 3.26238C10.0868 3.47284 10.3488 3.70689 10.6119 3.96264C10.8749 3.70695 11.1369 3.47295 11.3958 3.26254C12.0645 2.71903 12.729 2.31926 13.3494 2.11854C13.9698 1.91785 14.5895 1.90424 15.1118 2.20581C15.6341 2.50738 15.9322 3.05082 16.0686 3.68844C16.205 4.32611 16.191 5.10144 16.0547 5.95233C16.0019 6.28176 15.9302 6.62569 15.8403 6.98129C16.1933 7.08121 16.527 7.19114 16.8387 7.31016C17.6437 7.61754 18.3222 7.9931 18.8062 8.43006C19.2902 8.86697 19.6118 9.39682 19.6118 9.99995C19.6118 10.6031 19.2902 11.1329 18.8062 11.5698C18.3222 12.0068 17.6437 12.3824 16.8387 12.6897C16.527 12.8088 16.1933 12.9187 15.8403 13.0186C15.9302 13.3742 16.0019 13.7182 16.0547 14.0476C16.191 14.8985 16.205 15.6738 16.0686 16.3115C15.9322 16.9491 15.6341 17.4925 15.1118 17.7941C14.5895 18.0957 13.9698 18.0821 13.3494 17.8814C12.729 17.6807 12.0645 17.2809 11.3958 16.7374C11.1369 16.527 10.8749 16.293 10.6119 16.0373C10.3488 16.293 10.0868 16.5271 9.82782 16.7375C9.15909 17.281 8.49462 17.6808 7.87418 17.8815C7.25381 18.0822 6.63414 18.0958 6.11181 17.7943C5.58948 17.4927 5.29143 16.9493 5.15505 16.3116C5.01866 15.674 5.03264 14.8986 5.16896 14.0477C5.22175 13.7183 5.2934 13.3743 5.38336 13.0186C5.03039 12.9187 4.69668 12.8088 4.38497 12.6897C3.57992 12.3824 2.90147 12.0068 2.41743 11.5698C1.93343 11.1329 1.61182 10.6031 1.61182 9.99995C1.61182 9.39682 1.93343 8.86697 2.41743 8.43006C2.90147 7.9931 3.57992 7.61754 4.38497 7.31016C4.69668 7.19114 5.03039 7.08121 5.38336 6.98129C5.2934 6.62563 5.22175 6.28165 5.16896 5.95217C5.03264 5.10128 5.01866 4.32595 5.15505 3.68828C5.29143 3.05067 5.58948 2.50722 6.11181 2.20566C6.63414 1.90409 7.25381 1.91769 7.87418 2.11839C8.49462 2.31911 9.15909 2.71888 9.82782 3.26238ZM6.50312 2.88342C6.76685 2.73115 7.13693 2.70243 7.6333 2.86301C8.12961 3.02357 8.70889 3.36147 9.33422 3.8697C9.5745 4.06499 9.81914 4.28342 10.0659 4.52332C9.55055 5.08073 9.0373 5.71622 8.54244 6.41558C7.68933 6.49446 6.88233 6.62119 6.14191 6.78878C6.05754 6.45515 5.99069 6.13409 5.94171 5.82837C5.81423 5.03269 5.81124 4.36208 5.92035 3.85198C6.02947 3.34182 6.23938 3.03568 6.50312 2.88342ZM9.56361 6.3454C9.90985 5.88844 10.2614 5.46697 10.6119 5.08568C10.9624 5.46697 11.3139 5.88845 11.6601 6.34541C11.316 6.32973 10.9662 6.32169 10.6118 6.32169C10.2575 6.32169 9.90766 6.32973 9.56361 6.3454ZM6.35594 7.54281C6.86142 7.42988 7.4022 7.33621 7.97108 7.26484C7.78545 7.55501 7.60355 7.85398 7.42634 8.16091C7.24917 8.46778 7.08123 8.77474 6.92278 9.08053C6.70015 8.55219 6.51088 8.03703 6.35594 7.54281ZM8.1041 8.55221C7.8236 9.03805 7.56802 9.52241 7.338 9.99996C7.56802 10.4775 7.8236 10.9619 8.1041 11.4477C8.38463 11.9336 8.67634 12.3972 8.97493 12.8352C9.50353 12.8748 10.0508 12.8956 10.6118 12.8956C11.1729 12.8956 11.7202 12.8748 12.2488 12.8352C12.5474 12.3972 12.839 11.9337 13.1195 11.4479C13.4 10.962 13.6557 10.4776 13.8857 9.99996C13.6557 9.52236 13.4 9.03795 13.1195 8.55206C12.839 8.06622 12.5473 7.60269 12.2488 7.16472C11.7202 7.12514 11.1729 7.1043 10.6118 7.1043C10.0508 7.1043 9.50354 7.12513 8.97495 7.16471C8.67635 7.60273 8.38463 8.06632 8.1041 8.55221ZM5.59592 7.73447C5.821 8.45948 6.11473 9.22172 6.47298 9.99996C6.11474 10.7782 5.821 11.5404 5.59593 12.2654C5.26483 12.1717 4.95337 12.0691 4.66413 11.9586C3.91132 11.6712 3.32905 11.3385 2.94184 10.9889C2.55459 10.6393 2.39443 10.3045 2.39443 9.99995C2.39443 9.69541 2.55459 9.36056 2.94184 9.01098C3.32905 8.66144 3.91132 8.32872 4.66413 8.04128C4.95337 7.93085 5.26482 7.82821 5.59592 7.73447ZM6.92278 10.9194C6.70016 11.4477 6.51089 11.9629 6.35594 12.4571C6.86142 12.57 7.4022 12.6637 7.97106 12.7351C7.78544 12.4449 7.60354 12.1459 7.42634 11.839C7.24917 11.5321 7.08123 11.2252 6.92278 10.9194ZM5.94171 14.1716C5.9907 13.8658 6.05755 13.5448 6.14192 13.2111C6.88233 13.3787 7.68932 13.5054 8.54243 13.5843C9.03729 14.2837 9.55055 14.9192 10.0659 15.4766C9.81913 15.7165 9.5745 15.9349 9.33422 16.1302C8.70889 16.6385 8.12961 16.9764 7.6333 17.1369C7.13693 17.2975 6.76685 17.2688 6.50312 17.1165C6.23938 16.9642 6.02947 16.6581 5.92035 16.1479C5.81124 15.6378 5.81423 14.9672 5.94171 14.1716ZM11.8894 16.1301C11.6492 15.9348 11.4046 15.7164 11.1579 15.4766C11.6732 14.9192 12.1865 14.2837 12.6813 13.5843C13.5344 13.5054 14.3413 13.3787 15.0817 13.2111C15.1661 13.5447 15.2329 13.8657 15.2819 14.1714C15.4094 14.9671 15.4124 15.6377 15.3033 16.1478C15.1942 16.6579 14.9842 16.9641 14.7205 17.1164C14.4568 17.2686 14.0867 17.2973 13.5903 17.1368C13.094 16.9762 12.5147 16.6383 11.8894 16.1301ZM10.6119 14.9142C10.9624 14.5329 11.3139 14.1115 11.6602 13.6545C11.3161 13.6702 10.9662 13.6782 10.6118 13.6782C10.2575 13.6782 9.90765 13.6702 9.56359 13.6545C9.90983 14.1115 10.2613 14.533 10.6119 14.9142ZM14.8677 12.4571C14.3623 12.57 13.8215 12.6637 13.2527 12.735C13.4383 12.4449 13.6201 12.146 13.7973 11.8392C13.9745 11.5322 14.1424 11.2252 14.3009 10.9194C14.5235 11.4477 14.7128 11.9629 14.8677 12.4571ZM15.6277 12.2654C15.4027 11.5404 15.1089 10.7782 14.7507 9.99996C15.1089 9.22172 15.4027 8.45948 15.6277 7.73448C15.9588 7.82822 16.2703 7.93085 16.5595 8.04128C17.3123 8.32872 17.8946 8.66144 18.2818 9.01098C18.669 9.36056 18.8292 9.69541 18.8292 9.99995C18.8292 10.3045 18.669 10.6393 18.2818 10.9889C17.8946 11.3385 17.3123 11.6712 16.5595 11.9586C16.2703 12.069 15.9588 12.1717 15.6277 12.2654ZM12.6813 6.41559C13.5344 6.49447 14.3413 6.6212 15.0817 6.78879C15.1661 6.45521 15.2329 6.1342 15.2819 5.82852C15.4094 5.03285 15.4124 4.36223 15.3033 3.85213C15.1942 3.34197 14.9842 3.03584 14.7205 2.88357C14.4568 2.7313 14.0867 2.70258 13.5903 2.86316C13.094 3.02372 12.5147 3.36162 11.8894 3.86986C11.6492 4.06511 11.4046 4.28349 11.1579 4.52333C11.6732 5.08074 12.1864 5.71623 12.6813 6.41559ZM14.3009 9.08051C14.5235 8.55218 14.7128 8.03703 14.8677 7.54281C14.3623 7.42989 13.8215 7.33622 13.2526 7.26485C13.4382 7.55497 13.6201 7.85388 13.7973 8.16075C13.9745 8.46767 14.1424 8.77467 14.3009 9.08051Z",fill:"currentColor"})]}),p1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.66699 6.57143V2H7.23843V6.57143H2.66699ZM3.66699 3H6.23843V5.57143H3.66699V3Z",fill:"currentColor"}),e.jsx("path",{d:"M8.38135 2V6.57143H12.9528V2H8.38135Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M14.0959 6.57143V2H18.6674V6.57143H14.0959ZM15.0959 3H17.6674V5.57143H15.0959V3Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.66699 7.71436V12.2858H7.23843V7.71436H2.66699ZM6.23843 8.71436H3.66699V11.2858H6.23843V8.71436Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8.38135 12.2858V7.71436H12.9528V12.2858H8.38135ZM9.38135 8.71436H11.9528V11.2858H9.38135V8.71436Z",fill:"currentColor"}),e.jsx("path",{d:"M14.0959 7.71436V12.2858H18.6674V7.71436H14.0959Z",fill:"currentColor"}),e.jsx("path",{d:"M2.66699 17.9999V13.4285H7.23843V17.9999H2.66699Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8.3811 13.4285V17.9999H12.9525V13.4285H8.3811ZM11.9525 14.4285H9.3811V16.9999H11.9525V14.4285Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M14.0957 17.9999V13.4285H18.6671V17.9999H14.0957ZM15.0957 14.4285H17.6671V16.9999H15.0957V14.4285Z",fill:"currentColor"})]}),f1=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M16.333 6.5L10.333 3L4.33301 6.5M16.333 6.5V13.5L10.333 17M16.333 6.5L10.333 10M10.333 17L4.33301 13.5V6.5M10.333 17L10.333 10M4.33301 6.5L10.333 10",stroke:"currentColor",strokeWidth:"1.5"})}),k=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M10.6127 3.44091C12.6754 3.44091 12.9196 3.45028 13.7308 3.48779C14.4847 3.52217 14.8918 3.65345 15.1632 3.76284C15.5221 3.90662 15.7814 4.08166 16.0498 4.35984C16.3212 4.64114 16.4871 4.90682 16.6258 5.27877C16.7313 5.56007 16.858 5.98515 16.8911 6.76343C16.9273 7.60735 16.9364 7.86052 16.9364 9.99531C16.9364 12.1332 16.9273 12.3864 16.8911 13.2272C16.858 14.0086 16.7313 14.4306 16.6258 14.7119C16.4871 15.0838 16.3182 15.3526 16.0498 15.6308C15.7784 15.9121 15.5221 16.084 15.1632 16.2278C14.8918 16.3372 14.4817 16.4685 13.7308 16.5028C12.9166 16.5403 12.6724 16.5497 10.6127 16.5497C8.5501 16.5497 8.30584 16.5403 7.49466 16.5028C6.74077 16.4685 6.33367 16.3372 6.06227 16.2278C5.70341 16.084 5.44408 15.909 5.17569 15.6308C4.90429 15.3495 4.73844 15.0838 4.59972 14.7119C4.49418 14.4306 4.36752 14.0055 4.33435 13.2272C4.29816 12.3833 4.28912 12.1301 4.28912 9.99531C4.28912 7.85739 4.29816 7.60422 4.33435 6.76343C4.36752 5.98203 4.49418 5.56007 4.59972 5.27877C4.73844 4.90682 4.90731 4.63802 5.17569 4.35984C5.44709 4.07853 5.70341 3.90662 6.06227 3.76284C6.33367 3.65345 6.74378 3.52217 7.49466 3.48779C8.30584 3.45028 8.5501 3.44091 10.6127 3.44091ZM10.6127 2C8.51693 2 8.25458 2.00938 7.43133 2.04688C6.6111 2.08439 6.04719 2.22192 5.55867 2.41883C5.04904 2.62512 4.61781 2.89705 4.1896 3.34401C3.75838 3.78785 3.49603 4.23481 3.297 4.75991C3.10702 5.26939 2.97433 5.85075 2.93815 6.70092C2.90196 7.55734 2.89291 7.82926 2.89291 10.0016C2.89291 12.1739 2.90196 12.4458 2.93815 13.2991C2.97433 14.1492 3.10702 14.7337 3.297 15.2401C3.49603 15.7683 3.75838 16.2153 4.1896 16.6591C4.61781 17.103 5.04904 17.378 5.55565 17.5812C6.04719 17.7781 6.60808 17.9156 7.42831 17.9531C8.25156 17.9906 8.51392 18 10.6097 18C12.7055 18 12.9679 17.9906 13.7911 17.9531C14.6114 17.9156 15.1753 17.7781 15.6638 17.5812C16.1704 17.378 16.6016 17.103 17.0299 16.6591C17.4581 16.2153 17.7234 15.7683 17.9194 15.2432C18.1094 14.7337 18.2421 14.1524 18.2783 13.3022C18.3145 12.4489 18.3235 12.177 18.3235 10.0047C18.3235 7.83239 18.3145 7.56046 18.2783 6.70717C18.2421 5.857 18.1094 5.27251 17.9194 4.76617C17.7295 4.23481 17.4671 3.78785 17.0359 3.34401C16.6077 2.90018 16.1765 2.62512 15.6698 2.42196C15.1783 2.22504 14.6174 2.08752 13.7972 2.05001C12.9709 2.00938 12.7086 2 10.6127 2Z",fill:"currentColor"}),e.jsx("path",{d:"M10.6131 5.89154C8.42377 5.89154 6.64761 7.73252 6.64761 10.0017C6.64761 12.2709 8.42377 14.1119 10.6131 14.1119C12.8024 14.1119 14.5785 12.2709 14.5785 10.0017C14.5785 7.73252 12.8024 5.89154 10.6131 5.89154ZM10.6131 12.6679C9.19274 12.6679 8.0408 11.4739 8.0408 10.0017C8.0408 8.52955 9.19274 7.33557 10.6131 7.33557C12.0334 7.33557 13.1853 8.52955 13.1853 10.0017C13.1853 11.4739 12.0334 12.6679 10.6131 12.6679Z",fill:"currentColor"}),e.jsx("path",{d:"M15.6614 5.72876C15.6614 6.26011 15.2452 6.68832 14.7356 6.68832C14.2229 6.68832 13.8098 6.25699 13.8098 5.72876C13.8098 5.1974 14.2259 4.76919 14.7356 4.76919C15.2452 4.76919 15.6614 5.20053 15.6614 5.72876Z",fill:"currentColor"})]}),N=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M7.64165 16.5455C13.6779 16.5455 16.9804 11.5085 16.9804 7.14179C16.9804 7.00019 16.9773 6.85544 16.971 6.71383C17.6135 6.246 18.1679 5.66653 18.6082 5.00264C18.0099 5.27069 17.3746 5.44575 16.7242 5.52185C17.4091 5.10844 17.9219 4.459 18.1676 3.69391C17.5233 4.07843 16.8186 4.34967 16.0838 4.49601C15.5888 3.96632 14.9342 3.6156 14.2213 3.49808C13.5085 3.38056 12.777 3.50278 12.14 3.84585C11.5031 4.18891 10.9961 4.73372 10.6974 5.39603C10.3988 6.05834 10.3252 6.80127 10.4879 7.50996C9.18321 7.44403 7.90684 7.10275 6.74154 6.50824C5.57623 5.91373 4.54801 5.07926 3.72353 4.05893C3.30448 4.78644 3.17625 5.64732 3.3649 6.46661C3.55355 7.2859 4.04492 8.00212 4.73915 8.46971C4.21797 8.45305 3.7082 8.31175 3.25197 8.05749V8.0984C3.2515 8.86186 3.51361 9.60193 3.99376 10.1928C4.4739 10.7837 5.14243 11.1889 5.88572 11.3395C5.40292 11.4726 4.8962 11.4919 4.40478 11.3962C4.61452 12.0528 5.0226 12.627 5.57206 13.0388C6.12153 13.4506 6.78496 13.6794 7.46978 13.6933C6.30716 14.6129 4.871 15.1117 3.39259 15.1093C3.13041 15.1089 2.86848 15.0927 2.60822 15.0609C4.11012 16.0311 5.85724 16.5464 7.64165 16.5455Z",fill:"currentColor"})}),v=Object.freeze(Object.defineProperty({__proto__:null,AirdropperIcon:l1,AnalyticsIcon:s1,AndroidIcon:m1,CartIcon:n1,CollectiblesIcon:o1,DiscordIcon:y,GolangIcon:C1,IOSIcon:h1,IndexerIcon:p1,InstagramIcon:k,MarketplaceIcon:t1,MinterIcon:a1,NodeGatewayIcon:f1,NodeJSIcon:x1,ReactIcon:u1,SequenceIcon:r1,TwitterIcon:N,UnityIcon:c1,UnrealIcon:d1,WalletIcon:i1},Symbol.toStringTag,{value:"Module"})),g1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"Solutions"}),e.jsx("p",{className:"text-md leading-6 font-medium max-w-xl dark:text-white-80 text-black-80",children:"Follow our solution guides to boost your game's acquisition, monetization and retention with the power of web3."})]}),e.jsxs("div",{className:"flex gap-4",children:[e.jsx(w,{theme:"purple",heading:"Acquire players",items:[{icon:"WalletIcon",title:"Universal Wallet",body:"Easily onboard web3-native players with a complete Universal Wallet.",link:"/solutions/wallets/universal-wallet/01-overview"},{icon:"WalletIcon",title:"Embedded Wallet",body:"Gasless Transactions. No popups. Deliver a seamless experience for both web2 and web3 players with Sequence Wallet-as-a-Service embedded into your game or app.",link:"/solutions/wallets/embedded-wallet/01-overview"},{icon:"CollectiblesIcon",title:"Collectibles",body:"Manage contracts and collections with our no-code Builder.",link:"/solutions/collectibles/contracts/01-deploy-an-item-collection"}]}),e.jsx(w,{theme:"green",heading:"Earn more revenue",items:[{icon:"MarketplaceIcon",title:"Marketplace",body:"Launch an in-game collectibles marketplace within minutes.",link:"/solutions/marketplaces/white-label-marketplace"},{icon:"SequenceIcon",title:"Orderbook API",body:"Integrate custom in-game marketplaces with our APIs.",link:"/solutions/marketplaces/orderbook/01-overview"},{icon:"CartIcon",title:"NFT Checkout",body:"Offer easy purchases with credit card, crypto, IAP support.",link:"/"},{icon:"SequenceIcon",title:"Onramps",body:"Allow players to convert from fiat to any crypto globally.",link:"/solutions/payments/onramps/01-fiat-on-ramps"}]}),e.jsx(w,{theme:"yellow",heading:"Retain and grow",items:[{icon:"MinterIcon",title:"Minter",body:"Securely mint achievement tokens tied to your game.",link:"/guides/webgl-guide#deploy-a-remote-minter"},{icon:"AnalyticsIcon",title:"Analytics",body:"Track every aspect of web3 activity within your games.",link:"/"}]})]})]}),w=({heading:t,items:l,theme:s})=>e.jsx("div",{className:"flex-1 h-fit shrink-0 rounded-xl dark:bg-white-10 bg-white overflow-hidden",children:e.jsxs("div",{className:"flex flex-col gap-3 p-4 relative",children:[e.jsx("div",{className:a("absolute inset-0 opacity-20 z-0 pointer-events-none",{"dark:bg-gradient-to-b from-[#3400A0] to-transparent":s==="purple","dark:bg-gradient-to-b from-[#0A3F16] to-transparent":s==="green","dark:bg-gradient-to-b from-[#897031] to-transparent":s==="yellow"})}),e.jsx("p",{className:"px-4 font-bold text-themed-primary z-10",children:t}),l.map((o,r)=>{const i=v[o.icon];return e.jsxs("a",{href:o.link,className:"hover-fade p-4 rounded-md z-10 dark:bg-white-10 bg-black-7",children:[e.jsx("div",{className:"flex gap-2",children:e.jsxs("p",{className:"flex items-center gap-2 text-xl leading-7 font-bold text-themed-primary",children:[e.jsx(i,{}),o.title]})}),e.jsx("p",{className:"text-themed-secondary text-sm font-medium",children:o.body})]},r)})]})}),n=({href:t,...l})=>t!=null&&t.startsWith("/")?e.jsx("a",{href:t,...l}):e.jsx("a",{href:t,target:"_blank",rel:"noopener noreferrer",...l}),w1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"Guides"}),e.jsx("p",{className:"text-md leading-6 font-medium dark:text-white-80 text-black-80",children:"Follow our step-by-step guides and open source code templates to accelerate your time to market."})]}),e.jsxs("div",{className:"flex flex-wrap gap-4",children:[e.jsx(C,{title:"Build a web3 game with WebGL",body:"Follow a step by step guide to build a web-based game demo that leverages Sequence Embedded Wallet with custom in-game achievement tokens.",link:"/guides/webgl-guide/#integrate-sequencekit-with-waas"}),e.jsx(C,{title:"Build a web3 game with Unity",body:"Learn how to build an engaging iOS and Android game that uses Sequence Embedded Wallets under the hood for an integrated marketplace and in-game currency.",link:"/guides/webgl-guide/#integrate-sequencekit-with-waas"}),e.jsx(C,{title:"Create web3 lootboxes",body:"With this tutorial, build a web-based maze where lootbox items are generated using AI and dynamically minted into the player's universal wallet.",link:"/guides/webgl-guide/#integrate-sequencekit-with-waas"}),e.jsx(C,{title:"Orderbook Marketplace",body:"Build an API-driven marketplace where players can mint, then sell or buy items using a custom web-based interface leveraging Sequence Orderbook APIs.",link:"/solutions/marketplaces/orderbook/01-overview"})]})]}),C=({title:t,body:l,link:s})=>e.jsxs("div",{className:"flex flex-col gap-4 p-4 dark:bg-white-10 bg-white rounded-xl w-[calc(50%-8px)]",children:[e.jsx("div",{className:"rounded-md overflow-hidden w-full aspect-[2]",children:e.jsx("img",{src:"https://unsplash.it/500/300",className:"object-cover w-full h-full"})}),e.jsx("p",{className:"text-xl leading-7 text-themed-primary font-bold",children:t}),e.jsx("p",{className:"text-themed-secondary text-md font-medium leading-6",children:l}),e.jsx(n,{href:s,className:"hover-fade rounded-md dark:bg-white-15 bg-black-7 px-4 py-3 text-themed-primary text-sm font-bold w-fit",children:"Read guide"})]}),v1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"SDKs"}),e.jsx("p",{className:"text-md leading-6 font-medium max-w-xl dark:text-white-80 text-black-80",children:"Leverage our open source SDKs to easily integrate from any popular game development framework or language."})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(d,{icon:"UnityIcon",title:"Unity",body:"Integrate Sequence with our native Unity library.",link:"/sdk/unity/01-overview"}),e.jsx(d,{icon:"UnrealIcon",title:"Unreal Engine",body:"Integrate Sequence with our native Unreal Engine library.",link:"/sdk/unreal/01-overview"}),e.jsx(d,{icon:"GolangIcon",title:"Go",body:"Leverage Sequence APIs easily from your Go backend.",link:"/sdk/go/overview"}),e.jsx(d,{icon:"NodeJSIcon",title:"Node.js",body:"Integrate Sequence APIs with our TypeScript SDK.",link:"/"}),e.jsx(d,{icon:"SequenceIcon",title:"Sequence Kit",body:"Add web onboarding for any web3 wallet.",link:"/"})]})]}),d=({title:t,body:l,icon:s,link:o})=>{const r=v[s];return e.jsxs(n,{href:o,className:"hover-fade p-4 dark:bg-white-10 bg-white rounded-xl w-[calc(33%-(16px/3))]",children:[e.jsxs("p",{className:"font-bold text-themed-primary text-xl leading-7 flex items-center gap-2",children:[e.jsx(r,{}),t]}),e.jsx("p",{className:"text-sm font-medium text-themed-secondary",children:l})]})},b1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"APIs"}),e.jsx("p",{className:"text-md leading-6 font-medium max-w-xl dark:text-white-80 text-black-80",children:"Use our modular APIs for more advanced integrations and for accessing on-chain data through easy-to-use interfaces."})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(c,{title:"Marketplace API",icon:"MarketplaceIcon",body:"Integrate sell and buy operations through our orderbook interface.",link:"/api/marketplace"}),e.jsx(c,{title:"Indexer API",icon:"IndexerIcon",body:"Query wallets and contracts on Ethereum-compatible chains.",link:"/api/indexer/01-overview"}),e.jsx(c,{title:"Metadata API",icon:"SequenceIcon",body:"Fetch token details on any collection and collectible.",link:"/api/metadata"}),e.jsx(c,{title:"Transactions API",icon:"SequenceIcon",body:"Send and optimize transactions on any chain through our performant Sequence Relayer.",link:"/api/relayer"}),e.jsx(c,{title:"Embedded Wallets API",icon:"WalletIcon",body:"Easily onboard web3-native players with a complete Universal Wallet.",link:"/"}),e.jsx(c,{title:"Node Gateway",icon:"NodeGatewayIcon",body:"Leverage Sequence's auto-scaling node service.",link:"/solutions/builder/node-gateway"})]})]}),c=({title:t,body:l,icon:s,link:o})=>{const r=v[s];return e.jsxs(n,{href:o,className:"hover-fade p-4 dark:bg-white-10 bg-white rounded-xl w-[calc(33%-(16px/3))]",children:[e.jsxs("p",{className:"font-bold text-themed-primary text-xl leading-7 flex items-center gap-2",children:[e.jsx(r,{}),t]}),e.jsx("p",{className:"text-sm font-medium text-themed-secondary",children:l})]})},j1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"Support"}),e.jsx("p",{className:"text-md leading-6 font-medium max-w-xl dark:text-white-80 text-black-80",children:"Follow our solution guides to boost your game's acquisition, monetization and retention with the power of web3."})]}),e.jsxs("div",{className:"flex flex-wrap gap-x-10 gap-y-5",children:[e.jsx(x,{link:"/support",title:"Chat Support",body:"Chat with our support team on specific questions."}),e.jsx(x,{link:"https://discord.gg/sequence",title:"Community",body:"Join our Discord community to learn from others building on Sequence."}),e.jsx(x,{link:"https://go.crisp.chat/chat/embed/?website_id=9ef4395b-6bb1-4645-8e02-6071d89290a1",title:"Contact our team",body:"Reach out to our integration team to discuss how you can partner with Sequence."}),e.jsx(x,{link:"https://support.sequence.xyz",title:"Knowledge Base",body:"Browse FAQs and answers to common support requests."})]})]}),x=({title:t,body:l,link:s})=>e.jsxs("div",{className:"w-[calc(50%-20px)] border-t dark:border-white-10 border-black-10 flex flex-col gap-3 py-5",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-themed-primary font-bold text-xl leading-7",children:t}),e.jsx("p",{className:"text-themed-secondary font-medium text-sm leading-5",children:l})]}),e.jsx(n,{href:s,className:"hover-fade px-5 py-3 dark:bg-white-15 bg-black-7 rounded-full w-fit text-sm leading-5 font-bold text-themed-primary",children:"Contact us"})]});function y1({children:t,className:l}){return e.jsxs("div",{className:a("relative",l),children:[e.jsx("div",{className:"absolute inset-0 z-0 flex items-center",children:e.jsx("div",{className:"w-full h-full max-h-[600px] dark:bg-gradient-dark bg-gradient-light"})}),e.jsx("div",{className:"relative z-10",children:t})]})}const k1=({logo:t})=>{const[l,s]=H1(),[o,r]=h.useState("");return e.jsx("footer",{className:"border-t border-black-10 px-5 pt-15",children:e.jsxs("div",{className:"w-full max-w-screen-lg mx-auto flex flex-col gap-10",children:[e.jsxs("div",{className:"flex flex-col gap-5",children:[e.jsx(n,{href:"https://sequence.xyz",className:"hover-fade w-fit",children:t}),e.jsxs("div",{className:"flex items-start gap-10",children:[e.jsx("div",{className:"flex-1",children:e.jsx("form",{onSubmit:i=>{i.preventDefault(),s(o)},children:e.jsxs("div",{className:"flex items-center rounded-lg border dark:border-white-25 border-black-10 p-3 md:max-w-[378px]",children:[e.jsx("input",{className:a("pl-1 pr-4 w-full outline-none bg-transparent text-sm","dark:text-white-80 text-black-80","dark:placeholder:text-white-50 placeholder:text-black-50"),placeholder:"Stay up to date",type:"text",value:l==="invalid"?"Please enter a valid email address!":l==="success"?"Thanks for joining!":o,disabled:l!=="initial",onChange:i=>r(i.target.value)}),e.jsx("button",{type:"submit",disabled:l!=="initial",className:"hover-fade px-3 py-1 rounded text-themed-primary dark:bg-white-15 bg-black-7 font-bold text-[0.625rem] leading-[1rem] disabled:pointer-events-none","aria-label":"Join",children:e.jsx("div",{className:"flex justify-center w-[22px]",children:l==="loading"?e.jsx("div",{className:"py-0.5",children:e.jsx("div",{className:a("w-3 h-3 border-2 rounded-full border border-l-transparent animate-spin","dark:border-t-white border-t-black-80","dark:border-r-white border-r-black-80","dark:border-b-white border-b-black-80")})}):"Join"})})]})})}),e.jsxs("div",{className:"flex-1 flex gap-2 text-xs font-medium text-themed-secondary",children:[e.jsxs("div",{className:"flex gap-2 flex-1",children:[e.jsxs("div",{className:"flex flex-col gap-3 flex-1",children:[e.jsx(n,{href:"https://sequence.xyz",className:"hover-fade w-fit",children:"Home"}),e.jsx(n,{href:"https://sequence.xyz/pricing",className:"hover-fade w-fit",children:"Pricing"}),e.jsx(n,{href:"https://sequence.xyz/blog",className:"hover-fade w-fit",children:"Blog"})]}),e.jsxs("div",{className:"flex flex-col gap-3 flex-1",children:[e.jsx(n,{href:"https://sequence.xyz/terms",className:"hover-fade w-fit",children:"Terms"}),e.jsx(n,{href:"https://sequence.xyz/privacy",className:"hover-fade w-fit",children:"Privacy"})]})]}),e.jsxs("div",{className:"flex gap-2 flex-1",children:[e.jsxs("div",{className:"flex flex-col gap-3 flex-1",children:[e.jsx(n,{href:"https://sequence.xyz/contact",className:"hover-fade w-fit",children:"Contact"}),e.jsx(n,{href:"https://40061393.fs1.hubspotusercontent-na1.net/hubfs/40061393/Sequence%20Media%20Kit%202024.pdf",className:"hover-fade w-fit",children:"Media kit"}),e.jsx(n,{href:"/",className:"hover-fade w-fit",children:"Docs"})]}),e.jsxs("div",{className:"flex flex-col gap-3 flex-1",children:[e.jsx(n,{href:"https://sequence.build",className:"hover-fade w-fit",children:"Sequence Builder"}),e.jsx(n,{href:"https://sequence.app",className:"hover-fade w-fit",children:"Sequence Wallet"})]})]})]})]})]}),e.jsxs("div",{className:"border-t dark:border-white-10 border-black-10 flex items-center justify-between py-7",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(n,{href:"https://twitter.com/0xsequence",className:"text-themed-secondary hover-fade",children:e.jsx(N,{})}),e.jsx(n,{href:"https://discord.gg/sequence",className:"text-themed-secondary hover-fade",children:e.jsx(y,{})}),e.jsx(n,{href:"https://www.instagram.com/0xsequence",className:"text-themed-secondary hover-fade",children:e.jsx(k,{})})]}),e.jsx(n,{href:"https://horizon.io",className:"hover-fade",children:e.jsx("img",{src:"/img/horizon-logo.png",className:"max-w-24 dark:invert-0 invert"})})]})]})})},N1=/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/,M1="65e38f6a-690c-4318-80db-be3b97a34448",H1=()=>{const[t,l]=h.useState("initial"),s=h.useRef(void 0);return h.useEffect(()=>()=>{clearTimeout(s.current),s.current=void 0},[]),[t,async r=>{if(!N1.test(r)){l("invalid"),clearTimeout(s.current),s.current=setTimeout(()=>l("initial"),1500);return}l("loading");const M=await fetch(`https://sequence-contentful.vercel.app/api/forms/${M1}`,{method:"POST",body:JSON.stringify({fields:[{name:"email",value:r}],context:{pageUri:window.location.href,pageName:"Sequence docs footer"},skipValidation:"false"})}),{result:H}=await M.json();if(H==="error"){l("error"),clearTimeout(s.current),s.current=setTimeout(()=>l("initial"),1500);return}l("success")}]},V1={title:"Sequence - Web3 Gaming Platform",layout:"landing",showLogo:!1,content:{horizontalPadding:"0px",width:"100%",verticalPadding:"0px"}};function b(t){return Q||j("HomePage",!1),m||j("HomePage.Logo",!0),e.jsxs("div",{className:"flex flex-col",children:[e.jsx(e1,{logo:e.jsx(m,{className:"w-52"})}),e.jsx("div",{className:"px-5 z-10",children:e.jsx("div",{className:"w-full max-w-screen-lg mx-auto",children:e.jsx(g1,{})})}),e.jsx(y1,{className:"px-5 mt-30",children:e.jsx("div",{className:"w-full max-w-screen-lg mx-auto",children:e.jsx(w1,{})})}),e.jsx("div",{className:"px-5 my-30",children:e.jsxs("div",{className:"w-full max-w-screen-lg mx-auto flex flex-col gap-30",children:[e.jsx(v1,{}),e.jsx(b1,{}),e.jsx(j1,{})]})}),e.jsx(k1,{logo:e.jsx(m,{className:"w-32"})})]})}function I1(t={}){const{wrapper:l}={...R(),...t.components};return l?e.jsx(l,{...t,children:e.jsx(b,{...t})}):b()}function j(t,l){throw new Error("Expected "+(l?"component":"object")+" `"+t+"` to be defined: you likely forgot to import, pass, or provide it.")}export{I1 as default,V1 as frontmatter}; diff --git a/assets/indexer-DbL1OAlD.js b/assets/indexer-o1f299nU.js similarity index 95% rename from assets/indexer-DbL1OAlD.js rename to assets/indexer-o1f299nU.js index a50c4916949..cafa7972cfa 100644 --- a/assets/indexer-DbL1OAlD.js +++ b/assets/indexer-o1f299nU.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";import{V as r}from"./Video-C_LaYbpR.js";const s={title:"Indexer in Builder",description:"undefined"};function t(a){const n={a:"a",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",li:"li",p:"p",ul:"ul",...i(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"indexer-in-builder",children:["Indexer in Builder",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#indexer-in-builder",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-DR6XzkYl.js";import{V as r}from"./Video-DrWW48g_.js";const s={title:"Indexer in Builder",description:"undefined"};function t(a){const n={a:"a",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",li:"li",p:"p",ul:"ul",...i(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"indexer-in-builder",children:["Indexer in Builder",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#indexer-in-builder",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"Sequence Builder equips game builders with an indexer that collects data from the following networks: Ethereum (and Sepolia), Optimism, Base, Gnosis Chain, Polygon (and Polygon Mumbai), Polygon zkEVM, Arbitrum One, Arbitrum Nova, Gnosis Chain, BNB Smart Chain (and Smart Chain Testnet), Avalanche (and Avalanche Testnet), Oasys Homeverse (and Oasys Homeverse Testnet)."}),` `,e.jsxs(n.h4,{id:"what-data-can-i-query-for-my-game",children:["What data can I query for my game?",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#what-data-can-i-query-for-my-game",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(n.p,{children:"Builder takes the stress out of gathering on-chain data for your game. Simply select the data you want from the indexer, and it generates the necessary code in snippets."}),` diff --git a/assets/installation-D7kc3DS8.js b/assets/installation-U0MvJyz8.js similarity index 98% rename from assets/installation-D7kc3DS8.js rename to assets/installation-U0MvJyz8.js index 3c5d378979a..ea848bcebef 100644 --- a/assets/installation-D7kc3DS8.js +++ b/assets/installation-U0MvJyz8.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-Bn6H9hrN.js";const a={title:"Indexer Installation",description:"undefined"};function i(n){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"indexer-installation",children:["Indexer Installation",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#indexer-installation",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-DR6XzkYl.js";const a={title:"Indexer Installation",description:"undefined"};function i(n){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"indexer-installation",children:["Indexer Installation",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#indexer-installation",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.aside,{"data-callout":"warning",children:[e.jsx(s.strong,{"data-callout-title":!0,children:"INTRODUCING THE SEQUENCE BUILDER - "}),e.jsxs(s.p,{children:["Our ",e.jsx(s.strong,{children:"Indexer"})," service is managed through ",e.jsx(s.strong,{children:e.jsx(s.a,{href:"https://sequence.build",children:"Sequence Builder"})}),". Sign up to grab your API access key."]}),e.jsx(s.p,{children:e.jsxs(s.a,{href:"https://sequence.build",children:["Get started with the ",e.jsx(s.strong,{children:"Sequence Builder"})," Free Plan today!"]})})]}),` `,e.jsxs(s.p,{children:[`Sequence Indexer is a simple API to query any blockchain token and NFT data. Below are instructions on how to integrate the Sequence Indexer API into your Webapps, Games, and backends. In case you missed @@ -50,7 +50,7 @@ and use the corresponding host for your dapp/game. For example, on Ethereum main `,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" VerifiedOnly: "}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"true"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` `,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"}"})}),` `,e.jsx(s.span,{className:"line","data-empty-line":!0,children:" "}),` -`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"_, tokenBalances, err "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":="}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" seqIndexer."}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"GetTokenBalances"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(context."}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Background"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(), "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"accountAddress, "}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"includeMetadata, "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"metadataOptions, "}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]})]})}),` +`,e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"_, tokenBalances, err "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":="}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" seqIndexer."}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"GetTokenBalances"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(context."}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Background"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(), "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"accountAddress, "}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"includeMetadata, "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"&"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"metadataOptions, "}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),e.jsx(s.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:"nil"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")"})]})]})}),` `,e.jsx("br",{}),` `,e.jsxs(s.h3,{id:"unity-or-unreal-installation",children:["Unity or Unreal Installation",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#unity-or-unreal-installation",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(s.p,{children:["The Sequence Indexer is integrated directly inside of the respective ",e.jsx(s.a,{href:"",children:"Sequence Unity"})," and ",e.jsx(s.a,{href:"",children:"Sequence Unreal"})," SDKs."]}),` diff --git a/assets/lootbox-CYTHQ72f.js b/assets/lootbox-BOyUVmVp.js similarity index 96% rename from assets/lootbox-CYTHQ72f.js rename to assets/lootbox-BOyUVmVp.js index cb9a8a4ddd5..cef3017ed99 100644 --- a/assets/lootbox-CYTHQ72f.js +++ b/assets/lootbox-BOyUVmVp.js @@ -1,4 +1,4 @@ -import{d as a,j as n}from"./index-Bn6H9hrN.js";const r=void 0;function t(i){const e={a:"a",div:"div",h2:"h2",li:"li",ol:"ol",p:"p",...a(),...i.components};return n.jsxs(n.Fragment,{children:[n.jsxs(e.h2,{id:"deploy-an-in-game-collectibles-contract",children:["Deploy an in-game collectibles contract",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-an-in-game-collectibles-contract",children:n.jsx(e.div,{"data-autolink-icon":!0})})]}),` +import{d as a,j as n}from"./index-DR6XzkYl.js";const r=void 0;function t(i){const e={a:"a",div:"div",h2:"h2",li:"li",ol:"ol",p:"p",...a(),...i.components};return n.jsxs(n.Fragment,{children:[n.jsxs(e.h2,{id:"deploy-an-in-game-collectibles-contract",children:["Deploy an in-game collectibles contract",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-an-in-game-collectibles-contract",children:n.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,n.jsxs(e.h2,{id:"query-contract-details",children:["Query contract details",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#query-contract-details",children:n.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,n.jsxs(e.h2,{id:"fetch-token-balances-of-a-wallet",children:["Fetch token balances of a wallet",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fetch-token-balances-of-a-wallet",children:n.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,n.jsxs(e.ol,{children:[` diff --git a/assets/marketplace-mXm9BjLt.js b/assets/marketplace-D99u8IyF.js similarity index 94% rename from assets/marketplace-mXm9BjLt.js rename to assets/marketplace-D99u8IyF.js index 4f46419fde0..26c3367603b 100644 --- a/assets/marketplace-mXm9BjLt.js +++ b/assets/marketplace-D99u8IyF.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-Bn6H9hrN.js";const d={title:"Marketplace API",description:"undefined"};function n(a){const t={a:"a",aside:"aside",div:"div",h1:"h1",header:"header",p:"p",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"marketplace-api",children:["Marketplace API",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#marketplace-api",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-DR6XzkYl.js";const d={title:"Marketplace API",description:"undefined"};function n(a){const t={a:"a",aside:"aside",div:"div",h1:"h1",header:"header",p:"p",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"marketplace-api",children:["Marketplace API",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#marketplace-api",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.aside,{"data-callout":"note",children:e.jsx(t.p,{children:e.jsx(t.a,{href:"https://0xsequence.redoc.ly/tag/marketplace",children:"Marketplace API documentation and testing"})})}),` `,e.jsx(t.p,{children:"The Sequence Marketplace API service offers a simple and fast way to interact with sequence marketplace protocols. The API is designed to be easy to use and to have all the features you need to build a fully functional marketplace."}),` `,e.jsx(t.p,{children:"#TODO add example from solutions"})]})}function i(a={}){const{wrapper:t}={...r(),...a.components};return t?e.jsx(t,{...a,children:e.jsx(n,{...a})}):n(a)}export{i as default,d as frontmatter}; diff --git a/assets/white-label-marketplace-jOtVsaEx.js b/assets/marketplaces-DnTDXOuk.js similarity index 94% rename from assets/white-label-marketplace-jOtVsaEx.js rename to assets/marketplaces-DnTDXOuk.js index aec7e2f66ff..102566c3a3a 100644 --- a/assets/white-label-marketplace-jOtVsaEx.js +++ b/assets/marketplaces-DnTDXOuk.js @@ -1,4 +1,4 @@ -import{d as n,j as e}from"./index-Bn6H9hrN.js";import{V as r}from"./Video-C_LaYbpR.js";const l={title:"Launch your white-label marketplace",description:"undefined"};function t(i){const a={a:"a",aside:"aside",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...n(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"launch-your-white-label-marketplace",children:["Launch your white-label marketplace",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#launch-your-white-label-marketplace",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as e}from"./index-DR6XzkYl.js";import{V as r}from"./Video-DrWW48g_.js";const l={title:"Launch your white-label marketplace",description:"undefined"};function t(i){const a={a:"a",aside:"aside",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...n(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"launch-your-white-label-marketplace",children:["Launch your white-label marketplace",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#launch-your-white-label-marketplace",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(a.p,{children:"Sequence Builder provides game builders with a white-label marketplace that can be launched in seconds. With Builder, you can customize your marketplace and integrate it directly into your game experience, all with no-coding experience necessary."}),` `,e.jsxs(a.h2,{id:"try-it-out",children:["Try it out",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#try-it-out",children:e.jsx(a.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(a.aside,{"data-callout":"info",children:e.jsxs(a.p,{children:["Get started quickly at ",e.jsx(a.a,{href:"https://sequence.build/",children:"Sequence Builder"})," to launch your marketplace."]})}),` diff --git a/assets/metadata-BRJ0_s_X.js b/assets/metadata-B66XtzTL.js similarity index 99% rename from assets/metadata-BRJ0_s_X.js rename to assets/metadata-B66XtzTL.js index b241758cea6..f6a82762eae 100644 --- a/assets/metadata-BRJ0_s_X.js +++ b/assets/metadata-B66XtzTL.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-Bn6H9hrN.js";const o={title:"Metadata API",description:"undefined"};function a(n){const t={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",img:"img",li:"li",ol:"ol",p:"p",ul:"ul",...s(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"metadata-api",children:["Metadata API",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#metadata-api",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-DR6XzkYl.js";const o={title:"Metadata API",description:"undefined"};function a(n){const t={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",img:"img",li:"li",ol:"ol",p:"p",ul:"ul",...s(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"metadata-api",children:["Metadata API",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#metadata-api",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.aside,{"data-callout":"note",children:e.jsx(t.p,{children:e.jsx(t.a,{href:"https://0xsequence.redoc.ly/tag/metadata",children:"Metadata API documentation and endpoints"})})}),` `,e.jsx(t.p,{children:"The Sequence Metadata API service offers a simple and fast API to query, manage, and update collections, token & NFT metadata for Ethereum-compatible chains."}),` `,e.jsx(t.aside,{"data-callout":"info",children:e.jsxs(t.p,{children:["Our Metadata service is managed through ",e.jsx(t.a,{href:"HTTPS://SEQUENCE.BUILD",children:"Sequence Builder"})," and requires a Service Account & Token in order to call the corresponding endpoints. Please follow the [section](/api/metadata#Obtaining a Service Account & Token) below prior to calling the endpoints"]})}),` diff --git a/assets/metadata-tips-D8QvEPZX.js b/assets/metadata-tips-cnDPTWKR.js similarity index 97% rename from assets/metadata-tips-D8QvEPZX.js rename to assets/metadata-tips-cnDPTWKR.js index e43932b76d9..1466f24c372 100644 --- a/assets/metadata-tips-D8QvEPZX.js +++ b/assets/metadata-tips-cnDPTWKR.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-Bn6H9hrN.js";const o={sidebar_label:"Metadata Tips & Spam",title:"Metadata Tips & Notes on Spam",description:"undefined"};function a(n){const t={a:"a",code:"code",div:"div",em:"em",h1:"h1",header:"header",p:"p",...s(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"metadata-tips--notes-on-spam",children:["Metadata Tips & Notes on Spam",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#metadata-tips--notes-on-spam",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-DR6XzkYl.js";const o={sidebar_label:"Metadata Tips & Spam",title:"Metadata Tips & Notes on Spam",description:"undefined"};function a(n){const t={a:"a",code:"code",div:"div",em:"em",h1:"h1",header:"header",p:"p",...s(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"metadata-tips--notes-on-spam",children:["Metadata Tips & Notes on Spam",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#metadata-tips--notes-on-spam",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(t.p,{children:[`The Sequence Indexer and Sequence Metadata services will pick up everything and anything that is published on a blockchain. Our services are designed to provide data in real-time as blocks are mined, and adhere to all popular ERC20, ERC721 and ERC1155 metadata diff --git a/assets/minter-BQO7Uovb.js b/assets/minter-Ce25MOEC.js similarity index 94% rename from assets/minter-BQO7Uovb.js rename to assets/minter-Ce25MOEC.js index edabebc8bf9..a821bf1f465 100644 --- a/assets/minter-BQO7Uovb.js +++ b/assets/minter-Ce25MOEC.js @@ -1,3 +1,3 @@ -import{d as r,j as e}from"./index-Bn6H9hrN.js";const s=void 0;function i(t){const n={a:"a",div:"div",h2:"h2",...r(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsxs(n.h2,{id:"mint-tokens-using-builder-manually",children:["Mint tokens using Builder manually",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#mint-tokens-using-builder-manually",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` +import{d as r,j as e}from"./index-DR6XzkYl.js";const s=void 0;function i(t){const n={a:"a",div:"div",h2:"h2",...r(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsxs(n.h2,{id:"mint-tokens-using-builder-manually",children:["Mint tokens using Builder manually",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#mint-tokens-using-builder-manually",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.h2,{id:"deploy-a-serverless-minter-on-cloudflare-workers",children:["Deploy a serverless minter on Cloudflare Workers",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-a-serverless-minter-on-cloudflare-workers",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.h2,{id:"integrate-minting-into-a-backend-service",children:["Integrate minting into a backend service",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-minting-into-a-backend-service",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})]})}function d(t={}){const{wrapper:n}={...r(),...t.components};return n?e.jsx(n,{...t,children:e.jsx(i,{...t})}):i(t)}export{d as default,s as frontmatter}; diff --git a/assets/native-network-balance-BIxm1G19.js b/assets/native-network-balance-DTwXGWh7.js similarity index 99% rename from assets/native-network-balance-BIxm1G19.js rename to assets/native-network-balance-DTwXGWh7.js index b713d21bbe4..37925c16d96 100644 --- a/assets/native-network-balance-BIxm1G19.js +++ b/assets/native-network-balance-DTwXGWh7.js @@ -1,4 +1,4 @@ -import{d as i,j as s}from"./index-Bn6H9hrN.js";const r={title:"Native network balances (ie. ETH, MATIC, etc.)",description:"undefined"};function l(n){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...i(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"native-network-balances-ie-eth-matic-etc",children:["Native network balances (ie. ETH, MATIC, etc.)",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#native-network-balances-ie-eth-matic-etc",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as s}from"./index-DR6XzkYl.js";const r={title:"Native network balances (ie. ETH, MATIC, etc.)",description:"undefined"};function l(n){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...i(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"native-network-balances-ie-eth-matic-etc",children:["Native network balances (ie. ETH, MATIC, etc.)",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#native-network-balances-ie-eth-matic-etc",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.aside,{"data-callout":"warning",children:[s.jsx(e.strong,{"data-callout-title":!0,children:"INTRODUCING THE SEQUENCE BUILDER - "}),s.jsxs(e.p,{children:["Our ",s.jsx(e.strong,{children:"Indexer"})," service is now managed through ",s.jsx(e.strong,{children:s.jsx(e.a,{href:"https://sequence.build",children:"Sequence Builder"})}),". Sign up to grab your API access key."]}),s.jsx(e.p,{children:s.jsxs(e.a,{href:"https://sequence.build",children:["Get started with the ",s.jsx(e.strong,{children:"Sequence Builder"})," Free Plan today!"]})})]}),` `,s.jsxs(e.h3,{id:"fetch-native-network-balance-aka-eth-on-ethereum-matic-on-polygon-avax-on-avalanche-bnb-on-bsc-etc",children:["Fetch native network balance (aka ETH on Ethereum, MATIC on Polygon, AVAX on Avalanche, BNB on BSC, etc.)",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fetch-native-network-balance-aka-eth-on-ethereum-matic-on-polygon-avax-on-avalanche-bnb-on-bsc-etc",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:s.jsxs(e.em,{children:["Sequence Indexer ",s.jsx(e.code,{children:"GetEtherBalance"})," Method:"]})}),` diff --git a/assets/nft-checkout-DCYb2_-s.js b/assets/nft-checkout-CGwBdliS.js similarity index 92% rename from assets/nft-checkout-DCYb2_-s.js rename to assets/nft-checkout-CGwBdliS.js index a24f3cd35b2..7a5bc7f7de7 100644 --- a/assets/nft-checkout-DCYb2_-s.js +++ b/assets/nft-checkout-CGwBdliS.js @@ -1,2 +1,2 @@ -import{d as i,j as n}from"./index-Bn6H9hrN.js";const a=void 0;function o(t){const e={a:"a",div:"div",h2:"h2",...i(),...t.components};return n.jsxs(n.Fragment,{children:[n.jsxs(e.h2,{id:"integrate-nft-checkout-on-web-coming-soon",children:["Integrate NFT Checkout on web (coming soon)",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-nft-checkout-on-web-coming-soon",children:n.jsx(e.div,{"data-autolink-icon":!0})})]}),` +import{d as i,j as n}from"./index-DR6XzkYl.js";const a=void 0;function o(t){const e={a:"a",div:"div",h2:"h2",...i(),...t.components};return n.jsxs(n.Fragment,{children:[n.jsxs(e.h2,{id:"integrate-nft-checkout-on-web-coming-soon",children:["Integrate NFT Checkout on web (coming soon)",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-nft-checkout-on-web-coming-soon",children:n.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,n.jsxs(e.h2,{id:"integrate-nft-checkout-on-mobile-coming-soon",children:["Integrate NFT Checkout on mobile (coming soon)",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-nft-checkout-on-mobile-coming-soon",children:n.jsx(e.div,{"data-autolink-icon":!0})})]})]})}function r(t={}){const{wrapper:e}={...i(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o(t)}export{r as default,a as frontmatter}; diff --git a/assets/node-gateway-DAIQ9evn.js b/assets/node-gateway-9-nhMRrS.js similarity index 95% rename from assets/node-gateway-DAIQ9evn.js rename to assets/node-gateway-9-nhMRrS.js index 780816a4443..bc58e09d38a 100644 --- a/assets/node-gateway-DAIQ9evn.js +++ b/assets/node-gateway-9-nhMRrS.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";import{V as r}from"./Video-C_LaYbpR.js";const s={title:"Node Gateway in Builder",description:"undefined"};function n(t){const a={a:"a",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"node-gateway-in-builder",children:["Node Gateway in Builder",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#node-gateway-in-builder",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-DR6XzkYl.js";import{V as r}from"./Video-DrWW48g_.js";const s={title:"Node Gateway in Builder",description:"undefined"};function n(t){const a={a:"a",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"node-gateway-in-builder",children:["Node Gateway in Builder",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#node-gateway-in-builder",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(a.p,{children:"Sequence Builder offers a comprehensive Node Gateway dashboard that provides you with all the information needed to manage your node infrastructure, from compatibility with your favorite Web3 module to your requirement for real-time performant data for your game."}),` `,e.jsxs(a.h5,{id:"what-kind-of-performance-can-i-expect-for-my-game",children:["What kind of performance can I expect for my game?",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#what-kind-of-performance-can-i-expect-for-my-game",children:e.jsx(a.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(a.p,{children:"Sequence Node Gateway is engineered to power your gaming infrastructure. Node Gateway aggregates multiple node providers, auto-switching between them to ensure correct and in sync data availability — giving you the assurance that your decentralized applications run smoothly with low latency for your players."}),` diff --git a/assets/node-gateway-DcQr5R2U.js b/assets/node-gateway-D1t8nelF.js similarity index 99% rename from assets/node-gateway-DcQr5R2U.js rename to assets/node-gateway-D1t8nelF.js index a4a62409a68..7cbaaa96f24 100644 --- a/assets/node-gateway-DcQr5R2U.js +++ b/assets/node-gateway-D1t8nelF.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-Bn6H9hrN.js";const a={title:"Node Gateway",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...r(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"node-gateway",children:["Node Gateway",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#node-gateway",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-DR6XzkYl.js";const a={title:"Node Gateway",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...r(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"node-gateway",children:["Node Gateway",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#node-gateway",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"Sequence Node gateway infrastructure enables you to have fail-over resilient RPC endpoints that can scale with your application."}),` `,s.jsx(e.p,{children:"By using our infrastructure, you save money for not having to deploy your own stack, and benefits from the feature of aggregating multiple public RPC providers into a single endpoint for use."}),` `,s.jsxs(e.h2,{id:"give-it-a-try",children:["Give it a try",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#give-it-a-try",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/nodejs-CWO8hRFR.js b/assets/nodejs-CWO8hRFR.js deleted file mode 100644 index 2dbad503f22..00000000000 --- a/assets/nodejs-CWO8hRFR.js +++ /dev/null @@ -1 +0,0 @@ -import{d as r,j as n}from"./index-Bn6H9hrN.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/nodejs-DcRYKII9.js b/assets/nodejs-DcRYKII9.js new file mode 100644 index 00000000000..ed96a024c9f --- /dev/null +++ b/assets/nodejs-DcRYKII9.js @@ -0,0 +1 @@ +import{d as r,j as n}from"./index-DR6XzkYl.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/onramps-uIYZr5qs.js b/assets/onramps-DQuxS_Bb.js similarity index 91% rename from assets/onramps-uIYZr5qs.js rename to assets/onramps-DQuxS_Bb.js index 07767cb65be..3f181a59be2 100644 --- a/assets/onramps-uIYZr5qs.js +++ b/assets/onramps-DQuxS_Bb.js @@ -1,2 +1,2 @@ -import{d as o,j as n}from"./index-Bn6H9hrN.js";const i=void 0;function a(t){const e={a:"a",div:"div",h2:"h2",...o(),...t.components};return n.jsxs(n.Fragment,{children:[n.jsxs(e.h2,{id:"integrate-onramp-on-web",children:["Integrate onramp on web",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-onramp-on-web",children:n.jsx(e.div,{"data-autolink-icon":!0})})]}),` +import{d as o,j as n}from"./index-DR6XzkYl.js";const i=void 0;function a(t){const e={a:"a",div:"div",h2:"h2",...o(),...t.components};return n.jsxs(n.Fragment,{children:[n.jsxs(e.h2,{id:"integrate-onramp-on-web",children:["Integrate onramp on web",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-onramp-on-web",children:n.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,n.jsxs(e.h2,{id:"integrate-onramp-on-mobile",children:["Integrate onramp on mobile",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-onramp-on-mobile",children:n.jsx(e.div,{"data-autolink-icon":!0})})]})]})}function d(t={}){const{wrapper:e}={...o(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(a,{...t})}):a(t)}export{d as default,i as frontmatter}; diff --git a/assets/overview-BXJAh5pD.js b/assets/overview--P1lrrxy.js similarity index 96% rename from assets/overview-BXJAh5pD.js rename to assets/overview--P1lrrxy.js index bd272471e51..f1b5e0c5b54 100644 --- a/assets/overview-BXJAh5pD.js +++ b/assets/overview--P1lrrxy.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";const c=void 0;function s(n){const t={a:"a",code:"code",div:"div",h3:"h3",p:"p",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsxs(t.h3,{id:"go",children:["Go",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#go",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` +import{d as i,j as e}from"./index-DR6XzkYl.js";const c=void 0;function s(n){const t={a:"a",code:"code",div:"div",h3:"h3",p:"p",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsxs(t.h3,{id:"go",children:["Go",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#go",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(t.p,{children:["A complete Sequence SDK is also available in Go: ",e.jsx(t.a,{href:"https://github.com/0xsequence/go-sequence",children:"https://github.com/0xsequence/go-sequence"}),"."]}),` `,e.jsxs(t.p,{children:[e.jsx(t.a,{href:"https://github.com/0xsequence/go-sequence",children:"go-sequence"})," is the equivalent of ",e.jsx(t.a,{href:"https://github.com/0xsequence/sequence.js",children:"0xsequence"}),` but for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with `,e.jsx(t.a,{href:"https://github.com/0xsequence/go-sequence",children:"go-sequence"}),"."]}),` diff --git a/assets/overview-BBtttKMC.js b/assets/overview-B6zGNzmR.js similarity index 72% rename from assets/overview-BBtttKMC.js rename to assets/overview-B6zGNzmR.js index aacd23a8376..dacff689f7d 100644 --- a/assets/overview-BBtttKMC.js +++ b/assets/overview-B6zGNzmR.js @@ -1,10 +1,21 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";const s={title:"Indexer",description:"undefined"};function a(t){const n={a:"a",aside:"aside",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"indexer",children:["Indexer",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#indexer",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-DR6XzkYl.js";const s={title:"Indexer",description:"undefined"};function a(t){const n={a:"a",aside:"aside",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"indexer",children:["Indexer",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#indexer",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.aside,{"data-callout":"note",children:e.jsx(n.p,{children:e.jsx(n.a,{href:"https://0xsequence.redoc.ly/tag/indexer",children:"Indexer API documentation and testing"})})}),` `,e.jsx(n.p,{children:"The Sequence Indexer is a modular web3 service that makes it easy to query blockchain token and NFT data from Ethereum-compatible networks. The Indexer automatically indexes every ERC20, ERC721 and ERC1155 token from Ethereum-compatible chains."}),` `,e.jsxs(n.aside,{"data-callout":"warning",children:[e.jsx(n.strong,{"data-callout-title":!0,children:"INTRODUCING THE SEQUENCE BUILDER - "}),e.jsxs(n.p,{children:["Our ",e.jsx(n.strong,{children:"Indexer"})," service is now managed through ",e.jsx(n.strong,{children:e.jsx(n.a,{href:"https://sequence.build",children:"Sequence Builder"})}),". Sign up to grab your API access key."]}),e.jsx(n.p,{children:e.jsxs(n.a,{href:"https://sequence.build",children:["Get started with the ",e.jsx(n.strong,{children:"Sequence Builder"})," Free Plan today!"]})})]}),` -`,e.jsxs(n.p,{children:[`The Sequence Indexer is a modular web3 service that makes it easy to query blockchain token -and NFT data from Ethereum-compatible networks. The Indexer `,e.jsx(n.strong,{children:`automatically indexes every -ERC20, ERC721 and ERC1155 token`})," from Ethereum-compatible chains."]}),` +`,e.jsxs(n.p,{children:[`The Sequence Indexer is a powerful tool that can be used to build wallets, games, and dapps that +need to query on-chain data. It is designed to be fast, reliable, and easy to use. It leverages +the `,e.jsx(n.a,{href:"/api/node-gateway",children:"Sequence Node Gateway"}),` which monitors nodes health, intelligently routes +requests to the available nodes and caches the most recent request responses. This means that Node +providers going down are no longer a problem, as the Node Gateway will automatically route to a +healthy provider making sure that Indexer always stays at the top of the chain with no downtime.`]}),` +`,e.jsx(n.p,{children:`The other benefit of using the Indexer is that it is using built in-house, next-generation, LSM-tree +based databases to store the data. It makes it super fast to query and index data. The data is +available in real-time with low latency. You can query it using a simple REST API or one of our SDKs.`}),` +`,e.jsxs(n.p,{children:[`The Indexer API allows you to query all token balances, history and other information for +all Ethereum compatible chains. In order to make it one go to place for all your token data needs, +we have included `,e.jsx(n.a,{href:"/api/metadata/overview",children:"Sequence Metadata"}),` support for all tokens. This means that +you can easily render tokens in your apps, games, or wallets without the need to fetch metadata from +a separate API.`]}),` `,e.jsx(n.p,{children:`In fact, the Sequence Wallet uses the Indexer behind the scenes so it can seamlessly render all token information in any wallet. But of course, the Indexer is a modular piece of infrastructure, and you may use it directly from your dapp, game, or even from @@ -30,4 +41,4 @@ a server.`}),` `,e.jsx(n.li,{children:e.jsx(n.a,{href:"/api/indexer/unique-tokens",children:`What is the total token supply of an ERC20 token? What is the total token supply of all the ERC1155 tokens in a particular contract?`})}),` `,e.jsx(n.li,{children:e.jsx(n.a,{href:"/api/indexer/transation-history-token-contract",children:"Fetch the transaction history for any token contract address"})}),` -`]})]})}function d(t={}){const{wrapper:n}={...i(),...t.components};return n?e.jsx(n,{...t,children:e.jsx(a,{...t})}):a(t)}export{d as default,s as frontmatter}; +`]})]})}function o(t={}){const{wrapper:n}={...i(),...t.components};return n?e.jsx(n,{...t,children:e.jsx(a,{...t})}):a(t)}export{o as default,s as frontmatter}; diff --git a/assets/overview-Cb_kOiEC.js b/assets/overview-BHgLst3H.js similarity index 98% rename from assets/overview-Cb_kOiEC.js rename to assets/overview-BHgLst3H.js index 44ec62c8c64..0d51ca05a31 100644 --- a/assets/overview-Cb_kOiEC.js +++ b/assets/overview-BHgLst3H.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-Bn6H9hrN.js";const i={title:"Marketplaces Overview",description:"undefined"};function n(a){const t={a:"a",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",strong:"strong",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"marketplaces-overview",children:["Marketplaces Overview",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#marketplaces-overview",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-DR6XzkYl.js";const i={title:"Marketplaces Overview",description:"undefined"};function n(a){const t={a:"a",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",strong:"strong",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"marketplaces-overview",children:["Marketplaces Overview",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#marketplaces-overview",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(t.p,{children:["Sequence provides a variety of options for your marketplace and in-game store to accelerate your development, namely our ",e.jsx(t.strong,{children:"white-label marketplace"})," as well as our suite of ",e.jsx(t.strong,{children:"Marketplace APIs"}),"."]}),` `,e.jsxs(t.h3,{id:"what-are-the-differences-between-these-options",children:["What are the differences between these options?",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#what-are-the-differences-between-these-options",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(t.p,{children:["The ",e.jsx(t.strong,{children:"white-label marketplace"})," is ideal for getting started with a browser-based marketplace in literally minutes - all with no-coding experience and options to customize the marketplace to fit your branding such as fonts, colors, and logos. Our white-label marketplace is ideal if you want to minimize development time, focus on a web-based experience for your users, and start selling assets."]}),` diff --git a/assets/overview-B0dToUxf.js b/assets/overview-BdEKAPLG.js similarity index 99% rename from assets/overview-B0dToUxf.js rename to assets/overview-BdEKAPLG.js index 2c6e38bf880..a557204e207 100644 --- a/assets/overview-B0dToUxf.js +++ b/assets/overview-BdEKAPLG.js @@ -1,4 +1,4 @@ -import{d as n,j as e}from"./index-Bn6H9hrN.js";const l={title:"Metadata",description:"undefined"};function i(a){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"metadata",children:["Metadata",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#metadata",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as e}from"./index-DR6XzkYl.js";const l={title:"Metadata",description:"undefined"};function i(a){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"metadata",children:["Metadata",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#metadata",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:`The Sequence Metadata API service offers a simple and fast API to query token & NFT metadata for Ethereum-compatible chains.`}),` `,e.jsx(s.p,{children:"To learn how to use the Sequence Metadata service, please read:"}),` diff --git a/assets/overview-BNDqce-N.js b/assets/overview-BdOgABVn.js similarity index 99% rename from assets/overview-BNDqce-N.js rename to assets/overview-BdOgABVn.js index f14221a02b5..e2fee1dba1e 100644 --- a/assets/overview-BNDqce-N.js +++ b/assets/overview-BdOgABVn.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-Bn6H9hrN.js";const r=void 0;function n(i){const e={a:"a",code:"code",div:"div",h2:"h2",h4:"h4",p:"p",pre:"pre",span:"span",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"install",children:["Install",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#install",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +import{d as l,j as s}from"./index-DR6XzkYl.js";const r=void 0;function n(i){const e={a:"a",code:"code",div:"div",h2:"h2",h4:"h4",p:"p",pre:"pre",span:"span",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"install",children:["Install",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#install",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.p,{children:["Sequence.js is a modular web3 stack and smart wallet package for Ethereum chains. You can think of it similar to ethers.js, but tailored to the Sequence stack which streamlines common functions needed for blockchain-enabled game development. The sequence.js SDK is composed of several sub-packages combined into a single meta-package called ",s.jsx(e.code,{children:"0xsequence"}),`. To add the SDK to your project, add a dependency on 0xsequence to your package.json:`]}),` `,s.jsx(e.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsx(e.code,{children:s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"npm"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" install"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" 0xsequence"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" ethers"})]})})}),` diff --git a/assets/overview-6OEMZgDS.js b/assets/overview-BeMF62oO.js similarity index 95% rename from assets/overview-6OEMZgDS.js rename to assets/overview-BeMF62oO.js index a4703377678..98ea6339b67 100644 --- a/assets/overview-6OEMZgDS.js +++ b/assets/overview-BeMF62oO.js @@ -1,4 +1,4 @@ -import{d as o,j as e}from"./index-Bn6H9hrN.js";import{C as r,a as i}from"./CardGrid-aCCIcMd4.js";const c={title:"Sequence Builder",description:"undefined"};function s(n){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...o(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"sequence-builder",children:["Sequence Builder",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-builder",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as o,j as e}from"./index-DR6XzkYl.js";import{C as r,a as i}from"./CardGrid-BnCcSD8R.js";const c={title:"Sequence Builder",description:"undefined"};function s(n){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...o(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"sequence-builder",children:["Sequence Builder",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-builder",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,` `,e.jsxs(t.p,{children:[e.jsx(t.a,{href:"https://sequence.build/",children:"Builder"})," is Sequence's all-inclusive, no-code tool for managing your projects, API keys, as well as contract and marketplace deployments. It also provides user access management so multiple people in your team can easily work on the same project. In addition to these powerful features, Builder also provides easy to use interfaces for managing sponsored wallets with your gas tank, and integration tools for SequenceKit, Node Gateway and Indexer."]}),` `,e.jsx(t.p,{children:"To learn more about how to leverage the powerful features of the Builder, follow the guides below."}),` diff --git a/assets/overview-240yDIuv.js b/assets/overview-tw0mg5Mp.js similarity index 98% rename from assets/overview-240yDIuv.js rename to assets/overview-tw0mg5Mp.js index 3af8eef9aed..81ec840cdef 100644 --- a/assets/overview-240yDIuv.js +++ b/assets/overview-tw0mg5Mp.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-Bn6H9hrN.js";const i={title:"Sequence Wallets Overview",description:"undefined"};function a(n){const t={a:"a",div:"div",h1:"h1",h3:"h3",header:"header",img:"img",p:"p",strong:"strong",...s(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"sequence-wallets-overview",children:["Sequence Wallets Overview",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-wallets-overview",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-DR6XzkYl.js";const i={title:"Sequence Wallets Overview",description:"undefined"};function a(n){const t={a:"a",div:"div",h1:"h1",h3:"h3",header:"header",img:"img",p:"p",strong:"strong",...s(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"sequence-wallets-overview",children:["Sequence Wallets Overview",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-wallets-overview",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(t.p,{children:["Sequence offers multiple wallet options to integrate into your products, chiefly we call these our ",e.jsx(t.strong,{children:"In-Game Wallet"})," and our ",e.jsx(t.strong,{children:"Universal Wallet"})," which are both completely non-custodial."]}),` `,e.jsxs(t.h3,{id:"what-are-the-differences-between-these-options",children:["What are the differences between these options?",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#what-are-the-differences-between-these-options",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(t.p,{children:["The ",e.jsx(t.strong,{children:"In-Game Wallet"})," is primarily focused on delivering a traditional game experience that is headless with no mandatory pop-ups, modals, transaction signing, or other additional distractions take players out of them trying to enjoy the game. Users can login with common social logins or other authentication providers and simply jump into the experience. We provide native support for a variety of popular game engines such as Unreal and Unity as well as Typescript support so you can stay within your preferred framework for building games or experiences."]}),` diff --git a/assets/project-management-CmuszwoH.js b/assets/project-management-BucGlQ55.js similarity index 95% rename from assets/project-management-CmuszwoH.js rename to assets/project-management-BucGlQ55.js index 0595bd2b14d..150fb8f9e34 100644 --- a/assets/project-management-CmuszwoH.js +++ b/assets/project-management-BucGlQ55.js @@ -1,4 +1,4 @@ -import{d as o,j as e}from"./index-Bn6H9hrN.js";import{V as a}from"./Video-C_LaYbpR.js";const d={title:"Project Management",description:"undefined"};function n(r){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...o(),...r.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"project-management",children:["Project Management",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#project-management",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as o,j as e}from"./index-DR6XzkYl.js";import{V as a}from"./Video-DrWW48g_.js";const d={title:"Project Management",description:"undefined"};function n(r){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...o(),...r.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"project-management",children:["Project Management",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#project-management",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(t.p,{children:["Creation of projects is seamless in just several clicks. This process requires no KYC, only that users comply with Global ",e.jsx(t.a,{href:"https://support.sequence.xyz/en/article/sequence-list-of-restricted-regions-1eked2s/",children:"regulations and policies"}),", and an agreement to the platforms' terms of service."]}),` `,e.jsxs(t.h5,{id:"project-name",children:["Project Name",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#project-name",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(t.p,{children:["Choose a ",e.jsx(t.code,{children:"project name"})," - something playful, serious, or just something unique to distinguish your new project amongst the other projects linked to your wallet."]}),` diff --git a/assets/project-settings-D3XgthWQ.js b/assets/project-settings-euqN4X2M.js similarity index 99% rename from assets/project-settings-D3XgthWQ.js rename to assets/project-settings-euqN4X2M.js index eb78339c647..544e24d33f3 100644 --- a/assets/project-settings-D3XgthWQ.js +++ b/assets/project-settings-euqN4X2M.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-Bn6H9hrN.js";import{V as r}from"./Video-C_LaYbpR.js";const a={title:"Settings in Builder",description:"undefined"};function n(t){const i={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"settings-in-builder",children:["Settings in Builder",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#settings-in-builder",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-DR6XzkYl.js";import{V as r}from"./Video-DrWW48g_.js";const a={title:"Settings in Builder",description:"undefined"};function n(t){const i={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"settings-in-builder",children:["Settings in Builder",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#settings-in-builder",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(i.h2,{id:"settings-options",children:["Settings Options",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#settings-options",children:e.jsx(i.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(i.p,{children:"There are various actions available for your project in Settings of Sequence Builder."}),` `,e.jsx(i.p,{children:"The Settings section in Sequence Builder is categorized into six sections:"}),` diff --git a/assets/reactnative-CWO8hRFR.js b/assets/reactnative-CWO8hRFR.js deleted file mode 100644 index 2dbad503f22..00000000000 --- a/assets/reactnative-CWO8hRFR.js +++ /dev/null @@ -1 +0,0 @@ -import{d as r,j as n}from"./index-Bn6H9hrN.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/reactnative-DcRYKII9.js b/assets/reactnative-DcRYKII9.js new file mode 100644 index 00000000000..ed96a024c9f --- /dev/null +++ b/assets/reactnative-DcRYKII9.js @@ -0,0 +1 @@ +import{d as r,j as n}from"./index-DR6XzkYl.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/relayer-BXMRPJsc.js b/assets/relayer-BcjX06kX.js similarity index 99% rename from assets/relayer-BXMRPJsc.js rename to assets/relayer-BcjX06kX.js index e37f5dee85d..04a2c1a2be9 100644 --- a/assets/relayer-BXMRPJsc.js +++ b/assets/relayer-BcjX06kX.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-Bn6H9hrN.js";const r={title:"Relayer API",description:"undefined"};function n(i){const e={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"relayer-api",children:["Relayer API",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#relayer-api",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-DR6XzkYl.js";const r={title:"Relayer API",description:"undefined"};function n(i){const e={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"relayer-api",children:["Relayer API",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#relayer-api",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.aside,{"data-callout":"note",children:s.jsx(e.p,{children:s.jsx(e.a,{href:"https://0xsequence.redoc.ly/tag/relayer",children:"Relayer API documentation and endpoints"})})}),` `,s.jsx(e.p,{children:"The Sequence Relayer service offers a simple interface for dispatching meta-transactions on Ethereum-compatible networks."}),` `,s.jsx(e.p,{children:"Meta-transactions are the idea of a transaction inside of a transaction. The benefits of Sequence meta-transactions are that they allow:"}),` diff --git a/assets/rest-api-DIGry_pO.js b/assets/rest-api-OArSoJbV.js similarity index 99% rename from assets/rest-api-DIGry_pO.js rename to assets/rest-api-OArSoJbV.js index e99a1e8670f..6b26c20aeb8 100644 --- a/assets/rest-api-DIGry_pO.js +++ b/assets/rest-api-OArSoJbV.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-Bn6H9hrN.js";const t={title:"Metadata REST API Reference & Usage",description:"undefined"};function n(a){const s={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"metadata-rest-api-reference--usage",children:["Metadata REST API Reference & Usage",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#metadata-rest-api-reference--usage",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-DR6XzkYl.js";const t={title:"Metadata REST API Reference & Usage",description:"undefined"};function n(a){const s={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"metadata-rest-api-reference--usage",children:["Metadata REST API Reference & Usage",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#metadata-rest-api-reference--usage",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:`The Sequence Metadata API service offers a simple and fast API to query token & NFT metadata for Ethereum-compatible chains.`}),` `,e.jsxs(s.p,{children:[`Quite simply, the Metadata API allows you to query the token metadata of any ERC20, ERC721 or ERC1155 diff --git a/assets/sequence-kit-CWO8hRFR.js b/assets/sequence-kit-CWO8hRFR.js deleted file mode 100644 index 2dbad503f22..00000000000 --- a/assets/sequence-kit-CWO8hRFR.js +++ /dev/null @@ -1 +0,0 @@ -import{d as r,j as n}from"./index-Bn6H9hrN.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/sequence-kit-DcRYKII9.js b/assets/sequence-kit-DcRYKII9.js new file mode 100644 index 00000000000..ed96a024c9f --- /dev/null +++ b/assets/sequence-kit-DcRYKII9.js @@ -0,0 +1 @@ +import{d as r,j as n}from"./index-DR6XzkYl.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/support-ylCmghec.js b/assets/support-C1Qa5OK-.js similarity index 94% rename from assets/support-ylCmghec.js rename to assets/support-C1Qa5OK-.js index 5602650c6f9..77b820c5b7a 100644 --- a/assets/support-ylCmghec.js +++ b/assets/support-C1Qa5OK-.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-Bn6H9hrN.js";const s={title:"Support",description:"undefined"};function o(n){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"support",children:["Support",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#support",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-DR6XzkYl.js";const s={title:"Support",description:"undefined"};function o(n){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"support",children:["Support",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#support",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"Sequence has a front line Support Team in multiple timezones to tackle problems that arise with the Stack, as well as answer any question for new projects in order to integrate web3 experiences in games and applications."}),` `,e.jsx(t.p,{children:"If one of the members of the team does not know the answer, we'll further investigate (with backup support from the Sequence dev team) to get to the bottom of your troubles."}),` `,e.jsx(t.p,{children:e.jsx(t.a,{href:"https://go.crisp.chat/chat/embed/?website_id=9ef4395b-6bb1-4645-8e02-6071d89290a1",children:"Start talking to support today"})})]})}function i(n={}){const{wrapper:t}={...r(),...n.components};return t?e.jsx(t,{...n,children:e.jsx(o,{...n})}):o(n)}export{i as default,s as frontmatter}; diff --git a/assets/template-embedded-wallet-U-onn5aG.js b/assets/template-embedded-wallet-C41b3z5B.js similarity index 99% rename from assets/template-embedded-wallet-U-onn5aG.js rename to assets/template-embedded-wallet-C41b3z5B.js index b7f9c2213ae..cdf3186b705 100644 --- a/assets/template-embedded-wallet-U-onn5aG.js +++ b/assets/template-embedded-wallet-C41b3z5B.js @@ -1,4 +1,4 @@ -import{d as n,j as e}from"./index-Bn6H9hrN.js";const l={title:"Quickstart",description:"undefined"};function a(i){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"quickstart",children:["Quickstart",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quickstart",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as e}from"./index-DR6XzkYl.js";const l={title:"Quickstart",description:"undefined"};function a(i){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"quickstart",children:["Quickstart",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quickstart",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.h2,{id:"try-a-demo",children:["Try a Demo",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#try-a-demo",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(s.aside,{"data-callout":"info",children:e.jsxs(s.p,{children:["Try out seamless UX of our embedded wallet at our ",e.jsx(s.a,{href:"https://0xsequence.github.io/demo-waas-auth/",children:"demo"})]})}),` `,e.jsxs(s.h2,{id:"template",children:["Template",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#template",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/template-marketplace-api-KSdx9fWf.js b/assets/template-marketplace-api-DqwwDq0f.js similarity index 99% rename from assets/template-marketplace-api-KSdx9fWf.js rename to assets/template-marketplace-api-DqwwDq0f.js index 80f27984b06..f83d54ec8dd 100644 --- a/assets/template-marketplace-api-KSdx9fWf.js +++ b/assets/template-marketplace-api-DqwwDq0f.js @@ -1,4 +1,4 @@ -import{d as r,j as s,e as i}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Custom Marketplace",description:"undefined"};function n(l){const e={a:"a",code:"code",details:"details",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",hr:"hr",img:"img",li:"li",p:"p",pre:"pre",span:"span",summary:"summary",ul:"ul",...r(),...l.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"custom-marketplace",children:["Custom Marketplace",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#custom-marketplace",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s,e as i}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Custom Marketplace",description:"undefined"};function n(l){const e={a:"a",code:"code",details:"details",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",hr:"hr",img:"img",li:"li",p:"p",pre:"pre",span:"span",summary:"summary",ul:"ul",...r(),...l.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"custom-marketplace",children:["Custom Marketplace",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#custom-marketplace",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"In this guide we will go through the process of creating a custom marketplace from a few simple tools from the Sequence stack."}),` `,s.jsx(e.p,{children:"The tools will enable you to perform:"}),` `,s.jsxs(e.ul,{children:[` diff --git a/assets/token-directory-Jq2mFKpk.js b/assets/token-directory-5btJcM6h.js similarity index 99% rename from assets/token-directory-Jq2mFKpk.js rename to assets/token-directory-5btJcM6h.js index 0a1bb0d4e33..925746a9659 100644 --- a/assets/token-directory-Jq2mFKpk.js +++ b/assets/token-directory-5btJcM6h.js @@ -1,4 +1,4 @@ -import{d as a,j as e,e as t}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const l={title:"Token Directory",description:"undefined"};function s(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"token-directory",children:["Token Directory",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#token-directory",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e,e as t}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const l={title:"Token Directory",description:"undefined"};function s(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"token-directory",children:["Token Directory",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#token-directory",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["Sequence maintains an open ",e.jsx(n.a,{href:"https://github.com/0xsequence/token-directory/",children:"token directory on github"}),", that allows Sequence infrastructure to filter spam from verified tokens."]}),` `,e.jsxs(n.p,{children:["While the infrastructure also watches sources like ",e.jsx(n.a,{href:"https://www.coingecko.com/",children:"CoinGecko"})," and ",e.jsx(n.a,{href:"https://opensea.com",children:"OpenSea"})," for verified contracts, all new tokens that are to be used - not verified from these sources - must be maintained manually."]}),` `,e.jsx(n.p,{children:"When tokens are added to various blockchains, the default is for these tokens to not be included in the default wallet settings."}),` diff --git a/assets/token-metadata-DWYDLsDV.js b/assets/token-metadata-B96SuUsj.js similarity index 99% rename from assets/token-metadata-DWYDLsDV.js rename to assets/token-metadata-B96SuUsj.js index 562ddaeddcb..19ac6db2807 100644 --- a/assets/token-metadata-DWYDLsDV.js +++ b/assets/token-metadata-B96SuUsj.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-Bn6H9hrN.js";const l={title:"Token Metadata",description:"undefined"};function i(a){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...a.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"token-metadata",children:["Token Metadata",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#token-metadata",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-DR6XzkYl.js";const l={title:"Token Metadata",description:"undefined"};function i(a){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...a.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"token-metadata",children:["Token Metadata",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#token-metadata",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["Sequence provides a metadata service for fetching token metadata for any ERC721 or ERC1155 contract, on ",s.jsx(e.a,{href:"/solutions/technical-references/chain-support",children:"any EVM chain"}),"."]}),` `,s.jsxs(e.ul,{children:[` `,s.jsx(e.li,{children:s.jsx(e.a,{href:"/api/metadata/token-metadata#fetch-token-metadata-for-any-erc721-or-erc1155-contract",children:"Learn how to query token metadata directly for any contract"})}),` diff --git a/assets/transaction-history-j1vjXhwB.js b/assets/transaction-history-CuoadMzY.js similarity index 99% rename from assets/transaction-history-j1vjXhwB.js rename to assets/transaction-history-CuoadMzY.js index a631bff39e4..0172a486089 100644 --- a/assets/transaction-history-j1vjXhwB.js +++ b/assets/transaction-history-CuoadMzY.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-Bn6H9hrN.js";const a={title:"Wallet transaction history",description:"undefined"};function i(n){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...l(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"wallet-transaction-history",children:["Wallet transaction history",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-transaction-history",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-DR6XzkYl.js";const a={title:"Wallet transaction history",description:"undefined"};function i(n){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...l(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"wallet-transaction-history",children:["Wallet transaction history",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-transaction-history",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.aside,{"data-callout":"warning",children:[s.jsx(e.strong,{"data-callout-title":!0,children:"INTRODUCING THE SEQUENCE BUILDER - "}),s.jsxs(e.p,{children:["Our ",s.jsx(e.strong,{children:"Indexer"})," service is now managed through ",s.jsx(e.strong,{children:s.jsx(e.a,{href:"https://sequence.build",children:"Sequence Builder"})}),". Sign up to grab your API access key."]}),s.jsx(e.p,{children:s.jsxs(e.a,{href:"https://sequence.build",children:["Get started with the ",s.jsx(e.strong,{children:"Sequence Builder"})," Free Plan today!"]})})]}),` `,s.jsxs(e.h2,{id:"fetch-the-transaction-history-for-any-wallet-address",children:["Fetch the transaction history for any wallet address",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fetch-the-transaction-history-for-any-wallet-address",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:`Fetches the transaction / token history for any wallet address of any ERC20, ERC721 and ERC1155 token. diff --git a/assets/transation-history-token-contract-its4BBrH.js b/assets/transation-history-token-contract-CfX-hIX4.js similarity index 99% rename from assets/transation-history-token-contract-its4BBrH.js rename to assets/transation-history-token-contract-CfX-hIX4.js index ff83a60ac22..88ee3951663 100644 --- a/assets/transation-history-token-contract-its4BBrH.js +++ b/assets/transation-history-token-contract-CfX-hIX4.js @@ -1,4 +1,4 @@ -import{d as i,j as s}from"./index-Bn6H9hrN.js";const a={title:"Contract token history",description:"undefined"};function r(n){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...i(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"contract-token-history",children:["Contract token history",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-token-history",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as s}from"./index-DR6XzkYl.js";const a={title:"Contract token history",description:"undefined"};function r(n){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...i(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"contract-token-history",children:["Contract token history",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-token-history",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.aside,{"data-callout":"warning",children:[s.jsx(e.strong,{"data-callout-title":!0,children:"INTRODUCING THE SEQUENCE BUILDER - "}),s.jsxs(e.p,{children:["Our ",s.jsx(e.strong,{children:"Indexer"})," service is now managed through ",s.jsx(e.strong,{children:s.jsx(e.a,{href:"https://sequence.build",children:"Sequence Builder"})}),". Sign up to grab your API access key."]}),s.jsx(e.p,{children:s.jsxs(e.a,{href:"https://sequence.build",children:["Get started with the ",s.jsx(e.strong,{children:"Sequence Builder"})," Free Plan today!"]})})]}),` `,s.jsxs(e.h3,{id:"fetch--listen-to-the-transaction-history-for-any-erc20-erc721-erc1155-contract",children:["Fetch / listen to the transaction history for any ERC20, ERC721, ERC1155 contract.",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fetch--listen-to-the-transaction-history-for-any-erc20-erc721-erc1155-contract",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:`This query is helpful to track transaction history of a particular token contract. diff --git a/assets/typescript-CWO8hRFR.js b/assets/typescript-CWO8hRFR.js deleted file mode 100644 index 2dbad503f22..00000000000 --- a/assets/typescript-CWO8hRFR.js +++ /dev/null @@ -1 +0,0 @@ -import{d as r,j as n}from"./index-Bn6H9hrN.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/typescript-DcRYKII9.js b/assets/typescript-DcRYKII9.js new file mode 100644 index 00000000000..ed96a024c9f --- /dev/null +++ b/assets/typescript-DcRYKII9.js @@ -0,0 +1 @@ +import{d as r,j as n}from"./index-DR6XzkYl.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/unique-tokens-DyeElKFa.js b/assets/unique-tokens-C4kj4IQq.js similarity index 99% rename from assets/unique-tokens-DyeElKFa.js rename to assets/unique-tokens-C4kj4IQq.js index 257666eb027..4544c06dfa1 100644 --- a/assets/unique-tokens-DyeElKFa.js +++ b/assets/unique-tokens-C4kj4IQq.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-Bn6H9hrN.js";const a={title:"Tokens in a contract",description:"undefined"};function i(n){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...l(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"tokens-in-a-contract",children:["Tokens in a contract",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#tokens-in-a-contract",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-DR6XzkYl.js";const a={title:"Tokens in a contract",description:"undefined"};function i(n){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...l(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"tokens-in-a-contract",children:["Tokens in a contract",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#tokens-in-a-contract",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.aside,{"data-callout":"warning",children:[s.jsx(e.strong,{"data-callout-title":!0,children:"INTRODUCING THE SEQUENCE BUILDER - "}),s.jsxs(e.p,{children:["Our ",s.jsx(e.strong,{children:"Indexer"})," service is now managed through ",s.jsx(e.strong,{children:s.jsx(e.a,{href:"https://sequence.build",children:"Sequence Builder"})}),". Sign up to grab your API access key."]}),s.jsx(e.p,{children:s.jsxs(e.a,{href:"https://sequence.build",children:["Get started with the ",s.jsx(e.strong,{children:"Sequence Builder"})," Free Plan today!"]})})]}),` `,s.jsxs(e.h3,{id:"fetch-all-unique-tokens-in-a-particular-erc207211155-contract-including-total-supplies",children:["Fetch all unique tokens in a particular ERC20/721/1155 contract, including total supplies",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fetch-all-unique-tokens-in-a-particular-erc207211155-contract-including-total-supplies",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.strong,{children:"Fetches token supplies and metadata for any ERC20, ERC721, ERC1155 contract."}),` diff --git a/assets/unity-CWO8hRFR.js b/assets/unity-CWO8hRFR.js deleted file mode 100644 index 2dbad503f22..00000000000 --- a/assets/unity-CWO8hRFR.js +++ /dev/null @@ -1 +0,0 @@ -import{d as r,j as n}from"./index-Bn6H9hrN.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/unity-DcRYKII9.js b/assets/unity-DcRYKII9.js new file mode 100644 index 00000000000..ed96a024c9f --- /dev/null +++ b/assets/unity-DcRYKII9.js @@ -0,0 +1 @@ +import{d as r,j as n}from"./index-DR6XzkYl.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/unity-guide-CJmC9uRM.js b/assets/unity-guide-DrJIG9ZX.js similarity index 96% rename from assets/unity-guide-CJmC9uRM.js rename to assets/unity-guide-DrJIG9ZX.js index d6d6c726be0..5c17613a3dd 100644 --- a/assets/unity-guide-CJmC9uRM.js +++ b/assets/unity-guide-DrJIG9ZX.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-Bn6H9hrN.js";const d=void 0;function a(t){const n={a:"a",div:"div",h2:"h2",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsxs(n.h2,{id:"integrate-sequencekit-with-waas",children:["Integrate SequenceKit with WaaS",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-sequencekit-with-waas",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` +import{d as i,j as e}from"./index-DR6XzkYl.js";const d=void 0;function a(t){const n={a:"a",div:"div",h2:"h2",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsxs(n.h2,{id:"integrate-sequencekit-with-waas",children:["Integrate SequenceKit with WaaS",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-sequencekit-with-waas",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.h2,{id:"deploy-a-collectibles-contract",children:["Deploy a collectibles contract",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-a-collectibles-contract",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.h2,{id:"deploy-a-remote-minter",children:["Deploy a remote minter",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-a-remote-minter",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.h2,{id:"mint-in-game-achievement-tokens",children:["Mint in-game achievement tokens",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#mint-in-game-achievement-tokens",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/wallet-sdks-X-nd6U1N.js b/assets/wallet-sdks-Bh4_Xwxg.js similarity index 97% rename from assets/wallet-sdks-X-nd6U1N.js rename to assets/wallet-sdks-Bh4_Xwxg.js index 88ca3bf2772..52869e0e67a 100644 --- a/assets/wallet-sdks-X-nd6U1N.js +++ b/assets/wallet-sdks-Bh4_Xwxg.js @@ -1,4 +1,4 @@ -import{d as a,j as e}from"./index-Bn6H9hrN.js";import{V as r}from"./Video-C_LaYbpR.js";const o={title:"Wallet SDKs in Builder",description:"undefined"};function i(n){const t={a:"a",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",strong:"strong",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"wallet-sdks-in-builder",children:["Wallet SDKs in Builder",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-sdks-in-builder",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e}from"./index-DR6XzkYl.js";import{V as r}from"./Video-DrWW48g_.js";const o={title:"Wallet SDKs in Builder",description:"undefined"};function i(n){const t={a:"a",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",strong:"strong",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"wallet-sdks-in-builder",children:["Wallet SDKs in Builder",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-sdks-in-builder",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"Sequence Builder offers multiple SDK options for integrating Sequence Wallet into your project."}),` `,e.jsxs(t.h3,{id:"how-can-i-integrate-a-wallet-into-my-game-with-these-options",children:["How can I integrate a Wallet into my game with these options?",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#how-can-i-integrate-a-wallet-into-my-game-with-these-options",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(t.p,{children:["In the Wallets SDK section of Builder, simply select ",e.jsx(t.strong,{children:"SequenceKit"}),", input wallet details, click 'save', and code snippets will be generated for you to use. The same can be done for ",e.jsx(t.strong,{children:"Web SDK"})," (watch the tutorial below for additional guidance). ",e.jsx(t.strong,{children:"Unity SDK"})," and ",e.jsx(t.strong,{children:"Unreal SDK"})," will help you integrate the same way, but by interacting their respective game engines. Note that both SDKs are receiving updates and will be available shortly."]}),` diff --git a/assets/webgl-guide-DDNEifOK.js b/assets/webgl-guide-BHUb9UMj.js similarity index 99% rename from assets/webgl-guide-DDNEifOK.js rename to assets/webgl-guide-BHUb9UMj.js index 4d967e89c24..b17f829d2f1 100644 --- a/assets/webgl-guide-DDNEifOK.js +++ b/assets/webgl-guide-BHUb9UMj.js @@ -1,4 +1,4 @@ -import{d as r,j as s,e as i}from"./index-Bn6H9hrN.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Aviator Web3 Game with WebGL",description:"undefined"};function n(l){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",h5:"h5",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...r(),...l.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"aviator-web3-game-with-webgl",children:["Aviator Web3 Game with WebGL",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#aviator-web3-game-with-webgl",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s,e as i}from"./index-DR6XzkYl.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Aviator Web3 Game with WebGL",description:"undefined"};function n(l){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",h5:"h5",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...r(),...l.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"aviator-web3-game-with-webgl",children:["Aviator Web3 Game with WebGL",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#aviator-web3-game-with-webgl",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"Time to complete: 40 minutes"}),` `,s.jsx(e.p,{children:"In this guide we will go through the process of integrating WebGL in a game, leveraging tools from the Sequence Stack to earn achievements and use custom ERC1155's to play in-game."}),` `,s.jsxs(i,{type:"info",children:[s.jsxs(e.p,{children:["You can play a live version of the game ",s.jsx(e.a,{href:"https://0xsequence.github.io/waas-airplane-demo/",children:"here"})]}),s.jsxs(e.p,{children:["Where the full code to this game can be found ",s.jsx(e.a,{href:"https://github.com/0xsequence/waas-airplane-demo/tree/cloudflare-integration",children:"here"})]}),s.jsxs(e.p,{children:["And the full template code we'll be using for the guide can be found ",s.jsx(e.a,{href:"https://github.com/0xsequence-demos/template-webgl-js-sequence-kit-starter",children:"here"})]})]}),` diff --git a/assets/marketplaces-CfqPZAL8.js b/assets/white-label-marketplace-yYRKW9O-.js similarity index 94% rename from assets/marketplaces-CfqPZAL8.js rename to assets/white-label-marketplace-yYRKW9O-.js index aec7e2f66ff..102566c3a3a 100644 --- a/assets/marketplaces-CfqPZAL8.js +++ b/assets/white-label-marketplace-yYRKW9O-.js @@ -1,4 +1,4 @@ -import{d as n,j as e}from"./index-Bn6H9hrN.js";import{V as r}from"./Video-C_LaYbpR.js";const l={title:"Launch your white-label marketplace",description:"undefined"};function t(i){const a={a:"a",aside:"aside",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...n(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"launch-your-white-label-marketplace",children:["Launch your white-label marketplace",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#launch-your-white-label-marketplace",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as e}from"./index-DR6XzkYl.js";import{V as r}from"./Video-DrWW48g_.js";const l={title:"Launch your white-label marketplace",description:"undefined"};function t(i){const a={a:"a",aside:"aside",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...n(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"launch-your-white-label-marketplace",children:["Launch your white-label marketplace",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#launch-your-white-label-marketplace",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(a.p,{children:"Sequence Builder provides game builders with a white-label marketplace that can be launched in seconds. With Builder, you can customize your marketplace and integrate it directly into your game experience, all with no-coding experience necessary."}),` `,e.jsxs(a.h2,{id:"try-it-out",children:["Try it out",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#try-it-out",children:e.jsx(a.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(a.aside,{"data-callout":"info",children:e.jsxs(a.p,{children:["Get started quickly at ",e.jsx(a.a,{href:"https://sequence.build/",children:"Sequence Builder"})," to launch your marketplace."]})}),` diff --git a/guides/lootbox/index.html b/guides/lootbox/index.html index 1e956a40d38..d2b0cd9d74f 100644 --- a/guides/lootbox/index.html +++ b/guides/lootbox/index.html @@ -12,7 +12,7 @@ - + diff --git a/guides/template-marketplace-api/index.html b/guides/template-marketplace-api/index.html index aa5a3c8c42c..11b87a8d456 100644 --- a/guides/template-marketplace-api/index.html +++ b/guides/template-marketplace-api/index.html @@ -12,7 +12,7 @@ - + diff --git a/guides/templates/02-building-relaying-server/index.html b/guides/templates/02-building-relaying-server/index.html index 66ac535e997..525c5143809 100644 --- a/guides/templates/02-building-relaying-server/index.html +++ b/guides/templates/02-building-relaying-server/index.html @@ -12,7 +12,7 @@ - + diff --git a/guides/templates/03-mint-collectibles-serverless/index.html b/guides/templates/03-mint-collectibles-serverless/index.html index 586186c0aee..de4f6ece6d9 100644 --- a/guides/templates/03-mint-collectibles-serverless/index.html +++ b/guides/templates/03-mint-collectibles-serverless/index.html @@ -12,7 +12,7 @@ - + diff --git a/guides/templates/template-embedded-wallet/index.html b/guides/templates/template-embedded-wallet/index.html index e7fb32358d1..d8059641899 100644 --- a/guides/templates/template-embedded-wallet/index.html +++ b/guides/templates/template-embedded-wallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/guides/unity-guide/index.html b/guides/unity-guide/index.html index 3825cd5180d..a31d928dc72 100644 --- a/guides/unity-guide/index.html +++ b/guides/unity-guide/index.html @@ -12,7 +12,7 @@ - + diff --git a/guides/webgl-guide/index.html b/guides/webgl-guide/index.html index 8bd8700fe55..c359c8235b4 100644 --- a/guides/webgl-guide/index.html +++ b/guides/webgl-guide/index.html @@ -12,7 +12,7 @@ - + diff --git a/index.html b/index.html index bf005832fb0..d941b89b599 100644 --- a/index.html +++ b/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/android/index.html b/sdk/android/index.html index 8a3f03a3902..a9838116be4 100644 --- a/sdk/android/index.html +++ b/sdk/android/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/go/overview/index.html b/sdk/go/overview/index.html index 0465eeace16..c9e43b6daec 100644 --- a/sdk/go/overview/index.html +++ b/sdk/go/overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/iOS/index.html b/sdk/iOS/index.html index 011df24f91f..8164d13ae8a 100644 --- a/sdk/iOS/index.html +++ b/sdk/iOS/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/nodejs/index.html b/sdk/nodejs/index.html index c069dc69883..9392b773cd6 100644 --- a/sdk/nodejs/index.html +++ b/sdk/nodejs/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/reactnative/index.html b/sdk/reactnative/index.html index 0a4fb1bfd51..a4bc2034f6d 100644 --- a/sdk/reactnative/index.html +++ b/sdk/reactnative/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/sequence-kit/01-overview/index.html b/sdk/sequence-kit/01-overview/index.html index 63aa199bd6e..3c0acf978f6 100644 --- a/sdk/sequence-kit/01-overview/index.html +++ b/sdk/sequence-kit/01-overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/sequence-kit/02-getting-started/index.html b/sdk/sequence-kit/02-getting-started/index.html index d793fbbb226..f941cb05d21 100644 --- a/sdk/sequence-kit/02-getting-started/index.html +++ b/sdk/sequence-kit/02-getting-started/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/sequence-kit/03-configuration/index.html b/sdk/sequence-kit/03-configuration/index.html index d6803aa7eb4..248fd396b99 100644 --- a/sdk/sequence-kit/03-configuration/index.html +++ b/sdk/sequence-kit/03-configuration/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/sequence-kit/04-checkout/index.html b/sdk/sequence-kit/04-checkout/index.html index 70cf23cf516..591be93e800 100644 --- a/sdk/sequence-kit/04-checkout/index.html +++ b/sdk/sequence-kit/04-checkout/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/sequence-kit/05-custom-connectors/index.html b/sdk/sequence-kit/05-custom-connectors/index.html index a51043c3f40..60ce0626109 100644 --- a/sdk/sequence-kit/05-custom-connectors/index.html +++ b/sdk/sequence-kit/05-custom-connectors/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/sequence-kit/index.html b/sdk/sequence-kit/index.html index 26c7e4cdedd..51594852667 100644 --- a/sdk/sequence-kit/index.html +++ b/sdk/sequence-kit/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/03-guides/01-connect-wallet/index.html b/sdk/typescript/03-guides/01-connect-wallet/index.html index c068825aa70..ff517a7e1ea 100644 --- a/sdk/typescript/03-guides/01-connect-wallet/index.html +++ b/sdk/typescript/03-guides/01-connect-wallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/03-guides/02-auth-address/index.html b/sdk/typescript/03-guides/02-auth-address/index.html index 742cc43df49..1ef171fdf04 100644 --- a/sdk/typescript/03-guides/02-auth-address/index.html +++ b/sdk/typescript/03-guides/02-auth-address/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/03-guides/03-sign-message/index.html b/sdk/typescript/03-guides/03-sign-message/index.html index 2612aecefb0..499aeb2ae26 100644 --- a/sdk/typescript/03-guides/03-sign-message/index.html +++ b/sdk/typescript/03-guides/03-sign-message/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/03-guides/04-session-keys/index.html b/sdk/typescript/03-guides/04-session-keys/index.html index eec961bd4d3..8044dcbac48 100644 --- a/sdk/typescript/03-guides/04-session-keys/index.html +++ b/sdk/typescript/03-guides/04-session-keys/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/03-guides/05-send-transaction/index.html b/sdk/typescript/03-guides/05-send-transaction/index.html index 56fb6352852..b608f6caf73 100644 --- a/sdk/typescript/03-guides/05-send-transaction/index.html +++ b/sdk/typescript/03-guides/05-send-transaction/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/03-guides/06-send-erc20/index.html b/sdk/typescript/03-guides/06-send-erc20/index.html index 1223e6383db..8c612583ee7 100644 --- a/sdk/typescript/03-guides/06-send-erc20/index.html +++ b/sdk/typescript/03-guides/06-send-erc20/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/03-guides/07-send-erc721/index.html b/sdk/typescript/03-guides/07-send-erc721/index.html index 55951f9edc0..26a47c2bbc4 100644 --- a/sdk/typescript/03-guides/07-send-erc721/index.html +++ b/sdk/typescript/03-guides/07-send-erc721/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/03-guides/08-send-erc1155/index.html b/sdk/typescript/03-guides/08-send-erc1155/index.html index 869d8185227..4e44b7a5772 100644 --- a/sdk/typescript/03-guides/08-send-erc1155/index.html +++ b/sdk/typescript/03-guides/08-send-erc1155/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/03-guides/09-send-batch-transactions/index.html b/sdk/typescript/03-guides/09-send-batch-transactions/index.html index 484855e66d2..4561f4f966e 100644 --- a/sdk/typescript/03-guides/09-send-batch-transactions/index.html +++ b/sdk/typescript/03-guides/09-send-batch-transactions/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/03-guides/10-building-backends/index.html b/sdk/typescript/03-guides/10-building-backends/index.html index 2dfb707826d..1a04bfa01af 100644 --- a/sdk/typescript/03-guides/10-building-backends/index.html +++ b/sdk/typescript/03-guides/10-building-backends/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/03-guides/overview/index.html b/sdk/typescript/03-guides/overview/index.html index e93badc6dc5..545ec629006 100644 --- a/sdk/typescript/03-guides/overview/index.html +++ b/sdk/typescript/03-guides/overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/connectors/01-overview/index.html b/sdk/typescript/connectors/01-overview/index.html index 16e6615ff22..466536aca11 100644 --- a/sdk/typescript/connectors/01-overview/index.html +++ b/sdk/typescript/connectors/01-overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/connectors/02-sequence-kit/index.html b/sdk/typescript/connectors/02-sequence-kit/index.html index 4dd510a0791..13250167c72 100644 --- a/sdk/typescript/connectors/02-sequence-kit/index.html +++ b/sdk/typescript/connectors/02-sequence-kit/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/connectors/03-wagmi/index.html b/sdk/typescript/connectors/03-wagmi/index.html index 8dcd54918e9..2d5595adf6c 100644 --- a/sdk/typescript/connectors/03-wagmi/index.html +++ b/sdk/typescript/connectors/03-wagmi/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/connectors/04-rainbow-kit/index.html b/sdk/typescript/connectors/04-rainbow-kit/index.html index 43e507fe5e6..3f0d74bff54 100644 --- a/sdk/typescript/connectors/04-rainbow-kit/index.html +++ b/sdk/typescript/connectors/04-rainbow-kit/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/connectors/05-web3-onboard/index.html b/sdk/typescript/connectors/05-web3-onboard/index.html index 847d4a59b84..e7b20ddded4 100644 --- a/sdk/typescript/connectors/05-web3-onboard/index.html +++ b/sdk/typescript/connectors/05-web3-onboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/connectors/06-web3-react-v6/index.html b/sdk/typescript/connectors/06-web3-react-v6/index.html index 711b3e5af5a..537db7987f5 100644 --- a/sdk/typescript/connectors/06-web3-react-v6/index.html +++ b/sdk/typescript/connectors/06-web3-react-v6/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/connectors/07-web3modal/index.html b/sdk/typescript/connectors/07-web3modal/index.html index 5e9a15a69af..820806b692d 100644 --- a/sdk/typescript/connectors/07-web3modal/index.html +++ b/sdk/typescript/connectors/07-web3modal/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/connectors/08-FAQ/index.html b/sdk/typescript/connectors/08-FAQ/index.html index 169c0e079f6..5622fdfee46 100644 --- a/sdk/typescript/connectors/08-FAQ/index.html +++ b/sdk/typescript/connectors/08-FAQ/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/typescript/index.html b/sdk/typescript/index.html index bdd04e74c57..003379999b5 100644 --- a/sdk/typescript/index.html +++ b/sdk/typescript/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unity/01-overview/index.html b/sdk/unity/01-overview/index.html index a2e38d21fed..c53134fc67a 100644 --- a/sdk/unity/01-overview/index.html +++ b/sdk/unity/01-overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unity/02-installation/index.html b/sdk/unity/02-installation/index.html index cc41db6cc83..2a556c92cf0 100644 --- a/sdk/unity/02-installation/index.html +++ b/sdk/unity/02-installation/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unity/03-setup/index.html b/sdk/unity/03-setup/index.html index 7ae604d4170..75b71dee6d5 100644 --- a/sdk/unity/03-setup/index.html +++ b/sdk/unity/03-setup/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unity/04-authentication/index.html b/sdk/unity/04-authentication/index.html index ef8cc6ab2af..42cd436b420 100644 --- a/sdk/unity/04-authentication/index.html +++ b/sdk/unity/04-authentication/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unity/05-write-to-blockchain/index.html b/sdk/unity/05-write-to-blockchain/index.html index 13e99550ae8..20f7b06d457 100644 --- a/sdk/unity/05-write-to-blockchain/index.html +++ b/sdk/unity/05-write-to-blockchain/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unity/06-read-from-blockchain/index.html b/sdk/unity/06-read-from-blockchain/index.html index 1177d134fe5..88cc10c0885 100644 --- a/sdk/unity/06-read-from-blockchain/index.html +++ b/sdk/unity/06-read-from-blockchain/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unity/07-sign-messages/index.html b/sdk/unity/07-sign-messages/index.html index e46c874e5c7..32a0bd24881 100644 --- a/sdk/unity/07-sign-messages/index.html +++ b/sdk/unity/07-sign-messages/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unity/08-deploy-contracts/index.html b/sdk/unity/08-deploy-contracts/index.html index d91eec1ed00..0c95387068f 100644 --- a/sdk/unity/08-deploy-contracts/index.html +++ b/sdk/unity/08-deploy-contracts/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unity/09-wallet-ui/index.html b/sdk/unity/09-wallet-ui/index.html index 53cc208f45e..48db4172b3e 100644 --- a/sdk/unity/09-wallet-ui/index.html +++ b/sdk/unity/09-wallet-ui/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unity/Advanced/01-introduction/index.html b/sdk/unity/Advanced/01-introduction/index.html index a6cbaa954ed..faa025d61c1 100644 --- a/sdk/unity/Advanced/01-introduction/index.html +++ b/sdk/unity/Advanced/01-introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unity/Advanced/02-wallets/index.html b/sdk/unity/Advanced/02-wallets/index.html index 475ee60ac58..c40ebc0fc90 100644 --- a/sdk/unity/Advanced/02-wallets/index.html +++ b/sdk/unity/Advanced/02-wallets/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unity/Advanced/03-clients/index.html b/sdk/unity/Advanced/03-clients/index.html index 2bad2cae7bd..9e4083692f7 100644 --- a/sdk/unity/Advanced/03-clients/index.html +++ b/sdk/unity/Advanced/03-clients/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unity/Advanced/04-transfers/index.html b/sdk/unity/Advanced/04-transfers/index.html index cadedae0f2f..1eb5660fc7c 100644 --- a/sdk/unity/Advanced/04-transfers/index.html +++ b/sdk/unity/Advanced/04-transfers/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unity/Advanced/05-contracts/index.html b/sdk/unity/Advanced/05-contracts/index.html index 19ac6573143..07d691d40cc 100644 --- a/sdk/unity/Advanced/05-contracts/index.html +++ b/sdk/unity/Advanced/05-contracts/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unity/Advanced/06-tokens/index.html b/sdk/unity/Advanced/06-tokens/index.html index 122bc952661..f8b76b7290d 100644 --- a/sdk/unity/Advanced/06-tokens/index.html +++ b/sdk/unity/Advanced/06-tokens/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unity/index.html b/sdk/unity/index.html index 2d0cb348e30..f24e177f71a 100644 --- a/sdk/unity/index.html +++ b/sdk/unity/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unreal/01-overview/index.html b/sdk/unreal/01-overview/index.html index fdfe9bdeb44..0c4fe6e823d 100644 --- a/sdk/unreal/01-overview/index.html +++ b/sdk/unreal/01-overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unreal/02-installation/index.html b/sdk/unreal/02-installation/index.html index 157ee5de8e3..ab7aef73f26 100644 --- a/sdk/unreal/02-installation/index.html +++ b/sdk/unreal/02-installation/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unreal/03-setup/index.html b/sdk/unreal/03-setup/index.html index 1b2e2edafe9..8e78e32689e 100644 --- a/sdk/unreal/03-setup/index.html +++ b/sdk/unreal/03-setup/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unreal/04-authentication/index.html b/sdk/unreal/04-authentication/index.html index 0ce804301cf..fb537756e26 100644 --- a/sdk/unreal/04-authentication/index.html +++ b/sdk/unreal/04-authentication/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unreal/05-api-integration/index.html b/sdk/unreal/05-api-integration/index.html index 02c0b5e6413..d6be80dff68 100644 --- a/sdk/unreal/05-api-integration/index.html +++ b/sdk/unreal/05-api-integration/index.html @@ -12,7 +12,7 @@ - + diff --git a/sdk/unreal/06-packaging/index.html b/sdk/unreal/06-packaging/index.html index 5a526db7332..9ba02a04c6e 100644 --- a/sdk/unreal/06-packaging/index.html +++ b/sdk/unreal/06-packaging/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/builder/analytics/index.html b/solutions/builder/analytics/index.html index 3366389797b..e0462722f11 100644 --- a/solutions/builder/analytics/index.html +++ b/solutions/builder/analytics/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/builder/contracts/index.html b/solutions/builder/contracts/index.html index 2b9c174bfff..242146c130a 100644 --- a/solutions/builder/contracts/index.html +++ b/solutions/builder/contracts/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/builder/gas-tank/index.html b/solutions/builder/gas-tank/index.html index dd2f73daed1..74c903904fd 100644 --- a/solutions/builder/gas-tank/index.html +++ b/solutions/builder/gas-tank/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/builder/getting-started/index.html b/solutions/builder/getting-started/index.html index 39e39cb0080..7db85627baa 100644 --- a/solutions/builder/getting-started/index.html +++ b/solutions/builder/getting-started/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/builder/indexer/index.html b/solutions/builder/indexer/index.html index c4a6b0480f5..f70f467d844 100644 --- a/solutions/builder/indexer/index.html +++ b/solutions/builder/indexer/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/builder/marketplaces/index.html b/solutions/builder/marketplaces/index.html index 82f7d7a204d..47be8e133e9 100644 --- a/solutions/builder/marketplaces/index.html +++ b/solutions/builder/marketplaces/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/builder/node-gateway/index.html b/solutions/builder/node-gateway/index.html index 91a75a00aeb..422986df99b 100644 --- a/solutions/builder/node-gateway/index.html +++ b/solutions/builder/node-gateway/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/builder/overview/index.html b/solutions/builder/overview/index.html index a4f2f9a5421..b57eae36701 100644 --- a/solutions/builder/overview/index.html +++ b/solutions/builder/overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/builder/project-management/index.html b/solutions/builder/project-management/index.html index 7cb69da5da9..099a15c5c8c 100644 --- a/solutions/builder/project-management/index.html +++ b/solutions/builder/project-management/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/builder/project-settings/index.html b/solutions/builder/project-settings/index.html index 055fe557528..04d30dfbd24 100644 --- a/solutions/builder/project-settings/index.html +++ b/solutions/builder/project-settings/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/builder/wallet-sdks/index.html b/solutions/builder/wallet-sdks/index.html index 12a6bd1c68d..57f6cba0c6c 100644 --- a/solutions/builder/wallet-sdks/index.html +++ b/solutions/builder/wallet-sdks/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/collectibles/contracts/01-deploy-an-item-collection/index.html b/solutions/collectibles/contracts/01-deploy-an-item-collection/index.html index b8e9367be1e..625b359ae54 100644 --- a/solutions/collectibles/contracts/01-deploy-an-item-collection/index.html +++ b/solutions/collectibles/contracts/01-deploy-an-item-collection/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/collectibles/contracts/02-deploy-ERC20-currency/index.html b/solutions/collectibles/contracts/02-deploy-ERC20-currency/index.html index f3289c4c260..c4a9c136a8f 100644 --- a/solutions/collectibles/contracts/02-deploy-ERC20-currency/index.html +++ b/solutions/collectibles/contracts/02-deploy-ERC20-currency/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/collectibles/metadata/800-manage-metadata-builder/index.html b/solutions/collectibles/metadata/800-manage-metadata-builder/index.html index c6a6828c224..166b836c014 100644 --- a/solutions/collectibles/metadata/800-manage-metadata-builder/index.html +++ b/solutions/collectibles/metadata/800-manage-metadata-builder/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/index.html b/solutions/index.html index 1d94f8b4f0d..e046a956425 100644 --- a/solutions/index.html +++ b/solutions/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/marketplaces/index.html b/solutions/marketplaces/index.html index fb3fa3cd22e..f938cc3bf22 100644 --- a/solutions/marketplaces/index.html +++ b/solutions/marketplaces/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/marketplaces/orderbook/01-overview/index.html b/solutions/marketplaces/orderbook/01-overview/index.html index 524d032eb1c..7bf30928d07 100644 --- a/solutions/marketplaces/orderbook/01-overview/index.html +++ b/solutions/marketplaces/orderbook/01-overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/marketplaces/orderbook/02-quickstart/index.html b/solutions/marketplaces/orderbook/02-quickstart/index.html index 50d273fca64..2cb337ed443 100644 --- a/solutions/marketplaces/orderbook/02-quickstart/index.html +++ b/solutions/marketplaces/orderbook/02-quickstart/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/marketplaces/orderbook/examples/03-get-top-orders/index.html b/solutions/marketplaces/orderbook/examples/03-get-top-orders/index.html index 77ffb1618a7..dfe55ce6d11 100644 --- a/solutions/marketplaces/orderbook/examples/03-get-top-orders/index.html +++ b/solutions/marketplaces/orderbook/examples/03-get-top-orders/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/marketplaces/orderbook/examples/04-get-orderbook/index.html b/solutions/marketplaces/orderbook/examples/04-get-orderbook/index.html index 2586690581d..316fd482a64 100644 --- a/solutions/marketplaces/orderbook/examples/04-get-orderbook/index.html +++ b/solutions/marketplaces/orderbook/examples/04-get-orderbook/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/marketplaces/orderbook/examples/05-get-user-activities/index.html b/solutions/marketplaces/orderbook/examples/05-get-user-activities/index.html index b33f4b8d048..5b72417d3ae 100644 --- a/solutions/marketplaces/orderbook/examples/05-get-user-activities/index.html +++ b/solutions/marketplaces/orderbook/examples/05-get-user-activities/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/marketplaces/orderbook/examples/06-orderbook-transactions/index.html b/solutions/marketplaces/orderbook/examples/06-orderbook-transactions/index.html index ae22fca31fa..40fa39910de 100644 --- a/solutions/marketplaces/orderbook/examples/06-orderbook-transactions/index.html +++ b/solutions/marketplaces/orderbook/examples/06-orderbook-transactions/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/marketplaces/overview/index.html b/solutions/marketplaces/overview/index.html index d2848c51145..08ec12d6512 100644 --- a/solutions/marketplaces/overview/index.html +++ b/solutions/marketplaces/overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/marketplaces/white-label-marketplace/index.html b/solutions/marketplaces/white-label-marketplace/index.html index 790070e94ae..e210fe7c8e3 100644 --- a/solutions/marketplaces/white-label-marketplace/index.html +++ b/solutions/marketplaces/white-label-marketplace/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/minter/index.html b/solutions/minter/index.html index 82e872922a2..be339dbc899 100644 --- a/solutions/minter/index.html +++ b/solutions/minter/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/nft-checkout/index.html b/solutions/nft-checkout/index.html index 8621f15d8b5..d1213d9985f 100644 --- a/solutions/nft-checkout/index.html +++ b/solutions/nft-checkout/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/onramps/index.html b/solutions/onramps/index.html index b02813ffd27..371090c062f 100644 --- a/solutions/onramps/index.html +++ b/solutions/onramps/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/payments/onramps/01-fiat-on-ramps/index.html b/solutions/payments/onramps/01-fiat-on-ramps/index.html index 20e3dd80b0a..2fe5cda59d6 100644 --- a/solutions/payments/onramps/01-fiat-on-ramps/index.html +++ b/solutions/payments/onramps/01-fiat-on-ramps/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/technical-references/5189-4337/index.html b/solutions/technical-references/5189-4337/index.html index 9649ed2bb6f..d24cd3ec859 100644 --- a/solutions/technical-references/5189-4337/index.html +++ b/solutions/technical-references/5189-4337/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/technical-references/chain-support/index.html b/solutions/technical-references/chain-support/index.html index 6cf86d9d3b6..e65a8451443 100644 --- a/solutions/technical-references/chain-support/index.html +++ b/solutions/technical-references/chain-support/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/technical-references/internals/01-deployment/index.html b/solutions/technical-references/internals/01-deployment/index.html index a0d30ecea20..a71e59bcab2 100644 --- a/solutions/technical-references/internals/01-deployment/index.html +++ b/solutions/technical-references/internals/01-deployment/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/technical-references/internals/v1/01-deploy/index.html b/solutions/technical-references/internals/v1/01-deploy/index.html index 93f3e932a1c..fa5c7a5ea43 100644 --- a/solutions/technical-references/internals/v1/01-deploy/index.html +++ b/solutions/technical-references/internals/v1/01-deploy/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/technical-references/internals/v1/03-wallet-factory/index.html b/solutions/technical-references/internals/v1/03-wallet-factory/index.html index c0efbf7e680..990ebc453c0 100644 --- a/solutions/technical-references/internals/v1/03-wallet-factory/index.html +++ b/solutions/technical-references/internals/v1/03-wallet-factory/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/technical-references/internals/v1/04-wallet-configuration/index.html b/solutions/technical-references/internals/v1/04-wallet-configuration/index.html index 10fe3484d2e..5765c782fb6 100644 --- a/solutions/technical-references/internals/v1/04-wallet-configuration/index.html +++ b/solutions/technical-references/internals/v1/04-wallet-configuration/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/technical-references/internals/v1/05-modules-and-updates/index.html b/solutions/technical-references/internals/v1/05-modules-and-updates/index.html index 1e0542329a9..9f10df83cbc 100644 --- a/solutions/technical-references/internals/v1/05-modules-and-updates/index.html +++ b/solutions/technical-references/internals/v1/05-modules-and-updates/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/technical-references/internals/v1/06-main-module-upgradeable/index.html b/solutions/technical-references/internals/v1/06-main-module-upgradeable/index.html index c7b2d09e31d..f6f8a36255f 100644 --- a/solutions/technical-references/internals/v1/06-main-module-upgradeable/index.html +++ b/solutions/technical-references/internals/v1/06-main-module-upgradeable/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/technical-references/internals/v1/08-signature-encoding/index.html b/solutions/technical-references/internals/v1/08-signature-encoding/index.html index 38a74831814..808667682a8 100644 --- a/solutions/technical-references/internals/v1/08-signature-encoding/index.html +++ b/solutions/technical-references/internals/v1/08-signature-encoding/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/technical-references/internals/v1/09-nested-transaction-batching/index.html b/solutions/technical-references/internals/v1/09-nested-transaction-batching/index.html index 65423570f6c..30134baa3af 100644 --- a/solutions/technical-references/internals/v1/09-nested-transaction-batching/index.html +++ b/solutions/technical-references/internals/v1/09-nested-transaction-batching/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/technical-references/internals/v1/10-guest-module/index.html b/solutions/technical-references/internals/v1/10-guest-module/index.html index 44b2c146439..6e732fbb606 100644 --- a/solutions/technical-references/internals/v1/10-guest-module/index.html +++ b/solutions/technical-references/internals/v1/10-guest-module/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/technical-references/internals/v1/11-wallet-context/index.html b/solutions/technical-references/internals/v1/11-wallet-context/index.html index 6bfe6a143a0..f81c9ef6c6f 100644 --- a/solutions/technical-references/internals/v1/11-wallet-context/index.html +++ b/solutions/technical-references/internals/v1/11-wallet-context/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/technical-references/internals/v1/12-contract-audits/index.html b/solutions/technical-references/internals/v1/12-contract-audits/index.html index 7e72843c001..7031f960ad0 100644 --- a/solutions/technical-references/internals/v1/12-contract-audits/index.html +++ b/solutions/technical-references/internals/v1/12-contract-audits/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/technical-references/internals/v2/01-deploy/index.html b/solutions/technical-references/internals/v2/01-deploy/index.html index 1261b54d49f..8579e20fd14 100644 --- a/solutions/technical-references/internals/v2/01-deploy/index.html +++ b/solutions/technical-references/internals/v2/01-deploy/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/technical-references/internals/v2/04-configuration/index.html b/solutions/technical-references/internals/v2/04-configuration/index.html index 7d22b50695b..0d76694d261 100644 --- a/solutions/technical-references/internals/v2/04-configuration/index.html +++ b/solutions/technical-references/internals/v2/04-configuration/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/technical-references/wallet-contracts/01-why/index.html b/solutions/technical-references/wallet-contracts/01-why/index.html index e053632c521..f3a05fc685a 100644 --- a/solutions/technical-references/wallet-contracts/01-why/index.html +++ b/solutions/technical-references/wallet-contracts/01-why/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/embedded-wallet/01-overview/index.html b/solutions/wallets/embedded-wallet/01-overview/index.html index 3203d697ff8..1955c3db150 100644 --- a/solutions/wallets/embedded-wallet/01-overview/index.html +++ b/solutions/wallets/embedded-wallet/01-overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/embedded-wallet/02-quickstart/index.html b/solutions/wallets/embedded-wallet/02-quickstart/index.html index 8722eebfff8..a7cde9094ae 100644 --- a/solutions/wallets/embedded-wallet/02-quickstart/index.html +++ b/solutions/wallets/embedded-wallet/02-quickstart/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/embedded-wallet/07-Architecture/index.html b/solutions/wallets/embedded-wallet/07-Architecture/index.html index 4e55af5b317..22e33089e5b 100644 --- a/solutions/wallets/embedded-wallet/07-Architecture/index.html +++ b/solutions/wallets/embedded-wallet/07-Architecture/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/embedded-wallet/examples/03-manage-sessions/index.html b/solutions/wallets/embedded-wallet/examples/03-manage-sessions/index.html index a937ae4b03e..694813e7c58 100644 --- a/solutions/wallets/embedded-wallet/examples/03-manage-sessions/index.html +++ b/solutions/wallets/embedded-wallet/examples/03-manage-sessions/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/embedded-wallet/examples/04-use-wallets/index.html b/solutions/wallets/embedded-wallet/examples/04-use-wallets/index.html index 6f0cfc28677..97a11897108 100644 --- a/solutions/wallets/embedded-wallet/examples/04-use-wallets/index.html +++ b/solutions/wallets/embedded-wallet/examples/04-use-wallets/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/embedded-wallet/examples/05-validation/index.html b/solutions/wallets/embedded-wallet/examples/05-validation/index.html index ab3f557f0da..b398f53970e 100644 --- a/solutions/wallets/embedded-wallet/examples/05-validation/index.html +++ b/solutions/wallets/embedded-wallet/examples/05-validation/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/embedded-wallet/examples/06-transaction-receipts/index.html b/solutions/wallets/embedded-wallet/examples/06-transaction-receipts/index.html index c4e2db6dc96..87d4eb5a0ad 100644 --- a/solutions/wallets/embedded-wallet/examples/06-transaction-receipts/index.html +++ b/solutions/wallets/embedded-wallet/examples/06-transaction-receipts/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/overview/index.html b/solutions/wallets/overview/index.html index bb5f27c54cf..78310c689aa 100644 --- a/solutions/wallets/overview/index.html +++ b/solutions/wallets/overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/universal-wallet/01-overview/index.html b/solutions/wallets/universal-wallet/01-overview/index.html index 8446daf3d66..48dd2ff4d70 100644 --- a/solutions/wallets/universal-wallet/01-overview/index.html +++ b/solutions/wallets/universal-wallet/01-overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/universal-wallet/02-quickstart/index.html b/solutions/wallets/universal-wallet/02-quickstart/index.html index ea3cb82588a..75ec29698b6 100644 --- a/solutions/wallets/universal-wallet/02-quickstart/index.html +++ b/solutions/wallets/universal-wallet/02-quickstart/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/universal-wallet/04-sequence-kit/index.html b/solutions/wallets/universal-wallet/04-sequence-kit/index.html index d7d6fe3af4c..f2fba97e695 100644 --- a/solutions/wallets/universal-wallet/04-sequence-kit/index.html +++ b/solutions/wallets/universal-wallet/04-sequence-kit/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/universal-wallet/05-platforms/index.html b/solutions/wallets/universal-wallet/05-platforms/index.html index 4146f6998f1..bba47595af4 100644 --- a/solutions/wallets/universal-wallet/05-platforms/index.html +++ b/solutions/wallets/universal-wallet/05-platforms/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/universal-wallet/06-fiat-on-ramps/index.html b/solutions/wallets/universal-wallet/06-fiat-on-ramps/index.html index 1e4073a187a..d988449cdf9 100644 --- a/solutions/wallets/universal-wallet/06-fiat-on-ramps/index.html +++ b/solutions/wallets/universal-wallet/06-fiat-on-ramps/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/universal-wallet/07-key-management/index.html b/solutions/wallets/universal-wallet/07-key-management/index.html index c8fbd9c5141..cc3d4167168 100644 --- a/solutions/wallets/universal-wallet/07-key-management/index.html +++ b/solutions/wallets/universal-wallet/07-key-management/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/universal-wallet/examples/01-connect-wallet/index.html b/solutions/wallets/universal-wallet/examples/01-connect-wallet/index.html index 528e723139c..e832c4ca523 100644 --- a/solutions/wallets/universal-wallet/examples/01-connect-wallet/index.html +++ b/solutions/wallets/universal-wallet/examples/01-connect-wallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/universal-wallet/examples/02-auth-address/index.html b/solutions/wallets/universal-wallet/examples/02-auth-address/index.html index bd6370c2ddb..cc5146e9d67 100644 --- a/solutions/wallets/universal-wallet/examples/02-auth-address/index.html +++ b/solutions/wallets/universal-wallet/examples/02-auth-address/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/universal-wallet/examples/03-sign-message/index.html b/solutions/wallets/universal-wallet/examples/03-sign-message/index.html index 35be88be1bb..46d13628afb 100644 --- a/solutions/wallets/universal-wallet/examples/03-sign-message/index.html +++ b/solutions/wallets/universal-wallet/examples/03-sign-message/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/universal-wallet/examples/04-session-keys/index.html b/solutions/wallets/universal-wallet/examples/04-session-keys/index.html index 7bbf4d5ef3c..e45709da12a 100644 --- a/solutions/wallets/universal-wallet/examples/04-session-keys/index.html +++ b/solutions/wallets/universal-wallet/examples/04-session-keys/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/universal-wallet/examples/05-send-transaction/index.html b/solutions/wallets/universal-wallet/examples/05-send-transaction/index.html index 758630c0858..de3b1633ec6 100644 --- a/solutions/wallets/universal-wallet/examples/05-send-transaction/index.html +++ b/solutions/wallets/universal-wallet/examples/05-send-transaction/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/universal-wallet/examples/06-send-erc20/index.html b/solutions/wallets/universal-wallet/examples/06-send-erc20/index.html index 8af852e5f6a..60bd80804dd 100644 --- a/solutions/wallets/universal-wallet/examples/06-send-erc20/index.html +++ b/solutions/wallets/universal-wallet/examples/06-send-erc20/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/universal-wallet/examples/07-send-erc721/index.html b/solutions/wallets/universal-wallet/examples/07-send-erc721/index.html index 8ddb6ac5105..850206e7a2c 100644 --- a/solutions/wallets/universal-wallet/examples/07-send-erc721/index.html +++ b/solutions/wallets/universal-wallet/examples/07-send-erc721/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/universal-wallet/examples/08-send-erc1155/index.html b/solutions/wallets/universal-wallet/examples/08-send-erc1155/index.html index c2cfd36e620..e769c58c86e 100644 --- a/solutions/wallets/universal-wallet/examples/08-send-erc1155/index.html +++ b/solutions/wallets/universal-wallet/examples/08-send-erc1155/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/universal-wallet/examples/09-send-batch-transactions/index.html b/solutions/wallets/universal-wallet/examples/09-send-batch-transactions/index.html index 20a0fa82c39..bb72b3c4a18 100644 --- a/solutions/wallets/universal-wallet/examples/09-send-batch-transactions/index.html +++ b/solutions/wallets/universal-wallet/examples/09-send-batch-transactions/index.html @@ -12,7 +12,7 @@ - + diff --git a/solutions/wallets/universal-wallet/examples/10-building-backends/index.html b/solutions/wallets/universal-wallet/examples/10-building-backends/index.html index 3bfddc56c41..12e57bc9b31 100644 --- a/solutions/wallets/universal-wallet/examples/10-building-backends/index.html +++ b/solutions/wallets/universal-wallet/examples/10-building-backends/index.html @@ -12,7 +12,7 @@ - + diff --git a/support/index.html b/support/index.html index 1487ad6f2af..a5f8b0ef7eb 100644 --- a/support/index.html +++ b/support/index.html @@ -12,7 +12,7 @@ - + diff --git a/support/token-directory/index.html b/support/token-directory/index.html index 330bc8669d2..fa2fa7e5c2b 100644 --- a/support/token-directory/index.html +++ b/support/token-directory/index.html @@ -12,7 +12,7 @@ - +