@xyo-network/crypto-nft-collection-witness-plugin 2.78.2 → 2.78.4
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/browser/Plugin.d.cts +2 -0
- package/dist/browser/Plugin.d.cts.map +1 -1
- package/dist/browser/Plugin.d.mts +2 -0
- package/dist/browser/Plugin.d.mts.map +1 -1
- package/dist/browser/Plugin.d.ts +2 -0
- package/dist/browser/Plugin.d.ts.map +1 -1
- package/dist/browser/Witness.d.cts +6 -1
- package/dist/browser/Witness.d.cts.map +1 -1
- package/dist/browser/Witness.d.mts +6 -1
- package/dist/browser/Witness.d.mts.map +1 -1
- package/dist/browser/Witness.d.ts +6 -1
- package/dist/browser/Witness.d.ts.map +1 -1
- package/dist/browser/index.cjs +155 -114
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +155 -114
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/lib/contractHasFunctions.d.cts +4 -0
- package/dist/browser/lib/contractHasFunctions.d.cts.map +1 -0
- package/dist/browser/lib/contractHasFunctions.d.mts +4 -0
- package/dist/browser/lib/contractHasFunctions.d.mts.map +1 -0
- package/dist/browser/lib/contractHasFunctions.d.ts +4 -0
- package/dist/browser/lib/contractHasFunctions.d.ts.map +1 -0
- package/dist/browser/lib/getNftCollectionNfts.d.cts +3 -2
- package/dist/browser/lib/getNftCollectionNfts.d.cts.map +1 -1
- package/dist/browser/lib/getNftCollectionNfts.d.mts +3 -2
- package/dist/browser/lib/getNftCollectionNfts.d.mts.map +1 -1
- package/dist/browser/lib/getNftCollectionNfts.d.ts +3 -2
- package/dist/browser/lib/getNftCollectionNfts.d.ts.map +1 -1
- package/dist/browser/lib/getProviderFromEnv.d.cts +4 -0
- package/dist/browser/lib/getProviderFromEnv.d.cts.map +1 -0
- package/dist/browser/lib/getProviderFromEnv.d.mts +4 -0
- package/dist/browser/lib/getProviderFromEnv.d.mts.map +1 -0
- package/dist/browser/lib/getProviderFromEnv.d.ts +4 -0
- package/dist/browser/lib/getProviderFromEnv.d.ts.map +1 -0
- package/dist/browser/lib/index.d.cts +3 -2
- package/dist/browser/lib/index.d.cts.map +1 -1
- package/dist/browser/lib/index.d.mts +3 -2
- package/dist/browser/lib/index.d.mts.map +1 -1
- package/dist/browser/lib/index.d.ts +3 -2
- package/dist/browser/lib/index.d.ts.map +1 -1
- package/dist/browser/lib/tokenTypes.d.cts +6 -0
- package/dist/browser/lib/tokenTypes.d.cts.map +1 -0
- package/dist/browser/lib/tokenTypes.d.mts +6 -0
- package/dist/browser/lib/tokenTypes.d.mts.map +1 -0
- package/dist/browser/lib/tokenTypes.d.ts +6 -0
- package/dist/browser/lib/tokenTypes.d.ts.map +1 -0
- package/dist/browser/lib/tryCall.d.cts +2 -0
- package/dist/browser/lib/tryCall.d.cts.map +1 -0
- package/dist/browser/lib/tryCall.d.mts +2 -0
- package/dist/browser/lib/tryCall.d.mts.map +1 -0
- package/dist/browser/lib/tryCall.d.ts +2 -0
- package/dist/browser/lib/tryCall.d.ts.map +1 -0
- package/dist/node/Plugin.d.cts +2 -0
- package/dist/node/Plugin.d.cts.map +1 -1
- package/dist/node/Plugin.d.mts +2 -0
- package/dist/node/Plugin.d.mts.map +1 -1
- package/dist/node/Plugin.d.ts +2 -0
- package/dist/node/Plugin.d.ts.map +1 -1
- package/dist/node/Witness.d.cts +6 -1
- package/dist/node/Witness.d.cts.map +1 -1
- package/dist/node/Witness.d.mts +6 -1
- package/dist/node/Witness.d.mts.map +1 -1
- package/dist/node/Witness.d.ts +6 -1
- package/dist/node/Witness.d.ts.map +1 -1
- package/dist/node/index.js +162 -118
- package/dist/node/index.js.map +1 -1
- package/dist/node/index.mjs +155 -114
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/lib/contractHasFunctions.d.cts +4 -0
- package/dist/node/lib/contractHasFunctions.d.cts.map +1 -0
- package/dist/node/lib/contractHasFunctions.d.mts +4 -0
- package/dist/node/lib/contractHasFunctions.d.mts.map +1 -0
- package/dist/node/lib/contractHasFunctions.d.ts +4 -0
- package/dist/node/lib/contractHasFunctions.d.ts.map +1 -0
- package/dist/node/lib/getNftCollectionNfts.d.cts +3 -2
- package/dist/node/lib/getNftCollectionNfts.d.cts.map +1 -1
- package/dist/node/lib/getNftCollectionNfts.d.mts +3 -2
- package/dist/node/lib/getNftCollectionNfts.d.mts.map +1 -1
- package/dist/node/lib/getNftCollectionNfts.d.ts +3 -2
- package/dist/node/lib/getNftCollectionNfts.d.ts.map +1 -1
- package/dist/node/lib/getProviderFromEnv.d.cts +4 -0
- package/dist/node/lib/getProviderFromEnv.d.cts.map +1 -0
- package/dist/node/lib/getProviderFromEnv.d.mts +4 -0
- package/dist/node/lib/getProviderFromEnv.d.mts.map +1 -0
- package/dist/node/lib/getProviderFromEnv.d.ts +4 -0
- package/dist/node/lib/getProviderFromEnv.d.ts.map +1 -0
- package/dist/node/lib/index.d.cts +3 -2
- package/dist/node/lib/index.d.cts.map +1 -1
- package/dist/node/lib/index.d.mts +3 -2
- package/dist/node/lib/index.d.mts.map +1 -1
- package/dist/node/lib/index.d.ts +3 -2
- package/dist/node/lib/index.d.ts.map +1 -1
- package/dist/node/lib/tokenTypes.d.cts +6 -0
- package/dist/node/lib/tokenTypes.d.cts.map +1 -0
- package/dist/node/lib/tokenTypes.d.mts +6 -0
- package/dist/node/lib/tokenTypes.d.mts.map +1 -0
- package/dist/node/lib/tokenTypes.d.ts +6 -0
- package/dist/node/lib/tokenTypes.d.ts.map +1 -0
- package/dist/node/lib/tryCall.d.cts +2 -0
- package/dist/node/lib/tryCall.d.cts.map +1 -0
- package/dist/node/lib/tryCall.d.mts +2 -0
- package/dist/node/lib/tryCall.d.mts.map +1 -0
- package/dist/node/lib/tryCall.d.ts +2 -0
- package/dist/node/lib/tryCall.d.ts.map +1 -0
- package/package.json +17 -13
- package/src/Witness.ts +51 -9
- package/src/lib/contractHasFunctions.ts +20 -0
- package/src/lib/getNftCollectionNfts.ts +49 -38
- package/src/lib/getProviderFromEnv.ts +29 -0
- package/src/lib/index.ts +3 -2
- package/src/lib/tokenTypes.ts +25 -0
- package/src/lib/tryCall.ts +11 -0
- package/dist/browser/lib/getNftCollectionCount.d.cts +0 -2
- package/dist/browser/lib/getNftCollectionCount.d.cts.map +0 -1
- package/dist/browser/lib/getNftCollectionCount.d.mts +0 -2
- package/dist/browser/lib/getNftCollectionCount.d.mts.map +0 -1
- package/dist/browser/lib/getNftCollectionCount.d.ts +0 -2
- package/dist/browser/lib/getNftCollectionCount.d.ts.map +0 -1
- package/dist/browser/lib/getNftCollectionMetadata.d.cts +0 -5
- package/dist/browser/lib/getNftCollectionMetadata.d.cts.map +0 -1
- package/dist/browser/lib/getNftCollectionMetadata.d.mts +0 -5
- package/dist/browser/lib/getNftCollectionMetadata.d.mts.map +0 -1
- package/dist/browser/lib/getNftCollectionMetadata.d.ts +0 -5
- package/dist/browser/lib/getNftCollectionMetadata.d.ts.map +0 -1
- package/dist/browser/lib/getProvider.d.cts +0 -3
- package/dist/browser/lib/getProvider.d.cts.map +0 -1
- package/dist/browser/lib/getProvider.d.mts +0 -3
- package/dist/browser/lib/getProvider.d.mts.map +0 -1
- package/dist/browser/lib/getProvider.d.ts +0 -3
- package/dist/browser/lib/getProvider.d.ts.map +0 -1
- package/dist/node/lib/getNftCollectionCount.d.cts +0 -2
- package/dist/node/lib/getNftCollectionCount.d.cts.map +0 -1
- package/dist/node/lib/getNftCollectionCount.d.mts +0 -2
- package/dist/node/lib/getNftCollectionCount.d.mts.map +0 -1
- package/dist/node/lib/getNftCollectionCount.d.ts +0 -2
- package/dist/node/lib/getNftCollectionCount.d.ts.map +0 -1
- package/dist/node/lib/getNftCollectionMetadata.d.cts +0 -5
- package/dist/node/lib/getNftCollectionMetadata.d.cts.map +0 -1
- package/dist/node/lib/getNftCollectionMetadata.d.mts +0 -5
- package/dist/node/lib/getNftCollectionMetadata.d.mts.map +0 -1
- package/dist/node/lib/getNftCollectionMetadata.d.ts +0 -5
- package/dist/node/lib/getNftCollectionMetadata.d.ts.map +0 -1
- package/dist/node/lib/getProvider.d.cts +0 -3
- package/dist/node/lib/getProvider.d.cts.map +0 -1
- package/dist/node/lib/getProvider.d.mts +0 -3
- package/dist/node/lib/getProvider.d.mts.map +0 -1
- package/dist/node/lib/getProvider.d.ts +0 -3
- package/dist/node/lib/getProvider.d.ts.map +0 -1
- package/src/lib/getNftCollectionCount.ts +0 -22
- package/src/lib/getNftCollectionMetadata.ts +0 -58
- package/src/lib/getProvider.ts +0 -17
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getProvider.d.ts","sourceRoot":"","sources":["../../../src/lib/getProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5E,eAAO,MAAM,kBAAkB,aAAa,MAAM,GAAG,MAAM,uCAc1D,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getProvider.d.ts","sourceRoot":"","sources":["../../../src/lib/getProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5E,eAAO,MAAM,kBAAkB,aAAa,MAAM,GAAG,MAAM,uCAc1D,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getNftCollectionCount.d.ts","sourceRoot":"","sources":["../../../src/lib/getNftCollectionCount.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,qBAAqB,oBAIf,MAAM,WAId,MAAM,KACd,QAAQ,MAAM,CAOhB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getNftCollectionCount.d.ts","sourceRoot":"","sources":["../../../src/lib/getNftCollectionCount.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,qBAAqB,oBAIf,MAAM,WAId,MAAM,KACd,QAAQ,MAAM,CAOhB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getNftCollectionCount.d.ts","sourceRoot":"","sources":["../../../src/lib/getNftCollectionCount.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,qBAAqB,oBAIf,MAAM,WAId,MAAM,KACd,QAAQ,MAAM,CAOhB,CAAA"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Interface } from '@ethersproject/abi';
|
|
2
|
-
import { NftCollectionMetadata } from '@xyo-network/crypto-nft-collection-payload-plugin';
|
|
3
|
-
export declare function getInterfaceID(contractInterface: Interface): string;
|
|
4
|
-
export declare const getNftCollectionMetadata: (contractAddress: string, chainId: number) => Promise<Omit<NftCollectionMetadata, 'total'>>;
|
|
5
|
-
//# sourceMappingURL=getNftCollectionMetadata.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getNftCollectionMetadata.d.ts","sourceRoot":"","sources":["../../../src/lib/getNftCollectionMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAA;AAOzF,wBAAgB,cAAc,CAAC,iBAAiB,EAAE,SAAS,UAQ1D;AAED,eAAO,MAAM,wBAAwB,oBAIlB,MAAM,WAId,MAAM,KACd,QAAQ,KAAK,qBAAqB,EAAE,OAAO,CAAC,CA8B9C,CAAA"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Interface } from '@ethersproject/abi';
|
|
2
|
-
import { NftCollectionMetadata } from '@xyo-network/crypto-nft-collection-payload-plugin';
|
|
3
|
-
export declare function getInterfaceID(contractInterface: Interface): string;
|
|
4
|
-
export declare const getNftCollectionMetadata: (contractAddress: string, chainId: number) => Promise<Omit<NftCollectionMetadata, 'total'>>;
|
|
5
|
-
//# sourceMappingURL=getNftCollectionMetadata.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getNftCollectionMetadata.d.ts","sourceRoot":"","sources":["../../../src/lib/getNftCollectionMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAA;AAOzF,wBAAgB,cAAc,CAAC,iBAAiB,EAAE,SAAS,UAQ1D;AAED,eAAO,MAAM,wBAAwB,oBAIlB,MAAM,WAId,MAAM,KACd,QAAQ,KAAK,qBAAqB,EAAE,OAAO,CAAC,CA8B9C,CAAA"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Interface } from '@ethersproject/abi';
|
|
2
|
-
import { NftCollectionMetadata } from '@xyo-network/crypto-nft-collection-payload-plugin';
|
|
3
|
-
export declare function getInterfaceID(contractInterface: Interface): string;
|
|
4
|
-
export declare const getNftCollectionMetadata: (contractAddress: string, chainId: number) => Promise<Omit<NftCollectionMetadata, 'total'>>;
|
|
5
|
-
//# sourceMappingURL=getNftCollectionMetadata.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getNftCollectionMetadata.d.ts","sourceRoot":"","sources":["../../../src/lib/getNftCollectionMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAA;AAOzF,wBAAgB,cAAc,CAAC,iBAAiB,EAAE,SAAS,UAQ1D;AAED,eAAO,MAAM,wBAAwB,oBAIlB,MAAM,WAId,MAAM,KACd,QAAQ,KAAK,qBAAqB,EAAE,OAAO,CAAC,CA8B9C,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getProvider.d.ts","sourceRoot":"","sources":["../../../src/lib/getProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5E,eAAO,MAAM,kBAAkB,aAAa,MAAM,GAAG,MAAM,uCAc1D,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getProvider.d.ts","sourceRoot":"","sources":["../../../src/lib/getProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5E,eAAO,MAAM,kBAAkB,aAAa,MAAM,GAAG,MAAM,uCAc1D,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getProvider.d.ts","sourceRoot":"","sources":["../../../src/lib/getProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5E,eAAO,MAAM,kBAAkB,aAAa,MAAM,GAAG,MAAM,uCAc1D,CAAA"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ERC721Enumerable__factory } from '@xyo-network/open-zeppelin-typechain'
|
|
2
|
-
|
|
3
|
-
import { getProviderFromEnv } from './getProvider'
|
|
4
|
-
import { nonEvaluableContractAddresses } from './nonEvaluableContractAddresses'
|
|
5
|
-
|
|
6
|
-
export const getNftCollectionCount = async (
|
|
7
|
-
/**
|
|
8
|
-
* The address of the NFT contract to search for
|
|
9
|
-
*/
|
|
10
|
-
contractAddress: string,
|
|
11
|
-
/**
|
|
12
|
-
* The chain ID (1 = Ethereum Mainnet, 4 = Rinkeby, etc.) of the chain to search for NFTs on
|
|
13
|
-
*/
|
|
14
|
-
chainId: number,
|
|
15
|
-
): Promise<number> => {
|
|
16
|
-
if (nonEvaluableContractAddresses.includes(contractAddress.toUpperCase())) {
|
|
17
|
-
throw new Error(`Unable to evaluate collection with contractAddress: ${contractAddress}`)
|
|
18
|
-
}
|
|
19
|
-
const provider = getProviderFromEnv(chainId)
|
|
20
|
-
const contract = ERC721Enumerable__factory.connect(contractAddress, provider)
|
|
21
|
-
return (await contract.totalSupply()).toNumber()
|
|
22
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { Interface } from '@ethersproject/abi'
|
|
2
|
-
import { NftCollectionMetadata } from '@xyo-network/crypto-nft-collection-payload-plugin'
|
|
3
|
-
import { ERC721Enumerable__factory, ERC1155__factory } from '@xyo-network/open-zeppelin-typechain'
|
|
4
|
-
import { constants } from 'ethers'
|
|
5
|
-
|
|
6
|
-
import { getProviderFromEnv } from './getProvider'
|
|
7
|
-
import { nonEvaluableContractAddresses } from './nonEvaluableContractAddresses'
|
|
8
|
-
|
|
9
|
-
export function getInterfaceID(contractInterface: Interface) {
|
|
10
|
-
let interfaceID = constants.Zero
|
|
11
|
-
const functions: string[] = Object.keys(contractInterface.functions)
|
|
12
|
-
for (let i = 0; i < functions.length; i++) {
|
|
13
|
-
interfaceID = interfaceID.xor(contractInterface.getSighash(functions[i]))
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return interfaceID.toHexString()
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export const getNftCollectionMetadata = async (
|
|
20
|
-
/**
|
|
21
|
-
* The address of the NFT contract to search for
|
|
22
|
-
*/
|
|
23
|
-
contractAddress: string,
|
|
24
|
-
/**
|
|
25
|
-
* The chain ID (1 = Ethereum Mainnet, 4 = Rinkeby, etc.) of the chain to search for NFTs on
|
|
26
|
-
*/
|
|
27
|
-
chainId: number,
|
|
28
|
-
): Promise<Omit<NftCollectionMetadata, 'total'>> => {
|
|
29
|
-
if (nonEvaluableContractAddresses.includes(contractAddress.toUpperCase())) {
|
|
30
|
-
throw new Error(`Unable to evaluate collection with contractAddress: ${contractAddress}`)
|
|
31
|
-
}
|
|
32
|
-
const provider = getProviderFromEnv(chainId)
|
|
33
|
-
const contract721 = ERC721Enumerable__factory.connect(contractAddress, provider)
|
|
34
|
-
const contract1155 = ERC1155__factory.connect(contractAddress, provider)
|
|
35
|
-
let name: string = ''
|
|
36
|
-
try {
|
|
37
|
-
name = await contract721.name()
|
|
38
|
-
} catch (ex) {
|
|
39
|
-
const error = ex as Error
|
|
40
|
-
console.log(`name: ${error.message}`)
|
|
41
|
-
}
|
|
42
|
-
let symbol: string = ''
|
|
43
|
-
try {
|
|
44
|
-
symbol = await contract721.symbol()
|
|
45
|
-
} catch (ex) {
|
|
46
|
-
const error = ex as Error
|
|
47
|
-
console.log(`symbol: ${error.message}`)
|
|
48
|
-
}
|
|
49
|
-
let is1155: boolean = false
|
|
50
|
-
try {
|
|
51
|
-
is1155 = await contract1155.supportsInterface(getInterfaceID(ERC1155__factory.getInterface(ERC1155__factory.abi)))
|
|
52
|
-
} catch (ex) {
|
|
53
|
-
const error = ex as Error
|
|
54
|
-
console.log(`is1155: ${error.message}`)
|
|
55
|
-
is1155 = false
|
|
56
|
-
}
|
|
57
|
-
return { address: contractAddress, chainId, name, symbol, type: is1155 ? 'ERC1155' : 'ERC721' }
|
|
58
|
-
}
|
package/src/lib/getProvider.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { InfuraProvider, WebSocketProvider } from '@ethersproject/providers'
|
|
2
|
-
|
|
3
|
-
export const getProviderFromEnv = (chainId: string | number = 'homestead') => {
|
|
4
|
-
const infuraWssUri = process.env.INFURA_WSS_URI
|
|
5
|
-
const infuraProvider = new InfuraProvider('homestead', {
|
|
6
|
-
projectId: process.env.INFURA_PROJECT_ID,
|
|
7
|
-
projectSecret: process.env.INFURA_PROJECT_SECRET,
|
|
8
|
-
})
|
|
9
|
-
|
|
10
|
-
const infuraWebsocketProvider = infuraWssUri ? new WebSocketProvider(infuraWssUri, chainId) : undefined
|
|
11
|
-
|
|
12
|
-
const quickNodeUri = process.env.QUICKNODE_WSS_URI
|
|
13
|
-
const quickNodeProvider = quickNodeUri ? new WebSocketProvider(quickNodeUri, chainId) : undefined
|
|
14
|
-
|
|
15
|
-
const provider = infuraWebsocketProvider ?? infuraProvider ?? infuraWebsocketProvider ?? quickNodeProvider ?? infuraProvider
|
|
16
|
-
return provider
|
|
17
|
-
}
|