@thenamespace/ens-components 0.28.0 → 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +554 -8
- package/dist/index.js +1943 -143
- package/dist/index.js.map +1 -1
- package/dist/types/components/index.d.ts +1 -0
- package/dist/types/components/offchain-subname-form/FormHeader.d.ts +8 -0
- package/dist/types/components/offchain-subname-form/OffchainSubnameForm.d.ts +19 -0
- package/dist/types/components/offchain-subname-form/OwnerAddressInput.d.ts +7 -0
- package/dist/types/components/offchain-subname-form/SubnameInput.d.ts +13 -0
- package/dist/types/components/offchain-subname-form/SuccessScreen.d.ts +7 -0
- package/dist/types/components/offchain-subname-form/index.d.ts +10 -0
- package/dist/types/components/offchain-subname-form/requestBuilder.d.ts +17 -0
- package/dist/types/components/offchain-subname-form/useSubnameChecker.d.ts +17 -0
- package/dist/types/components/offchain-subname-form/useSubnameValidation.d.ts +8 -0
- package/dist/types/components/offchain-subname-form/utils.d.ts +11 -0
- package/dist/types/hooks/index.d.ts +1 -0
- package/dist/types/hooks/useOffchainManager.d.ts +1 -0
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as viem from 'viem';
|
|
2
2
|
import { parseAbi, UserRejectedRequestError, isAddress as isAddress$1, namehash, encodeFunctionData, toHex, toBytes as toBytes$1, pad, ContractFunctionExecutionError, keccak256, formatEther, zeroAddress, zeroHash } from 'viem';
|
|
3
|
-
import * as chains$
|
|
3
|
+
import * as chains$2 from 'viem/chains';
|
|
4
4
|
import { zoraSepolia, zora, celoAlfajores, celo, polygonMumbai, polygon, arbitrumSepolia, arbitrum, optimismSepolia, optimism as optimism$1, baseSepolia as baseSepolia$1, base as base$5, sepolia as sepolia$1, mainnet as mainnet$1 } from 'viem/chains';
|
|
5
5
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
6
6
|
import * as React52 from 'react';
|
|
@@ -17148,7 +17148,7 @@ function checksum(len, fn) {
|
|
|
17148
17148
|
};
|
|
17149
17149
|
}
|
|
17150
17150
|
// prettier-ignore
|
|
17151
|
-
const utils$
|
|
17151
|
+
const utils$5 = {
|
|
17152
17152
|
alphabet: alphabet$2, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,
|
|
17153
17153
|
};
|
|
17154
17154
|
/**
|
|
@@ -17389,7 +17389,7 @@ const createBase58VersionedDecoder = (p2pkhVersions, p2shVersions) => (source) =
|
|
|
17389
17389
|
throw new Error("Unrecognised address format");
|
|
17390
17390
|
};
|
|
17391
17391
|
|
|
17392
|
-
const eosChecksum = utils$
|
|
17392
|
+
const eosChecksum = utils$5.checksum(4, ripemd160$1);
|
|
17393
17393
|
const createEosEncoder = (prefix) => (source) => {
|
|
17394
17394
|
const point = secp256k1$1.ProjectivePoint.fromHex(source);
|
|
17395
17395
|
const checksummed = eosChecksum.encode(point.toRawBytes(true));
|
|
@@ -18177,14 +18177,14 @@ const sha512_256 = sha512_256$1;
|
|
|
18177
18177
|
|
|
18178
18178
|
const base32Encode = base32$4.encode;
|
|
18179
18179
|
const base32Decode = base32$4.decode;
|
|
18180
|
-
const base32Unpadded = utils$
|
|
18180
|
+
const base32Unpadded = utils$5.chain(utils$5.radix2(5), utils$5.alphabet("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"), utils$5.join(""));
|
|
18181
18181
|
const base32UnpaddedEncode = base32Unpadded.encode;
|
|
18182
18182
|
const base32UnpaddedDecode = base32Unpadded.decode;
|
|
18183
18183
|
const base32CrockfordNormalise = (source) => source.toUpperCase().replace(/O/g, "0").replace(/[IL]/g, "1");
|
|
18184
18184
|
|
|
18185
18185
|
const name$1P = "algo";
|
|
18186
18186
|
const coinType$1P = 283;
|
|
18187
|
-
const algoChecksum = utils$
|
|
18187
|
+
const algoChecksum = utils$5.checksum(4, (data) => sha512_256(data).slice(-4));
|
|
18188
18188
|
const encodeAlgoAddress = (source) => {
|
|
18189
18189
|
const checksum = algoChecksum.encode(source);
|
|
18190
18190
|
return base32UnpaddedEncode(checksum);
|
|
@@ -18388,8 +18388,8 @@ const prefix$7 = "bitcoincash";
|
|
|
18388
18388
|
const prefixBytes = new Uint8Array([2, 9, 20, 3, 15, 9, 14, 3, 1, 19, 8, 0]); // bitcoincash + 0x00
|
|
18389
18389
|
const hashSize = [160, 192, 224, 256, 320, 384, 448, 512];
|
|
18390
18390
|
const hashSizeLookup = Object.fromEntries(hashSize.map((size, index) => [size, index]));
|
|
18391
|
-
const radix5 = utils$
|
|
18392
|
-
const bchBase32 = utils$
|
|
18391
|
+
const radix5 = utils$5.radix2(5);
|
|
18392
|
+
const bchBase32 = utils$5.chain(utils$5.alphabet("qpzry9x8gf2tvdw0s3jn54khce6mua7l"), utils$5.join(""));
|
|
18393
18393
|
const checksumToUint5Array = (checksum) => {
|
|
18394
18394
|
const result = new Uint8Array(8);
|
|
18395
18395
|
for (let i = 0; i < 8; i++) {
|
|
@@ -18730,7 +18730,7 @@ const xmr$1 = {
|
|
|
18730
18730
|
|
|
18731
18731
|
const name$1G = "bcn";
|
|
18732
18732
|
const coinType$1G = 204;
|
|
18733
|
-
const bcnChecksum = utils$
|
|
18733
|
+
const bcnChecksum = utils$5.checksum(4, keccak_256);
|
|
18734
18734
|
const encodeBcnAddress = (source) => {
|
|
18735
18735
|
const checksum = keccak_256(source).slice(0, 4);
|
|
18736
18736
|
return encodeXmrAddress(concatBytes(source, checksum));
|
|
@@ -19492,7 +19492,7 @@ const eth$1 = {
|
|
|
19492
19492
|
const name$1h = "etn";
|
|
19493
19493
|
const coinType$1h = 415;
|
|
19494
19494
|
const type$1 = 18;
|
|
19495
|
-
const etnChecksum = utils$
|
|
19495
|
+
const etnChecksum = utils$5.checksum(4, keccak_256);
|
|
19496
19496
|
const encodeEtnAddress = (source) => {
|
|
19497
19497
|
const sourceWithType = concatBytes(new Uint8Array([type$1]), source);
|
|
19498
19498
|
const checksummed = etnChecksum.encode(sourceWithType);
|
|
@@ -20222,7 +20222,7 @@ const radixNano = {
|
|
|
20222
20222
|
return Uint8Array.from(result);
|
|
20223
20223
|
},
|
|
20224
20224
|
};
|
|
20225
|
-
const base32Nano = utils$
|
|
20225
|
+
const base32Nano = utils$5.chain(radixNano, utils$5.alphabet("13456789abcdefghijkmnopqrstuwxyz"), utils$5.join(""));
|
|
20226
20226
|
const encodeNanoAddress = (source) => {
|
|
20227
20227
|
const encoded = base32Nano.encode(source);
|
|
20228
20228
|
const checksum = blake2b$1(source, { dkLen: 5 }).reverse();
|
|
@@ -20242,7 +20242,7 @@ const nano$1 = {
|
|
|
20242
20242
|
|
|
20243
20243
|
const name$N = "nas";
|
|
20244
20244
|
const coinType$N = 2718;
|
|
20245
|
-
const nasChecksum = utils$
|
|
20245
|
+
const nasChecksum = utils$5.checksum(4, sha3_256);
|
|
20246
20246
|
const encodeNasAddress = (source) => {
|
|
20247
20247
|
const checksummed = nasChecksum.encode(source);
|
|
20248
20248
|
return base58UncheckedEncode(checksummed);
|
|
@@ -20329,7 +20329,7 @@ const ibanCheck = (data) => {
|
|
|
20329
20329
|
const nimChecksum = (source) => {
|
|
20330
20330
|
return ("00" + (98 - ibanCheck(source + CCODE + "00"))).slice(-2);
|
|
20331
20331
|
};
|
|
20332
|
-
const base32Nim = utils$
|
|
20332
|
+
const base32Nim = utils$5.chain(utils$5.radix2(5), utils$5.alphabet("0123456789ABCDEFGHJKLMNPQRSTUVXY"), utils$5.padding(5), utils$5.join(""));
|
|
20333
20333
|
const encodeNimAddress = (source) => {
|
|
20334
20334
|
const base32Part = base32Nim.encode(source);
|
|
20335
20335
|
const checksummed = nimChecksum(base32Part);
|
|
@@ -20737,7 +20737,7 @@ const convertRadixStx = (data, from, to, padding) => {
|
|
|
20737
20737
|
res.unshift(carry >>> 0);
|
|
20738
20738
|
return res;
|
|
20739
20739
|
};
|
|
20740
|
-
const base32Stx = utils$
|
|
20740
|
+
const base32Stx = utils$5.chain(radixStx, utils$5.alphabet("0123456789ABCDEFGHJKMNPQRSTVWXYZ"), utils$5.join(""));
|
|
20741
20741
|
const stxChecksum = (data) => sha256$1(sha256$1(data)).slice(0, checkumLength);
|
|
20742
20742
|
const encodeStxAddress = (source) => {
|
|
20743
20743
|
if (source.length !== length$3 + checkumLength)
|
|
@@ -21010,7 +21010,7 @@ const name$b = "waves";
|
|
|
21010
21010
|
const coinType$b = 5741564;
|
|
21011
21011
|
const checksumFn = (source) => keccak_256(blake2b$1(source, { dkLen: 32 }));
|
|
21012
21012
|
const checksumLength = 4;
|
|
21013
|
-
const wavesChecksum = utils$
|
|
21013
|
+
const wavesChecksum = utils$5.checksum(checksumLength, checksumFn);
|
|
21014
21014
|
const encodeWavesAddress = base58UncheckedEncode;
|
|
21015
21015
|
const decodeWavesAddress = (source) => {
|
|
21016
21016
|
const decoded = base58UncheckedDecode(source);
|
|
@@ -21133,7 +21133,7 @@ const xlm$1 = {
|
|
|
21133
21133
|
|
|
21134
21134
|
const name$5 = "xrp";
|
|
21135
21135
|
const coinType$5 = 144;
|
|
21136
|
-
const base58XrpCheck = utils$
|
|
21136
|
+
const base58XrpCheck = utils$5.chain(utils$5.checksum(4, (data) => sha256$1(sha256$1(data))), base58xrp);
|
|
21137
21137
|
const encodeXrpAddress = base58XrpCheck.encode;
|
|
21138
21138
|
const decodeXrpAddress = base58XrpCheck.decode;
|
|
21139
21139
|
const xrp$1 = {
|
|
@@ -21640,14 +21640,14 @@ const base58btc$1 = createMultibaseCoder({
|
|
|
21640
21640
|
encode: base58$2.encode,
|
|
21641
21641
|
decode: base58$2.decode,
|
|
21642
21642
|
});
|
|
21643
|
-
const customBase32 = utils$
|
|
21643
|
+
const customBase32 = utils$5.chain(utils$5.radix2(5), utils$5.alphabet("abcdefghijklmnopqrstuvwxyz234567"), utils$5.join(""));
|
|
21644
21644
|
const base32$3 = createMultibaseCoder({
|
|
21645
21645
|
name: "base32",
|
|
21646
21646
|
prefix: "b",
|
|
21647
21647
|
encode: (bytes) => customBase32.encode(bytes),
|
|
21648
21648
|
decode: (multibase) => customBase32.decode(multibase),
|
|
21649
21649
|
});
|
|
21650
|
-
const base36Chain = utils$
|
|
21650
|
+
const base36Chain = utils$5.chain(utils$5.radix(36), utils$5.alphabet("0123456789abcdefghijklmnopqrstuvwxyz"), utils$5.join(""));
|
|
21651
21651
|
const base36$2 = createMultibaseCoder({
|
|
21652
21652
|
name: "base36",
|
|
21653
21653
|
prefix: "k",
|
|
@@ -24231,7 +24231,7 @@ const SelectRecordsForm = ({
|
|
|
24231
24231
|
|
|
24232
24232
|
var img$1 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAvQAAAGjCAYAAABDv4HEAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAFCISURBVHgB7d0PkFX1ff//NwpEgSj4B7HRcqET0CJhcWr8QxJXbUeSTgVMbCTJ6NoxTdtMA0zzSyyZDusk0l/SToG0Tr7xq8NCx8EaG/5kUjUd3aX5o9YZgYhRyYS91Cb88Q+QChbR8D2ve+9nOXu59+79d+75nHOej5mPd9m96Lp7z+7rvM/78z6jDACQRBOD1R2sXLCmlh5zpfe7FXaobG0P1uHSY770CABIoFEGAEiCXLAWBmuOnQzy7eRC/ubS44ABAAAAaEl3sFYEazBYJzq89N9cW/ocAAAAANRJrTIK8f3W+RA/UrjPGQAAAICKcsFaFayD5k+Qr7Q2GlV7AAAAYEjOitVvn0N8pdVvBHsAAABkmFprVJFPSoCvttYarTgAAADImCXmf2tNo2uFAQAAACmXM782u7Z7DRrVegAAAKSUZsinrSpPtR4AAACZkIZe+UZXv1GtBwAAQMJp46uCbRICeBRr0Aj1AAAASKicxXOHV9+W2oy6DAAAAEiQnBHmy0P97QYAAAAkQM4I89XW7QYAAAB4LGeE+ZEW7TcAAADwkjbADlqywnUcS+03OQMAAAA8s9GSFazjXINGqAcAAIBHVliyArUPq98AAAAAD+gOsEkJ0b6tVQYAAADEKGf0zbe6ug0AAACIyVpLVnj2cQ1acUMxAAAA0FE9lqzg7POi9QYAWjDKAADNGDQmtbTT3GBtNwBAw04zAECjVhhhvt2o0gMAAHgsTT3SOWMjbFSr2wAADaNCDyBKXVa8M6jWoBU3kWrMY86S63ajOh+VFQYAAACvbLPq1Vh9zAX8pFTw9XnqxMTXCjdVegAAALRVI0FOAV991D4H/B7zPxAnffUbAKAhTLkBEBW122yz5g1YcerJ5tLjIYvfoNFu0wmTzI/vNwAAQKZ1W/srt70WX0tGt/lb1U7b6jUAAADErseiDX391tmAv9aSEYbTsPoNAAAAseu1zgVATdFRCFxq0QX8QTM7werYyhkAAABitdHiC4MHS/99Bfwua12XdebzZp1cSw0AAACx6jd/wqEL+D3WXMBf2qHPk3Vy9RsAoC5MuQEQFYVoX8dP5u3kBJ2B0p9rUbjsNnSSptxMMgDAiAj0AKKgIH/QkiNvxWC/1SoHfJ9PTtJsrhVPvAAANYw2AGi/nCVLzortOD2lP2+3kxV8IczHQ+1RBHoAGAGBHkAUcpZsXaXVYx6aOHFiYXV1dVkulyu8PXXq1GEfqyafzxce9+zZY4cOHSr8WY/bt28vPHqmHRuaASD1CPQAopAztI2Ce3d3t82ZM6fwqBAfBYV7BfutW7cWHgcGBixmOQMAAEAsVluyJqp4t4LgfmLVqlUnDh48eCIu+m9v3LjxRE9PT1xfh20GAACAWPSbJ8E4SWvixIknVqxYEWuIr0af09q1a08EVwc6+TUZNAAAAMRClVUvQnISloJ83NX4RvT393cy2AMAACAG3oRln5fPFfl6dKhiDwAAgA7TiBWvgrOPSz3yg4ODJ5JOJyNLly6N8muVMwAAAHRUt3kWnn1bqsqnjTbPRlStzxkAAAA6igp9laUWG/Wfp5WuOEQQ6gEAABCDXitOKPEqUMe5FHS3bdt2Iu0U6ru6utr5tQMAjGCUAUC0JpYtK3s7F3ru1Arvy1X4O4kThPnCDaKyQHecnTt37tBdaVv5VwVrkgEAauJOsQCidqi02ilRJwkrVqzITJiXiRMn2tq1a+26666zFrX7dQMAqUSFHgCKqp0k3B6shdYkhVtV53O5nGWNAv3AwIC1YED/GgMA1ESFHgCKql1JUKhvOtB3d3dnMszLwoULWw30eQMAjOg0AwDUst1aoECfVQsWLLAW7TAAwIgI9ABQW95aMGfOHMuqNlyZaOlkCgCygpYbADiV66PvtuIG2kOW4Ak7CUagB4A6EOgBZJlCei5YGkEzJ/R2ztpkz549llUaX9kChXmm3ABAHQj0ALIgZyeD+pzQ25FX3VsMtYm2fXtLBfatBgCoC4EeQFqEq+161Pz5bov5hlSbNm2yJUuWWBbt2NHSntZNBgCoC3PoASRNzk4G96kWQZtMux08eLAwjz5rpk2b1uzdYrlDLAAAQArkrDj/fWmw1gZrW7AOButE0tbSpUtPZM3atWtb+ZqtNQBA3ajQA4hT5JtSfdHf3x/JTHpVwNWrrs23elTPvt5X3rvvRkjqUUvjNPXY1dVl7ab/vu4S22R1XnR32AEDAACAN3J2stq+KlgbgzVoHlfV270mTpx4oq+v70SrBgcHT6xevfpET09P4d/Zjs8rONEo/Du3bdt2olX6/IIThVY+p0EDAACAF3LB6reEtslEtRTEFXobcfDgwRO9vb2F4B3156cwrs8xuKLQyKc49Dm24SSjxwAADaHlBkBU1PPe/n6OlFD7jda1115b2DCr9hc9qlVGS+0zmhIzMDBQWHHQ56TPccGCBUOfn2vdcW09W7duLUzyce0+Lcpbsd0mbwCAuhHoAUTlhAGNuTtYvQYAaMhpBgDRGLD04g6m7ZcPVp8BABpGoAcQlc2WLgPBWmbF+eiLDO2m6nzeAAAA4A31z59I+NKG3tVWvONsudUefr5JXYMGAAAALyV1wk2/VQ7xYRMT/P/n22LzNAAAgKf6LDmhst+Kc/InWv0WxvS5pmmtNgAAAHirx/wOk7VaaupF603za9AaO4ECAABAhyms+Rgk+621EF/+/zho1pHPO01LJ1M5AwAAgPf6zY8Aqc+j0ZaaeuWMfvpG11IDAABAIvRafKGxHS019eo2sxOsulavAQAAIDG6rfOBsd86E+LLLTV/Q7Qvi02wAAAACdSJdpR+i66lphG95leA9mn1GQAAABKpz6IJiJ1sqWlEr/kXpgnzAAAAaFqPtTcc9pt/Ib5cr/kZrAnzAAAAaFg7xlf2mx8tNY2gp56eeQAAgNTot8bDoK8tNY3osuzOqWc0JQAAQIr0Wv1BsN+SHeLL5YK1zfwP4O1ag5au7x8AAABs5PGV/Za8lppG9VoyAnkra6Ol+3sIAACQaYM2PPyloaWmUTlLZwuOvpcLDQAAAKmWs2KAX2u0ZOhqxKAlK7RXW/qeUpUHAABA5uQsuhn9nVj9xokZAAAAkLhgT5AHAAAAKshZcePsoPkX4rO43wEAAABomjaY9ln8Qb7f0j99CAAAAIiMgrQL94PWmUq8Rk8S4gEgIUYZACBJcla8+2x3sOaU3m42eB8KVj5Y24O1I1gDpbcBAAlCoAeA5FOgz5Uey5eTLz26EJ8vvQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABk3CgDinKht8tvGQ8AAPxwqLTK30aGEejTLWfFYN5VepxaeszZyQCfMwAAkGQu2OdLf9bjntJjvvSx7YbUItCnQ1dpzbFiYO82quwAAGC4fGkp3O8pPWpR5U84An3yKLh3WzG8uyAPAADQLFfB31p6HDBCfqIQ6P3m2mUW2MnwTtUdAABELW/FcL/ZTlby4SkCvX+6g3Vt6bHbAAAA4pe3YuV+a+kxb/AGgT5+qrgvtGKIX2hU4AEAgP9c9X6TUb2PHYE+HgrtPVZspek2AACA5MpbsWq/rvSIDiPQdw4hHgAApF3eiqF+jVG57xgCffS6g7XETo6SBAAAyIJ8sO42eu4jR6CPhoK7QvxSI8QDAACo135d6RFtRqBvr+5grTBaagAAACrJG1X7tiPQt47eeAAAgMb1WTHc5w0tIdA3j7YaAACA1vUZE3JaQqBvHEEeAACg/QbsZDsOGkCgrx9BHgAAIHoDRrBvCIF+ZAR5AACAzhsI1h1Gj/2ICPS1Kcj3GkEeAAAgLn3G5tmaCPSVdQdrbbByBgAAAB/0GcG+IgL9cDkrBvluAwAAgG/yVgz1fYYhBPoi1yffawAAAPBdPljXGdX6gtMM3cHaZoR5AACApMgFa9BokS443bJLVfkNwfr/jU2vAAAASdQVrIXBOhys7ZZRWQ30aq/ZZMUXAQAAAJJLhVmF+lywdgTrkGVM1gJ9Llgbg/VnwTrDAAAAkBaZrdZnKdDrG/xosC4xAAAApFEmq/VZmHKjb+wKK97pFQAAANmQD9Yiy0C1Pu0Vel166Q/WfAMAAECWqKj7Z6W3t1qKpXlspTa+KsznDAAAAFnVaynPhGlsuaHFBgAAAOXyltIWnLS13OSsuPF1oQEAAAAnpbYFJ02BvttosQEAAEBt3VYM949bSqSl5Ub98qsNAAAAqI9ab9SCk7eES0OgX2X0ywMAAKBx+WBdZwkP9UkO9LpUstbolwcAAEDzdPMpVeoHLKGS2kOfs+Lm124DAAAAmndGsHqCdThYT1sCJTHQ56y4+fUSAwAAANrD3Yg0cRNwkhboc8YkGwAAAESju/SYqFCfpEDfFayngjXFAAAAgGh0lx4TE+qTEugV5lWZn2gAAABAtLqt2BGy2RIgCYGeMA8AAIBOUwbNWQJCve+BnjAPAACAuCQi1Psc6AnzAAAAiJv3od7XQE+YBwAAgC+UTZVLHzcP+Rjoc1a8aRTTbAAAAOCLq0qP3k2/8S3Q54w58wAAAPBTd+nRq1DvU6DPGWEeAAAAfusO1uFgPW2e8CXQqydJbTaXGAAAAOC3+cHaEayXzAOnmR9WWXGzAQAAAJAEa82T/OpDoF8RrB4DAAAAkkMdJhvNg3bxURavJcFabQAAAEAybQ/WdcE6ZDGJs4delyg2GQAAAJBcU0orthtPxRXoc1bcBMuNowAAAJB0rpc+lnGWcbXcbDM2wQIAACBd1HozYB0Wx6ZYbYIlzAMAACBtYtkk2+kKfY8VR/wAAAAAaaRNsnOtgzrZQ5+z4lnLGQYAAACkkzbIap/o49YhnazQD5oHczoBAACADuhYP32neujVN58zAAAAIBs61k/fiQp9d7D6DQAAAMiWAStW6iMVdQ99zopnJ8ybBwAAQNbkgnU4WE9bhKKu0GuiTY8BAAAA2XTIilNv8haRKHvoe4wwDwAAgGxTp0qkY9ujarnRJ77BaLUBAAAAchZh601UFXqm2gAAAAAnRZaPo+ihz1lx5jwAAACAkwYsgqk3UbTcbDNabQAAAIByuWBttTZvkG13y80So9UGAAAAqEYbZNta/G5nhT4XrP9jVOcBAACAapSVj1mx/aYt2tlDz8x5AAAAYGRtnU3frkCfMzbCAgAAAPXaFKxF1gbt6qGPdFg+AAAAkDILg9VtbdCOQN9jbfpkAAAAgAxZYW3QjpYbtdrkDAAAAECjNJd+wFrQaoW+xwjzAAAAQLNabl1vdWzlRmNMJQAAANAsZek9wdpuTWqlQt9jVOcBAACAVrXUS99KhZ7qPAAAANC6lqr0zVboe4zqPAAAANAuTVfpm51yw2QbAAAAoL2amnjTTIW+xwjzAAAAQLs1VaVvpkJPdR4AAACIRsNV+kYr9N1GmAcAAACi0nCVvtFAf7sBAAAAiEp3sLoa+QuNjK3MBavPAAAAAETpWLAeq/fJjVToWxp4DwAAAKAu6oqp+35PjQT6bgMAAAAQNYX5nnqfXG+g7zE2wwIAAACdsqDeJ9Yb6NkMCwAAAHROt9XZIVNPoM8Z7TYAAABApy2s50n1BPoeAwAAANBpdW2OrSfQ024DAAAAdJ7CfPdITxop0Hcbm2EBAACAuCwZ6QmjR/g41XkA8MSYMWNs3LhxduaZZw69PXr0aBs7dmzhUe9zj7W89dZbw95+++237Z133rGjR48Ofezw4cN2/PhxAwDETneNVaX+kFUxymobNCr0ANAxLqifddZZheXe1vtHCurtpkDvQv6vf/3rQsjX23oEAHTUsmCtrvbBWoG+O1j9BgCIzNlnn23nnntu4fGcc84pBPgkcOH+9ddfLyxCPgBEaiBY11X7YK1Av9aYcAMAbXXeeecVAryWq7yngar5quK7gP/aa68ZAKCtJlmVtptagZ52GwBokQL7xRdfPBTi0xLgR6KAr2C/b9++wqNadwAALbkjWH2VPlAt0Kv5fpsBABqmtplwiIcNhXstwj0ANKXPiqH+FNUC/dJgrTIAQF1UeZ8+fTohvg7qtx8cHKRyDwCNUbvNpEofqBbotRm22wAAVSnEqyd+2rRphPgmKdS/8sorhQUAGJE2xg6Uv7NSoNecy4MGAKjIVeMV5LPSEx81VeoV7nft2kXVHgCqW2PFTpphKt1YqtsAAKdQNX7GjBlU4yOgfQdu74H67NWSw6QcADjFnErvrFShZ1wlAIRceOGFtNXEQJV6VexpxwGAYU4ZX1kp0Gu6TZcBQMapWqyKfFJu9pRWBHsAGGZRsDaF31Ee6HNWnD8PAJlFkPcTwR4ACk7poy8P9AuDtdEAIIPUIz9nzhyCvOcI9gAybnuw5obfUR7oVwdriQFAhrDZNZk0FWf79u1MxQGQRcP66MsDPfPnAWSGRk7OnDmzsOEVyaVKPeMuAWTMsHn05YH+hAFABmiOvKryzJFPB9pwAGTMMit21hSEA323FSv0AJBaZ599ts2aNYv2mpRSsH/qqaeo1gNIu81W3PtacHroA3rnfAOAlFJ7zeWXX86m1xRzd/EdNWpUocceAFLqDCtOuykIV+i5oRSAVFJVXtNr9IjsoFoPIOWGNsaGK/SaZ5kzAEgRVWuvuOIKO+OMMwzZQrUeQMo9E6yX9Mbo0Du7DQBSQm01XV1d9MpjaCQpIy4BpEzOveEq9F3B+jMDgBTQXPmrr77aJkyYYIDoBG/KlCn21ltv2ZtvvmkAkAL7rLg5dijQXxWsWw0AEk7VWFXmTz/9dAPC1ILzvve9jxYcAGnybf3DtdzkDAASTGFNvfK02GAkOuk766yz7IUXXqAFB0CS5dwbp5UeuwwAEkrtFB/5yEcI86ib2m/UlsUIUwAJNrG0hgL9VAOABFK/vMI8wQyNcieCCvcAkFA5/cM1mfZaKeEDQFJoJKFuFEW/PJql1w599QASTKMrt9NDDyCR1AetO78C7aDXk7z88ssGAAmS0z9GG2EeQMJcdtllNm3aNAPaSaF+9OjRhc2yAJAQhbZ5Aj0q0W2ENwVrT7DyBnjk05/+9IzZs2fTMI9IzJs3z55//vmjDz744C4D/KG26Fyw5hg3AsVwk/SPUcFaGKyNhqxTiF9nxSA/YIBnTpw4MSZ4uCJYjLJBJ+iGLdtHjRp13AC/5KwY6lcYRVkEP6eCNVdTbnKGrFOInxuspUaYh4dKYf5qI8yjczT65urSaw/wST5YfcFS3+EdxpX0rBsaW8l0m+xSVV4/DBYZPxDgqVCYP9uAztJrjlAPn/UF6zorVmmRTTn9gwp9dinM64dAnwF+U5sNYR5x0WvvCgP8lbfiVfZ1hqyaqE2x/KLMJs7o0Spd3dMeHG3Sytnwq315K26qHrAW2riCyqjuYk2bDeJ2rl6Lo0aNavZnZs6KPc/VjpUdVvx5PGBA83qsOPGk25A1hUBPy032LDPCPJrXbcXNWN11PFfPc1OT7rYGWruCAHVZ8HCxoaYXXnhh/Isvvjjhueeem/z666+PP3z48Phaz58+ffoBPV5++eUHPvGJT+w31Ovi4DV5PAj19c601O/WnmAtsPoDVt6Kob6hYwUIUQvtNqP7ImsmaspNv3E2lyWF3dAGNE7V8lUW+nkxceJE6+rqslwuV1hy6NAhy+fzhbV9+ynnjX1WR1gJgpPu8sNdo0oU2h988MHpQWifduDAgclvvPHGBa+99tq0I0eOTLYWjRkz5siECRMOnHXWWQcuvvji3b/7u787OGvWrANf+MIXdhsq2RWE+pHuPrXEyu7A3uCxopPg1VY8VoBGdVsx2yE7rlOgHzTO5LJEu+LzBjRmWEDp7u62FStWFB5rUVAZGBiwu+++u/B2icKKgsrqSn+HMG/2zW9+c/q//du/XRZ8zab/93//92XtCO7NuOCCC3b+1m/91u4rrrhi54033jh48803U9EveiEI9ZVOeHLBWmulk16F+J6eHluwYEFdx8rq1att8+bN4WNFKZ+hBWgGxdpsWUSgz5YBK/bOA41QVV4jTQuVxbVr144YTirp6+srD/a9VlaBDMK8RgVmbgOiKvBf/epXrwqqtLN379595fHjx8ebhyZNmjQYvAaenz9//jMrV6583rLtqSDUvxb6s65g6Z4uOf1BQX7VqlWFUN8IHR86TnS8uHdZ8ed23oD6dRtV+iy5g0CfLRpR2WdA/VRt7NEbCxcuLIT5RgNKmMLKsmXLbNOmTe5dvVYK9UGY191fPxKsTIwIVIj/q7/6qxuCEH/V/v37L7OEGT9+/IGLLrro+aBq/2RGw71uOPUfQag/asXfoepbnqjjQ8eJjpdWKNDrWFFbjhXDvCr17H1CIw4a+ySz4g7GVmbLgAH1U2W+x/1BPb7r1lWeiqagft1119ncuXMr9c0Pe44elyxZ4t7dG6wVpTCvWfOpD/PLly+fPWXKlJXB1+r+xx9//M4khnlRG9DLL798w9/+7d/eM2HChPsvueSSJd/97ncvsOwo3B9h+vTp77diJXSirmCpMq8grlXNHXfcYdOmTbM1a9ZU/LiOkbJjLWeh6j9Qp82GzDjNkBVKWXkD6qPpNIU2m9tvv73wDtfjW8mOHTsKvfIK89VCimu30XMU/N2/N9B7zz33/GnwOM5SStX4efPmLR47duwGBWCFeF/baprhwv3HP/7x/6uTlT/+4z++wbJhXBDMHwsec6rM9/f3F64+uWMl1F42RO9T9d09VuKOJ1Xn1d5W2kSrf/QboR71GzBkRY5Anx2HDKiP2wBbqKQrdLie+VAIH+baa68thA6FGm0ArER/Vx/X8/R8BR5N/ZgxY4ZC/l9bCgXhbvLll19+p6rxP/nJTxanKcRXo5OV73znO0tUtU97sP/GN75x/bhx46bPmjWr0C+v17Y7RtRy46bZhOl9et1LtWMlfDzpGNy4caNrddO/cKMB9ckbMkM99CcMWdBnxR56oJaclXqBFTq2bdtmUQoq1/bXf13M8pdeeumGr3/96xssBRTk77rrrsWqWlvGqdf+Yx/72IaHH374CUuZW2655f5jx45Nvv76623p0qUWJZ1Yq1WnRJfKlhlQW86K+ySRfndToQfg5CzUC6yqYNRU2bzhhmLm3bVr102WcGqtCarxdy5atOh+wnyR2nHSWLFXdV5hXm9/6lOfsqipN1+jYkuWlhZQCxtiM4RAnx2TDKhNaSGnN9QLXKldIAqqbsq77747fv369bMtgVyPvFprtm/fnvgTkyiEg702BlvCBVevCv0yev1OntyZ2wT09vaGp+foeO0yoDoCfYYQ6LNjjgHVKRz06A31ArsbQtXiNvZVow19boNgNbt377ajR4/a7NnFfPfcc89daQmjcHrllVeuyUqPfKsU7LUxOMlTcZ566qnJwf+HbtKnm2/ZM888U/P5OpZqHU86Vuo9nlSlL51sK6xtNEIbquO1kSGjDVmRs+LBzeZYlMtZaROsLutr853GS4rabirN09ZIPm1q1XMHBwcrzqbXJBsFFIUPPafcgQMH7Ctf+YoCXvh9iRnhqKr8H/7hHy7Zs2fPVYaGqSXptttum33fffdteeyxx7ZYggQnntPd2xs2FLd9LF68uLDKhXvfdeWr0k3ZdDzpefUcT/r7Oi71ZyseuzoZp58elXQbsiKvCn3ekBXdBpyqcDdBBW9V5w8fPjz0gdJNbU7hKon6eLWqYrW/67z55ptDYX78+PHufdMtAT73uc9dqfYawnxrVK3XLP4pU6bck6Rq/c9//vPCiad73cr+/fsrPjd8PI10rOix2nHj3q9/hzas61gtUS99twGnWmDIjNOt+MOAyzLZMCVY6ww4SdW9Qgne9c1fddVVNmrUqMLovGqTO9xzgmBr8+fPr/gcvf/YsWOF4BEEtlM+PmnSpELvsVoWVNl88sknC+//7d/+7SeDdcQ8pKr8jTfeePv3v//9z/7mN78Za2iLINhfEHxNr9q+ffuRW265xfupHI888sj84HO+6MMf/rDddNNNhdfwJz7xiWEB37nkkksKx0HwuqnreKpUwQ8/xx1P+vPWrVvdSYKO4W8H638NKNL+irsMWbFZYyv1wzNnyAr1feYNCI00U1+uNtzFRe03d955Z+HtL3/5y5+dN2/efvPMN7/5zenLA6oqGyITXPnY8s///M8bZs2a5eVJndx2220rg4r5ZQrz7nUbB4V5td6Uqvd9xmhinLTWQnf6RuotUssNPdXZssqAoqFWmzjDfLk33njDuzvGBlcbbvriF794D2E+etu2bbtJm4x9bsEZO3bsm+YBHbuhUZY9RusNinJGmM+aQwT67NGl2W5D1g2NqOzEvPmRqELvzJ49+4B5RHPl1efNBJvO0YlTUAW/x9fxlmPGjClcPQi/buOiNp5Qm46qsrTQot+QOQr0ewxZowSXM2RVzko3pdFUG12211Sbu+++u+pfWLNmTeE5GptXjSZ16DnVNv4p/KxcubIwHSc82UY0vlImTJiwO6g6etFqoX75KVOmrGSufDzceEvN9zfPXHDBBYVWteeff/6Ujz3xxBOF6U1u+k0l7niqNcpy0aJFNY8nvV/P0QSd0AbZnHHDqazTiyFnyJo8c+izSRUcncHnDFmk6vxEd7leQV7BQm03lSZs6H2qAuo5Cu2VbN68uRDU9ZxqJwZbtmyxp59+urD5VY9h3/ve9wqPZ599thcbIoMTl8lq+9i/f39ixmimleb7+xbqgxPhJ/SoE9PyUK/Xud6nQF9+4ioK4u54cuMsy+l40smznqPwX4ner+do3OWOHTvCbXNLjJ/tWaWf7ZzQZdMhxlZmV84I9VmUs1JvpbtBzZw5xXuO6e1K86/1PnfX2AULKk9B07/D/V1Nx6lk2rTCfXgKk0DcjaRk586dQyP/rr766ictZgrzn/nMZ1bSL+8PhfrLL788vt2nZXQVadKkSYUk/9BDDw372PTpxcmrmuBUaepNPcfT1KlTh44nd3yWc+/X83TMLVmyJHzDqbWGLNH3XJX5XkNWHdKUG53NsVEy23qDdbchC7YFq6v8Zk/bt2+vGujDz9H862rcDG0XVipR241CTjjoqNKoNoX3vOc9B77zne/EGtoI836bOXPmEy+99NIa88C999571eOPP75cb99zzz3DTlJ1bFUL9M5Ix5Nrtal1POk5OmbdcRu+iVVAd4cbMKRdtxUzXJchq3RpfZICfY9xNo/ilRqF+gHjqk1a9VjpWK92B9hOC4+rnDdv3povf/nLT1hMCPPJ4FOov+WWW+4/duzYZIV5hXofhHrz9Y/rDGnVbcUWm25D1m0P1lwF+m5jRzSGGwjWViu+SJiClB4K8zkFeR8m24h6ibUhNu7qPGE+WXwJ9d/4xjeu/9GPflToWS6v0sdFYV6hvkTl+rwhDXQZJhcs9VotNKYZ4aSBYF032jjYcapu46w/tdQ7r1/61e5IKfVc7lfLQLgfuBK1Hrje+XJqs3HTbX7v936v+kiQiBHmk+fll1++QXdgjTvUf+lLX3ryhRdeuOHgwYOzH3jggcLG8ErceEu14VQz0vGkdjYdlyO1vYmO7VKVnqvvQPrl9Q82xQIZol/0bhxetekZup28QrhWtbF6mmSjO1Tq31NpMo4sX768sFFPI/zKKeC4zYTve9/7noir1SatYb48GI504pVECvU+TL+54YYbCi9knZxWGlWpE1e1lWlVGnMp9RxP+ph7TiXurrH6eK29MABSpzB+3o2tzBuA1FPAdtX3ajPlVSl0NA6v1nP07wo/P8xtuq0UYhR8NNlGrTZBoH7IYqA583/yJ3+yPE1hXkFOV2D0tQ/NJi/cb0DvC91VNBV8GGl52223PT99+vQteluva3fVyQmPrqx2I6rw8VRr7nz4ueVcBd+9XesKHIBUyesfp5f+0BOsKQYgtRTq7rrrLjt8+LBNmTLFvvWtb1Ws5KmVQWFbFV2dAFR7TlAhLXz81ltvrfjfu+iiiwrB4qabblLP89D7Naf7X//1XwtvX3XVVfcvXrz4eYvBBz/4wf9v3759Xt6JtBn6Xugkbf78+XbGGWfYRz/60aFqr+b+a++EvlcKeroKU60SnDSvvPLK7L179w7+0R/90X9bTILj4eUnn3zyI+++++745557TlV7Gzt2bOFj7jjQOEsdC+79ZX9/6HiqtlndHZfB1ayKbTc6psPHtp6zbt06A5B6utyeH1X6Q1+wbjcAqdXf3x971U4VSoUWVS3VahMEj1h6oD/84Q8v/tGPfuTdHUiboe+pqvHhkKcWjtCNhgr08W3bthXeViVXz9GYwzQYM2bMkYceemjpzTffvN9isn79+tmPPPJIYdSNgrub3hSnke5GCyAVJlnpxlKSNwCppdDnwyV49e0rzMfZavO5z33uyjSEeV1B0UmaVjjMK6yXh3lRq4a7i6/+7tq1awsrDb31x48fH3/bbbfdozYqi0m49cbdLTZuaWuxAnCKQ6VFDz2QBbffHv8FOG0OdCFHU23mzZvX8WqqNsE++OCDn7WEU1BTtb3SSZoL7ZUo6Id7sNWGpRMCH+5J0Crthfj4xz8ea1l89erV90+YMKHQRF9t03kn6fVRayoOgMQb+oHuAv2AAUgt9dZWo4Cnu0tW2yQr7g6U1Tbsyfr16+3++++vuPHPl6k2SZ9oo4CmIK9gXmlvg75PI7XRLFu2bNifVaHXfQnCm2iTSpNv5s+ff5PFKPjvP6BHveYrTb0RVfAV+KttkhWdmOl7VW2vg45FfbzWiUO1DbQAUmPol/uo0DtPGIDUqtZDr1F37hf/wYMHTwmKChSTJk0qvK2/r39PuR/84Af2T//0T4W3K/UPK3SoQn/66acf+eIXv7g0jup8kvvm3fQa3YirGn2f9L2sddLlaF669jKU099V33U9/w5f+dBPH3yf7ty9e/dN48ePL5zk6tFRy9nixcWXYbU7zG7evHnoqom+55VOthTm3dz7eo5tAKmkS7K9euO00DvzBiC1qvVKuwCvj1ebX+3+brV/x4UXXjj0dvmNpFSFVJiXGTNmbImr1SapYd5V5WuFedFJU71BXBX+Ss/V9zfp4y3VT/8Xf/EXX7AYBd+rDTp5VXivVKW/4IILCo/nn39+xb9/9tlnD709Z86cis+ZOnXq0NsjHdsAUmvAvRGu0PcZk26AVFGPtOufr7UpVu02+ni1AODmzdd6joK71mWXXTbs/a46r42w3/nOd2LpcZ4wYcL9SWy1UWV2pCAv+v5UuyNvNdWutoT/nUmu1t944433P/bYY1ssJl/+8pcXv/jii4WTSFXpw3eJ1XGiEycdK+HqfZibSV/ruHUTbEY6tkU3lAOQOvrBn9cbp4femQvWfAOQGgqE+mU/0iQTzbjW7PJqFOJHeo6CSfmt7RVcXI+vZs5/6EMfGrQOU6vNL37xi6ssQdwEm3o3qyqsNRq89Xy1UgXfl4of1/dcJ4THjh0rzLFPmv/6r/+aOWvWrB9deumlRywG73//+wd/8IMffPTEiRNj33zzzWFfZx0rmk9faSa9U8/dffXxeo5tLd17IMmtVABOoQ02f+3+EG65odEOSBH9oo97VKVrN1B1Po6NsElstVFvu1ps6p1Ook2wzc4ar9Z64yhU6qQwieMt4269Cb5eR9RipreffPLJYXeMjUMaJhkBGGZYbifQAylVK8yPdJfQeu4iOtJzwr3zGlNpMbjrrrsSE+YVnhWctdGx3t5nd4OoZul7qOlFI3HjLfWYJPv375/9uc99LrarM3/+53++Rb30eluTbWppxzFX6zk+jK4F0FZbw38IB3r9FMgbgFSoNsVEvdZqtag27s49R6vahAyFTv07dIv7apXHuKvzn/zkJ6/XGENLAFW/VZVvNDArzLfaRqHqfj0z093NqFSxT9JmywcffPDOuG44Fa7SK9Dv3r274vN0rKglR8dctUCuqTY65srHjjojHdv6nvlwczkAbTMQ/sNpZR/cbABSoVLLhsKCC4DV5s6vW7du6Hkan1eJ+nFl1KhRhc19lbjq/HnnnRfLLTO///3vf8oSQK0QCvONtrTo+zPSzPl6jdR6E6ZNus18vnHRZug//dM/jW02var0pc/DnnnmmYrPUdBXGHcbYStxIyrdY7l6jm0CPZAqVVtuTvkggGSqVulVyNfHFMaqjSbUpXk9T7/8q12mV/X/2muvtSuvvPKUqTYS3kT5mc985iHrMFXnkzDVRt8D3dSpmYq3JtC0S72tN07Sxls+++yzN8VZpQ+q5oWT2p07d1Z8ju7dMHPmTPvCF75Qde+Evtb6ule7AVi9xzajLIFUUF4fdjlvVNkTcsHq+BQKAO3VyKbKcmrB2LFjR6HdRsu1ACgIuMv2CvO1qn1uVGXw/J3r169fbh2WhDGV9Y6krMTdubfdqt1wqpakjLe85pprNvz4xz+OZS9HcAzMfuSRRwp3kCofYRn2y1/+0oLnVT32dEzr2NNjs1dI9L1qdhM1AG/0BWvYL4FRFZ6kQJ8zAInkqqeNUHBQCFegq2fjnSxYsKAQ6j/1qU8NCyjhO2HOmzdvTaf751Wdf/jhh5tLyh2gYKaqfLPtD1EGaH1uzbTT6DWjfv5q7SA+0B1kg/+3O2fNmhXLuJlFixZtePfdd8fr2HDHh+h40cmv2nG0XKvaSNSqpZOvRl9HOs6bPZEE4A3dWGJYb93oCk9Sc2zOACRSo7/gXRALB3k38lKP7o6Ue/bsKTxH1T2dMPzmN78pjOPTuv7664eCfbjdJgjXHR9g7nPvvL6eCvPNXj2RdmyErca13tS64VQlbrylXivVNm3GTWMs1UsfV5U++No8sXv37pvCbTc6Vh544AFN4yn8edy4cYWv4dy5cwuvEXfs6fui409Ve1ddV5+8uyFcI2NF1XZDoAcS75QW+UoV+p5grTUAiaQw5kK9goA2uSpwlffDKxTqhkRuko2eo4qf68OtRSMpn3/+eXvooYeGwojCvCqPqjAqtAR/fvr+++9faR3kc3Xe3Syqlc2k+l4p7EWtmdYbR59jMze66oQ4q/Ththt9bRXmw5tkdVL8+7//+xX3pJRTy5WO63DrjDY2l/fO63ug5+nYD7/uaLsBEk2/tE/5RVAp0GvHzEEDkDgK5QcPnjx8VS11bRDhoK/QpV/qriqvgKFA0MyGOY3c00i+8vGVcbTb+No7344wL24SStSabb1xfO6rnz9//v2PPvroFouBa7sJv2/27NmF469aX30tCvbhKzaqvIc3zerkT8e6vp+6quaOb/0dHe8AEqnPyvrn5bQKT9RveKbdAAlU3m5TKaCHw7wLmo3czKicqvLqy73ggguGvf9DH/rQTuug5cuXz05zmI+y1aacXhuttM606/85CkFV/HqLyZQpU4a1oN155512zz33NBXmRVfTwvcv0HEc3iztjunyY1sbawEk1rpK7zy9ypMvDVZsd9cD0JygIj6sP9v1watyp7cVCD/60Y/avn37hkJXK/3czvjx4ws3mVK4cFcILrzwwmfmzJlzwDrk85///OLXX399unlGX+NLLrnEWqHvm4La//7v/1qnvPTSS4XXRrOfu0KkNm7qXgb1brTuhOBrOOntt9/eGbxeO/badB5++OEFwX+/kN5Vldex2Kozzjij8HUW3R9CJ+y6P4SOdy3daMqNvHT0tk7CO/l6AtA2FUecjary5O5gNbYrCkDsRhpX6S7BR1VBVduNTh7UV687xP7d3/3dEs3htoht2rRp8qJFi+43zyhItaO1QWG+XTeRakR5q0YzfGy/mTlz5pPBCUtHR/IEJ9uLX3zxxcJ4G1XmNXu+3aq12FWifQ7VbkAFwFu62+PCSh84rcpfGLCygfUA/KZwXivMKxC6DbDlFbt2UaVeLQR6PHbs2OQgXCy2DtiwYcPIOwk7TF/fdoR5fd/iCPPS6A2nKnGTfXyye/fuKzt5o6mnnnpqsgvzCvJRhHnRce1+Boz0feOusUAiVT0LP63GX1pnABJjpNYZ9WCL+m2r3Um2HdQP7AKLxvQFldnIg9N//Md//L55ptHRj9W471tcVMVtdSKKXpvV7nAaB42w/OIXv3iDdcj69esLYd5NgoqKGx8qbsJNNfTRA4k0UO0DtQI91+KABFHFTeFPPbPlIVAVXtfyUO228O2kQK8qvXzrW9+KphxZonabffv2eVWhd3sXWtXJjbC1qNrbah+8WrHKR6fGadu2bVdaB6g6/8tf/rJw8qAw746LqOi1507Yy6/s6LWktjtNS3J3nwWQGAPBylf7YK1Ar2vztN0ACaGKm1o8FLzK79jpKnX1zJhvB4UWV6XftWtXpIHex3abZme4hyl8+TJaUJ9LO64U6HXpy+Sb/fv3z+5E280Pf/jDwutT1XltHO8Ed+KkKyvhqyv6OaC2O1e9b8eGeAAdU7NzplagV5jfbAASQb+c3R0gw5VQd3dXWbBggXWKCy+au62b6lhEfGu3cdNdWuXbHVcVxlttvdHXRnc19cVXv/rVyKe57dy5s/D6rOeGUe0SvkKkyTeOjn+9391ojkAPJMpArQ/WCvTSZwC85za4qX/2xIkTwyr0biNs+HmdoIqkm02/e/fuaRaBn/70p+N9a7dpR0hSq4SPE0ja0XoTbgmJW3BsRHai6QRfr8Lr86qrOjsJ2p1Uhk/C9NrU1CKNllWwZ2MskBgDVqPdRkYK9ANG2w3gvVoh0lXo9JxO98y6quT+/fsjmQ9/7733Rh7IGtVqoG9Xe0sU2vW56cTTh/5tTbuxCG3ZsmXodV9+47WozZkzp/AYPqEvx8ZYIDFGHFQzUqCv618CIF61fjG7Cl0cl9fdBsCo7uAanKx0ZGNjI1rtEdcNf3ya2V6uXa03rj0sTpp2ozsMW0SC6vxQj742onaSq77rikq115O+Dz7ezRfAKQZGekI9gZ5pN4Dnav1SdhW6OAN9VA4cOODdnWFbvQlT+YZmH7Wj9UYbh32o0m/bti2ypL1v377z9Rj1cVCJ65WXcB99OfroAe/12QjtNlJPoB+wOs4MAMRnx44dFd+vcOiCl7sEnxYaV3nw4MHOlj0jpjuqJkE7Wm98qdK/+OKLke/B0B2U4+BO9N30q3J6X62WHABeqKtTpp5AL0y7ATxW7Zfynj17ht6OoxK3e/fuwuPYsWPftDZ79NFHY6/OV6owN9suE75XQBK0o/XGhyr9r371q8habi655JK8ezu4mmSd5o75Wq+rJL3mgAzKW51F9XoDfZ+xORbwknplq90sylXo4tgQK0ePHi08nnvuuYPWZs8++2ys0200qWXbtm2nvL+ZgOTzRtha1HrTCr0m4554oz76Rx55JJIdqx/4wAf2u7fjqNK7QB9uvwnzbYwogFPU/Yuh3kCvMM/mWMBDCvTVwroLl3FVQV2F/pxzzml7eXLv3r2xVug1x7vS3oVmWhh8uSNso9pxItLJeyNUEwT6SE4Og9fHkdNPP72Q5N2x0Enu9anvU7U9D76MEAVQ0UC9T6w30AubYwEP1eqNj3NDrCqSrip54YUXtj3Qv/7667H1z4dneJeHen3NG9kwqrCldpukUn92K33Y4ZsgxWXXrl2RvZbOOOOMwms/jpab8M+GWieMTLoBvNRndWyGdRoJ9APG5ljAO7V+Gbtf4nH8wt6/f6jbwH7nd36nrWlGN5RSq4TFJHxDnkp3hd28uf5tR0nZCFtLq3e1jbtK/MYbb0QyVlWCq2OF0nz4eOiUcKtNtY3zwqQbwEsNdcY0EugleU2eQMqFfxlrhvncuXNt3brizwEX6OOYcOP652XevHltTTMPPfRQrO024TaRSi0j9VbcfZ85Xy9tjtX/S7PivsHRa6+9Ftnr6T3veU/hMtWrr75qcXCB3s2j1wmkVvgqEhV6wDu67DnQyF9oNNAPWAPlfwDRKu+N1xhAtT+4x2rP6wTXMxwEmijabWKrzkv4JKrSHgYF3JHaUJIyc75ear1p9uSk1j6QTnj77bcjez0F/1+F138cFXpxr1W9HnWir9emljvpFwI94J2GKySNBvqm/iMAolF+qdy1gmjDZrgCF1cPvZx55pltD/Q/+9nPYuufr3R3zUrz1EeqWCd1I2w1er21MvWmUutSp0Q56eb888+PrYde3GtV3x93JUSv4fBVEQI94JW8FfvnG9JMoO8zRlgCXiivavb399vg4GCh8ut6ZuP6Ze0CTBQz6F999dXIep5HUunkSCdQ5WrNld+0aVOiN8JW00rrTdx93Hv37h1nEbj44ouHknwcoyvd8a8KvU74Dx48WPgZEf56p+2mc0DCNdXe3kygV5inSg94oFIIClfkwn/uNBfoJ0yY0PbS5OHDhyOpptaj2tc8vFHWqVaxbnUTqc+abb2JO1Tu3LkzkpPEoEI/dEIbR5U+PLpSVAQoLwTEfXMvAEPy1kR1XpoJ9KLGT6r0QMxq/SJ2Pdxx/bJ+881ijnGbAtOi2glSpZt7VapYp63VplyzrTdxV+iDk8QJFoGrr756KMXH0Uc/derUoberve4qhXwAsWh6+EyzgZ4qPeAB/RKu9kvaVejjCkquGhnFTaX+53/+J7aWm3BAClOFvtL4xXDFWo/6c9rpREZtRY2otDehk375y19G9ppyG8PjbLmRSvdH0Pv0/SLQA7HLW5PVeWk20AtVeiBmCpDTpk0bNrHCcb+84/pFHeVNpeJU6+upKn35x/V9WLRoUeGx1buqJonaihq5wZakNVSOHj26cDDE0XIT/ppWOvnXmFuNsUzzVSMgIVr6BdFKoKdKD8RMk0EU6k+cOHHKx1yYqlZRjlI4uEyaNKntm2KDk4XYKvS1QqeqoZUm3qj9SSdeadwIW40CYqMnMHG23QSvqchGV44ZM+ZI6b9hcah25UM/I9yVJSbdALHKWwvVeRltrVGVfkmwuFYHxGDjxo1VP7Zq1apCkIxjHKDrn5dzzjnnqKXISFXkJUuWVJxw02i1Og00bUk33qq0Ydg3R48ejaSHXsaPH78/+P5fFj4uOkk/C7Zu3XrK90Gv5bVr1xbe1hWVNN0XAUiYli/ftlKhF/2GSu+4BiDBFOTj6teO8i6xvguHJDQ20SetVWK3MTx8XHSSfhYo1Nc6GaWHHohN3lqszkurgd5Kn8R2A9BRPoefuCqRvlAlNAlV6U7QVaJmZ9OnhQv0cd1cqh5xtOYBKGjL5qp2BHqhSg90mM8VNVeJdNM9skhVeqqeRc3Opk+Lc889t3CVKusnugBOMWBtqM5LuwL9QGkB6BCfw6Kbtz1mzJjUJZh6g6muoFSaTZ9Fzc6mR+ewKRaIRdt+MLYr0As/rQEMM3r06Eiaht3UkDg0srlVE2+y1npTbZ68Zp1r1RLnxuHzzz8/sr0e48ePLxwHPrfcAOi4Piv2z7dFOwN93trUBwRgZD5X1KIOLmPHjo0t0O/Zs6eh52etSr9t2zbr7++veAVppA2yaZ0E9N73vtf7uyVToQc6Km9tzsztDPSimVd5AwArVCZTV5JstBdcFfpKs+nTSCcvCoZalSb9aINspZugOXH22U+YMCGy0P3+979/qPpPlR6AFcN83tqo3YFe5RVab4AO8LmHPurNf0HFM7ZU1EzodEE3zcpvqqVRiZVOZGqNUo2zQn/22Wd7X0UHkAp5a9NG2LB2B3oZMDbIApFLwpSbs846K5K+5CB8xTbbXlXmRmVhNr1OWspfk5XepxOialX6Zr627TJ9+vSOnCTGdbfYkTCRCeiY6ywCUQR6UZU+e7dFBNAR48aNiy0VKZA2U0lOc+tNT09PYZVTSKz0/1zpjqRxhnm58MILI7usdPXVVw+dLBDogUxre6uNE1WgzxsbZIHMirrlZvLkybE2Im/evNmaUalinQa1Nv4uWbLklP9nhffyiTeNbjZut+uvv57mdgBRyger1yISVaAXlWAGDEDmuJabM888M5JyZBAQY51v32w1OY2tNyPtD6hWpS9vuxlppGWUNAZ11qxZ9NADiFIkrTZOlIFeaL0BMiyqQH/NNdfkLUZ9fX3WLG0WTctsegX5WptcHVXpy23atGlY61Kcgf6cc84ZtIidfvrphWPB3XQNQKZE1mrjRB3o88FaZgDQRkEgjjUVKYi2EkBVpU9D682qVavqep7+X8tPYvQ1dFc6tC8hzh76M844I/IrPqNHj+YKAJBNeYuw1caJOtBLX7DWGQC0yQc+8IEjcc+437p1qzVLle2k33BKm2B1taFelZ67Y8eOwmOc1Xm59NJLdxoAtJ8uQ0baauN0ItCLGijzBiATOtFWcN555+22GFWa1NII9ZUntfWmmROSa6+99pT3uap8s5uM22Xu3LmRt9wAyKTIW22cTgV6naEsMgBok0suuSTWqmqrbTeS1NYb9cQ3eqOsrq6uU96nQK92G/XTx+nTn/50rCeHAFKpz4oDYjqiU4FeVIqhnx7IkPe+972R9SZffvnlsVdV7767tem8SWy9Kb8jbKN/N0yBftq0aRYntW4x4QZAm+Wtw+PbOxnoRWcq8ZZiAHTMhAkTjlpEbr311tirqqrQt1qlT1rrTX9/vzXLx6sRcbduAUgl9c3nrYM6HehFoyzzBgAt0MbYSZMmJb5KL0lpvdFG2EZbbXz3wQ9+8BlDU3c/BlCRulHy1mFxBHq345efHkAL+AVcaOF43mLWjip9Elpv2vE5+via/fCHP0yF3vh5ArTJGutg33xYHIFe8kY/PdASfgGbzZ8/34vqajuq9Gq9qbRx1Bcj3RG2HtoA6xP1z//lX/4lE24AtIP2ija3wagN4gr00mcd3jAAoLP27t072SKkPvoxY8bEvqFRFfo1a9ZYq9R64yMFebXbtCLuWfOVXHTRRbFf4fEFBQKgJXmLeZpjnIFeeo2bTgFN4RdwsY/+3HPP9aJlore3t+UKtCr0+vf4ppWNsI67iZRPrr322qcNBfw8AZrmWsnzFqO4A73o8kR89/wGEsrnX8Djx4+3TglC2RPmAX0/7rjjDmuVWlt8ar1pZuZ8Ja3eiKvddGXn29/+NhtiAbTKi2EvPgR6d9OpvAGom2/9yGETJkywTlm+fPkzPrTdSLtab1atWmU+aGXmfJi+Lr69XqdPn051PsTnnyeAx9Q67sU4dh8CveTNg8sVQJJwibzIp7YbUQDWDZNaobn07QjSrWrHRlhpx6bhdqPdZrg9e/YYgIboB1uvecKXQC95K1bqSSlAHQj0J91xxx0PmUcWLVrUcsWzXWG6WQsXLmx5I6z09fV5tyFW02063W5z7NixyaX/tgFIPF2K7TWP+BToRWWtWHcJA0ni+2Xyt956qyPpZeXKlc/70nYj+r5cd911LZ106UZTcU69aUfbj74OPlbn45xu08l2tEbQcgPUTcNc4r+EWsa3QC8DVtxgAGAEvlbpx40bV3jsVKCXK6+8cot5pB2hPq7Wm3ZdHWjHlYoofO1rX/Pqio4PCPRAXVR47jEP+Rjopc8I9cCIfP0lHEcVctmyZV5MuwlTL32rob7TrTf6b7VjdKYm/rS6lyAKF1xwwc5PfOIT+w3D0MIHjEg/0K4zT/ka6KXPCPVATb5vZDt27FjHKvQ333zzgSlTpnh3oyCF2rlz5zZ98tXp1hudQLRKYV698z76yEc+0vETv6eeemroBmu+9tD7ePIFeMSFeW/PfH0O9NJnhHqgKl8r9JMnF/NLEOg7Wqr3bXOs49pvmv1+dar1RptgW90I63OY12bYhx9+ONYrOT4GeqrzQE3eh3nxPdBLnxHqgYroex1Om2N9rNKLvleq1K9b19zNsaNuvdGVgFaq8wqF+v/zNczLxz72sQ0Wg1dffdXPnbAlVOeBqhIR5iUJgV76jFAPnML3X8THjx8fZx3ma5VeFHpVAW9m8kvUrTet3BHWXYHw+fUYZ3U++L4PleXd1SufHD582ACcIjFhXpIS6KXPmFMPDOPrpXIXWt5+++2OVyZ9rtI72nQ6bdq0hq+wRNV608pG2CSEeYmrOp8EVOiBU+hSamLCvCQp0Itur8sdZYESBXqf227eeuutWMqRPlfpHX3fFOobrdZH0XqzceNGa8amTZta2vDbKXH3zu/bt+/80udhPiLQA8PoplE9lrACctICvbhLIHkD4OtoQItTEqr0jirjjWyYbXfrjVqAurq6rFE6EdGc+SRsqIy7On/06NHClSpfAz17cYAhqrB4d9OoeiQx0EveCPVAgc+jK995553YEsyXvvSlBywhBgYGCqG+3g2zar1ZuHChtUqV/kY3wirAK8i3Y1Z9J0yaNGkw7sk27gZrcZ/oVkOFHihYFqxeS6ikBnrJB2uuFdtwgMzy8Zex66F/9913Ywv0y5Yt2z137lyv7h5bi6qkqpZr7GM9FVNV6VWtb0Wj7Ttupr5abZLivvvuW2kx6+T9GBpFmAcKrTXao7naEizJgV7cN6HxkRFASqi665tx404Ot/nxj38cW1myr69vw5gxY45Ygmjso6r1I4XmVltvFOQbmTm/Zs2almbpx2HmzJlP+HBXWBfozz//fPON7zenAyKWt5QUh5Me6J1eK14qATJHAcu3PuYJE/wYu/2BD3zgSFDxXmMJo++p2lqCqww1n6e2m2Zbb/r7++t6nmux0XSdJN2ASBthv/a1r3mxOfrIkSOFk1pfjoswHwsCQIcMWIrat9MS6EWXSnSWlTcgY3yrmoZnbf/iF7+IdfD2t7/97aeTskG23OrVq0ccb9lM640q8/W02ijsJa3FxtFGWB+q82E+boql5QYZpUJPqvZipinQi5uAw08oZMrWrVvNNy687N27N/Y76dx7771rktZ644w03rLRO7zWsxFWlXhdHUhai42jVpu4N8KGufGtPt5UikCPjNFlRl36TOQkm1rSFuglb8VKPX31yAwffym79gI34SNON99884Ektt6E1boZldphNPmmHiNthHVVeV0dSCKfWm2cY8eOFZK8b1Nu9HMjSW1UQIvyViz6JnrzazVpDPROb7DuMFpwkAE+9sG6amQQGLwoS6r1JklTbypRmFfY1gbVcvW03mjefLWNsK5XPqlVeeerX/3qSp9abYKvJRNugPhpJrCKval90ac50EufFc/GBgxIMR83xrpAH1QnvdkJqKk3quBagun7rIp8+XjLelppqt0RVicIqv4nsVc+7JprrtmgcaXmkZ/+9KdDZXnfWm58bNUD2sy12PRYwu782qi0B3rJWzHU04KDVNu8ebP5xPXQHzlyxJsUo6k369evX57UfvowN94yfDOqWq03lVpt3A2tkjbBppKpU6c+/eMf/zjWO8JWEnxdhyr0vgV6Jtwg5QasWJVPZYtNuSwEeqc3WNOMFhyklG+Xz114cRsCfZGGfnrH3YxKG1hdIK/UeqMgr9Du6Lmq8CvMpyHU6arL3//933t5Z+B9+/YVhs/7Fub12klyaxUwAhVxUzXFZiRZCvSSt2Kop1qP1PGtXcJtin3nnXe86yFWP/2HPvQh76q5zdIGVvXWK6BVar3RnxXyFeQ1LUftNarwp4HCfPD/8hXfRlQ6r7/+eqHlxrcNsVTnkVKqbKkq32sZk7VA7/Qa1XqkjG8VN9fe8e67746P826x1fzwhz/ckPRNsmHh8ZaqxrsqvbsjrAvympaTpskmvm2CLffrX/+6UJr3bQY9/fNIGf1QU7E21Rtfa8lqoJe8Ua1HyvjURx++K+Ybb7wxzjz03HPP3Z/Um05Vo8A+atSoodCuoK8/py3Iy/z58+/3bRNsOXeXWPrngcgMWEar8mFZDvROrxWD/ToDEs6nX9IKMK4q+bOf/Wy6eerxxx9fGVSzvQ6FOJUm2jz66KPeX2Hx8aZS2m9D/zxSwE2wyVSvfDUE+qK8FUcaMbceieZb1c2nm0tVo8k3W7du/QqhPjkU5n2caFOJu6nU9On+nNPSboMU0GADFWMzMcGmHgT64frsZBtO3oCEUUuFT6He9dHv37/f2wq9KNQ/8MADK5M+oz4LkhTmt2zZMvS696mHPun3G0CmDVixvUZju7jNcQiBvrJeK17CoQ0HieNTH72b7OHTLPpqNM7yJz/5yRIq9f5KUpiXV155Zeh1rw3JPlCrDf3zSKABK+YyLW5xXAGBvrq8Fdtw6K9Hovg0jtC3yR4jof3GX9oAm6Qw7yvCPBImb8V2aAX5AUNVBPqR5Y1gjwTxqe1m7969ljQK9QcPHlyappGWSaa7+t5yyy1rkrABttzFF1881MIVXKUyH4TvLAx4LDyGss8wIgJ9/fJGsEdC+NJ2873vfU831rFzzjkncRVvjbRM082nkkh7Gr7+9a9/5eGHH37CEig4OSzMx3/rrbfs5z//ucWNdhskgAvyylq9Rp983Qj0jcsbwR6e86XtRuPxXn75ZZsxY0YiZ73r5lM33njj/aoSGzpq0qRJu3UHWN/nzNeSy+WOvOc979HeDC8myxDm4TH1xau1ZpIR5JtCoG9e3oYH+7wBnvCh7UZXCfR5qEIfBOIfWkI99thjWx566KElTMDpHLU7Ba/fr/h8B9h6Ba//548ePerFZBnabeChASv2x9Na0yICfevyVgz2ejEyxx7eiLvtJhRgBj772c8+GTy+YwmlCTjr169fPnPmzES2fiSFroRo86vanbSXwZLvrT179vyD3tAJtq5YxYV2G3hE1XfNkXdTawYMLRtliEK3FUP+7QbEZOLEiTY4OFh47DSFh9CYPp3o9p04cWJK8HiFJVwQOG968sknFx8/fjxZI3w8pxab++6772/TUJUP2T5q1KhXgsfBYOV6enps7dq1Fodly5bZ6tXcgwex0hmtKk16IdJS02YE+mjlrBjulwSry4AO0y/wJUuWWKcpzJduLa9/DCX7INRfEzycawn33e9+d/LnP//5Jfv27ZttaJk2H2u/gqXLK0GYdyX5nmAVknx/f791d3dbp4WOSaCTFNzV66VLtgOGyNByE628FXvC5pYWvfboqDj6du++++5wcLi77MMKOIltvXHUgrN3796vaMMsvfXNmzJlys5/+Id/WJrCMP9WsHaF/txnpTBzxx13FPaWdJLa7wjz6LABK16dVUFnqRHmI0eFPh7dVqzYXGvFKj4QmU5WBLXpTm0FJeqRXFr+nLS03jiq1i9fvnzxyy+/fIOhLuqVv+GGGzYkcbZ8nVyrTZiu0vYHa2JXV1fhuOxUO9yiRYu82JSL1BuwYktNn9FS03EE+vh1B2uhFcM9bTlou6VLl9qqVassamVhPm/Fq1IVf6gHoV6v9YstRYKv8fS/+Zu/WX7kyJHJhqo0waavr29DSja9VhJutSmnE9zCwdipUF+2nwVoJ/1815ni1tIjIT5GBHq/5KwY8BeUHju/mxGpE/XmWLUPqM0mtOEub8XJBflqfycI9GOseBJ7pqXMJz/5yeu///3vf4pgP5zaa/7xH/9xTco2vZZTq81PgkB/tMZzeoO1Qm/kcrlCqNdjVNTi48t9KZAKA1YM8ANGG41XCPR+UxWz24rBR48EfDSlt7fXVqxYYe2moFDWMz8QrEVWR6UmCPXaHHuNpRTBvkhBPgiVG1auXJnIm4s16D+CMH+4jucNVepFV7Z0fLY72FOdRxvoalM4wFOF9xSBPlkU8HNWDPdzSn8m5GNE7arSqxqvWdraZKcwX7a5Txtge60BQaifHjzMshTLYrBXj/z06dOfvvnmm5/MSJCXXUGYf7mB5+es2FOfc+9YuHBhYc2ZM6fQktMqnWzrZB6oU96KoX2HFYO8FgE+IQj0yedCvh7nhN4GhlGYbyXQK7xXmc4xYC3cVC0I9dogO8VSbvny5bO/+93vXp/mzbMK8ldeeeWWe++9d0uKe+Qr2ReE+WetOT1WbMHJlX+g1Yp9jWMW2ZYvrR2lR8J7ChDo0ytXtqaWHieWVs6A5rkbhPRZi6NY09xPX4mm4vzLv/zLZf/+7/++4ODBg4nvh1CIf9/73rdz8eLFWzJUjQ+rp2++Hj3G/im07lBp5UvrcOhttwjuKUSgz7aJZcvK3gbKKcjnrc2/EIJQP86KoX60ZYjC/X333XfVf/7nf96QpHCvEH/uuecOXnvttU8EVx6ezlg1Pkz3VNjahjBfzrVT5gyozAV3yZc9IoMI9AC8kLb59I1ylftnnnnm6l/96leXHT9+fLx5RDfQmjFjxtPz589/5tZbb92d4RAf9mwQ5vcZAMSMQA/AG0GonxE8zDQU5to//vjjl+Xz+WkHDhyY3skKvqvAX3jhhbuvuOKKnZ///OefJ8CfotFNsAAQGQI9AK8EoV5Tb6YbTqGQ/9JLL03+2c9+Nu3VV1+94PDhw5OPHTs2/s0335zcaEVfFfexY8ceOeussw6cc845+ydPnnxg6tSpB/7gD/5gMOWz4tthdxDmXzAA8ASBHoB3sjL5pt1++tOfjt+1a9cEvf3KK6+MD0L/+PPPP//IxRdfPFRdnzFjxptU21vSykQbAIgEgR6Ad0qTb3TTqbMM8MevrTjR5rgBgEdOMwDwTCkwqQr6lgF+0GvxWcI8AB9RoQfgrdI4S1XqMzGjHt5q16x5AIgEgR6A1wj1iBlhHoD3CPQAvEeoR0wI8wASgUAPIBEI9egwwjyAxCDQA0gMQj06hDAPIFEI9AASpRTqNaeekZaIgkZTPkuYB5AkBHoAiVOaU99l3HwK7fW6MZoSQAIR6AEkVhDsZwUP0w1o3e4gyL9gAJBABHoAiRaE+hnBw0wDmrcrCPMvGwAkFIEeQOIFoV6tN3ODNdqA+r0TrJ1BmH/FACDBCPQAUoEJOGiQJtmoX/6wAUDCEegBpEYp1Kuvns2yqIXNrwBShUAPIHXoq0cN9MsDSB0CPYBUCkL9uVbsq6cFB6IWm21BmH/dACBlCPQAUqvUgqNq/cWGLNsXrO202ABIKwI9gNQLgr0C/WXGFJys0RSbl4IgP2gAkGIEegCZwIbZzFFrjaryRw0AUo5ADyBTStV6bZiltz6dqMoDyBwCPYDMobc+tXSDqBfolQeQNQR6AJkVBPuzg4crjGp90v3aind8ZYINgEwi0APIPNpwEov2GgAwAj0AFJTacC4ybkiVBAryvwjWIO01AECgB4Bh6K/33m4r3u2VIA8AJQR6AKiAYO8dbXjdxRhKADgVgR4AaiDYx4rWGgCoA4EeAOpQCva6KdV0Y/Ns1AjyANAAAj0ANKg0FUfrXEM7aezk7iDE7zMAQN0I9ADQpFA7znlG1b5Zqsb/V7D2MUceAJpDoAeANgjCvdpxVLWfYhiJQvzhYL0crF/TVgMArSHQA0AbBcF+jBVDvVsociFe02r2EeIBoH0I9AAQkVK4V5+9gn0W23IU4tUPvzdYrxPiASAaBHoA6JAg4J9tJwO+3h5t6eKq8ArxCvCHDQAQOQI9AMQkFPC1tMH2LEsW3eTpDSuGeAI8AMSEQA8Anii16CjUK+ifWXr0oZKv4P6WFYO7e2QzKwB4gkAPAJ4rBX1V8M8sPYb/bKXHsdZ48D9aenyn9LZ7PG4nQ/xRgjsA+I1ADwApUzoBGFPlw8cJ6ACQLv8P1w6T1l3lZpgAAAAASUVORK5CYII=";
|
|
24233
24233
|
|
|
24234
|
-
var dist$
|
|
24234
|
+
var dist$2 = {};
|
|
24235
24235
|
|
|
24236
24236
|
var addresses = {};
|
|
24237
24237
|
|
|
@@ -24320,11 +24320,11 @@ function requireAddresses () {
|
|
|
24320
24320
|
return addresses;
|
|
24321
24321
|
}
|
|
24322
24322
|
|
|
24323
|
-
var hasRequiredDist$
|
|
24323
|
+
var hasRequiredDist$2;
|
|
24324
24324
|
|
|
24325
|
-
function requireDist$
|
|
24326
|
-
if (hasRequiredDist$
|
|
24327
|
-
hasRequiredDist$
|
|
24325
|
+
function requireDist$2 () {
|
|
24326
|
+
if (hasRequiredDist$2) return dist$2;
|
|
24327
|
+
hasRequiredDist$2 = 1;
|
|
24328
24328
|
(function (exports) {
|
|
24329
24329
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24330
24330
|
exports.getEnsContracts = exports.getL2NamespaceContracts = exports.getL1NamespaceContracts = void 0;
|
|
@@ -24332,11 +24332,11 @@ function requireDist$1 () {
|
|
|
24332
24332
|
Object.defineProperty(exports, "getL1NamespaceContracts", { enumerable: true, get: function () { return addresses_1.getL1NamespaceContracts; } });
|
|
24333
24333
|
Object.defineProperty(exports, "getL2NamespaceContracts", { enumerable: true, get: function () { return addresses_1.getL2NamespaceContracts; } });
|
|
24334
24334
|
Object.defineProperty(exports, "getEnsContracts", { enumerable: true, get: function () { return addresses_1.getEnsContracts; } });
|
|
24335
|
-
} (dist$
|
|
24336
|
-
return dist$
|
|
24335
|
+
} (dist$2));
|
|
24336
|
+
return dist$2;
|
|
24337
24337
|
}
|
|
24338
24338
|
|
|
24339
|
-
var distExports$
|
|
24339
|
+
var distExports$2 = requireDist$2();
|
|
24340
24340
|
|
|
24341
24341
|
var ETH_REGISTRAR_CONTOLLER = [
|
|
24342
24342
|
{
|
|
@@ -26058,13 +26058,13 @@ const useRegisterENS = ({ isTestnet }) => {
|
|
|
26058
26058
|
};
|
|
26059
26059
|
};
|
|
26060
26060
|
const getEthController = () => {
|
|
26061
|
-
return distExports$
|
|
26061
|
+
return distExports$2.getEnsContracts(isTestnet).ethRegistrarController;
|
|
26062
26062
|
};
|
|
26063
26063
|
const getEnsRegistry = () => {
|
|
26064
|
-
return distExports$
|
|
26064
|
+
return distExports$2.getEnsContracts(isTestnet).ensRegistry;
|
|
26065
26065
|
};
|
|
26066
26066
|
const getPublicResolver = () => {
|
|
26067
|
-
return distExports$
|
|
26067
|
+
return distExports$2.getEnsContracts(isTestnet).publicResolver;
|
|
26068
26068
|
};
|
|
26069
26069
|
const getRegReferrer = (request) => {
|
|
26070
26070
|
const referrerAddress = request.referrer && isAddress$1(request.referrer) ? request.referrer : NAMESPACE_REFERRER_ADDRESS;
|
|
@@ -26201,10 +26201,10 @@ const useENSResolver = ({
|
|
|
26201
26201
|
}
|
|
26202
26202
|
};
|
|
26203
26203
|
const getEnsRegistry = () => {
|
|
26204
|
-
return distExports$
|
|
26204
|
+
return distExports$2.getEnsContracts(isTestnet).ensRegistry;
|
|
26205
26205
|
};
|
|
26206
26206
|
const getEnsPublicResolver = () => {
|
|
26207
|
-
return distExports$
|
|
26207
|
+
return distExports$2.getEnsContracts(isTestnet).publicResolver;
|
|
26208
26208
|
};
|
|
26209
26209
|
return {
|
|
26210
26210
|
getResolverAddress,
|
|
@@ -26213,7 +26213,7 @@ const useENSResolver = ({
|
|
|
26213
26213
|
};
|
|
26214
26214
|
};
|
|
26215
26215
|
|
|
26216
|
-
var dist = {};
|
|
26216
|
+
var dist$1 = {};
|
|
26217
26217
|
|
|
26218
26218
|
var mintClient = {};
|
|
26219
26219
|
|
|
@@ -30157,17 +30157,17 @@ function requireEnv () {
|
|
|
30157
30157
|
return env;
|
|
30158
30158
|
}
|
|
30159
30159
|
|
|
30160
|
-
var chains = {};
|
|
30160
|
+
var chains$1 = {};
|
|
30161
30161
|
|
|
30162
|
-
var hasRequiredChains;
|
|
30162
|
+
var hasRequiredChains$1;
|
|
30163
30163
|
|
|
30164
|
-
function requireChains () {
|
|
30165
|
-
if (hasRequiredChains) return chains;
|
|
30166
|
-
hasRequiredChains = 1;
|
|
30164
|
+
function requireChains$1 () {
|
|
30165
|
+
if (hasRequiredChains$1) return chains$1;
|
|
30166
|
+
hasRequiredChains$1 = 1;
|
|
30167
30167
|
(function (exports) {
|
|
30168
30168
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30169
30169
|
exports.getChainName = exports.getChain = exports.getChainId = exports.ListingChain = void 0;
|
|
30170
|
-
const chains_1 = chains$
|
|
30170
|
+
const chains_1 = chains$2;
|
|
30171
30171
|
/**
|
|
30172
30172
|
* Supported networks for listing/minting operations.
|
|
30173
30173
|
*/
|
|
@@ -30208,8 +30208,8 @@ function requireChains () {
|
|
|
30208
30208
|
throw new Error("Unsupported chain provided: " + chainId);
|
|
30209
30209
|
};
|
|
30210
30210
|
exports.getChainName = getChainName;
|
|
30211
|
-
} (chains));
|
|
30212
|
-
return chains;
|
|
30211
|
+
} (chains$1));
|
|
30212
|
+
return chains$1;
|
|
30213
30213
|
}
|
|
30214
30214
|
|
|
30215
30215
|
var abi = {};
|
|
@@ -31674,7 +31674,7 @@ function requireAbi () {
|
|
|
31674
31674
|
return abi;
|
|
31675
31675
|
}
|
|
31676
31676
|
|
|
31677
|
-
var utils$
|
|
31677
|
+
var utils$4 = {};
|
|
31678
31678
|
|
|
31679
31679
|
var cjs = {};
|
|
31680
31680
|
|
|
@@ -31690,7 +31690,7 @@ var sha2 = {};
|
|
|
31690
31690
|
|
|
31691
31691
|
var _md = {};
|
|
31692
31692
|
|
|
31693
|
-
var utils$
|
|
31693
|
+
var utils$3 = {};
|
|
31694
31694
|
|
|
31695
31695
|
var crypto = {};
|
|
31696
31696
|
|
|
@@ -31706,11 +31706,11 @@ function requireCrypto () {
|
|
|
31706
31706
|
return crypto;
|
|
31707
31707
|
}
|
|
31708
31708
|
|
|
31709
|
-
var hasRequiredUtils$
|
|
31709
|
+
var hasRequiredUtils$4;
|
|
31710
31710
|
|
|
31711
|
-
function requireUtils$
|
|
31712
|
-
if (hasRequiredUtils$
|
|
31713
|
-
hasRequiredUtils$
|
|
31711
|
+
function requireUtils$4 () {
|
|
31712
|
+
if (hasRequiredUtils$4) return utils$3;
|
|
31713
|
+
hasRequiredUtils$4 = 1;
|
|
31714
31714
|
(function (exports) {
|
|
31715
31715
|
/**
|
|
31716
31716
|
* Utilities for hex, bytes, CSPRNG.
|
|
@@ -32024,8 +32024,8 @@ function requireUtils$3 () {
|
|
|
32024
32024
|
throw new Error('crypto.getRandomValues must be defined');
|
|
32025
32025
|
}
|
|
32026
32026
|
|
|
32027
|
-
} (utils$
|
|
32028
|
-
return utils$
|
|
32027
|
+
} (utils$3));
|
|
32028
|
+
return utils$3;
|
|
32029
32029
|
}
|
|
32030
32030
|
|
|
32031
32031
|
var hasRequired_md;
|
|
@@ -32042,7 +32042,7 @@ function require_md () {
|
|
|
32042
32042
|
* Internal Merkle-Damgard hash utils.
|
|
32043
32043
|
* @module
|
|
32044
32044
|
*/
|
|
32045
|
-
const utils_ts_1 = /*@__PURE__*/ requireUtils$
|
|
32045
|
+
const utils_ts_1 = /*@__PURE__*/ requireUtils$4();
|
|
32046
32046
|
/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */
|
|
32047
32047
|
function setBigUint64(view, byteOffset, value, isLE) {
|
|
32048
32048
|
if (typeof view.setBigUint64 === 'function')
|
|
@@ -32312,7 +32312,7 @@ function requireSha2 () {
|
|
|
32312
32312
|
*/
|
|
32313
32313
|
const _md_ts_1 = require_md();
|
|
32314
32314
|
const u64 = require_u64();
|
|
32315
|
-
const utils_ts_1 = /*@__PURE__*/ requireUtils$
|
|
32315
|
+
const utils_ts_1 = /*@__PURE__*/ requireUtils$4();
|
|
32316
32316
|
/**
|
|
32317
32317
|
* Round constants:
|
|
32318
32318
|
* First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)
|
|
@@ -32705,7 +32705,7 @@ function requireHmac () {
|
|
|
32705
32705
|
* HMAC: RFC2104 message authentication code.
|
|
32706
32706
|
* @module
|
|
32707
32707
|
*/
|
|
32708
|
-
const utils_ts_1 = /*@__PURE__*/ requireUtils$
|
|
32708
|
+
const utils_ts_1 = /*@__PURE__*/ requireUtils$4();
|
|
32709
32709
|
class HMAC extends utils_ts_1.Hash {
|
|
32710
32710
|
constructor(hash, _key) {
|
|
32711
32711
|
super();
|
|
@@ -32793,13 +32793,13 @@ function requireHmac () {
|
|
|
32793
32793
|
return hmac;
|
|
32794
32794
|
}
|
|
32795
32795
|
|
|
32796
|
-
var utils$
|
|
32796
|
+
var utils$2 = {};
|
|
32797
32797
|
|
|
32798
|
-
var hasRequiredUtils$
|
|
32798
|
+
var hasRequiredUtils$3;
|
|
32799
32799
|
|
|
32800
|
-
function requireUtils$
|
|
32801
|
-
if (hasRequiredUtils$
|
|
32802
|
-
hasRequiredUtils$
|
|
32800
|
+
function requireUtils$3 () {
|
|
32801
|
+
if (hasRequiredUtils$3) return utils$2;
|
|
32802
|
+
hasRequiredUtils$3 = 1;
|
|
32803
32803
|
(function (exports) {
|
|
32804
32804
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32805
32805
|
exports.notImplemented = exports.bitMask = exports.utf8ToBytes = exports.randomBytes = exports.isBytes = exports.hexToBytes = exports.concatBytes = exports.bytesToUtf8 = exports.bytesToHex = exports.anumber = exports.abytes = void 0;
|
|
@@ -32832,8 +32832,8 @@ function requireUtils$2 () {
|
|
|
32832
32832
|
* @module
|
|
32833
32833
|
*/
|
|
32834
32834
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
32835
|
-
const utils_js_1 = /*@__PURE__*/ requireUtils$
|
|
32836
|
-
var utils_js_2 = /*@__PURE__*/ requireUtils$
|
|
32835
|
+
const utils_js_1 = /*@__PURE__*/ requireUtils$4();
|
|
32836
|
+
var utils_js_2 = /*@__PURE__*/ requireUtils$4();
|
|
32837
32837
|
Object.defineProperty(exports, "abytes", { enumerable: true, get: function () { return utils_js_2.abytes; } });
|
|
32838
32838
|
Object.defineProperty(exports, "anumber", { enumerable: true, get: function () { return utils_js_2.anumber; } });
|
|
32839
32839
|
Object.defineProperty(exports, "bytesToHex", { enumerable: true, get: function () { return utils_js_2.bytesToHex; } });
|
|
@@ -33160,8 +33160,8 @@ function requireUtils$2 () {
|
|
|
33160
33160
|
};
|
|
33161
33161
|
}
|
|
33162
33162
|
|
|
33163
|
-
} (utils$
|
|
33164
|
-
return utils$
|
|
33163
|
+
} (utils$2));
|
|
33164
|
+
return utils$2;
|
|
33165
33165
|
}
|
|
33166
33166
|
|
|
33167
33167
|
var curve = {};
|
|
@@ -33202,7 +33202,7 @@ function requireModular () {
|
|
|
33202
33202
|
* @module
|
|
33203
33203
|
*/
|
|
33204
33204
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
33205
|
-
const utils_ts_1 = requireUtils$
|
|
33205
|
+
const utils_ts_1 = requireUtils$3();
|
|
33206
33206
|
// prettier-ignore
|
|
33207
33207
|
const _0n = BigInt(0), _1n = BigInt(1), _2n = /* @__PURE__ */ BigInt(2), _3n = /* @__PURE__ */ BigInt(3);
|
|
33208
33208
|
// prettier-ignore
|
|
@@ -33748,7 +33748,7 @@ function requireCurve () {
|
|
|
33748
33748
|
* @module
|
|
33749
33749
|
*/
|
|
33750
33750
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
33751
|
-
const utils_ts_1 = requireUtils$
|
|
33751
|
+
const utils_ts_1 = requireUtils$3();
|
|
33752
33752
|
const modular_ts_1 = requireModular();
|
|
33753
33753
|
const _0n = BigInt(0);
|
|
33754
33754
|
const _1n = BigInt(1);
|
|
@@ -34257,8 +34257,8 @@ function requireWeierstrass () {
|
|
|
34257
34257
|
*/
|
|
34258
34258
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
34259
34259
|
const hmac_js_1 = /*@__PURE__*/ requireHmac();
|
|
34260
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
34261
|
-
const utils_ts_1 = requireUtils$
|
|
34260
|
+
const utils_1 = /*@__PURE__*/ requireUtils$4();
|
|
34261
|
+
const utils_ts_1 = requireUtils$3();
|
|
34262
34262
|
const curve_ts_1 = requireCurve();
|
|
34263
34263
|
const modular_ts_1 = requireModular();
|
|
34264
34264
|
// We construct basis in such way that den is always positive and equals n, but num sign depends on basis (not on secret value)
|
|
@@ -35689,7 +35689,7 @@ function requireHashToCurve () {
|
|
|
35689
35689
|
exports.hash_to_field = hash_to_field;
|
|
35690
35690
|
exports.isogenyMap = isogenyMap;
|
|
35691
35691
|
exports.createHasher = createHasher;
|
|
35692
|
-
const utils_ts_1 = requireUtils$
|
|
35692
|
+
const utils_ts_1 = requireUtils$3();
|
|
35693
35693
|
const modular_ts_1 = requireModular();
|
|
35694
35694
|
// Octet Stream to Integer. "spec" implementation of os2ip is 2.5x slower vs bytesToNumberBE.
|
|
35695
35695
|
const os2ip = utils_ts_1.bytesToNumberBE;
|
|
@@ -35913,12 +35913,12 @@ function requireSecp256k1 () {
|
|
|
35913
35913
|
*/
|
|
35914
35914
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
35915
35915
|
const sha2_js_1 = requireSha2();
|
|
35916
|
-
const utils_js_1 = /*@__PURE__*/ requireUtils$
|
|
35916
|
+
const utils_js_1 = /*@__PURE__*/ requireUtils$4();
|
|
35917
35917
|
const _shortw_utils_ts_1 = require_shortw_utils();
|
|
35918
35918
|
const hash_to_curve_ts_1 = requireHashToCurve();
|
|
35919
35919
|
const modular_ts_1 = requireModular();
|
|
35920
35920
|
const weierstrass_ts_1 = requireWeierstrass();
|
|
35921
|
-
const utils_ts_1 = requireUtils$
|
|
35921
|
+
const utils_ts_1 = requireUtils$3();
|
|
35922
35922
|
// Seems like generator was produced from some seed:
|
|
35923
35923
|
// `Point.BASE.multiply(Point.Fn.inv(2n, N)).toAffine().x`
|
|
35924
35924
|
// // gives short x 0x3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63n
|
|
@@ -36224,7 +36224,7 @@ function requireLegacy () {
|
|
|
36224
36224
|
* @module
|
|
36225
36225
|
*/
|
|
36226
36226
|
const _md_ts_1 = require_md();
|
|
36227
|
-
const utils_ts_1 = /*@__PURE__*/ requireUtils$
|
|
36227
|
+
const utils_ts_1 = /*@__PURE__*/ requireUtils$4();
|
|
36228
36228
|
/** Initial SHA1 state */
|
|
36229
36229
|
const SHA1_IV = /* @__PURE__ */ Uint32Array.from([
|
|
36230
36230
|
0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0,
|
|
@@ -37290,7 +37290,7 @@ function requireBase58 () {
|
|
|
37290
37290
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37291
37291
|
exports.createBase58VersionedDecoder = exports.createBase58VersionedEncoder = exports.base58CheckDecode = exports.base58CheckEncode = exports.base58UncheckedDecode = exports.base58UncheckedEncode = void 0;
|
|
37292
37292
|
const sha256_1 = /*@__PURE__*/ requireSha256();
|
|
37293
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
37293
|
+
const utils_1 = /*@__PURE__*/ requireUtils$4();
|
|
37294
37294
|
const base_1 = /*@__PURE__*/ requireLib$1();
|
|
37295
37295
|
const base58Unchecked = base_1.base58;
|
|
37296
37296
|
exports.base58UncheckedEncode = base58Unchecked.encode;
|
|
@@ -37401,7 +37401,7 @@ function requireBech32 () {
|
|
|
37401
37401
|
hasRequiredBech32 = 1;
|
|
37402
37402
|
Object.defineProperty(bech32, "__esModule", { value: true });
|
|
37403
37403
|
bech32.createBech32SegwitDecoder = bech32.createBech32SegwitEncoder = bech32.createBech32mDecoder = bech32.createBech32mEncoder = bech32.createBech32Decoder = bech32.createBech32Encoder = void 0;
|
|
37404
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
37404
|
+
const utils_1 = /*@__PURE__*/ requireUtils$4();
|
|
37405
37405
|
const base_1 = /*@__PURE__*/ requireLib$1();
|
|
37406
37406
|
const createInternalBech32Encoder = ({ bechLib, hrp, limit }) => (source) => {
|
|
37407
37407
|
return bechLib.encode(hrp, bechLib.toWords(source), limit);
|
|
@@ -38119,7 +38119,7 @@ function requireAe () {
|
|
|
38119
38119
|
(function (exports) {
|
|
38120
38120
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38121
38121
|
exports.ae = exports.decodeAeAddress = exports.encodeAeAddress = void 0;
|
|
38122
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
38122
|
+
const utils_1 = /*@__PURE__*/ requireUtils$4();
|
|
38123
38123
|
const base58_js_1 = requireBase58();
|
|
38124
38124
|
const name = "ae";
|
|
38125
38125
|
const coinType = 457;
|
|
@@ -38181,7 +38181,7 @@ function requireBytes () {
|
|
|
38181
38181
|
hasRequiredBytes = 1;
|
|
38182
38182
|
Object.defineProperty(bytes, "__esModule", { value: true });
|
|
38183
38183
|
bytes.hexWithoutPrefixToBytes = bytes.bytesToHexWithoutPrefix = bytes.base10ToBytes = bytes.bytesToBase10 = bytes.bytesToHex = bytes.stringToBytes = bytes.bytesToString = bytes.hexToString = bytes.hexToBytes = void 0;
|
|
38184
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
38184
|
+
const utils_1 = /*@__PURE__*/ requireUtils$4();
|
|
38185
38185
|
function hexToBytes(hex_) {
|
|
38186
38186
|
let hex = hex_;
|
|
38187
38187
|
let hexString = hex.slice(2);
|
|
@@ -38678,7 +38678,7 @@ function requireBch$1 () {
|
|
|
38678
38678
|
hasRequiredBch$1 = 1;
|
|
38679
38679
|
Object.defineProperty(bch, "__esModule", { value: true });
|
|
38680
38680
|
bch.decodeBchAddressToTypeAndHash = bch.encodeBchAddressWithVersion = void 0;
|
|
38681
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
38681
|
+
const utils_1 = /*@__PURE__*/ requireUtils$4();
|
|
38682
38682
|
const base_1 = /*@__PURE__*/ requireLib$1();
|
|
38683
38683
|
const prefix = "bitcoincash";
|
|
38684
38684
|
const prefixBytes = new Uint8Array([2, 9, 20, 3, 15, 9, 14, 3, 1, 19, 8, 0]);
|
|
@@ -38772,7 +38772,7 @@ function requireBch () {
|
|
|
38772
38772
|
(function (exports) {
|
|
38773
38773
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38774
38774
|
exports.bch = exports.decodeBchAddress = exports.encodeBchAddress = void 0;
|
|
38775
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
38775
|
+
const utils_1 = /*@__PURE__*/ requireUtils$4();
|
|
38776
38776
|
const base58_js_1 = requireBase58();
|
|
38777
38777
|
const bch_js_1 = requireBch$1();
|
|
38778
38778
|
const name = "bch";
|
|
@@ -38823,15 +38823,15 @@ function requireBch () {
|
|
|
38823
38823
|
|
|
38824
38824
|
var bcn = {};
|
|
38825
38825
|
|
|
38826
|
-
var utils = {};
|
|
38826
|
+
var utils$1 = {};
|
|
38827
38827
|
|
|
38828
|
-
var hasRequiredUtils$
|
|
38828
|
+
var hasRequiredUtils$2;
|
|
38829
38829
|
|
|
38830
|
-
function requireUtils$
|
|
38831
|
-
if (hasRequiredUtils$
|
|
38832
|
-
hasRequiredUtils$
|
|
38830
|
+
function requireUtils$2 () {
|
|
38831
|
+
if (hasRequiredUtils$2) return utils$1;
|
|
38832
|
+
hasRequiredUtils$2 = 1;
|
|
38833
38833
|
(function (exports) {
|
|
38834
|
-
var __createBinding = (utils && utils.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
38834
|
+
var __createBinding = (utils$1 && utils$1.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
38835
38835
|
if (k2 === undefined) k2 = k;
|
|
38836
38836
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
38837
38837
|
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
@@ -38842,19 +38842,19 @@ function requireUtils$1 () {
|
|
|
38842
38842
|
if (k2 === undefined) k2 = k;
|
|
38843
38843
|
o[k2] = m[k];
|
|
38844
38844
|
}));
|
|
38845
|
-
var __exportStar = (utils && utils.__exportStar) || function(m, exports) {
|
|
38845
|
+
var __exportStar = (utils$1 && utils$1.__exportStar) || function(m, exports) {
|
|
38846
38846
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
38847
38847
|
};
|
|
38848
38848
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38849
38849
|
/**
|
|
38850
38850
|
* @module
|
|
38851
38851
|
*/
|
|
38852
|
-
__exportStar(requireUtils$
|
|
38852
|
+
__exportStar(requireUtils$3(), exports);
|
|
38853
38853
|
// TODO
|
|
38854
38854
|
// @deprecated use `@noble/curves/utils.js`
|
|
38855
38855
|
|
|
38856
|
-
} (utils));
|
|
38857
|
-
return utils;
|
|
38856
|
+
} (utils$1));
|
|
38857
|
+
return utils$1;
|
|
38858
38858
|
}
|
|
38859
38859
|
|
|
38860
38860
|
var sha3 = {};
|
|
@@ -38880,7 +38880,7 @@ function requireSha3 () {
|
|
|
38880
38880
|
*/
|
|
38881
38881
|
const _u64_ts_1 = require_u64();
|
|
38882
38882
|
// prettier-ignore
|
|
38883
|
-
const utils_ts_1 = /*@__PURE__*/ requireUtils$
|
|
38883
|
+
const utils_ts_1 = /*@__PURE__*/ requireUtils$4();
|
|
38884
38884
|
// No __PURE__ annotations in sha3 header:
|
|
38885
38885
|
// EVERYTHING is in fact used on every export.
|
|
38886
38886
|
// Various per round constants calculations
|
|
@@ -39139,9 +39139,9 @@ function requireBcn () {
|
|
|
39139
39139
|
(function (exports) {
|
|
39140
39140
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39141
39141
|
exports.bcn = exports.decodeBcnAddress = exports.encodeBcnAddress = void 0;
|
|
39142
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
39142
|
+
const utils_1 = /*@__PURE__*/ requireUtils$2();
|
|
39143
39143
|
const sha3_1 = /*@__PURE__*/ requireSha3();
|
|
39144
|
-
const utils_2 = /*@__PURE__*/ requireUtils$
|
|
39144
|
+
const utils_2 = /*@__PURE__*/ requireUtils$4();
|
|
39145
39145
|
const base_1 = /*@__PURE__*/ requireLib$1();
|
|
39146
39146
|
const xmr_js_1 = requireXmr();
|
|
39147
39147
|
const name = "bcn";
|
|
@@ -39264,7 +39264,7 @@ function requireBsv () {
|
|
|
39264
39264
|
(function (exports) {
|
|
39265
39265
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39266
39266
|
exports.bsv = exports.decodeBsvAddress = exports.encodeBsvAddress = void 0;
|
|
39267
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
39267
|
+
const utils_1 = /*@__PURE__*/ requireUtils$4();
|
|
39268
39268
|
const base58_js_1 = requireBase58();
|
|
39269
39269
|
const name = "bsv";
|
|
39270
39270
|
const coinType = 236;
|
|
@@ -39799,7 +39799,7 @@ function require_blake () {
|
|
|
39799
39799
|
* Internal helpers for blake hash.
|
|
39800
39800
|
* @module
|
|
39801
39801
|
*/
|
|
39802
|
-
const utils_ts_1 = /*@__PURE__*/ requireUtils$
|
|
39802
|
+
const utils_ts_1 = /*@__PURE__*/ requireUtils$4();
|
|
39803
39803
|
/**
|
|
39804
39804
|
* Internal blake variable.
|
|
39805
39805
|
* For BLAKE2b, the two extra permutations for rounds 10 and 11 are SIGMA[10..11] = SIGMA[0..1].
|
|
@@ -39860,7 +39860,7 @@ function requireBlake2 () {
|
|
|
39860
39860
|
const _md_ts_1 = require_md();
|
|
39861
39861
|
const u64 = require_u64();
|
|
39862
39862
|
// prettier-ignore
|
|
39863
|
-
const utils_ts_1 = /*@__PURE__*/ requireUtils$
|
|
39863
|
+
const utils_ts_1 = /*@__PURE__*/ requireUtils$4();
|
|
39864
39864
|
// Same as SHA512_IV, but swapped endianness: LE instead of BE. iv[1] is iv[0], etc.
|
|
39865
39865
|
const B2B_IV = /* @__PURE__ */ Uint32Array.from([
|
|
39866
39866
|
0xf3bcc908, 0x6a09e667, 0x84caa73b, 0xbb67ae85, 0xfe94f82b, 0x3c6ef372, 0x5f1d36f1, 0xa54ff53a,
|
|
@@ -40298,9 +40298,9 @@ function requireDot$1 () {
|
|
|
40298
40298
|
hasRequiredDot$1 = 1;
|
|
40299
40299
|
Object.defineProperty(dot, "__esModule", { value: true });
|
|
40300
40300
|
dot.createDotAddressDecoder = dot.createDotAddressEncoder = void 0;
|
|
40301
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
40301
|
+
const utils_1 = /*@__PURE__*/ requireUtils$2();
|
|
40302
40302
|
const blake2b_1 = /*@__PURE__*/ requireBlake2b();
|
|
40303
|
-
const utils_2 = /*@__PURE__*/ requireUtils$
|
|
40303
|
+
const utils_2 = /*@__PURE__*/ requireUtils$4();
|
|
40304
40304
|
const base58_js_1 = requireBase58();
|
|
40305
40305
|
const prefixStringBytes = new Uint8Array([
|
|
40306
40306
|
0x53, 0x53, 0x35, 0x38, 0x50, 0x52, 0x45,
|
|
@@ -40495,7 +40495,7 @@ function requireEtn () {
|
|
|
40495
40495
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40496
40496
|
exports.etn = exports.decodeEtnAddress = exports.encodeEtnAddress = void 0;
|
|
40497
40497
|
const sha3_1 = /*@__PURE__*/ requireSha3();
|
|
40498
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
40498
|
+
const utils_1 = /*@__PURE__*/ requireUtils$4();
|
|
40499
40499
|
const base_1 = /*@__PURE__*/ requireLib$1();
|
|
40500
40500
|
const xmr_js_1 = requireXmr();
|
|
40501
40501
|
const name = "etn";
|
|
@@ -40601,9 +40601,9 @@ function requireFil () {
|
|
|
40601
40601
|
(function (exports) {
|
|
40602
40602
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40603
40603
|
exports.fil = exports.decodeFilAddress = exports.encodeFilAddress = void 0;
|
|
40604
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
40604
|
+
const utils_1 = /*@__PURE__*/ requireUtils$2();
|
|
40605
40605
|
const blake2b_1 = /*@__PURE__*/ requireBlake2b();
|
|
40606
|
-
const utils_2 = /*@__PURE__*/ requireUtils$
|
|
40606
|
+
const utils_2 = /*@__PURE__*/ requireUtils$4();
|
|
40607
40607
|
const base32_js_1 = requireBase32();
|
|
40608
40608
|
const leb128_js_1 = requireLeb128();
|
|
40609
40609
|
const name = "fil";
|
|
@@ -41200,7 +41200,7 @@ function requireHnt () {
|
|
|
41200
41200
|
(function (exports) {
|
|
41201
41201
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41202
41202
|
exports.hnt = exports.decodeHntAddress = exports.encodeHntAddress = void 0;
|
|
41203
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
41203
|
+
const utils_1 = /*@__PURE__*/ requireUtils$4();
|
|
41204
41204
|
const base58_js_1 = requireBase58();
|
|
41205
41205
|
const name = "hnt";
|
|
41206
41206
|
const coinType = 904;
|
|
@@ -41238,7 +41238,7 @@ function requireIcx () {
|
|
|
41238
41238
|
(function (exports) {
|
|
41239
41239
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41240
41240
|
exports.icx = exports.decodeIcxAddress = exports.encodeIcxAddress = void 0;
|
|
41241
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
41241
|
+
const utils_1 = /*@__PURE__*/ requireUtils$4();
|
|
41242
41242
|
const bytes_js_1 = requireBytes();
|
|
41243
41243
|
const name = "icx";
|
|
41244
41244
|
const coinType = 74;
|
|
@@ -41310,7 +41310,7 @@ function requireIota () {
|
|
|
41310
41310
|
(function (exports) {
|
|
41311
41311
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41312
41312
|
exports.iota = exports.decodeIotaAddress = exports.encodeIotaAddress = void 0;
|
|
41313
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
41313
|
+
const utils_1 = /*@__PURE__*/ requireUtils$4();
|
|
41314
41314
|
const bech32_js_1 = requireBech32();
|
|
41315
41315
|
const name = "iota";
|
|
41316
41316
|
const coinType = 4218;
|
|
@@ -42057,7 +42057,7 @@ function requireNuls () {
|
|
|
42057
42057
|
(function (exports) {
|
|
42058
42058
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42059
42059
|
exports.nuls = exports.decodeNulsAddress = exports.encodeNulsAddress = void 0;
|
|
42060
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
42060
|
+
const utils_1 = /*@__PURE__*/ requireUtils$4();
|
|
42061
42061
|
const base58_js_1 = requireBase58();
|
|
42062
42062
|
const name = "nuls";
|
|
42063
42063
|
const coinType = 8964;
|
|
@@ -42165,7 +42165,7 @@ function requireOnt () {
|
|
|
42165
42165
|
(function (exports) {
|
|
42166
42166
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42167
42167
|
exports.ont = exports.decodeOntAddress = exports.encodeOntAddress = void 0;
|
|
42168
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
42168
|
+
const utils_1 = /*@__PURE__*/ requireUtils$4();
|
|
42169
42169
|
const base58_js_1 = requireBase58();
|
|
42170
42170
|
const name = "ont";
|
|
42171
42171
|
const coinType = 1024;
|
|
@@ -42393,9 +42393,9 @@ function requireSc () {
|
|
|
42393
42393
|
(function (exports) {
|
|
42394
42394
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42395
42395
|
exports.sc = exports.decodeScAddress = exports.encodeScAddress = void 0;
|
|
42396
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
42396
|
+
const utils_1 = /*@__PURE__*/ requireUtils$2();
|
|
42397
42397
|
const blake2b_1 = /*@__PURE__*/ requireBlake2b();
|
|
42398
|
-
const utils_2 = /*@__PURE__*/ requireUtils$
|
|
42398
|
+
const utils_2 = /*@__PURE__*/ requireUtils$4();
|
|
42399
42399
|
const bytes_js_1 = requireBytes();
|
|
42400
42400
|
const name = "sc";
|
|
42401
42401
|
const coinType = 1991;
|
|
@@ -42646,9 +42646,9 @@ function requireStx () {
|
|
|
42646
42646
|
(function (exports) {
|
|
42647
42647
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42648
42648
|
exports.stx = exports.decodeStxAddress = exports.encodeStxAddress = void 0;
|
|
42649
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
42649
|
+
const utils_1 = /*@__PURE__*/ requireUtils$2();
|
|
42650
42650
|
const sha256_1 = /*@__PURE__*/ requireSha256();
|
|
42651
|
-
const utils_2 = /*@__PURE__*/ requireUtils$
|
|
42651
|
+
const utils_2 = /*@__PURE__*/ requireUtils$4();
|
|
42652
42652
|
const base_1 = /*@__PURE__*/ requireLib$1();
|
|
42653
42653
|
const base32_js_1 = requireBase32();
|
|
42654
42654
|
const name = "stx";
|
|
@@ -43068,7 +43068,7 @@ function requireVsys () {
|
|
|
43068
43068
|
(function (exports) {
|
|
43069
43069
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43070
43070
|
exports.vsys = exports.decodeVsysAddress = exports.encodeVsysAddress = void 0;
|
|
43071
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
43071
|
+
const utils_1 = /*@__PURE__*/ requireUtils$2();
|
|
43072
43072
|
const blake2b_1 = /*@__PURE__*/ requireBlake2b();
|
|
43073
43073
|
const sha3_1 = /*@__PURE__*/ requireSha3();
|
|
43074
43074
|
const base58_js_1 = requireBase58();
|
|
@@ -43336,8 +43336,8 @@ function requireXlm () {
|
|
|
43336
43336
|
(function (exports) {
|
|
43337
43337
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43338
43338
|
exports.xlm = exports.decodeXlmAddress = exports.encodeXlmAddress = void 0;
|
|
43339
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
43340
|
-
const utils_2 = /*@__PURE__*/ requireUtils$
|
|
43339
|
+
const utils_1 = /*@__PURE__*/ requireUtils$2();
|
|
43340
|
+
const utils_2 = /*@__PURE__*/ requireUtils$4();
|
|
43341
43341
|
const base32_js_1 = requireBase32();
|
|
43342
43342
|
const bytes_js_1 = requireBytes();
|
|
43343
43343
|
const name = "xlm";
|
|
@@ -43429,7 +43429,7 @@ function requireXtz () {
|
|
|
43429
43429
|
(function (exports) {
|
|
43430
43430
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43431
43431
|
exports.xtz = exports.decodeXtzAddress = exports.encodeXtzAddress = void 0;
|
|
43432
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
43432
|
+
const utils_1 = /*@__PURE__*/ requireUtils$4();
|
|
43433
43433
|
const base58_js_1 = requireBase58();
|
|
43434
43434
|
const name = "xtz";
|
|
43435
43435
|
const coinType = 1729;
|
|
@@ -43555,7 +43555,7 @@ function requireZen () {
|
|
|
43555
43555
|
(function (exports) {
|
|
43556
43556
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43557
43557
|
exports.zen = exports.decodeZenAddress = exports.encodeZenAddress = void 0;
|
|
43558
|
-
const utils_1 = /*@__PURE__*/ requireUtils$
|
|
43558
|
+
const utils_1 = /*@__PURE__*/ requireUtils$2();
|
|
43559
43559
|
const base58_js_1 = requireBase58();
|
|
43560
43560
|
const name = "zen";
|
|
43561
43561
|
const coinType = 121;
|
|
@@ -56933,13 +56933,13 @@ function requireSrc () {
|
|
|
56933
56933
|
return src;
|
|
56934
56934
|
}
|
|
56935
56935
|
|
|
56936
|
-
var hasRequiredUtils;
|
|
56936
|
+
var hasRequiredUtils$1;
|
|
56937
56937
|
|
|
56938
|
-
function requireUtils () {
|
|
56939
|
-
if (hasRequiredUtils) return utils$
|
|
56940
|
-
hasRequiredUtils = 1;
|
|
56941
|
-
Object.defineProperty(utils$
|
|
56942
|
-
utils$
|
|
56938
|
+
function requireUtils$1 () {
|
|
56939
|
+
if (hasRequiredUtils$1) return utils$4;
|
|
56940
|
+
hasRequiredUtils$1 = 1;
|
|
56941
|
+
Object.defineProperty(utils$4, "__esModule", { value: true });
|
|
56942
|
+
utils$4.convertEnsRecordsToResolverData = void 0;
|
|
56943
56943
|
const viem_1 = viem;
|
|
56944
56944
|
const address_encoder_1 = /*@__PURE__*/ requireCjs();
|
|
56945
56945
|
const address_records_1 = requireAddressRecords();
|
|
@@ -57018,8 +57018,8 @@ function requireUtils () {
|
|
|
57018
57018
|
}
|
|
57019
57019
|
return resolverData;
|
|
57020
57020
|
};
|
|
57021
|
-
utils$
|
|
57022
|
-
return utils$
|
|
57021
|
+
utils$4.convertEnsRecordsToResolverData = convertEnsRecordsToResolverData;
|
|
57022
|
+
return utils$4;
|
|
57023
57023
|
}
|
|
57024
57024
|
|
|
57025
57025
|
var hasRequiredMintClient;
|
|
@@ -57035,10 +57035,10 @@ function requireMintClient () {
|
|
|
57035
57035
|
const axios_1 = __importDefault(/*@__PURE__*/ requireAxios());
|
|
57036
57036
|
const env_1 = requireEnv();
|
|
57037
57037
|
const viem_1 = viem;
|
|
57038
|
-
const chains_1 = requireChains();
|
|
57038
|
+
const chains_1 = requireChains$1();
|
|
57039
57039
|
const abi_1 = requireAbi();
|
|
57040
|
-
const addresses_1 = requireDist$
|
|
57041
|
-
const utils_1 = requireUtils();
|
|
57040
|
+
const addresses_1 = requireDist$2();
|
|
57041
|
+
const utils_1 = requireUtils$1();
|
|
57042
57042
|
// Listing cache time
|
|
57043
57043
|
// 15 minutes
|
|
57044
57044
|
const DEFAULT_LISTING_CACHE = 15 * 60 * 1000;
|
|
@@ -57249,11 +57249,11 @@ function requireContenthashRecord () {
|
|
|
57249
57249
|
return contenthashRecord;
|
|
57250
57250
|
}
|
|
57251
57251
|
|
|
57252
|
-
var hasRequiredDist;
|
|
57252
|
+
var hasRequiredDist$1;
|
|
57253
57253
|
|
|
57254
|
-
function requireDist () {
|
|
57255
|
-
if (hasRequiredDist) return dist;
|
|
57256
|
-
hasRequiredDist = 1;
|
|
57254
|
+
function requireDist$1 () {
|
|
57255
|
+
if (hasRequiredDist$1) return dist$1;
|
|
57256
|
+
hasRequiredDist$1 = 1;
|
|
57257
57257
|
(function (exports) {
|
|
57258
57258
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
57259
57259
|
exports.ContenthashType = exports.ChainName = exports.createMintClient = void 0;
|
|
@@ -57263,17 +57263,17 @@ function requireDist () {
|
|
|
57263
57263
|
Object.defineProperty(exports, "ChainName", { enumerable: true, get: function () { return address_records_1.ChainName; } });
|
|
57264
57264
|
var contenthash_record_1 = requireContenthashRecord();
|
|
57265
57265
|
Object.defineProperty(exports, "ContenthashType", { enumerable: true, get: function () { return contenthash_record_1.ContenthashType; } });
|
|
57266
|
-
} (dist));
|
|
57267
|
-
return dist;
|
|
57266
|
+
} (dist$1));
|
|
57267
|
+
return dist$1;
|
|
57268
57268
|
}
|
|
57269
57269
|
|
|
57270
|
-
var distExports = requireDist();
|
|
57270
|
+
var distExports$1 = requireDist$1();
|
|
57271
57271
|
|
|
57272
57272
|
const LIST_MANAGER_API = "https://list-manager.namespace.ninja";
|
|
57273
57273
|
const LIST_MANAGER_TESTNET_API = "https://staging.list-manager.namespace.ninja";
|
|
57274
57274
|
const useMintManager = ({ isTestnet }) => {
|
|
57275
57275
|
const mintClient = useMemo(() => {
|
|
57276
|
-
return distExports.createMintClient({
|
|
57276
|
+
return distExports$1.createMintClient({
|
|
57277
57277
|
cursomRpcUrls: {},
|
|
57278
57278
|
isTestnet: isTestnet || false
|
|
57279
57279
|
});
|
|
@@ -57357,7 +57357,1257 @@ const useMintSubname = ({ chainId }) => {
|
|
|
57357
57357
|
};
|
|
57358
57358
|
};
|
|
57359
57359
|
|
|
57360
|
-
|
|
57360
|
+
var dist = {};
|
|
57361
|
+
|
|
57362
|
+
var offchainClient = {};
|
|
57363
|
+
|
|
57364
|
+
var privateActions = {};
|
|
57365
|
+
|
|
57366
|
+
var utils = {};
|
|
57367
|
+
|
|
57368
|
+
var dto = {};
|
|
57369
|
+
|
|
57370
|
+
var chains = {};
|
|
57371
|
+
|
|
57372
|
+
var hasRequiredChains;
|
|
57373
|
+
|
|
57374
|
+
function requireChains () {
|
|
57375
|
+
if (hasRequiredChains) return chains;
|
|
57376
|
+
hasRequiredChains = 1;
|
|
57377
|
+
(function (exports) {
|
|
57378
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
57379
|
+
exports.getCoinType = exports.chainMetadata = exports.ChainName = void 0;
|
|
57380
|
+
/**
|
|
57381
|
+
* Supported blockchain networks for address records.
|
|
57382
|
+
* Each chain has a corresponding coin type used internally for ENS address records.
|
|
57383
|
+
*
|
|
57384
|
+
* @example
|
|
57385
|
+
* ```typescript
|
|
57386
|
+
* import { ChainName } from '@thenamespace/offchain-manager';
|
|
57387
|
+
*
|
|
57388
|
+
* // Use in address records
|
|
57389
|
+
* const addressRecord = {
|
|
57390
|
+
* chain: ChainName.Ethereum,
|
|
57391
|
+
* value: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
|
|
57392
|
+
* };
|
|
57393
|
+
* ```
|
|
57394
|
+
*/
|
|
57395
|
+
var ChainName;
|
|
57396
|
+
(function (ChainName) {
|
|
57397
|
+
/** Ethereum mainnet */
|
|
57398
|
+
ChainName["Ethereum"] = "eth";
|
|
57399
|
+
/** Default (EVM-compatible) */
|
|
57400
|
+
ChainName["Default"] = "default";
|
|
57401
|
+
/** Solana */
|
|
57402
|
+
ChainName["Solana"] = "sol";
|
|
57403
|
+
/** Arbitrum One */
|
|
57404
|
+
ChainName["Arbitrum"] = "arb";
|
|
57405
|
+
/** Optimism */
|
|
57406
|
+
ChainName["Optimism"] = "op";
|
|
57407
|
+
/** Base */
|
|
57408
|
+
ChainName["Base"] = "base";
|
|
57409
|
+
/** Polygon (formerly Matic) */
|
|
57410
|
+
ChainName["Polygon"] = "polygon";
|
|
57411
|
+
/** BNB Smart Chain (formerly BSC) */
|
|
57412
|
+
ChainName["Bsc"] = "bsc";
|
|
57413
|
+
/** Avalanche C-Chain */
|
|
57414
|
+
ChainName["Avalanche"] = "avax";
|
|
57415
|
+
/** Gnosis Chain (formerly xDai) */
|
|
57416
|
+
ChainName["Gnosis"] = "gnosis";
|
|
57417
|
+
/** zkSync Era */
|
|
57418
|
+
ChainName["Zksync"] = "zksync";
|
|
57419
|
+
/** Cosmos Hub */
|
|
57420
|
+
ChainName["Cosmos"] = "cosmos";
|
|
57421
|
+
/** NEAR Protocol */
|
|
57422
|
+
ChainName["Near"] = "near";
|
|
57423
|
+
/** Linea */
|
|
57424
|
+
ChainName["Linea"] = "linea";
|
|
57425
|
+
/** Scroll */
|
|
57426
|
+
ChainName["Scroll"] = "scroll";
|
|
57427
|
+
/** Bitcoin */
|
|
57428
|
+
ChainName["Bitcoin"] = "btc";
|
|
57429
|
+
/** Starknet */
|
|
57430
|
+
ChainName["Starknet"] = "starknet";
|
|
57431
|
+
/** Sui Network */
|
|
57432
|
+
ChainName["Sui"] = "sui";
|
|
57433
|
+
/** Unichain */
|
|
57434
|
+
ChainName["Unichain"] = "unichain";
|
|
57435
|
+
/** Berachain */
|
|
57436
|
+
ChainName["Berachain"] = "berachain";
|
|
57437
|
+
/** WorldChain */
|
|
57438
|
+
ChainName["WorldChain"] = "world_chain";
|
|
57439
|
+
/** Zora */
|
|
57440
|
+
ChainName["Zora"] = "zora";
|
|
57441
|
+
/** Celo */
|
|
57442
|
+
ChainName["Celo"] = "celo";
|
|
57443
|
+
/** Aptos */
|
|
57444
|
+
ChainName["Aptos"] = "aptos";
|
|
57445
|
+
/** Algorand */
|
|
57446
|
+
ChainName["Algorand"] = "algorand";
|
|
57447
|
+
/** Monad */
|
|
57448
|
+
ChainName["Monad"] = "monad";
|
|
57449
|
+
/** Push Chain */
|
|
57450
|
+
ChainName["Push"] = "push";
|
|
57451
|
+
})(ChainName || (exports.ChainName = ChainName = {}));
|
|
57452
|
+
exports.chainMetadata = {
|
|
57453
|
+
eth: {
|
|
57454
|
+
label: "Ethereum",
|
|
57455
|
+
coin: 60,
|
|
57456
|
+
evm: true,
|
|
57457
|
+
},
|
|
57458
|
+
default: {
|
|
57459
|
+
label: "Default",
|
|
57460
|
+
coin: 2147483648,
|
|
57461
|
+
evm: true,
|
|
57462
|
+
},
|
|
57463
|
+
base: {
|
|
57464
|
+
label: "Base",
|
|
57465
|
+
coin: 8453,
|
|
57466
|
+
evm: true,
|
|
57467
|
+
},
|
|
57468
|
+
op: {
|
|
57469
|
+
label: "Optimism",
|
|
57470
|
+
coin: 10,
|
|
57471
|
+
evm: true,
|
|
57472
|
+
},
|
|
57473
|
+
arb: {
|
|
57474
|
+
label: "Arbitrum",
|
|
57475
|
+
coin: 42161,
|
|
57476
|
+
evm: true,
|
|
57477
|
+
},
|
|
57478
|
+
bsc: {
|
|
57479
|
+
label: "BNB",
|
|
57480
|
+
coin: 56,
|
|
57481
|
+
evm: true,
|
|
57482
|
+
},
|
|
57483
|
+
polygon: {
|
|
57484
|
+
label: "Polygon",
|
|
57485
|
+
coin: 137,
|
|
57486
|
+
evm: true,
|
|
57487
|
+
},
|
|
57488
|
+
avax: {
|
|
57489
|
+
label: "Avax",
|
|
57490
|
+
coin: 43114,
|
|
57491
|
+
evm: true,
|
|
57492
|
+
},
|
|
57493
|
+
gnosis: {
|
|
57494
|
+
label: "Gnosis",
|
|
57495
|
+
coin: 100,
|
|
57496
|
+
evm: true,
|
|
57497
|
+
},
|
|
57498
|
+
zksync: {
|
|
57499
|
+
label: "ZkSync",
|
|
57500
|
+
coin: 324,
|
|
57501
|
+
evm: true,
|
|
57502
|
+
},
|
|
57503
|
+
starknet: {
|
|
57504
|
+
label: "Starknet",
|
|
57505
|
+
coin: 9004,
|
|
57506
|
+
},
|
|
57507
|
+
sol: {
|
|
57508
|
+
label: "Solana",
|
|
57509
|
+
coin: 501,
|
|
57510
|
+
},
|
|
57511
|
+
btc: {
|
|
57512
|
+
label: "Bitcoin",
|
|
57513
|
+
coin: 0,
|
|
57514
|
+
},
|
|
57515
|
+
cosmos: {
|
|
57516
|
+
label: "Cosmos",
|
|
57517
|
+
coin: 118,
|
|
57518
|
+
},
|
|
57519
|
+
near: {
|
|
57520
|
+
label: "Near",
|
|
57521
|
+
coin: 397,
|
|
57522
|
+
},
|
|
57523
|
+
linea: {
|
|
57524
|
+
label: "Linea",
|
|
57525
|
+
coin: 59144,
|
|
57526
|
+
evm: true,
|
|
57527
|
+
},
|
|
57528
|
+
scroll: {
|
|
57529
|
+
label: "Scroll",
|
|
57530
|
+
coin: 534352,
|
|
57531
|
+
evm: true,
|
|
57532
|
+
},
|
|
57533
|
+
sui: {
|
|
57534
|
+
label: "Sui",
|
|
57535
|
+
coin: 784,
|
|
57536
|
+
},
|
|
57537
|
+
unichain: {
|
|
57538
|
+
label: "Unichain",
|
|
57539
|
+
coin: 130,
|
|
57540
|
+
evm: true,
|
|
57541
|
+
},
|
|
57542
|
+
berachain: {
|
|
57543
|
+
label: "Berachain",
|
|
57544
|
+
coin: 80094,
|
|
57545
|
+
evm: true,
|
|
57546
|
+
},
|
|
57547
|
+
world_chain: {
|
|
57548
|
+
label: "WorldChain",
|
|
57549
|
+
coin: 480,
|
|
57550
|
+
evm: true,
|
|
57551
|
+
},
|
|
57552
|
+
zora: {
|
|
57553
|
+
label: "Zora",
|
|
57554
|
+
coin: 7777777,
|
|
57555
|
+
evm: true,
|
|
57556
|
+
},
|
|
57557
|
+
celo: {
|
|
57558
|
+
label: "Celo",
|
|
57559
|
+
coin: 42220,
|
|
57560
|
+
evm: true,
|
|
57561
|
+
},
|
|
57562
|
+
aptos: {
|
|
57563
|
+
label: "Aptos",
|
|
57564
|
+
coin: 22,
|
|
57565
|
+
},
|
|
57566
|
+
algorand: {
|
|
57567
|
+
label: "Algorand",
|
|
57568
|
+
coin: 8,
|
|
57569
|
+
},
|
|
57570
|
+
monad: {
|
|
57571
|
+
label: "Monad",
|
|
57572
|
+
coin: 143,
|
|
57573
|
+
evm: true,
|
|
57574
|
+
},
|
|
57575
|
+
push: {
|
|
57576
|
+
label: "Push Chain",
|
|
57577
|
+
coin: 42101,
|
|
57578
|
+
evm: true,
|
|
57579
|
+
},
|
|
57580
|
+
};
|
|
57581
|
+
/**
|
|
57582
|
+
* Get the SLIP-0044 coin type for a given blockchain network.
|
|
57583
|
+
* This coin type is used internally for ENS address records.
|
|
57584
|
+
*
|
|
57585
|
+
* @param chain - The blockchain network to get the coin type for
|
|
57586
|
+
* @returns The SLIP-0044 coin type number
|
|
57587
|
+
*
|
|
57588
|
+
* @example
|
|
57589
|
+
* ```typescript
|
|
57590
|
+
* import { getCoinType, ChainName } from '@thenamespace/offchain-manager';
|
|
57591
|
+
*
|
|
57592
|
+
* const ethCoinType = getCoinType(ChainName.Ethereum); // Returns 60
|
|
57593
|
+
* const baseCoinType = getCoinType(ChainName.Base); // Returns 8453
|
|
57594
|
+
* ```
|
|
57595
|
+
*/
|
|
57596
|
+
const getCoinType = (chain) => {
|
|
57597
|
+
return exports.chainMetadata[chain].coin;
|
|
57598
|
+
};
|
|
57599
|
+
exports.getCoinType = getCoinType;
|
|
57600
|
+
} (chains));
|
|
57601
|
+
return chains;
|
|
57602
|
+
}
|
|
57603
|
+
|
|
57604
|
+
var createSubnameRequest_dto = {};
|
|
57605
|
+
|
|
57606
|
+
var hasRequiredCreateSubnameRequest_dto;
|
|
57607
|
+
|
|
57608
|
+
function requireCreateSubnameRequest_dto () {
|
|
57609
|
+
if (hasRequiredCreateSubnameRequest_dto) return createSubnameRequest_dto;
|
|
57610
|
+
hasRequiredCreateSubnameRequest_dto = 1;
|
|
57611
|
+
Object.defineProperty(createSubnameRequest_dto, "__esModule", { value: true });
|
|
57612
|
+
return createSubnameRequest_dto;
|
|
57613
|
+
}
|
|
57614
|
+
|
|
57615
|
+
var subname_dto = {};
|
|
57616
|
+
|
|
57617
|
+
var hasRequiredSubname_dto;
|
|
57618
|
+
|
|
57619
|
+
function requireSubname_dto () {
|
|
57620
|
+
if (hasRequiredSubname_dto) return subname_dto;
|
|
57621
|
+
hasRequiredSubname_dto = 1;
|
|
57622
|
+
Object.defineProperty(subname_dto, "__esModule", { value: true });
|
|
57623
|
+
return subname_dto;
|
|
57624
|
+
}
|
|
57625
|
+
|
|
57626
|
+
var updateSubnameRequest_dto = {};
|
|
57627
|
+
|
|
57628
|
+
var hasRequiredUpdateSubnameRequest_dto;
|
|
57629
|
+
|
|
57630
|
+
function requireUpdateSubnameRequest_dto () {
|
|
57631
|
+
if (hasRequiredUpdateSubnameRequest_dto) return updateSubnameRequest_dto;
|
|
57632
|
+
hasRequiredUpdateSubnameRequest_dto = 1;
|
|
57633
|
+
Object.defineProperty(updateSubnameRequest_dto, "__esModule", { value: true });
|
|
57634
|
+
return updateSubnameRequest_dto;
|
|
57635
|
+
}
|
|
57636
|
+
|
|
57637
|
+
var hasRequiredDto;
|
|
57638
|
+
|
|
57639
|
+
function requireDto () {
|
|
57640
|
+
if (hasRequiredDto) return dto;
|
|
57641
|
+
hasRequiredDto = 1;
|
|
57642
|
+
(function (exports) {
|
|
57643
|
+
var __createBinding = (dto && dto.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
57644
|
+
if (k2 === undefined) k2 = k;
|
|
57645
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
57646
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
57647
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
57648
|
+
}
|
|
57649
|
+
Object.defineProperty(o, k2, desc);
|
|
57650
|
+
}) : (function(o, m, k, k2) {
|
|
57651
|
+
if (k2 === undefined) k2 = k;
|
|
57652
|
+
o[k2] = m[k];
|
|
57653
|
+
}));
|
|
57654
|
+
var __exportStar = (dto && dto.__exportStar) || function(m, exports) {
|
|
57655
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
57656
|
+
};
|
|
57657
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
57658
|
+
__exportStar(requireChains(), exports);
|
|
57659
|
+
__exportStar(requireCreateSubnameRequest_dto(), exports);
|
|
57660
|
+
__exportStar(requireSubname_dto(), exports);
|
|
57661
|
+
__exportStar(requireUpdateSubnameRequest_dto(), exports);
|
|
57662
|
+
} (dto));
|
|
57663
|
+
return dto;
|
|
57664
|
+
}
|
|
57665
|
+
|
|
57666
|
+
var hasRequiredUtils;
|
|
57667
|
+
|
|
57668
|
+
function requireUtils () {
|
|
57669
|
+
if (hasRequiredUtils) return utils;
|
|
57670
|
+
hasRequiredUtils = 1;
|
|
57671
|
+
Object.defineProperty(utils, "__esModule", { value: true });
|
|
57672
|
+
utils.subnameResponseToRequest = utils.mapAddrMapToAddressRecords = utils.mapTextMapToTextRecords = utils.mapAddressesToInternal = void 0;
|
|
57673
|
+
const dto_1 = requireDto();
|
|
57674
|
+
const mapAddressesToInternal = (addrs) => {
|
|
57675
|
+
const _addr = addrs.map((addr) => {
|
|
57676
|
+
const _internalAddr = {
|
|
57677
|
+
coin: (0, dto_1.getCoinType)(addr.chain),
|
|
57678
|
+
value: addr.value,
|
|
57679
|
+
};
|
|
57680
|
+
return _internalAddr;
|
|
57681
|
+
});
|
|
57682
|
+
return _addr;
|
|
57683
|
+
};
|
|
57684
|
+
utils.mapAddressesToInternal = mapAddressesToInternal;
|
|
57685
|
+
const mapTextMapToTextRecords = (txtMap) => {
|
|
57686
|
+
return Object.keys(txtMap).map((txtKey) => {
|
|
57687
|
+
return {
|
|
57688
|
+
key: txtKey,
|
|
57689
|
+
value: txtMap[txtKey],
|
|
57690
|
+
};
|
|
57691
|
+
});
|
|
57692
|
+
};
|
|
57693
|
+
utils.mapTextMapToTextRecords = mapTextMapToTextRecords;
|
|
57694
|
+
const mapAddrMapToAddressRecords = (addrMap) => {
|
|
57695
|
+
return Object.keys(addrMap).map((addrKey) => {
|
|
57696
|
+
return {
|
|
57697
|
+
coin: parseInt(addrKey),
|
|
57698
|
+
value: addrMap[addrKey],
|
|
57699
|
+
};
|
|
57700
|
+
});
|
|
57701
|
+
};
|
|
57702
|
+
utils.mapAddrMapToAddressRecords = mapAddrMapToAddressRecords;
|
|
57703
|
+
const subnameResponseToRequest = (response) => {
|
|
57704
|
+
const addrs = [];
|
|
57705
|
+
const texts = [];
|
|
57706
|
+
if (response.addresses) {
|
|
57707
|
+
Object.keys(response.addresses).forEach((addrCoin) => {
|
|
57708
|
+
try {
|
|
57709
|
+
const coin = parseInt(addrCoin);
|
|
57710
|
+
const value = response.addresses[addrCoin];
|
|
57711
|
+
addrs.push({ coin: coin, value: value });
|
|
57712
|
+
}
|
|
57713
|
+
catch (err) { }
|
|
57714
|
+
});
|
|
57715
|
+
}
|
|
57716
|
+
if (response.texts) {
|
|
57717
|
+
Object.keys(response.texts).forEach((txt) => {
|
|
57718
|
+
texts.push({
|
|
57719
|
+
key: txt,
|
|
57720
|
+
value: response.texts[txt],
|
|
57721
|
+
});
|
|
57722
|
+
});
|
|
57723
|
+
}
|
|
57724
|
+
return {
|
|
57725
|
+
label: response.label,
|
|
57726
|
+
parentName: response.parentName,
|
|
57727
|
+
addresses: addrs,
|
|
57728
|
+
texts: texts,
|
|
57729
|
+
contenthash: response.contenthash,
|
|
57730
|
+
metadata: Object.keys(response.metadata || {}).map((data) => {
|
|
57731
|
+
return {
|
|
57732
|
+
key: data,
|
|
57733
|
+
value: response.metadata[data],
|
|
57734
|
+
};
|
|
57735
|
+
}),
|
|
57736
|
+
ttl: response.ttl,
|
|
57737
|
+
};
|
|
57738
|
+
};
|
|
57739
|
+
utils.subnameResponseToRequest = subnameResponseToRequest;
|
|
57740
|
+
return utils;
|
|
57741
|
+
}
|
|
57742
|
+
|
|
57743
|
+
var publicActions = {};
|
|
57744
|
+
|
|
57745
|
+
var hasRequiredPublicActions;
|
|
57746
|
+
|
|
57747
|
+
function requirePublicActions () {
|
|
57748
|
+
if (hasRequiredPublicActions) return publicActions;
|
|
57749
|
+
hasRequiredPublicActions = 1;
|
|
57750
|
+
Object.defineProperty(publicActions, "__esModule", { value: true });
|
|
57751
|
+
publicActions._getFilteredSubnames = publicActions._getSingleSubname = publicActions._getDataRecord = publicActions._getDataRecords = publicActions._getTextRecord = publicActions._getTextRecords = publicActions._isSubnameAvailable = void 0;
|
|
57752
|
+
const axios_1 = /*@__PURE__*/ requireAxios();
|
|
57753
|
+
const _isSubnameAvailable = async (client, fullSubname) => {
|
|
57754
|
+
try {
|
|
57755
|
+
const { data } = await client.get(`/api/v1/subnames/${fullSubname}`);
|
|
57756
|
+
return { isAvailable: !data };
|
|
57757
|
+
}
|
|
57758
|
+
catch (err) {
|
|
57759
|
+
if (err instanceof axios_1.AxiosError) {
|
|
57760
|
+
const axiosErr = err;
|
|
57761
|
+
if (axiosErr.response?.status === 404) {
|
|
57762
|
+
return { isAvailable: true };
|
|
57763
|
+
}
|
|
57764
|
+
}
|
|
57765
|
+
throw err;
|
|
57766
|
+
}
|
|
57767
|
+
};
|
|
57768
|
+
publicActions._isSubnameAvailable = _isSubnameAvailable;
|
|
57769
|
+
const _getTextRecords = async (client, fullSubname) => {
|
|
57770
|
+
const subname = await client
|
|
57771
|
+
.get(`/api/v1/subnames/${fullSubname}`)
|
|
57772
|
+
.then((res) => res.data);
|
|
57773
|
+
return subname.texts;
|
|
57774
|
+
};
|
|
57775
|
+
publicActions._getTextRecords = _getTextRecords;
|
|
57776
|
+
const _getTextRecord = async (client, fullSubname, key) => {
|
|
57777
|
+
const subname = await client
|
|
57778
|
+
.get(`/api/v1/subnames/${fullSubname}`)
|
|
57779
|
+
.then((res) => res.data);
|
|
57780
|
+
return { record: subname.texts[key] };
|
|
57781
|
+
};
|
|
57782
|
+
publicActions._getTextRecord = _getTextRecord;
|
|
57783
|
+
const _getDataRecords = async (client, fullSubname) => {
|
|
57784
|
+
const subname = await client
|
|
57785
|
+
.get(`/api/v1/subnames/${fullSubname}`)
|
|
57786
|
+
.then((res) => res.data);
|
|
57787
|
+
return subname.metadata;
|
|
57788
|
+
};
|
|
57789
|
+
publicActions._getDataRecords = _getDataRecords;
|
|
57790
|
+
const _getDataRecord = async (client, fullSubname, key) => {
|
|
57791
|
+
const subname = await client
|
|
57792
|
+
.get(`/api/v1/subnames/${fullSubname}`)
|
|
57793
|
+
.then((res) => res.data);
|
|
57794
|
+
return { record: subname.metadata[key] };
|
|
57795
|
+
};
|
|
57796
|
+
publicActions._getDataRecord = _getDataRecord;
|
|
57797
|
+
const _getSingleSubname = (client, fullSubname) => {
|
|
57798
|
+
return client
|
|
57799
|
+
.get(`/api/v1/subnames/${fullSubname}`)
|
|
57800
|
+
.then((res) => res.data);
|
|
57801
|
+
};
|
|
57802
|
+
publicActions._getSingleSubname = _getSingleSubname;
|
|
57803
|
+
const _getFilteredSubnames = async (client, query) => {
|
|
57804
|
+
if (query.parentName) {
|
|
57805
|
+
query.parentName;
|
|
57806
|
+
}
|
|
57807
|
+
if (query.page) {
|
|
57808
|
+
query.page;
|
|
57809
|
+
}
|
|
57810
|
+
if (query.size) {
|
|
57811
|
+
query.size;
|
|
57812
|
+
}
|
|
57813
|
+
if (query.parentNames && query.parentNames.length > 0) {
|
|
57814
|
+
query.parentNames;
|
|
57815
|
+
}
|
|
57816
|
+
if (query.labelSearch) {
|
|
57817
|
+
query.labelSearch;
|
|
57818
|
+
}
|
|
57819
|
+
if (query.metadata) {
|
|
57820
|
+
JSON.stringify(query.metadata);
|
|
57821
|
+
}
|
|
57822
|
+
return client
|
|
57823
|
+
.post(`/api/v1/subnames/search`, query)
|
|
57824
|
+
.then((res) => res.data);
|
|
57825
|
+
};
|
|
57826
|
+
publicActions._getFilteredSubnames = _getFilteredSubnames;
|
|
57827
|
+
return publicActions;
|
|
57828
|
+
}
|
|
57829
|
+
|
|
57830
|
+
var hasRequiredPrivateActions;
|
|
57831
|
+
|
|
57832
|
+
function requirePrivateActions () {
|
|
57833
|
+
if (hasRequiredPrivateActions) return privateActions;
|
|
57834
|
+
hasRequiredPrivateActions = 1;
|
|
57835
|
+
Object.defineProperty(privateActions, "__esModule", { value: true });
|
|
57836
|
+
privateActions._setDefaultEthereumAddress = privateActions._deleteDataRecord = privateActions._addDataRecord = privateActions._deleteTextRecord = privateActions._addTextRecord = privateActions._deleteSubname = privateActions._deleteAddressRecord = privateActions._addAddressRecord = privateActions._updateSubname = privateActions._createSubname = void 0;
|
|
57837
|
+
const utils_1 = requireUtils();
|
|
57838
|
+
const chains_1 = requireChains();
|
|
57839
|
+
const public_actions_1 = requirePublicActions();
|
|
57840
|
+
const AUTH_HEADER = "x-auth-token";
|
|
57841
|
+
const _createSubname = (client, apiKey, createRequest) => {
|
|
57842
|
+
const request = {
|
|
57843
|
+
label: createRequest.label,
|
|
57844
|
+
parentName: createRequest.parentName,
|
|
57845
|
+
addresses: (0, utils_1.mapAddressesToInternal)(createRequest.addresses || []),
|
|
57846
|
+
contenthash: createRequest.contenthash,
|
|
57847
|
+
metadata: createRequest.metadata,
|
|
57848
|
+
texts: createRequest.texts,
|
|
57849
|
+
ttl: createRequest.ttl,
|
|
57850
|
+
owner: createRequest.owner
|
|
57851
|
+
};
|
|
57852
|
+
return client.post("/api/v1/subnames", request, {
|
|
57853
|
+
headers: createAuthorizationHeaders(apiKey),
|
|
57854
|
+
});
|
|
57855
|
+
};
|
|
57856
|
+
privateActions._createSubname = _createSubname;
|
|
57857
|
+
const _updateSubname = async (client, apiKey, fullSubname, updateRequest) => {
|
|
57858
|
+
const subname = await (0, public_actions_1._getSingleSubname)(client, fullSubname);
|
|
57859
|
+
const request = {
|
|
57860
|
+
label: subname.label,
|
|
57861
|
+
parentName: subname.parentName,
|
|
57862
|
+
addresses: (0, utils_1.mapAddressesToInternal)(updateRequest.addresses || []),
|
|
57863
|
+
contenthash: updateRequest.contenthash,
|
|
57864
|
+
metadata: updateRequest.metadata,
|
|
57865
|
+
texts: updateRequest.texts,
|
|
57866
|
+
ttl: updateRequest.ttl,
|
|
57867
|
+
};
|
|
57868
|
+
return client.post("/api/v1/subnames", request, {
|
|
57869
|
+
headers: createAuthorizationHeaders(apiKey),
|
|
57870
|
+
}).then(res => res.data);
|
|
57871
|
+
};
|
|
57872
|
+
privateActions._updateSubname = _updateSubname;
|
|
57873
|
+
const _addAddressRecord = async (client, apiKey, fullSubname, coin, value) => {
|
|
57874
|
+
const subname = await (0, public_actions_1._getSingleSubname)(client, fullSubname);
|
|
57875
|
+
const addresses = subname.addresses || {};
|
|
57876
|
+
addresses[coin] = value;
|
|
57877
|
+
const _req = (0, utils_1.subnameResponseToRequest)(subname);
|
|
57878
|
+
const request = {
|
|
57879
|
+
..._req,
|
|
57880
|
+
addresses: (0, utils_1.mapAddrMapToAddressRecords)(addresses),
|
|
57881
|
+
};
|
|
57882
|
+
return client.post(`/api/v1/subnames`, request, {
|
|
57883
|
+
headers: createAuthorizationHeaders(apiKey),
|
|
57884
|
+
});
|
|
57885
|
+
};
|
|
57886
|
+
privateActions._addAddressRecord = _addAddressRecord;
|
|
57887
|
+
const _deleteAddressRecord = async (client, apiKey, fullSubname, coin) => {
|
|
57888
|
+
const subname = await (0, public_actions_1._getSingleSubname)(client, fullSubname);
|
|
57889
|
+
const addresses = subname.addresses || {};
|
|
57890
|
+
delete addresses[coin];
|
|
57891
|
+
const _req = (0, utils_1.subnameResponseToRequest)(subname);
|
|
57892
|
+
const request = {
|
|
57893
|
+
..._req,
|
|
57894
|
+
addresses: (0, utils_1.mapAddrMapToAddressRecords)(addresses),
|
|
57895
|
+
};
|
|
57896
|
+
return client.post(`/api/v1/subnames`, request, {
|
|
57897
|
+
headers: createAuthorizationHeaders(apiKey),
|
|
57898
|
+
});
|
|
57899
|
+
};
|
|
57900
|
+
privateActions._deleteAddressRecord = _deleteAddressRecord;
|
|
57901
|
+
const _deleteSubname = (client, apiKey, fullSubname) => {
|
|
57902
|
+
return client.delete(`/api/v1/subnames/${fullSubname}`, {
|
|
57903
|
+
headers: createAuthorizationHeaders(apiKey),
|
|
57904
|
+
});
|
|
57905
|
+
};
|
|
57906
|
+
privateActions._deleteSubname = _deleteSubname;
|
|
57907
|
+
const _addTextRecord = async (client, apiKey, fullSubname, key, value) => {
|
|
57908
|
+
const subname = await (0, public_actions_1._getSingleSubname)(client, fullSubname);
|
|
57909
|
+
const _req = (0, utils_1.subnameResponseToRequest)(subname);
|
|
57910
|
+
const texts = subname.texts || {};
|
|
57911
|
+
texts[key] = value;
|
|
57912
|
+
const request = {
|
|
57913
|
+
..._req,
|
|
57914
|
+
texts: (0, utils_1.mapTextMapToTextRecords)(texts),
|
|
57915
|
+
};
|
|
57916
|
+
return client.post(`/api/v1/subnames`, request, {
|
|
57917
|
+
headers: createAuthorizationHeaders(apiKey),
|
|
57918
|
+
});
|
|
57919
|
+
};
|
|
57920
|
+
privateActions._addTextRecord = _addTextRecord;
|
|
57921
|
+
const _deleteTextRecord = async (client, apiKey, fullSubname, key) => {
|
|
57922
|
+
const subname = await (0, public_actions_1._getSingleSubname)(client, fullSubname);
|
|
57923
|
+
const texts = subname.texts || {};
|
|
57924
|
+
delete texts[key];
|
|
57925
|
+
const _req = (0, utils_1.subnameResponseToRequest)(subname);
|
|
57926
|
+
const request = {
|
|
57927
|
+
..._req,
|
|
57928
|
+
texts: (0, utils_1.mapTextMapToTextRecords)(texts),
|
|
57929
|
+
};
|
|
57930
|
+
return client.post(`/api/v1/subnames`, request, {
|
|
57931
|
+
headers: createAuthorizationHeaders(apiKey),
|
|
57932
|
+
});
|
|
57933
|
+
};
|
|
57934
|
+
privateActions._deleteTextRecord = _deleteTextRecord;
|
|
57935
|
+
const _addDataRecord = async (client, apiKey, fullSubname, key, value) => {
|
|
57936
|
+
const subname = await (0, public_actions_1._getSingleSubname)(client, fullSubname);
|
|
57937
|
+
const metadata = subname.metadata || {};
|
|
57938
|
+
metadata[key] = value;
|
|
57939
|
+
const _req = (0, utils_1.subnameResponseToRequest)(subname);
|
|
57940
|
+
const request = {
|
|
57941
|
+
..._req,
|
|
57942
|
+
metadata: (0, utils_1.mapTextMapToTextRecords)(metadata),
|
|
57943
|
+
};
|
|
57944
|
+
return client.post(`/api/v1/subnames`, request, {
|
|
57945
|
+
headers: createAuthorizationHeaders(apiKey),
|
|
57946
|
+
});
|
|
57947
|
+
};
|
|
57948
|
+
privateActions._addDataRecord = _addDataRecord;
|
|
57949
|
+
const _deleteDataRecord = async (client, apiKey, fullSubname, key) => {
|
|
57950
|
+
const subname = await client
|
|
57951
|
+
.get(`/api/v1/subnames/${fullSubname}`)
|
|
57952
|
+
.then((res) => res.data);
|
|
57953
|
+
const updatedData = Object.entries(subname.metadata)
|
|
57954
|
+
.filter(([dataKey]) => dataKey !== key)
|
|
57955
|
+
.map(([dataKey, dataValue]) => ({ key: dataKey, value: dataValue }));
|
|
57956
|
+
const _req = (0, utils_1.subnameResponseToRequest)(subname);
|
|
57957
|
+
const request = {
|
|
57958
|
+
..._req,
|
|
57959
|
+
metadata: updatedData,
|
|
57960
|
+
};
|
|
57961
|
+
return client.post(`/api/v1/subnames`, request, {
|
|
57962
|
+
headers: createAuthorizationHeaders(apiKey),
|
|
57963
|
+
});
|
|
57964
|
+
};
|
|
57965
|
+
privateActions._deleteDataRecord = _deleteDataRecord;
|
|
57966
|
+
const _setDefaultEthereumAddress = async (client, apiKey, fullSubname, value) => {
|
|
57967
|
+
const subname = await (0, public_actions_1._getSingleSubname)(client, fullSubname);
|
|
57968
|
+
const addresses = subname.addresses || {};
|
|
57969
|
+
// Derive EVM chains from shared chainMetadata (evm=true)
|
|
57970
|
+
Object.values(chains_1.chainMetadata)
|
|
57971
|
+
.filter((meta) => meta.evm)
|
|
57972
|
+
.forEach((meta) => {
|
|
57973
|
+
addresses[meta.coin] = value;
|
|
57974
|
+
});
|
|
57975
|
+
const _req = (0, utils_1.subnameResponseToRequest)(subname);
|
|
57976
|
+
const request = {
|
|
57977
|
+
..._req,
|
|
57978
|
+
addresses: (0, utils_1.mapAddrMapToAddressRecords)(addresses),
|
|
57979
|
+
};
|
|
57980
|
+
return client.post(`/api/v1/subnames`, request, {
|
|
57981
|
+
headers: createAuthorizationHeaders(apiKey),
|
|
57982
|
+
});
|
|
57983
|
+
};
|
|
57984
|
+
privateActions._setDefaultEthereumAddress = _setDefaultEthereumAddress;
|
|
57985
|
+
const createAuthorizationHeaders = (apiKey) => {
|
|
57986
|
+
return {
|
|
57987
|
+
[AUTH_HEADER]: `${apiKey}`,
|
|
57988
|
+
};
|
|
57989
|
+
};
|
|
57990
|
+
return privateActions;
|
|
57991
|
+
}
|
|
57992
|
+
|
|
57993
|
+
var hasRequiredOffchainClient;
|
|
57994
|
+
|
|
57995
|
+
function requireOffchainClient () {
|
|
57996
|
+
if (hasRequiredOffchainClient) return offchainClient;
|
|
57997
|
+
hasRequiredOffchainClient = 1;
|
|
57998
|
+
var __createBinding = (offchainClient && offchainClient.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
57999
|
+
if (k2 === undefined) k2 = k;
|
|
58000
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
58001
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
58002
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
58003
|
+
}
|
|
58004
|
+
Object.defineProperty(o, k2, desc);
|
|
58005
|
+
}) : (function(o, m, k, k2) {
|
|
58006
|
+
if (k2 === undefined) k2 = k;
|
|
58007
|
+
o[k2] = m[k];
|
|
58008
|
+
}));
|
|
58009
|
+
var __setModuleDefault = (offchainClient && offchainClient.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
58010
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
58011
|
+
}) : function(o, v) {
|
|
58012
|
+
o["default"] = v;
|
|
58013
|
+
});
|
|
58014
|
+
var __importStar = (offchainClient && offchainClient.__importStar) || (function () {
|
|
58015
|
+
var ownKeys = function(o) {
|
|
58016
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
58017
|
+
var ar = [];
|
|
58018
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
58019
|
+
return ar;
|
|
58020
|
+
};
|
|
58021
|
+
return ownKeys(o);
|
|
58022
|
+
};
|
|
58023
|
+
return function (mod) {
|
|
58024
|
+
if (mod && mod.__esModule) return mod;
|
|
58025
|
+
var result = {};
|
|
58026
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
58027
|
+
__setModuleDefault(result, mod);
|
|
58028
|
+
return result;
|
|
58029
|
+
};
|
|
58030
|
+
})();
|
|
58031
|
+
Object.defineProperty(offchainClient, "__esModule", { value: true });
|
|
58032
|
+
offchainClient.createOffchainClient = void 0;
|
|
58033
|
+
const axios_1 = __importStar(/*@__PURE__*/ requireAxios());
|
|
58034
|
+
const private_actions_1 = requirePrivateActions();
|
|
58035
|
+
const public_actions_1 = requirePublicActions();
|
|
58036
|
+
const dto_1 = requireDto();
|
|
58037
|
+
/** Backend URI mappings for different network modes */
|
|
58038
|
+
const backendUris = {
|
|
58039
|
+
mainnet: "https://offchain-manager.namespace.ninja",
|
|
58040
|
+
sepolia: "https://staging.offchain-manager.namespace.ninja",
|
|
58041
|
+
};
|
|
58042
|
+
class HttpOffchainClient {
|
|
58043
|
+
constructor(config = {}) {
|
|
58044
|
+
this.config = config;
|
|
58045
|
+
this.apiKeys = {};
|
|
58046
|
+
this.fetchApiKeyForName = (name, isSubname = true) => {
|
|
58047
|
+
const extractParent = () => {
|
|
58048
|
+
const split = name.split(".");
|
|
58049
|
+
const splitLen = split.length;
|
|
58050
|
+
if (splitLen < 2) {
|
|
58051
|
+
throw Error(`Invalid ENS name: ${name}`);
|
|
58052
|
+
}
|
|
58053
|
+
if (splitLen === 2) {
|
|
58054
|
+
return name;
|
|
58055
|
+
}
|
|
58056
|
+
return split[splitLen - 2] + "." + split[splitLen - 1];
|
|
58057
|
+
};
|
|
58058
|
+
let parentName = isSubname ? extractParent() : name;
|
|
58059
|
+
if (this.apiKeys[parentName]) {
|
|
58060
|
+
return this.apiKeys[parentName];
|
|
58061
|
+
}
|
|
58062
|
+
if (this.defaultApiKey) {
|
|
58063
|
+
return this.defaultApiKey;
|
|
58064
|
+
}
|
|
58065
|
+
throw new Error(`Api key is not present for name: ${parentName}. Use setApiKey() or setDefaultApiKey() to configure authentication.`);
|
|
58066
|
+
};
|
|
58067
|
+
const mode = config.mode || "mainnet";
|
|
58068
|
+
const uri = config.backendUri || backendUris[mode];
|
|
58069
|
+
this.HTTP = axios_1.default.create({ ...this.config, baseURL: uri });
|
|
58070
|
+
// Initialize authentication from config if provided
|
|
58071
|
+
if (config.defaultApiKey) {
|
|
58072
|
+
this.setDefaultApiKey(config.defaultApiKey);
|
|
58073
|
+
}
|
|
58074
|
+
if (config.domainApiKeys) {
|
|
58075
|
+
for (const [ensName, apiKey] of Object.entries(config.domainApiKeys)) {
|
|
58076
|
+
this.setApiKey(ensName, apiKey);
|
|
58077
|
+
}
|
|
58078
|
+
}
|
|
58079
|
+
}
|
|
58080
|
+
async updateSubname(subname, request) {
|
|
58081
|
+
return (0, private_actions_1._updateSubname)(this.HTTP, this.fetchApiKeyForName(subname), subname, request);
|
|
58082
|
+
}
|
|
58083
|
+
async addAddressRecord(subname, chain, value) {
|
|
58084
|
+
const coin = (0, dto_1.getCoinType)(chain);
|
|
58085
|
+
if (coin === undefined) {
|
|
58086
|
+
throw Error(`Unsupported address: ${chain}`);
|
|
58087
|
+
}
|
|
58088
|
+
await (0, private_actions_1._addAddressRecord)(this.HTTP, this.fetchApiKeyForName(subname), subname, coin, value);
|
|
58089
|
+
}
|
|
58090
|
+
async deleteAddressRecord(subname, chain) {
|
|
58091
|
+
const coin = (0, dto_1.getCoinType)(chain);
|
|
58092
|
+
if (coin === undefined) {
|
|
58093
|
+
throw Error(`Unsupported address: ${chain}`);
|
|
58094
|
+
}
|
|
58095
|
+
await (0, private_actions_1._deleteAddressRecord)(this.HTTP, this.fetchApiKeyForName(subname), subname, coin);
|
|
58096
|
+
}
|
|
58097
|
+
async setDefaultEvmAddress(subname, value) {
|
|
58098
|
+
await (0, private_actions_1._setDefaultEthereumAddress)(this.HTTP, this.fetchApiKeyForName(subname), subname, value);
|
|
58099
|
+
}
|
|
58100
|
+
async getSingleSubname(fullSubname) {
|
|
58101
|
+
try {
|
|
58102
|
+
return (0, public_actions_1._getSingleSubname)(this.HTTP, fullSubname);
|
|
58103
|
+
}
|
|
58104
|
+
catch (err) {
|
|
58105
|
+
if (err instanceof axios_1.AxiosError) {
|
|
58106
|
+
const axiosErr = err;
|
|
58107
|
+
if (axiosErr.response?.status === 404) {
|
|
58108
|
+
return null;
|
|
58109
|
+
}
|
|
58110
|
+
}
|
|
58111
|
+
throw err;
|
|
58112
|
+
}
|
|
58113
|
+
}
|
|
58114
|
+
async getTextRecords(fullSubname) {
|
|
58115
|
+
return await (0, public_actions_1._getTextRecords)(this.HTTP, fullSubname);
|
|
58116
|
+
}
|
|
58117
|
+
async getTextRecord(fullSubname, key) {
|
|
58118
|
+
return await (0, public_actions_1._getTextRecord)(this.HTTP, fullSubname, key);
|
|
58119
|
+
}
|
|
58120
|
+
async getDataRecords(fullSubname) {
|
|
58121
|
+
return await (0, public_actions_1._getDataRecords)(this.HTTP, fullSubname);
|
|
58122
|
+
}
|
|
58123
|
+
async getDataRecord(fullSubname, key) {
|
|
58124
|
+
return await (0, public_actions_1._getDataRecord)(this.HTTP, fullSubname, key);
|
|
58125
|
+
}
|
|
58126
|
+
async isSubnameAvailable(fullSubname) {
|
|
58127
|
+
return await (0, public_actions_1._isSubnameAvailable)(this.HTTP, fullSubname);
|
|
58128
|
+
}
|
|
58129
|
+
async createSubname(request) {
|
|
58130
|
+
await (0, private_actions_1._createSubname)(this.HTTP, this.fetchApiKeyForName(request.parentName, false), request);
|
|
58131
|
+
}
|
|
58132
|
+
async deleteSubname(fullSubname) {
|
|
58133
|
+
await (0, private_actions_1._deleteSubname)(this.HTTP, this.fetchApiKeyForName(fullSubname), fullSubname);
|
|
58134
|
+
}
|
|
58135
|
+
async addTextRecord(subname, key, value) {
|
|
58136
|
+
await (0, private_actions_1._addTextRecord)(this.HTTP, this.fetchApiKeyForName(subname), subname, key, value);
|
|
58137
|
+
}
|
|
58138
|
+
async deleteTextRecord(fullSubname, key) {
|
|
58139
|
+
await (0, private_actions_1._deleteTextRecord)(this.HTTP, this.fetchApiKeyForName(fullSubname), fullSubname, key);
|
|
58140
|
+
}
|
|
58141
|
+
async addDataRecord(subname, key, value) {
|
|
58142
|
+
await (0, private_actions_1._addDataRecord)(this.HTTP, this.fetchApiKeyForName(subname), subname, key, value);
|
|
58143
|
+
}
|
|
58144
|
+
async deleteDataRecord(fullSubname, key) {
|
|
58145
|
+
await (0, private_actions_1._deleteDataRecord)(this.HTTP, this.fetchApiKeyForName(fullSubname), fullSubname, key);
|
|
58146
|
+
}
|
|
58147
|
+
async getFilteredSubnames(query) {
|
|
58148
|
+
return (0, public_actions_1._getFilteredSubnames)(this.HTTP, query);
|
|
58149
|
+
}
|
|
58150
|
+
setApiKey(ensName, apiKey) {
|
|
58151
|
+
this.apiKeys[ensName] = apiKey;
|
|
58152
|
+
}
|
|
58153
|
+
setDefaultApiKey(apiKey) {
|
|
58154
|
+
this.defaultApiKey = apiKey;
|
|
58155
|
+
}
|
|
58156
|
+
}
|
|
58157
|
+
/**
|
|
58158
|
+
* Create a new OffchainClient instance for managing ENS subnames.
|
|
58159
|
+
*
|
|
58160
|
+
* @param config - Optional configuration options including network mode, HTTP settings, and API keys
|
|
58161
|
+
* @returns A configured OffchainClient instance
|
|
58162
|
+
*
|
|
58163
|
+
* @example
|
|
58164
|
+
* ```typescript
|
|
58165
|
+
* import { createOffchainClient } from '@thenamespace/offchain-manager';
|
|
58166
|
+
*
|
|
58167
|
+
* // 1. No-arg initialization (defaults to mainnet)
|
|
58168
|
+
* const client = createOffchainClient();
|
|
58169
|
+
*
|
|
58170
|
+
* // 2. Configure network mode
|
|
58171
|
+
* const client = createOffchainClient({ mode: 'sepolia' });
|
|
58172
|
+
*
|
|
58173
|
+
* // 3. Initialize with address-based API key (works with all your ENS domains)
|
|
58174
|
+
* const client = createOffchainClient({
|
|
58175
|
+
* mode: 'sepolia',
|
|
58176
|
+
* defaultApiKey: 'your-address-based-api-key'
|
|
58177
|
+
* });
|
|
58178
|
+
*
|
|
58179
|
+
* // 4. Initialize with domain-based API keys (for specific ENS domains)
|
|
58180
|
+
* const client = createOffchainClient({
|
|
58181
|
+
* mode: 'sepolia',
|
|
58182
|
+
* domainApiKeys: {
|
|
58183
|
+
* 'example.eth': 'your-domain-based-api-key',
|
|
58184
|
+
* 'test.eth': 'another-domain-key'
|
|
58185
|
+
* }
|
|
58186
|
+
* });
|
|
58187
|
+
*
|
|
58188
|
+
* // 5. Initialize with both default and domain API keys
|
|
58189
|
+
* const client = createOffchainClient({
|
|
58190
|
+
* mode: 'sepolia',
|
|
58191
|
+
* defaultApiKey: 'your-address-based-api-key',
|
|
58192
|
+
* domainApiKeys: {
|
|
58193
|
+
* 'example.eth': 'your-domain-based-api-key'
|
|
58194
|
+
* }
|
|
58195
|
+
* });
|
|
58196
|
+
*
|
|
58197
|
+
* // You can also set/update keys after initialization
|
|
58198
|
+
* client.setDefaultApiKey('your-api-key');
|
|
58199
|
+
* client.setApiKey('example.eth', 'your-domain-key');
|
|
58200
|
+
* ```
|
|
58201
|
+
*/
|
|
58202
|
+
const createOffchainClient = (config = {}) => {
|
|
58203
|
+
return new HttpOffchainClient(config);
|
|
58204
|
+
};
|
|
58205
|
+
offchainClient.createOffchainClient = createOffchainClient;
|
|
58206
|
+
return offchainClient;
|
|
58207
|
+
}
|
|
58208
|
+
|
|
58209
|
+
var validation = {};
|
|
58210
|
+
|
|
58211
|
+
var errors = {};
|
|
58212
|
+
|
|
58213
|
+
var hasRequiredErrors;
|
|
58214
|
+
|
|
58215
|
+
function requireErrors () {
|
|
58216
|
+
if (hasRequiredErrors) return errors;
|
|
58217
|
+
hasRequiredErrors = 1;
|
|
58218
|
+
Object.defineProperty(errors, "__esModule", { value: true });
|
|
58219
|
+
errors.RateLimitError = errors.SubnameAlreadyExistsError = errors.SubnameNotFoundError = errors.ValidationError = errors.AuthenticationError = errors.NamespaceSDKError = void 0;
|
|
58220
|
+
class NamespaceSDKError extends Error {
|
|
58221
|
+
constructor(message, code) {
|
|
58222
|
+
super(message);
|
|
58223
|
+
this.code = code;
|
|
58224
|
+
this.name = 'NamespaceSDKError';
|
|
58225
|
+
}
|
|
58226
|
+
}
|
|
58227
|
+
errors.NamespaceSDKError = NamespaceSDKError;
|
|
58228
|
+
class AuthenticationError extends NamespaceSDKError {
|
|
58229
|
+
constructor(message = 'Authentication failed. Please check your API key.') {
|
|
58230
|
+
super(message, 'AUTH_ERROR');
|
|
58231
|
+
this.name = 'AuthenticationError';
|
|
58232
|
+
}
|
|
58233
|
+
}
|
|
58234
|
+
errors.AuthenticationError = AuthenticationError;
|
|
58235
|
+
class ValidationError extends NamespaceSDKError {
|
|
58236
|
+
constructor(message) {
|
|
58237
|
+
super(message, 'VALIDATION_ERROR');
|
|
58238
|
+
this.name = 'ValidationError';
|
|
58239
|
+
}
|
|
58240
|
+
}
|
|
58241
|
+
errors.ValidationError = ValidationError;
|
|
58242
|
+
class SubnameNotFoundError extends NamespaceSDKError {
|
|
58243
|
+
constructor(subname) {
|
|
58244
|
+
super(`Subname not found: ${subname}`, 'SUBDOMAIN_NOT_FOUND');
|
|
58245
|
+
this.name = 'SubnameNotFoundError';
|
|
58246
|
+
}
|
|
58247
|
+
}
|
|
58248
|
+
errors.SubnameNotFoundError = SubnameNotFoundError;
|
|
58249
|
+
class SubnameAlreadyExistsError extends NamespaceSDKError {
|
|
58250
|
+
constructor(subname) {
|
|
58251
|
+
super(`Subname already exists: ${subname}`, 'SUBDOMAIN_EXISTS');
|
|
58252
|
+
this.name = 'SubnameAlreadyExistsError';
|
|
58253
|
+
}
|
|
58254
|
+
}
|
|
58255
|
+
errors.SubnameAlreadyExistsError = SubnameAlreadyExistsError;
|
|
58256
|
+
class RateLimitError extends NamespaceSDKError {
|
|
58257
|
+
constructor(message = 'Rate limit exceeded. Please try again later.') {
|
|
58258
|
+
super(message, 'RATE_LIMIT');
|
|
58259
|
+
this.name = 'RateLimitError';
|
|
58260
|
+
}
|
|
58261
|
+
}
|
|
58262
|
+
errors.RateLimitError = RateLimitError;
|
|
58263
|
+
return errors;
|
|
58264
|
+
}
|
|
58265
|
+
|
|
58266
|
+
var hasRequiredValidation;
|
|
58267
|
+
|
|
58268
|
+
function requireValidation () {
|
|
58269
|
+
if (hasRequiredValidation) return validation;
|
|
58270
|
+
hasRequiredValidation = 1;
|
|
58271
|
+
(function (exports) {
|
|
58272
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
58273
|
+
exports.validateApiKey = exports.validateAddress = exports.validateSubname = exports.validateEnsName = void 0;
|
|
58274
|
+
const errors_1 = requireErrors();
|
|
58275
|
+
const dto_1 = requireDto();
|
|
58276
|
+
/**
|
|
58277
|
+
* Validates that a string is a properly formatted ENS domain name.
|
|
58278
|
+
* ENS supports many TLDs including .eth, .com, .art, .xyz, and others through ENS import.
|
|
58279
|
+
*
|
|
58280
|
+
* Validation follows ENS normalization rules:
|
|
58281
|
+
* - Names must be lowercase
|
|
58282
|
+
* - Variation selectors (U+FE00-U+FE0F) are not allowed
|
|
58283
|
+
* - Zero-width characters are not allowed (prevents homoglyph attacks)
|
|
58284
|
+
* - Supports emojis, accented characters, and many Unicode characters
|
|
58285
|
+
*
|
|
58286
|
+
* @param name - The ENS name to validate (e.g., 'example.eth', 'mysite.com', 'art.gallery.art')
|
|
58287
|
+
* @throws {ValidationError} When the name format is invalid
|
|
58288
|
+
*
|
|
58289
|
+
* @example
|
|
58290
|
+
* ```typescript
|
|
58291
|
+
* import { validateEnsName } from '@thenamespace/offchain-manager';
|
|
58292
|
+
*
|
|
58293
|
+
* validateEnsName('example.eth'); // ✅ Valid
|
|
58294
|
+
* validateEnsName('mysite.com'); // ✅ Valid (ENS supports imported domains)
|
|
58295
|
+
* validateEnsName('gallery.art'); // ✅ Valid
|
|
58296
|
+
* validateEnsName('sub.example.eth'); // ✅ Valid
|
|
58297
|
+
* validateEnsName('🚀.eth'); // ✅ Valid (emojis supported)
|
|
58298
|
+
* validateEnsName('café.eth'); // ✅ Valid (accented characters supported)
|
|
58299
|
+
* validateEnsName('Example.eth'); // ❌ Throws ValidationError (uppercase not allowed)
|
|
58300
|
+
* validateEnsName('invalid..domain'); // ❌ Throws ValidationError
|
|
58301
|
+
* ```
|
|
58302
|
+
*/
|
|
58303
|
+
const validateEnsName = (name) => {
|
|
58304
|
+
if (!name || typeof name !== 'string') {
|
|
58305
|
+
throw new errors_1.ValidationError('ENS name must be a non-empty string');
|
|
58306
|
+
}
|
|
58307
|
+
// Check for uppercase characters (ENS normalizes to lowercase)
|
|
58308
|
+
if (name !== name.toLowerCase()) {
|
|
58309
|
+
throw new errors_1.ValidationError(`Invalid ENS domain format: ${name}. ENS names must be lowercase.`);
|
|
58310
|
+
}
|
|
58311
|
+
// Check for variation selectors (U+FE00 to U+FE0F) - these are stripped in ENS normalization
|
|
58312
|
+
const variationSelectorRegex = /[\uFE00-\uFE0F]/;
|
|
58313
|
+
if (variationSelectorRegex.test(name)) {
|
|
58314
|
+
throw new errors_1.ValidationError(`Invalid ENS domain format: ${name}. Variation selectors are not allowed in ENS names.`);
|
|
58315
|
+
}
|
|
58316
|
+
// Check for zero-width characters that could be used for homoglyph attacks
|
|
58317
|
+
const zeroWidthChars = /[\u200B-\u200D\uFEFF\u2060]/;
|
|
58318
|
+
if (zeroWidthChars.test(name)) {
|
|
58319
|
+
throw new errors_1.ValidationError(`Invalid ENS domain format: ${name}. Zero-width characters are not allowed in ENS names.`);
|
|
58320
|
+
}
|
|
58321
|
+
// Basic domain name validation - ENS supports many characters including emojis
|
|
58322
|
+
// Must have at least one dot and proper structure
|
|
58323
|
+
// Allow any character except dots, and ensure proper domain structure
|
|
58324
|
+
const domainRegex = /^[^.]+\.[^.]+(\.[^.]+)*$/;
|
|
58325
|
+
if (!domainRegex.test(name)) {
|
|
58326
|
+
throw new errors_1.ValidationError(`Invalid ENS domain format: ${name}. Must be a valid domain name with at least one TLD (e.g., example.eth, mysite.com, gallery.art).`);
|
|
58327
|
+
}
|
|
58328
|
+
// Check for invalid patterns
|
|
58329
|
+
if (name.includes('..') || name.startsWith('.') || name.endsWith('.')) {
|
|
58330
|
+
throw new errors_1.ValidationError(`Invalid ENS domain format: ${name}. Cannot have consecutive dots or start/end with dots.`);
|
|
58331
|
+
}
|
|
58332
|
+
// Check length constraints (ENS has some practical limits)
|
|
58333
|
+
if (name.length > 253) {
|
|
58334
|
+
throw new errors_1.ValidationError(`ENS domain name too long: ${name}. Maximum length is 253 characters.`);
|
|
58335
|
+
}
|
|
58336
|
+
// Check individual label lengths (max 63 characters per label)
|
|
58337
|
+
const labels = name.split('.');
|
|
58338
|
+
for (const label of labels) {
|
|
58339
|
+
if (label.length === 0) {
|
|
58340
|
+
throw new errors_1.ValidationError(`Invalid ENS domain format: ${name}. Empty labels are not allowed.`);
|
|
58341
|
+
}
|
|
58342
|
+
if (label.length > 63) {
|
|
58343
|
+
throw new errors_1.ValidationError(`Invalid ENS domain format: ${name}. Label '${label}' exceeds 63 character limit.`);
|
|
58344
|
+
}
|
|
58345
|
+
}
|
|
58346
|
+
};
|
|
58347
|
+
exports.validateEnsName = validateEnsName;
|
|
58348
|
+
/**
|
|
58349
|
+
* Validates that a string is a properly formatted ENS subname.
|
|
58350
|
+
* A subname must have at least one label before the parent domain.
|
|
58351
|
+
* Supports all ENS-compatible TLDs (.eth, .com, .art, .xyz, etc.).
|
|
58352
|
+
*
|
|
58353
|
+
* @param subname - The subname to validate (e.g., 'alice.example.eth', 'app.mysite.com')
|
|
58354
|
+
* @throws {ValidationError} When the subname format is invalid
|
|
58355
|
+
*
|
|
58356
|
+
* @example
|
|
58357
|
+
* ```typescript
|
|
58358
|
+
* import { validateSubname } from '@thenamespace/offchain-manager';
|
|
58359
|
+
*
|
|
58360
|
+
* validateSubname('alice.example.eth'); // ✅ Valid
|
|
58361
|
+
* validateSubname('app.mysite.com'); // ✅ Valid
|
|
58362
|
+
* validateSubname('user.gallery.art'); // ✅ Valid
|
|
58363
|
+
* validateSubname('app.subdomain.example.eth'); // ✅ Valid
|
|
58364
|
+
* validateSubname('example.eth'); // ❌ Throws ValidationError (not a subname, just 2 parts)
|
|
58365
|
+
* validateSubname('.example.eth'); // ❌ Throws ValidationError (empty label)
|
|
58366
|
+
* ```
|
|
58367
|
+
*/
|
|
58368
|
+
const validateSubname = (subname) => {
|
|
58369
|
+
if (!subname || typeof subname !== 'string') {
|
|
58370
|
+
throw new errors_1.ValidationError('Subname must be a non-empty string');
|
|
58371
|
+
}
|
|
58372
|
+
// Normalize to lowercase for validation
|
|
58373
|
+
const normalizedSubname = subname.toLowerCase();
|
|
58374
|
+
// Subname should be in format: label.parent.tld (minimum 3 parts)
|
|
58375
|
+
const parts = normalizedSubname.split('.');
|
|
58376
|
+
if (parts.length < 3) {
|
|
58377
|
+
throw new errors_1.ValidationError(`Invalid subname format: ${subname}. Expected format: label.parent.tld (e.g., alice.example.eth, app.mysite.com)`);
|
|
58378
|
+
}
|
|
58379
|
+
const label = parts[0];
|
|
58380
|
+
if (!label || label.length === 0) {
|
|
58381
|
+
throw new errors_1.ValidationError('Subname label cannot be empty');
|
|
58382
|
+
}
|
|
58383
|
+
// Validate the parent domain (everything after the first label)
|
|
58384
|
+
const parent = parts.slice(1).join('.');
|
|
58385
|
+
(0, exports.validateEnsName)(parent);
|
|
58386
|
+
};
|
|
58387
|
+
exports.validateSubname = validateSubname;
|
|
58388
|
+
/**
|
|
58389
|
+
* Validates that an address is properly formatted for the specified blockchain network.
|
|
58390
|
+
* Each blockchain has its own address format and validation rules.
|
|
58391
|
+
*
|
|
58392
|
+
* @param address - The wallet address to validate
|
|
58393
|
+
* @param chain - The blockchain network this address belongs to
|
|
58394
|
+
* @throws {ValidationError} When the address format is invalid for the specified chain
|
|
58395
|
+
*
|
|
58396
|
+
* @example
|
|
58397
|
+
* ```typescript
|
|
58398
|
+
* import { validateAddress, ChainName } from '@thenamespace/offchain-manager';
|
|
58399
|
+
*
|
|
58400
|
+
* // Ethereum-style addresses (40 hex characters)
|
|
58401
|
+
* validateAddress('0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', ChainName.Ethereum); // ✅
|
|
58402
|
+
* validateAddress('0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', ChainName.Base); // ✅
|
|
58403
|
+
*
|
|
58404
|
+
* // Solana addresses (base58 encoded)
|
|
58405
|
+
* validateAddress('9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM', ChainName.Solana); // ✅
|
|
58406
|
+
*
|
|
58407
|
+
* // NEAR addresses (.near suffix)
|
|
58408
|
+
* validateAddress('alice.near', ChainName.Near); // ✅
|
|
58409
|
+
*
|
|
58410
|
+
* // Invalid examples
|
|
58411
|
+
* validateAddress('invalid', ChainName.Ethereum); // ❌ Throws ValidationError
|
|
58412
|
+
* validateAddress('0x123', ChainName.Ethereum); // ❌ Throws ValidationError (too short)
|
|
58413
|
+
* ```
|
|
58414
|
+
*/
|
|
58415
|
+
const validateAddress = (address, chain) => {
|
|
58416
|
+
if (!address || typeof address !== 'string') {
|
|
58417
|
+
throw new errors_1.ValidationError('Address must be a non-empty string');
|
|
58418
|
+
}
|
|
58419
|
+
// Basic address validation based on chain
|
|
58420
|
+
switch (chain) {
|
|
58421
|
+
case dto_1.ChainName.Ethereum:
|
|
58422
|
+
case dto_1.ChainName.Default:
|
|
58423
|
+
case dto_1.ChainName.Arbitrum:
|
|
58424
|
+
case dto_1.ChainName.Optimism:
|
|
58425
|
+
case dto_1.ChainName.Base:
|
|
58426
|
+
case dto_1.ChainName.Polygon:
|
|
58427
|
+
case dto_1.ChainName.Bsc:
|
|
58428
|
+
case dto_1.ChainName.Avalanche:
|
|
58429
|
+
case dto_1.ChainName.Gnosis:
|
|
58430
|
+
case dto_1.ChainName.Zksync:
|
|
58431
|
+
case dto_1.ChainName.Linea:
|
|
58432
|
+
case dto_1.ChainName.Scroll:
|
|
58433
|
+
case dto_1.ChainName.Unichain:
|
|
58434
|
+
case dto_1.ChainName.Berachain:
|
|
58435
|
+
case dto_1.ChainName.WorldChain:
|
|
58436
|
+
case dto_1.ChainName.Zora:
|
|
58437
|
+
case dto_1.ChainName.Celo:
|
|
58438
|
+
case dto_1.ChainName.Monad:
|
|
58439
|
+
case dto_1.ChainName.Push:
|
|
58440
|
+
// Ethereum-style addresses (EVM chains)
|
|
58441
|
+
if (!/^0x[a-fA-F0-9]{40}$/.test(address)) {
|
|
58442
|
+
throw new errors_1.ValidationError(`Invalid Ethereum-style address: ${address}`);
|
|
58443
|
+
}
|
|
58444
|
+
break;
|
|
58445
|
+
case dto_1.ChainName.Starknet:
|
|
58446
|
+
// Starknet addresses are up to 64 hex characters (leading zeros can be omitted)
|
|
58447
|
+
if (!/^0x[a-fA-F0-9]{1,64}$/.test(address)) {
|
|
58448
|
+
throw new errors_1.ValidationError(`Invalid Starknet address: ${address}`);
|
|
58449
|
+
}
|
|
58450
|
+
break;
|
|
58451
|
+
case dto_1.ChainName.Solana:
|
|
58452
|
+
// Solana addresses are base58 encoded, typically 32-44 characters
|
|
58453
|
+
if (!/^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(address)) {
|
|
58454
|
+
throw new errors_1.ValidationError(`Invalid Solana address: ${address}`);
|
|
58455
|
+
}
|
|
58456
|
+
break;
|
|
58457
|
+
case dto_1.ChainName.Bitcoin:
|
|
58458
|
+
// Bitcoin addresses - supports Legacy (P2PKH), Script (P2SH), Bech32 (P2WPKH/P2WSH), and Taproot (P2TR)
|
|
58459
|
+
const bitcoinRegex = /^([13][a-km-zA-HJ-NP-Z1-9]{25,34}|bc1[a-z0-9]{39,59})$/;
|
|
58460
|
+
if (!bitcoinRegex.test(address)) {
|
|
58461
|
+
throw new errors_1.ValidationError(`Invalid Bitcoin address: ${address}`);
|
|
58462
|
+
}
|
|
58463
|
+
break;
|
|
58464
|
+
case dto_1.ChainName.Cosmos:
|
|
58465
|
+
// Cosmos addresses use bech32 format with 'cosmos' prefix
|
|
58466
|
+
if (!/^cosmos1[a-z0-9]{38}$/.test(address)) {
|
|
58467
|
+
throw new errors_1.ValidationError(`Invalid Cosmos address: ${address}`);
|
|
58468
|
+
}
|
|
58469
|
+
break;
|
|
58470
|
+
case dto_1.ChainName.Near:
|
|
58471
|
+
// NEAR addresses: either implicit (64 hex chars) or named accounts ending with .near
|
|
58472
|
+
const nearImplicit = /^[a-f0-9]{64}$/;
|
|
58473
|
+
const nearNamed = /^[a-z0-9._-]+\.near$/;
|
|
58474
|
+
if (!nearImplicit.test(address) && !nearNamed.test(address)) {
|
|
58475
|
+
throw new errors_1.ValidationError(`Invalid NEAR address: ${address}`);
|
|
58476
|
+
}
|
|
58477
|
+
break;
|
|
58478
|
+
case dto_1.ChainName.Sui:
|
|
58479
|
+
// Sui addresses are up to 64 hex characters (leading zeros can be omitted)
|
|
58480
|
+
if (!/^0x[a-fA-F0-9]{1,64}$/.test(address)) {
|
|
58481
|
+
throw new errors_1.ValidationError(`Invalid Sui address: ${address}`);
|
|
58482
|
+
}
|
|
58483
|
+
break;
|
|
58484
|
+
case dto_1.ChainName.Aptos:
|
|
58485
|
+
// Aptos addresses are up to 64 hex characters (leading zeros can be omitted)
|
|
58486
|
+
if (!/^0x[a-fA-F0-9]{1,64}$/.test(address)) {
|
|
58487
|
+
throw new errors_1.ValidationError(`Invalid Aptos address: ${address}`);
|
|
58488
|
+
}
|
|
58489
|
+
break;
|
|
58490
|
+
case dto_1.ChainName.Algorand:
|
|
58491
|
+
// Algorand addresses are 58-character Base32 strings (A-Z, 2-7)
|
|
58492
|
+
if (!/^[A-Z2-7]{58}$/.test(address)) {
|
|
58493
|
+
throw new errors_1.ValidationError(`Invalid Algorand address: ${address}`);
|
|
58494
|
+
}
|
|
58495
|
+
break;
|
|
58496
|
+
default:
|
|
58497
|
+
throw new errors_1.ValidationError(`Unsupported chain: ${chain}`);
|
|
58498
|
+
}
|
|
58499
|
+
};
|
|
58500
|
+
exports.validateAddress = validateAddress;
|
|
58501
|
+
/**
|
|
58502
|
+
* Validates that an API key appears to be in the correct format.
|
|
58503
|
+
* This performs basic sanity checks but doesn't verify the key with the server.
|
|
58504
|
+
*
|
|
58505
|
+
* @param apiKey - The API key to validate
|
|
58506
|
+
* @throws {ValidationError} When the API key format appears invalid
|
|
58507
|
+
*
|
|
58508
|
+
* @example
|
|
58509
|
+
* ```typescript
|
|
58510
|
+
* import { validateApiKey } from '@thenamespace/offchain-manager';
|
|
58511
|
+
*
|
|
58512
|
+
* validateApiKey('ns-123fcc-1126-1234-1234-c63047985fe2'); // ✅ Valid format
|
|
58513
|
+
* validateApiKey('short'); // ❌ Throws ValidationError (too short)
|
|
58514
|
+
* validateApiKey(''); // ❌ Throws ValidationError (empty)
|
|
58515
|
+
* ```
|
|
58516
|
+
*/
|
|
58517
|
+
const validateApiKey = (apiKey) => {
|
|
58518
|
+
if (!apiKey || typeof apiKey !== 'string') {
|
|
58519
|
+
throw new errors_1.ValidationError('API key must be a non-empty string');
|
|
58520
|
+
}
|
|
58521
|
+
if (apiKey.length < 10) {
|
|
58522
|
+
throw new errors_1.ValidationError('API key appears to be too short');
|
|
58523
|
+
}
|
|
58524
|
+
};
|
|
58525
|
+
exports.validateApiKey = validateApiKey;
|
|
58526
|
+
} (validation));
|
|
58527
|
+
return validation;
|
|
58528
|
+
}
|
|
58529
|
+
|
|
58530
|
+
var hasRequiredDist;
|
|
58531
|
+
|
|
58532
|
+
function requireDist () {
|
|
58533
|
+
if (hasRequiredDist) return dist;
|
|
58534
|
+
hasRequiredDist = 1;
|
|
58535
|
+
(function (exports) {
|
|
58536
|
+
/**
|
|
58537
|
+
* @fileoverview Namespace SDK - Offchain Manager
|
|
58538
|
+
*
|
|
58539
|
+
* A TypeScript SDK for managing ENS subnames off-chain using the Namespace API.
|
|
58540
|
+
* This library provides a simple interface for creating, updating, deleting, and querying
|
|
58541
|
+
* ENS subnames and their associated records (addresses, text records, metadata).
|
|
58542
|
+
*
|
|
58543
|
+
* Supports all ENS-compatible domains including:
|
|
58544
|
+
* - Native ENS domains (.eth)
|
|
58545
|
+
* - Imported web2 domains (.com, .org, .net, etc.)
|
|
58546
|
+
* - Alternative TLDs (.art, .xyz, .club, etc.)
|
|
58547
|
+
*
|
|
58548
|
+
* @example
|
|
58549
|
+
* ```typescript
|
|
58550
|
+
* import { createOffchainClient, ChainName } from '@thenamespace/offchain-manager';
|
|
58551
|
+
*
|
|
58552
|
+
* // Initialize client with API key inline
|
|
58553
|
+
* const client = createOffchainClient({
|
|
58554
|
+
* mode: 'sepolia',
|
|
58555
|
+
* defaultApiKey: 'your-address-based-api-key'
|
|
58556
|
+
* });
|
|
58557
|
+
*
|
|
58558
|
+
* // Create a subname
|
|
58559
|
+
* await client.createSubname({
|
|
58560
|
+
* parentName: 'example.eth',
|
|
58561
|
+
* label: 'alice',
|
|
58562
|
+
* addresses: [{ chain: ChainName.Ethereum, value: '0x...' }],
|
|
58563
|
+
* texts: [{ key: 'com.twitter', value: 'alice' }]
|
|
58564
|
+
* });
|
|
58565
|
+
* ```
|
|
58566
|
+
*
|
|
58567
|
+
* @author Namespace Team
|
|
58568
|
+
* @version 3.0.6
|
|
58569
|
+
* @license MIT
|
|
58570
|
+
*/
|
|
58571
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
58572
|
+
exports.RateLimitError = exports.SubnameAlreadyExistsError = exports.SubnameNotFoundError = exports.ValidationError = exports.AuthenticationError = exports.NamespaceSDKError = exports.validateApiKey = exports.validateAddress = exports.validateSubname = exports.validateEnsName = exports.getCoinType = exports.ChainName = exports.createOffchainClient = void 0;
|
|
58573
|
+
// Core client exports
|
|
58574
|
+
var offchain_client_1 = requireOffchainClient();
|
|
58575
|
+
Object.defineProperty(exports, "createOffchainClient", { enumerable: true, get: function () { return offchain_client_1.createOffchainClient; } });
|
|
58576
|
+
// Data transfer objects
|
|
58577
|
+
var dto_1 = requireDto();
|
|
58578
|
+
Object.defineProperty(exports, "ChainName", { enumerable: true, get: function () { return dto_1.ChainName; } });
|
|
58579
|
+
Object.defineProperty(exports, "getCoinType", { enumerable: true, get: function () { return dto_1.getCoinType; } });
|
|
58580
|
+
// Validation utilities (for advanced usage)
|
|
58581
|
+
var validation_1 = requireValidation();
|
|
58582
|
+
Object.defineProperty(exports, "validateEnsName", { enumerable: true, get: function () { return validation_1.validateEnsName; } });
|
|
58583
|
+
Object.defineProperty(exports, "validateSubname", { enumerable: true, get: function () { return validation_1.validateSubname; } });
|
|
58584
|
+
Object.defineProperty(exports, "validateAddress", { enumerable: true, get: function () { return validation_1.validateAddress; } });
|
|
58585
|
+
Object.defineProperty(exports, "validateApiKey", { enumerable: true, get: function () { return validation_1.validateApiKey; } });
|
|
58586
|
+
// Error classes (for error handling)
|
|
58587
|
+
var errors_1 = requireErrors();
|
|
58588
|
+
Object.defineProperty(exports, "NamespaceSDKError", { enumerable: true, get: function () { return errors_1.NamespaceSDKError; } });
|
|
58589
|
+
Object.defineProperty(exports, "AuthenticationError", { enumerable: true, get: function () { return errors_1.AuthenticationError; } });
|
|
58590
|
+
Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return errors_1.ValidationError; } });
|
|
58591
|
+
Object.defineProperty(exports, "SubnameNotFoundError", { enumerable: true, get: function () { return errors_1.SubnameNotFoundError; } });
|
|
58592
|
+
Object.defineProperty(exports, "SubnameAlreadyExistsError", { enumerable: true, get: function () { return errors_1.SubnameAlreadyExistsError; } });
|
|
58593
|
+
Object.defineProperty(exports, "RateLimitError", { enumerable: true, get: function () { return errors_1.RateLimitError; } });
|
|
58594
|
+
} (dist));
|
|
58595
|
+
return dist;
|
|
58596
|
+
}
|
|
58597
|
+
|
|
58598
|
+
var distExports = requireDist();
|
|
58599
|
+
|
|
58600
|
+
const useOffchainManager = (name, apiKeyOrToken) => {
|
|
58601
|
+
const client = useMemo(() => {
|
|
58602
|
+
const key = { [name]: apiKeyOrToken };
|
|
58603
|
+
return distExports.createOffchainClient({
|
|
58604
|
+
domainApiKeys: key
|
|
58605
|
+
});
|
|
58606
|
+
}, [name, apiKeyOrToken]);
|
|
58607
|
+
return client;
|
|
58608
|
+
};
|
|
58609
|
+
|
|
58610
|
+
const MIN_ENS_LEN$2 = 3;
|
|
57361
58611
|
const RegistrationSummary = ({
|
|
57362
58612
|
label,
|
|
57363
58613
|
years,
|
|
@@ -57444,7 +58694,7 @@ const RegistrationSummary = ({
|
|
|
57444
58694
|
return;
|
|
57445
58695
|
}
|
|
57446
58696
|
onLabelChange(_value);
|
|
57447
|
-
if (_value.length >= MIN_ENS_LEN$
|
|
58697
|
+
if (_value.length >= MIN_ENS_LEN$2) {
|
|
57448
58698
|
onNameValidationChange({ isChecking: true, isTaken: false });
|
|
57449
58699
|
onPriceChange({ isChecking: true, eth: 0, wei: 0n });
|
|
57450
58700
|
debouncedCheckAvailability(_value);
|
|
@@ -57462,9 +58712,9 @@ const RegistrationSummary = ({
|
|
|
57462
58712
|
debouncedCheckPrice(label, newYears);
|
|
57463
58713
|
};
|
|
57464
58714
|
const isNameAvailable = useMemo(() => {
|
|
57465
|
-
return label.length >= MIN_ENS_LEN$
|
|
58715
|
+
return label.length >= MIN_ENS_LEN$2 && !nameValidation.isChecking && !nameValidation.isTaken;
|
|
57466
58716
|
}, [label.length, nameValidation.isChecking, nameValidation.isTaken]);
|
|
57467
|
-
const nextBtnDisabled = label.length < MIN_ENS_LEN$
|
|
58717
|
+
const nextBtnDisabled = label.length < MIN_ENS_LEN$2 || nameValidation.isChecking || nameValidation.isTaken;
|
|
57468
58718
|
const totalPriceLoading = transactionFees?.isChecking || price.isChecking;
|
|
57469
58719
|
const transactionFeesLoading = transactionFees?.isChecking || false;
|
|
57470
58720
|
return /* @__PURE__ */ jsxs("div", { className: "ens-registration-summary", children: [
|
|
@@ -57491,8 +58741,8 @@ const RegistrationSummary = ({
|
|
|
57491
58741
|
suffix: /* @__PURE__ */ jsx(Text$1, { weight: "medium", size: "sm", color: "grey", children: ".eth" })
|
|
57492
58742
|
}
|
|
57493
58743
|
),
|
|
57494
|
-
label.length < MIN_ENS_LEN$
|
|
57495
|
-
label.length >= MIN_ENS_LEN$
|
|
58744
|
+
label.length < MIN_ENS_LEN$2 && /* @__PURE__ */ jsx("div", { className: "ns-text-center mt-2", children: /* @__PURE__ */ jsx(Text$1, { size: "xs", color: "grey", children: "Minimum ENS name length is 3 characters" }) }),
|
|
58745
|
+
label.length >= MIN_ENS_LEN$2 && nameValidation.isChecking && /* @__PURE__ */ jsxs(
|
|
57496
58746
|
"div",
|
|
57497
58747
|
{
|
|
57498
58748
|
className: "ns-text-center mt-2 d-flex align-items-center justify-content-center",
|
|
@@ -57503,7 +58753,7 @@ const RegistrationSummary = ({
|
|
|
57503
58753
|
]
|
|
57504
58754
|
}
|
|
57505
58755
|
),
|
|
57506
|
-
label.length >= MIN_ENS_LEN$
|
|
58756
|
+
label.length >= MIN_ENS_LEN$2 && !nameValidation.isChecking && nameValidation.isTaken && /* @__PURE__ */ jsx("div", { className: "ns-text-center mt-2", children: /* @__PURE__ */ jsxs(Text$1, { size: "xs", color: "grey", children: [
|
|
57507
58757
|
label,
|
|
57508
58758
|
".eth is not available"
|
|
57509
58759
|
] }) }),
|
|
@@ -58713,7 +59963,7 @@ const ReactConfetti = React52__default.forwardRef((props, ref) => jsx(ReactConfe
|
|
|
58713
59963
|
|
|
58714
59964
|
var img = "data:image/png;base64,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";
|
|
58715
59965
|
|
|
58716
|
-
const SuccessScreen = ({
|
|
59966
|
+
const SuccessScreen$1 = ({
|
|
58717
59967
|
ensName,
|
|
58718
59968
|
expiryInYears,
|
|
58719
59969
|
registrationCost,
|
|
@@ -59131,7 +60381,7 @@ const EnsNameRegistrationForm = (props) => {
|
|
|
59131
60381
|
}
|
|
59132
60382
|
),
|
|
59133
60383
|
step === 2 /* Success */ && successData && /* @__PURE__ */ jsx(
|
|
59134
|
-
SuccessScreen,
|
|
60384
|
+
SuccessScreen$1,
|
|
59135
60385
|
{
|
|
59136
60386
|
ensName: label,
|
|
59137
60387
|
expiryInYears: successData.expiryInYears,
|
|
@@ -60429,7 +61679,7 @@ const MintSuccess = ({
|
|
|
60429
61679
|
);
|
|
60430
61680
|
};
|
|
60431
61681
|
|
|
60432
|
-
const MIN_ENS_LEN = 1;
|
|
61682
|
+
const MIN_ENS_LEN$1 = 1;
|
|
60433
61683
|
const SubnameMintForm = ({
|
|
60434
61684
|
parentName,
|
|
60435
61685
|
label,
|
|
@@ -60598,7 +61848,7 @@ const SubnameMintFormContent = ({
|
|
|
60598
61848
|
[]
|
|
60599
61849
|
);
|
|
60600
61850
|
useEffect(() => {
|
|
60601
|
-
if (initialLabel && initialLabel.length >= MIN_ENS_LEN && connectedAddress) {
|
|
61851
|
+
if (initialLabel && initialLabel.length >= MIN_ENS_LEN$1 && connectedAddress) {
|
|
60602
61852
|
setAvailability({ isAvailable: false, isChecking: true });
|
|
60603
61853
|
setMintDetails((prev) => ({ ...prev, isChecking: true }));
|
|
60604
61854
|
checkIsAvailable(`${initialLabel}.${parentName}`, chainId);
|
|
@@ -60672,7 +61922,7 @@ const SubnameMintFormContent = ({
|
|
|
60672
61922
|
setLabel(_value);
|
|
60673
61923
|
setGasEstimated(false);
|
|
60674
61924
|
setTransactionFees((prev) => ({ ...prev, failed: false }));
|
|
60675
|
-
if (_value.length >= MIN_ENS_LEN) {
|
|
61925
|
+
if (_value.length >= MIN_ENS_LEN$1) {
|
|
60676
61926
|
setAvailability({ isAvailable: false, isChecking: true });
|
|
60677
61927
|
setMintDetails({ ...mintDetails, isChecking: true });
|
|
60678
61928
|
debouncedCheckAvailability(`${_value}.${parentName}`, chainId);
|
|
@@ -60756,7 +62006,7 @@ const SubnameMintFormContent = ({
|
|
|
60756
62006
|
return label.length >= 1 && availability.isAvailable && !availability.isChecking && !blockingError && !isSubnameReserved;
|
|
60757
62007
|
}, [label, availability, blockingError, isSubnameReserved]);
|
|
60758
62008
|
useEffect(() => {
|
|
60759
|
-
if (isAvailableForMint && !gasEstimated && label.length >= MIN_ENS_LEN) {
|
|
62009
|
+
if (isAvailableForMint && !gasEstimated && label.length >= MIN_ENS_LEN$1) {
|
|
60760
62010
|
fetchGasEstimate(label, ensRecords);
|
|
60761
62011
|
}
|
|
60762
62012
|
}, [isAvailableForMint, gasEstimated, label]);
|
|
@@ -60764,7 +62014,7 @@ const SubnameMintFormContent = ({
|
|
|
60764
62014
|
const newRecords = deepCopy(ensRecordTemplate);
|
|
60765
62015
|
setEnsRecords(newRecords);
|
|
60766
62016
|
setShowProfile(false);
|
|
60767
|
-
if (label.length >= MIN_ENS_LEN) {
|
|
62017
|
+
if (label.length >= MIN_ENS_LEN$1) {
|
|
60768
62018
|
fetchGasEstimate(label, newRecords);
|
|
60769
62019
|
}
|
|
60770
62020
|
};
|
|
@@ -60948,7 +62198,7 @@ const SubnameMintFormContent = ({
|
|
|
60948
62198
|
{
|
|
60949
62199
|
label,
|
|
60950
62200
|
parentName,
|
|
60951
|
-
minLength: MIN_ENS_LEN,
|
|
62201
|
+
minLength: MIN_ENS_LEN$1,
|
|
60952
62202
|
disabled: !!blockingError || isMinting,
|
|
60953
62203
|
isChecking: availability.isChecking,
|
|
60954
62204
|
isAvailable: availability.isAvailable,
|
|
@@ -61001,6 +62251,556 @@ const SubnameMintFormContent = ({
|
|
|
61001
62251
|
] });
|
|
61002
62252
|
};
|
|
61003
62253
|
|
|
62254
|
+
const coinTypeToChainName = (_coinType) => {
|
|
62255
|
+
const chainNames = Object.values(distExports.ChainName);
|
|
62256
|
+
for (const chainName of chainNames) {
|
|
62257
|
+
try {
|
|
62258
|
+
const coinType = distExports.getCoinType(chainName);
|
|
62259
|
+
if (_coinType === coinType || convertEVMChainIdToCoinType(coinType) === _coinType) {
|
|
62260
|
+
return chainName;
|
|
62261
|
+
}
|
|
62262
|
+
} catch (e) {
|
|
62263
|
+
continue;
|
|
62264
|
+
}
|
|
62265
|
+
}
|
|
62266
|
+
return null;
|
|
62267
|
+
};
|
|
62268
|
+
const parseContenthash = (contenthash) => {
|
|
62269
|
+
if (!contenthash) return void 0;
|
|
62270
|
+
for (const record of supportedContenthashRecords) {
|
|
62271
|
+
if (contenthash.startsWith(record.protocolPrefix)) {
|
|
62272
|
+
const value = contenthash.substring(record.protocolPrefix.length);
|
|
62273
|
+
return {
|
|
62274
|
+
protocol: record.protocol,
|
|
62275
|
+
value
|
|
62276
|
+
};
|
|
62277
|
+
}
|
|
62278
|
+
}
|
|
62279
|
+
if (contenthash.startsWith("Qm") || contenthash.startsWith("bafy")) {
|
|
62280
|
+
return {
|
|
62281
|
+
protocol: ContenthashProtocol.Ipfs,
|
|
62282
|
+
value: contenthash
|
|
62283
|
+
};
|
|
62284
|
+
}
|
|
62285
|
+
return void 0;
|
|
62286
|
+
};
|
|
62287
|
+
const offchainRecordsToEnsRecords = (subname) => {
|
|
62288
|
+
const ensRecords = {
|
|
62289
|
+
addresses: [],
|
|
62290
|
+
texts: []
|
|
62291
|
+
};
|
|
62292
|
+
if (subname.texts) {
|
|
62293
|
+
Object.keys(subname.texts).forEach((key) => {
|
|
62294
|
+
ensRecords.texts.push({ key, value: subname.texts[key] });
|
|
62295
|
+
});
|
|
62296
|
+
}
|
|
62297
|
+
if (subname.addresses) {
|
|
62298
|
+
Object.keys(subname.addresses).forEach((keyStr) => {
|
|
62299
|
+
const keyNum = parseInt(keyStr, 10);
|
|
62300
|
+
const value = subname.addresses[keyStr];
|
|
62301
|
+
if (isNaN(keyNum) || !value) return;
|
|
62302
|
+
let coinType;
|
|
62303
|
+
if (keyNum >= 2147483648) {
|
|
62304
|
+
coinType = keyNum;
|
|
62305
|
+
} else {
|
|
62306
|
+
const evmChain = supportedAddresses.find(
|
|
62307
|
+
(addr) => addr.chainId === keyNum && addr.isEMV
|
|
62308
|
+
);
|
|
62309
|
+
if (evmChain) {
|
|
62310
|
+
coinType = convertEVMChainIdToCoinType(keyNum);
|
|
62311
|
+
} else {
|
|
62312
|
+
coinType = keyNum;
|
|
62313
|
+
}
|
|
62314
|
+
}
|
|
62315
|
+
ensRecords.addresses.push({ coinType, value });
|
|
62316
|
+
});
|
|
62317
|
+
}
|
|
62318
|
+
if (subname.contenthash) {
|
|
62319
|
+
const parsedContenthash = parseContenthash(subname.contenthash);
|
|
62320
|
+
if (parsedContenthash) {
|
|
62321
|
+
ensRecords.contenthash = parsedContenthash;
|
|
62322
|
+
}
|
|
62323
|
+
}
|
|
62324
|
+
return ensRecords;
|
|
62325
|
+
};
|
|
62326
|
+
|
|
62327
|
+
const SuccessScreen = ({ fullSubname, isUpdateMode, onContinue }) => {
|
|
62328
|
+
const actionText = isUpdateMode ? "updated" : "created";
|
|
62329
|
+
return /* @__PURE__ */ jsx("div", { className: "ns-offchain-subname-form", children: /* @__PURE__ */ jsx("div", { style: { padding: 15 }, children: /* @__PURE__ */ jsxs("div", { className: "ns-text-center", children: [
|
|
62330
|
+
/* @__PURE__ */ jsx("div", { style: { marginBottom: "20px" }, children: /* @__PURE__ */ jsx(
|
|
62331
|
+
"img",
|
|
62332
|
+
{
|
|
62333
|
+
src: img,
|
|
62334
|
+
alt: "Success",
|
|
62335
|
+
style: { width: "120px", height: "auto" }
|
|
62336
|
+
}
|
|
62337
|
+
) }),
|
|
62338
|
+
/* @__PURE__ */ jsxs(Text$1, { size: "sm", color: "grey", className: "mb-2", children: [
|
|
62339
|
+
"Hooray! You've ",
|
|
62340
|
+
actionText
|
|
62341
|
+
] }),
|
|
62342
|
+
/* @__PURE__ */ jsx(Text$1, { size: "lg", weight: "bold", className: "mb-3", children: fullSubname }),
|
|
62343
|
+
/* @__PURE__ */ jsx(
|
|
62344
|
+
Button,
|
|
62345
|
+
{
|
|
62346
|
+
variant: "solid",
|
|
62347
|
+
size: "lg",
|
|
62348
|
+
onClick: onContinue,
|
|
62349
|
+
className: "ns-wd-100 mt-3",
|
|
62350
|
+
children: "Great!"
|
|
62351
|
+
}
|
|
62352
|
+
)
|
|
62353
|
+
] }) }) });
|
|
62354
|
+
};
|
|
62355
|
+
|
|
62356
|
+
const FormHeader = ({ isUpdateMode, label, parentName, showFullName }) => {
|
|
62357
|
+
const smallTitle = isUpdateMode ? "Update subname" : "Create subname";
|
|
62358
|
+
return /* @__PURE__ */ jsxs("div", { className: "ns-text-center mb-3", children: [
|
|
62359
|
+
/* @__PURE__ */ jsx(Text$1, { size: "sm", color: "grey", className: "mb-1", children: smallTitle }),
|
|
62360
|
+
showFullName && /* @__PURE__ */ jsxs(Text$1, { size: "lg", weight: "bold", children: [
|
|
62361
|
+
label,
|
|
62362
|
+
".",
|
|
62363
|
+
parentName
|
|
62364
|
+
] })
|
|
62365
|
+
] });
|
|
62366
|
+
};
|
|
62367
|
+
|
|
62368
|
+
const SubnameInput = ({
|
|
62369
|
+
value,
|
|
62370
|
+
parentName,
|
|
62371
|
+
isUpdateMode,
|
|
62372
|
+
isLoading,
|
|
62373
|
+
isChecking,
|
|
62374
|
+
isDisabled,
|
|
62375
|
+
isAvailable,
|
|
62376
|
+
minLength,
|
|
62377
|
+
onChange
|
|
62378
|
+
}) => {
|
|
62379
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
62380
|
+
/* @__PURE__ */ jsx(
|
|
62381
|
+
Input,
|
|
62382
|
+
{
|
|
62383
|
+
value,
|
|
62384
|
+
onChange: (e) => onChange(e.target.value),
|
|
62385
|
+
disabled: isDisabled,
|
|
62386
|
+
size: "lg",
|
|
62387
|
+
placeholder: isUpdateMode ? "Updating subname" : "Enter subname",
|
|
62388
|
+
wrapperClassName: "ns-offchain-subname-input",
|
|
62389
|
+
prefix: /* @__PURE__ */ jsx(Icon, { color: "grey", size: 20, name: "search" }),
|
|
62390
|
+
suffix: isLoading || isChecking ? /* @__PURE__ */ jsx("div", { style: { display: "flex", alignItems: "center", minWidth: "80px", justifyContent: "center" }, children: /* @__PURE__ */ jsx(ShurikenSpinner, { size: 18 }) }) : /* @__PURE__ */ jsx("div", { style: { minWidth: "80px", display: "flex", alignItems: "center", justifyContent: "center" }, children: /* @__PURE__ */ jsxs(Text$1, { weight: "medium", size: "sm", color: "grey", children: [
|
|
62391
|
+
".",
|
|
62392
|
+
parentName
|
|
62393
|
+
] }) })
|
|
62394
|
+
}
|
|
62395
|
+
),
|
|
62396
|
+
value.length > 0 && value.length < minLength && /* @__PURE__ */ jsx("div", { className: "ns-text-center mt-2", children: /* @__PURE__ */ jsxs(Text$1, { size: "xs", color: "grey", children: [
|
|
62397
|
+
"Minimum subname length is ",
|
|
62398
|
+
minLength,
|
|
62399
|
+
" character"
|
|
62400
|
+
] }) }),
|
|
62401
|
+
!isUpdateMode && value.length >= minLength && !isChecking && !isLoading && !isAvailable && /* @__PURE__ */ jsx("div", { className: "mt-2", children: /* @__PURE__ */ jsxs(Text$1, { size: "xs", color: "grey", children: [
|
|
62402
|
+
value,
|
|
62403
|
+
".",
|
|
62404
|
+
parentName,
|
|
62405
|
+
" is not available"
|
|
62406
|
+
] }) })
|
|
62407
|
+
] });
|
|
62408
|
+
};
|
|
62409
|
+
|
|
62410
|
+
const OwnerAddressInput = ({ value, error, onChange }) => {
|
|
62411
|
+
return /* @__PURE__ */ jsxs("div", { className: "mt-2", children: [
|
|
62412
|
+
/* @__PURE__ */ jsx(
|
|
62413
|
+
Input,
|
|
62414
|
+
{
|
|
62415
|
+
value,
|
|
62416
|
+
onChange: (e) => onChange(e.target.value),
|
|
62417
|
+
placeholder: "Owner Address (Optional)",
|
|
62418
|
+
size: "lg",
|
|
62419
|
+
wrapperClassName: "ns-offchain-owner-input"
|
|
62420
|
+
}
|
|
62421
|
+
),
|
|
62422
|
+
error && /* @__PURE__ */ jsx("div", { className: "mt-1", children: /* @__PURE__ */ jsx(Text$1, { size: "xs", color: "grey", children: error }) })
|
|
62423
|
+
] });
|
|
62424
|
+
};
|
|
62425
|
+
|
|
62426
|
+
const useOwnerValidation = () => {
|
|
62427
|
+
const [ownerAddressError, setOwnerAddressError] = useState(null);
|
|
62428
|
+
const validateOwnerAddress = useCallback((address) => {
|
|
62429
|
+
if (!address || address.trim() === "") {
|
|
62430
|
+
setOwnerAddressError(null);
|
|
62431
|
+
return true;
|
|
62432
|
+
}
|
|
62433
|
+
if (!/^0x[a-fA-F0-9]{40}$/.test(address)) {
|
|
62434
|
+
setOwnerAddressError("Invalid Ethereum address");
|
|
62435
|
+
return false;
|
|
62436
|
+
}
|
|
62437
|
+
setOwnerAddressError(null);
|
|
62438
|
+
return true;
|
|
62439
|
+
}, []);
|
|
62440
|
+
const clearError = useCallback(() => {
|
|
62441
|
+
setOwnerAddressError(null);
|
|
62442
|
+
}, []);
|
|
62443
|
+
return {
|
|
62444
|
+
ownerAddressError,
|
|
62445
|
+
validateOwnerAddress,
|
|
62446
|
+
clearError
|
|
62447
|
+
};
|
|
62448
|
+
};
|
|
62449
|
+
|
|
62450
|
+
const useSubnameChecker = (client, parentName) => {
|
|
62451
|
+
const [isLoadingSubname, setIsLoadingSubname] = useState(false);
|
|
62452
|
+
const [error, setError] = useState(null);
|
|
62453
|
+
const checkSubname = useCallback(async (label) => {
|
|
62454
|
+
setIsLoadingSubname(true);
|
|
62455
|
+
setError(null);
|
|
62456
|
+
try {
|
|
62457
|
+
const fullSubname = `${label}.${parentName}`;
|
|
62458
|
+
const subname = await client.getSingleSubname(fullSubname);
|
|
62459
|
+
if (!subname) {
|
|
62460
|
+
setIsLoadingSubname(false);
|
|
62461
|
+
return { exists: false };
|
|
62462
|
+
}
|
|
62463
|
+
const records = offchainRecordsToEnsRecords(subname);
|
|
62464
|
+
const owner = subname.owner || "";
|
|
62465
|
+
setIsLoadingSubname(false);
|
|
62466
|
+
return {
|
|
62467
|
+
exists: true,
|
|
62468
|
+
records,
|
|
62469
|
+
owner
|
|
62470
|
+
};
|
|
62471
|
+
} catch (err) {
|
|
62472
|
+
if (err?.response?.status === 404 || err?.status === 404 || err?.message?.includes("404") || err?.message?.includes("not found")) {
|
|
62473
|
+
setIsLoadingSubname(false);
|
|
62474
|
+
return { exists: false };
|
|
62475
|
+
}
|
|
62476
|
+
console.error("Error checking subname:", err);
|
|
62477
|
+
setError(err?.message || "Failed to check subname");
|
|
62478
|
+
setIsLoadingSubname(false);
|
|
62479
|
+
throw err;
|
|
62480
|
+
}
|
|
62481
|
+
}, [client, parentName]);
|
|
62482
|
+
return {
|
|
62483
|
+
isLoadingSubname,
|
|
62484
|
+
error,
|
|
62485
|
+
setError,
|
|
62486
|
+
checkSubname
|
|
62487
|
+
};
|
|
62488
|
+
};
|
|
62489
|
+
|
|
62490
|
+
const buildSubnameRequest = (ensRecords, ownerAddress) => {
|
|
62491
|
+
const addresses = ensRecords.addresses.map((addr) => {
|
|
62492
|
+
const chainName = coinTypeToChainName(addr.coinType);
|
|
62493
|
+
if (!chainName) {
|
|
62494
|
+
console.warn(`Unsupported coin type: ${addr.coinType}, skipping...`);
|
|
62495
|
+
return null;
|
|
62496
|
+
}
|
|
62497
|
+
return {
|
|
62498
|
+
chain: chainName,
|
|
62499
|
+
value: addr.value
|
|
62500
|
+
};
|
|
62501
|
+
}).filter((addr) => addr !== null);
|
|
62502
|
+
const texts = ensRecords.texts.map((text) => ({
|
|
62503
|
+
key: text.key,
|
|
62504
|
+
value: text.value
|
|
62505
|
+
}));
|
|
62506
|
+
const request = {
|
|
62507
|
+
addresses,
|
|
62508
|
+
texts
|
|
62509
|
+
};
|
|
62510
|
+
if (ownerAddress && ownerAddress.trim() !== "") {
|
|
62511
|
+
request.owner = ownerAddress;
|
|
62512
|
+
}
|
|
62513
|
+
return request;
|
|
62514
|
+
};
|
|
62515
|
+
|
|
62516
|
+
const MIN_ENS_LEN = 1;
|
|
62517
|
+
const OffchainSubnameForm = ({
|
|
62518
|
+
apiKeyOrToken,
|
|
62519
|
+
name,
|
|
62520
|
+
label: propLabel,
|
|
62521
|
+
hideTitle = false,
|
|
62522
|
+
onCancel,
|
|
62523
|
+
onSuccess
|
|
62524
|
+
}) => {
|
|
62525
|
+
const client = useOffchainManager(name, apiKeyOrToken);
|
|
62526
|
+
const [label, setLabel] = useState(propLabel || "");
|
|
62527
|
+
const [showProfile, setShowProfile] = useState(false);
|
|
62528
|
+
const [createStep, setCreateStep] = useState("form" /* Form */);
|
|
62529
|
+
const [successData, setSuccessData] = useState(null);
|
|
62530
|
+
const [isUpdateMode, setIsUpdateMode] = useState(false);
|
|
62531
|
+
const [initialOwner, setInitialOwner] = useState("");
|
|
62532
|
+
const [createError, setCreateError] = useState(null);
|
|
62533
|
+
const [ensRecordTemplate, setEnsRecordsTemplate] = useState({
|
|
62534
|
+
addresses: [],
|
|
62535
|
+
texts: []
|
|
62536
|
+
});
|
|
62537
|
+
const [ensRecords, setEnsRecords] = useState({
|
|
62538
|
+
addresses: [],
|
|
62539
|
+
texts: []
|
|
62540
|
+
});
|
|
62541
|
+
const [baselineRecords, setBaselineRecords] = useState({
|
|
62542
|
+
addresses: [],
|
|
62543
|
+
texts: []
|
|
62544
|
+
});
|
|
62545
|
+
const hasRecordsDifference = useMemo(() => {
|
|
62546
|
+
return getEnsRecordsDiff(ensRecords, ensRecordTemplate).isDifferent;
|
|
62547
|
+
}, [ensRecords, ensRecordTemplate]);
|
|
62548
|
+
const [availability, setAvailability] = useState({
|
|
62549
|
+
isChecking: false,
|
|
62550
|
+
isAvailable: true
|
|
62551
|
+
});
|
|
62552
|
+
const [ownerAddress, setOwnerAddress] = useState("");
|
|
62553
|
+
const { ownerAddressError, validateOwnerAddress, clearError: clearOwnerError } = useOwnerValidation();
|
|
62554
|
+
const [isCreating, setIsCreating] = useState(false);
|
|
62555
|
+
const { isLoadingSubname, error: checkError, checkSubname } = useSubnameChecker(client, name);
|
|
62556
|
+
const checkSubnameExists = async (subnameLabel) => {
|
|
62557
|
+
setAvailability({ isAvailable: false, isChecking: false });
|
|
62558
|
+
try {
|
|
62559
|
+
const result = await checkSubname(subnameLabel);
|
|
62560
|
+
if (!result.exists) {
|
|
62561
|
+
setIsUpdateMode(false);
|
|
62562
|
+
setAvailability({ isAvailable: true, isChecking: false });
|
|
62563
|
+
setEnsRecords({ addresses: [], texts: [] });
|
|
62564
|
+
setEnsRecordsTemplate({ addresses: [], texts: [] });
|
|
62565
|
+
setBaselineRecords({ addresses: [], texts: [] });
|
|
62566
|
+
setOwnerAddress("");
|
|
62567
|
+
setInitialOwner("");
|
|
62568
|
+
setShowProfile(false);
|
|
62569
|
+
return;
|
|
62570
|
+
}
|
|
62571
|
+
setIsUpdateMode(true);
|
|
62572
|
+
setAvailability({ isAvailable: false, isChecking: false });
|
|
62573
|
+
const records = result.records || { addresses: [], texts: [] };
|
|
62574
|
+
const owner = result.owner || "";
|
|
62575
|
+
setEnsRecords(records);
|
|
62576
|
+
setEnsRecordsTemplate(deepCopy(records));
|
|
62577
|
+
setBaselineRecords(deepCopy(records));
|
|
62578
|
+
setOwnerAddress(owner);
|
|
62579
|
+
setInitialOwner(owner);
|
|
62580
|
+
} catch (err) {
|
|
62581
|
+
setAvailability({ isAvailable: false, isChecking: false });
|
|
62582
|
+
setIsUpdateMode(false);
|
|
62583
|
+
}
|
|
62584
|
+
};
|
|
62585
|
+
const debouncedCheckSubnameExists = useCallback(
|
|
62586
|
+
debounce$1((subnameLabel) => checkSubnameExists(subnameLabel), 500),
|
|
62587
|
+
[client, name]
|
|
62588
|
+
);
|
|
62589
|
+
useEffect(() => {
|
|
62590
|
+
if (propLabel && propLabel.length >= MIN_ENS_LEN) {
|
|
62591
|
+
checkSubnameExists(propLabel);
|
|
62592
|
+
}
|
|
62593
|
+
}, [propLabel]);
|
|
62594
|
+
const handleNameChanged = async (value) => {
|
|
62595
|
+
const _value = value.toLowerCase().trim();
|
|
62596
|
+
if (_value.includes(".")) {
|
|
62597
|
+
return;
|
|
62598
|
+
}
|
|
62599
|
+
try {
|
|
62600
|
+
normalize(_value);
|
|
62601
|
+
} catch (err) {
|
|
62602
|
+
return;
|
|
62603
|
+
}
|
|
62604
|
+
setLabel(_value);
|
|
62605
|
+
if (_value.length >= MIN_ENS_LEN) {
|
|
62606
|
+
setAvailability({ isAvailable: false, isChecking: true });
|
|
62607
|
+
debouncedCheckSubnameExists(_value);
|
|
62608
|
+
} else {
|
|
62609
|
+
setAvailability({ isAvailable: false, isChecking: false });
|
|
62610
|
+
}
|
|
62611
|
+
};
|
|
62612
|
+
const handleSaveRecords = () => {
|
|
62613
|
+
const newRecords = deepCopy(ensRecordTemplate);
|
|
62614
|
+
setEnsRecords(newRecords);
|
|
62615
|
+
setShowProfile(false);
|
|
62616
|
+
};
|
|
62617
|
+
const handleCancelRecords = () => {
|
|
62618
|
+
setEnsRecordsTemplate(deepCopy(ensRecords));
|
|
62619
|
+
setShowProfile(false);
|
|
62620
|
+
};
|
|
62621
|
+
const handleOwnerAddressChange = (value) => {
|
|
62622
|
+
setOwnerAddress(value);
|
|
62623
|
+
if (value) {
|
|
62624
|
+
validateOwnerAddress(value);
|
|
62625
|
+
} else {
|
|
62626
|
+
clearOwnerError();
|
|
62627
|
+
}
|
|
62628
|
+
};
|
|
62629
|
+
const handleCreate = async () => {
|
|
62630
|
+
setCreateError(null);
|
|
62631
|
+
setIsCreating(true);
|
|
62632
|
+
if (ownerAddress && !validateOwnerAddress(ownerAddress)) {
|
|
62633
|
+
setIsCreating(false);
|
|
62634
|
+
return;
|
|
62635
|
+
}
|
|
62636
|
+
try {
|
|
62637
|
+
if (ensRecords.addresses.length > 0 || ensRecords.texts.length > 0) {
|
|
62638
|
+
const validation = validateEnsRecords(ensRecords);
|
|
62639
|
+
if (validation.validationFailed) {
|
|
62640
|
+
setCreateError(
|
|
62641
|
+
validation.errors?.length > 0 ? validation.errors[0].reason : "Invalid records"
|
|
62642
|
+
);
|
|
62643
|
+
setIsCreating(false);
|
|
62644
|
+
return;
|
|
62645
|
+
}
|
|
62646
|
+
}
|
|
62647
|
+
const requestData = buildSubnameRequest(ensRecords, ownerAddress);
|
|
62648
|
+
if (isUpdateMode) {
|
|
62649
|
+
const fullSubname = `${label}.${name}`;
|
|
62650
|
+
await client.updateSubname(fullSubname, requestData);
|
|
62651
|
+
} else {
|
|
62652
|
+
const createRequest = {
|
|
62653
|
+
parentName: name,
|
|
62654
|
+
label,
|
|
62655
|
+
...requestData
|
|
62656
|
+
};
|
|
62657
|
+
await client.createSubname(createRequest);
|
|
62658
|
+
}
|
|
62659
|
+
await refreshSubnameData();
|
|
62660
|
+
} catch (err) {
|
|
62661
|
+
console.error("Create/Update error:", err);
|
|
62662
|
+
setCreateError(err?.message || `Failed to ${isUpdateMode ? "update" : "create"} subname`);
|
|
62663
|
+
} finally {
|
|
62664
|
+
setIsCreating(false);
|
|
62665
|
+
}
|
|
62666
|
+
};
|
|
62667
|
+
const refreshSubnameData = async () => {
|
|
62668
|
+
const fullSubname = `${label}.${name}`;
|
|
62669
|
+
const updatedSubname = await client.getSingleSubname(fullSubname);
|
|
62670
|
+
const latestRecords = updatedSubname ? offchainRecordsToEnsRecords(updatedSubname) : ensRecords;
|
|
62671
|
+
setBaselineRecords(deepCopy(latestRecords));
|
|
62672
|
+
setEnsRecords(latestRecords);
|
|
62673
|
+
setEnsRecordsTemplate(deepCopy(latestRecords));
|
|
62674
|
+
const latestOwner = updatedSubname?.owner || (ownerAddress && ownerAddress.trim() !== "" ? ownerAddress : "");
|
|
62675
|
+
setInitialOwner(latestOwner);
|
|
62676
|
+
setOwnerAddress(latestOwner);
|
|
62677
|
+
const data = {
|
|
62678
|
+
label,
|
|
62679
|
+
parentName: name,
|
|
62680
|
+
fullSubname: `${label}.${name}`,
|
|
62681
|
+
records: latestRecords,
|
|
62682
|
+
ownerAddress: latestOwner || void 0
|
|
62683
|
+
};
|
|
62684
|
+
setSuccessData(data);
|
|
62685
|
+
setCreateStep("success" /* Success */);
|
|
62686
|
+
onSuccess?.(data);
|
|
62687
|
+
};
|
|
62688
|
+
const handleCreateAnother = () => {
|
|
62689
|
+
setSuccessData(null);
|
|
62690
|
+
setCreateError(null);
|
|
62691
|
+
setCreateStep("form" /* Form */);
|
|
62692
|
+
if (label && label.length >= MIN_ENS_LEN) {
|
|
62693
|
+
checkSubnameExists(label);
|
|
62694
|
+
}
|
|
62695
|
+
};
|
|
62696
|
+
const hasRecordChanges = useMemo(() => {
|
|
62697
|
+
if (!isUpdateMode) return true;
|
|
62698
|
+
if (ownerAddress !== initialOwner) {
|
|
62699
|
+
return true;
|
|
62700
|
+
}
|
|
62701
|
+
const diff = getEnsRecordsDiff(ensRecords, baselineRecords);
|
|
62702
|
+
return diff.isDifferent;
|
|
62703
|
+
}, [isUpdateMode, ensRecords, baselineRecords, ownerAddress, initialOwner]);
|
|
62704
|
+
const isAvailableForCreate = useMemo(() => {
|
|
62705
|
+
if (isUpdateMode) {
|
|
62706
|
+
return label.length >= MIN_ENS_LEN && !isLoadingSubname && hasRecordChanges;
|
|
62707
|
+
}
|
|
62708
|
+
return label.length >= MIN_ENS_LEN && availability.isAvailable && !availability.isChecking;
|
|
62709
|
+
}, [label, availability, isUpdateMode, isLoadingSubname, hasRecordChanges]);
|
|
62710
|
+
if (showProfile) {
|
|
62711
|
+
return /* @__PURE__ */ jsx(
|
|
62712
|
+
SetSubnameRecords,
|
|
62713
|
+
{
|
|
62714
|
+
records: ensRecordTemplate,
|
|
62715
|
+
onRecordsChange: setEnsRecordsTemplate,
|
|
62716
|
+
onCancel: handleCancelRecords,
|
|
62717
|
+
onSave: handleSaveRecords,
|
|
62718
|
+
hasChanges: hasRecordsDifference
|
|
62719
|
+
},
|
|
62720
|
+
`${label}-${isUpdateMode ? "update" : "create"}`
|
|
62721
|
+
);
|
|
62722
|
+
}
|
|
62723
|
+
if (createStep === "success" /* Success */ && successData) {
|
|
62724
|
+
return /* @__PURE__ */ jsx(
|
|
62725
|
+
SuccessScreen,
|
|
62726
|
+
{
|
|
62727
|
+
fullSubname: successData.fullSubname,
|
|
62728
|
+
isUpdateMode,
|
|
62729
|
+
onContinue: handleCreateAnother
|
|
62730
|
+
}
|
|
62731
|
+
);
|
|
62732
|
+
}
|
|
62733
|
+
const showFullName = isUpdateMode || !isUpdateMode && label.length >= MIN_ENS_LEN;
|
|
62734
|
+
const actionButtonText = isUpdateMode ? "Update" : "Create";
|
|
62735
|
+
const errorMessage = createError || checkError;
|
|
62736
|
+
return /* @__PURE__ */ jsx("div", { className: "ns-offchain-subname-form", children: /* @__PURE__ */ jsxs("div", { style: { padding: 15 }, children: [
|
|
62737
|
+
!hideTitle && /* @__PURE__ */ jsx(
|
|
62738
|
+
FormHeader,
|
|
62739
|
+
{
|
|
62740
|
+
isUpdateMode,
|
|
62741
|
+
label,
|
|
62742
|
+
parentName: name,
|
|
62743
|
+
showFullName
|
|
62744
|
+
}
|
|
62745
|
+
),
|
|
62746
|
+
/* @__PURE__ */ jsx(
|
|
62747
|
+
SubnameInput,
|
|
62748
|
+
{
|
|
62749
|
+
value: label,
|
|
62750
|
+
parentName: name,
|
|
62751
|
+
isUpdateMode,
|
|
62752
|
+
isLoading: isLoadingSubname,
|
|
62753
|
+
isChecking: availability.isChecking,
|
|
62754
|
+
isDisabled: isCreating,
|
|
62755
|
+
isAvailable: availability.isAvailable,
|
|
62756
|
+
minLength: MIN_ENS_LEN,
|
|
62757
|
+
onChange: handleNameChanged
|
|
62758
|
+
}
|
|
62759
|
+
),
|
|
62760
|
+
label.length >= MIN_ENS_LEN && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
62761
|
+
/* @__PURE__ */ jsx(
|
|
62762
|
+
OwnerAddressInput,
|
|
62763
|
+
{
|
|
62764
|
+
value: ownerAddress,
|
|
62765
|
+
error: ownerAddressError,
|
|
62766
|
+
onChange: handleOwnerAddressChange
|
|
62767
|
+
}
|
|
62768
|
+
),
|
|
62769
|
+
/* @__PURE__ */ jsx(
|
|
62770
|
+
ProfileSelector,
|
|
62771
|
+
{
|
|
62772
|
+
onSelect: () => setShowProfile(true)
|
|
62773
|
+
},
|
|
62774
|
+
`${label}-${isUpdateMode ? "update" : "create"}`
|
|
62775
|
+
)
|
|
62776
|
+
] }),
|
|
62777
|
+
errorMessage && /* @__PURE__ */ jsx("div", { className: "mt-2", children: /* @__PURE__ */ jsx(Alert, { variant: "error", position: "vertical", children: /* @__PURE__ */ jsx(Text$1, { size: "sm", children: errorMessage }) }) }),
|
|
62778
|
+
/* @__PURE__ */ jsxs("div", { className: "ens-update-records-form-actions mt-2", children: [
|
|
62779
|
+
/* @__PURE__ */ jsx(
|
|
62780
|
+
Button,
|
|
62781
|
+
{
|
|
62782
|
+
variant: "outline",
|
|
62783
|
+
size: "lg",
|
|
62784
|
+
onClick: onCancel,
|
|
62785
|
+
disabled: isCreating,
|
|
62786
|
+
children: "Cancel"
|
|
62787
|
+
}
|
|
62788
|
+
),
|
|
62789
|
+
/* @__PURE__ */ jsx(
|
|
62790
|
+
Button,
|
|
62791
|
+
{
|
|
62792
|
+
variant: "solid",
|
|
62793
|
+
size: "lg",
|
|
62794
|
+
disabled: !isAvailableForCreate || isCreating || !!ownerAddressError,
|
|
62795
|
+
onClick: handleCreate,
|
|
62796
|
+
loading: isCreating,
|
|
62797
|
+
children: isCreating ? isUpdateMode ? "Updating..." : "Creating..." : actionButtonText
|
|
62798
|
+
}
|
|
62799
|
+
)
|
|
62800
|
+
] })
|
|
62801
|
+
] }) });
|
|
62802
|
+
};
|
|
62803
|
+
|
|
61004
62804
|
const ThemeContext = createContext(void 0);
|
|
61005
62805
|
const ThemeProvider = ({
|
|
61006
62806
|
initialTheme = "light",
|
|
@@ -68755,5 +70555,5 @@ var walletConnectWalletYHWKVTDY = /*#__PURE__*/Object.freeze({
|
|
|
68755
70555
|
default: walletConnectWallet_default
|
|
68756
70556
|
});
|
|
68757
70557
|
|
|
68758
|
-
export { Accordion, Alert, Button, Card, ChainIcon, ConnectAndSetChain, ContenthashIcon, ContenthashProtocol, ContractErrorLabel, Dropdown, ENS_RESOLVER_ABI, EnsNameRegistrationForm, EnsRecordsForm, Icon, Input, ListingNetwork, ListingType, MULTICALL, Modal, PricingDisplay, ProfileHeader, ProgressBar, SET_ADDRESS_FUNC, SET_CONTENTHASH_FUNC, SET_TEXT_FUNC, SelectRecordsForm, ShurikenSpinner, SubnameMintForm, Text$1 as Text, TextRecordCategory, Textarea, ThemeProvider, Tooltip, TxProgress, WalletConnectProvider, capitalize, convertEVMChainIdToCoinType, convertToMulticallResolverData, convertToResolverData, createEnsReferer, debounce$1 as debounce, deepCopy, diffToEnsRecords, ensureFloatInput, equalsIgnoreCase, formatFloat, getBlockExplorer, getBlockExplorerAddressUrl, getBlockExplorerName, getBlockExplorerTransactionUrl, getChainIdForListingNetwork, getEnsAppUrl, getEnsRecordsDiff, getSupportedAddressByChainId, getSupportedAddressByCoin, getSupportedAddressByName, getSupportedAddressMap, getSupportedChashByProtocol, getSupportedText, isCommitmentToNewErr, isContenthashValid, isUserDeniedError, supportedAddresses, supportedContenthashRecords, supportedTexts, useENSResolver, useMintManager, useMintSubname, useRegisterENS, useTheme, useWaitTransaction, validateEnsRecords };
|
|
70558
|
+
export { Accordion, Alert, Button, Card, ChainIcon, ConnectAndSetChain, ContenthashIcon, ContenthashProtocol, ContractErrorLabel, Dropdown, ENS_RESOLVER_ABI, EnsNameRegistrationForm, EnsRecordsForm, Icon, Input, ListingNetwork, ListingType, MULTICALL, Modal, OffchainSubnameForm, PricingDisplay, ProfileHeader, ProgressBar, SET_ADDRESS_FUNC, SET_CONTENTHASH_FUNC, SET_TEXT_FUNC, SelectRecordsForm, ShurikenSpinner, SubnameMintForm, Text$1 as Text, TextRecordCategory, Textarea, ThemeProvider, Tooltip, TxProgress, WalletConnectProvider, capitalize, convertEVMChainIdToCoinType, convertToMulticallResolverData, convertToResolverData, createEnsReferer, debounce$1 as debounce, deepCopy, diffToEnsRecords, ensureFloatInput, equalsIgnoreCase, formatFloat, getBlockExplorer, getBlockExplorerAddressUrl, getBlockExplorerName, getBlockExplorerTransactionUrl, getChainIdForListingNetwork, getEnsAppUrl, getEnsRecordsDiff, getSupportedAddressByChainId, getSupportedAddressByCoin, getSupportedAddressByName, getSupportedAddressMap, getSupportedChashByProtocol, getSupportedText, isCommitmentToNewErr, isContenthashValid, isUserDeniedError, supportedAddresses, supportedContenthashRecords, supportedTexts, useENSResolver, useMintManager, useMintSubname, useOffchainManager, useRegisterENS, useTheme, useWaitTransaction, validateEnsRecords };
|
|
68759
70559
|
//# sourceMappingURL=index.js.map
|